表结构和验证

时间:2017-03-29 01:42:43

标签: database-design ms-access-2010

我有一个表员工,想要定义主键/表的建议。最初我想将EMP ID字段作为主键,但我还想跟踪员工的所有更改 - TL Name。此表应仅允许一个唯一的有效EMP ID,但可以允许多个非活动EMP ID。请建议。

以下是表格的示例结构。

+----+--------+----------+---------+-----------+
| ID | EMP ID | EMP Name | TL Name | Is Active |
+----+--------+----------+---------+-----------+
| 1  | Z001   | Raj      | Vik     | No        |
+----+--------+----------+---------+-----------+
| 2  | Z002   | Ajay     | Peter   | No        |
+----+--------+----------+---------+-----------+
| 3  | Z001   | Raj      | Ashish  | No        |
+----+--------+----------+---------+-----------+
| 4  | Z003   | Soni     | Suresh  | Yes       |
+----+--------+----------+---------+-----------+
| 5  | Z001   | Raj      | Vinod   | Yes       |
+----+--------+----------+---------+-----------+

1 个答案:

答案 0 :(得分:1)

i)如果你在表中有了IsActive规则,那么EmpID就不能成为主键。你可以通过代码来实现它。

ii)如果您删除了IsAcTive规则,那么我认为EmpID是通过代码生成的,然后在相同的代码中您可以放置​​一个过滤器。所以没有必要将它作为主键。

更好地制作CI。 iii)将ID设为PK。

iv)他们中的许多人都遵循相同的设计模式。如果该表将增长到数百万条记录并且经常用于搜索和加入,那么这绝对是糟糕的设计。

如果是这种情况,请保留单独的更改表并删除审计列。

v)即使你的桌子很小,那也是糟糕的设计。你要付出写作的代价isAtive =' YES'在所有查询中。

vi)虽然保持单独的表需要更多的代码和维护,但值得做。