两个分开的 table 与一个 table 有两列

Two separated tables vs One table with two columns

我正在创建一个 windows 表单应用程序,它必须控制办公楼中人员的进出。这些人可能是访客或员工,每个人都必须在大楼入口处使用门禁卡。当此人是访客时,将临时编程一张卡,员工应使用自己的卡。我怀疑我的数据库。有没有办法很好地做到这一点?这些卡(无论是员工还是访客)都有一个棘轮的强键,可以识别它来自旋转门制造商,我无法更改它。所以,我的结构是:

在我的数据库中,我有一个 table 用来存放卡片的地方。当有人试图进入建筑物时,旋转门会向我的系统发送访问日期和时间以及卡代码。现在我不知道如何区分员工和访客。我是否应该为员工和访客提供单独的流程 table?对于员工流程 table,我使用相同的 ID 从卡 table 中获取员工卡。在访客流table中,我需要知道谁是使用临时卡的访客(临时卡的密钥永远不会改变,所以我不能只在密钥上依赖我)。或者我应该只有一个带有 Visitor_ID 和 Worker_ID 列的流 table ,其中一个将始终为空(所以我知道它是该字段的员工还是访客一个值)。

谁能告诉我两者哪个更适用,为什么?

员工和访客都是人。特别是可能(或可能没有)分配给他们的门禁卡的人。

我会有一个与 AccessCard table 有外键关系的人 table。如果您只关心此人是雇员还是访客,但您存储的信息在其他方面是相同的,那么布尔列就可以了。如果您的系统存储了员工 and/or 访客的附加信息,请创建员工和访客 table,并建立从人员到其中每一个的外键关系。

我会创建单个 table 来存储员工和访客,然后为 Type(E, V) 添加一个额外的列。