两个分隔的表与一个表有两列

时间:2015-01-15 17:17:34

标签: sql-server database winforms database-design database-schema

我正在创建一个Windows窗体应用程序,它必须控制办公楼中人员的进出。这些人可能是访客或雇员,每个人都必须在大楼入口处使用门禁卡。当该人是访客时,卡将被临时编程,并且雇员应使用他们自己的卡。我的疑问是关于我的数据库。有没有办法很好地做到这一点?卡片(无论是员工还是访客)都有一个强大的棘轮钥匙可以识别它来自旋转门的制造商,我无法改变它。所以,我的结构是:

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

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

2 个答案:

答案 0 :(得分:1)

员工和访客都是人。特别是可能(或可能没有)分配了访问卡的人。

我会有一个与AccessCard表具有外键关系的People表。如果您只关心此人是员工还是访客,但您存储的信息在其他方面是相同的,那么布尔列就可以了。如果您的系统为员工和/或访问者存储其他信息,请创建一个Employees和Visitors表,并从People到每个人之间建立外键关系。

答案 1 :(得分:1)

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

相关问题