我有一个表员工,想要定义主键/表的建议。最初我想将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 |
+----+--------+----------+---------+-----------+
答案 0 :(得分:1)
i)如果你在表中有了IsActive规则,那么EmpID就不能成为主键。你可以通过代码来实现它。
ii)如果您删除了IsAcTive规则,那么我认为EmpID是通过代码生成的,然后在相同的代码中您可以放置一个过滤器。所以没有必要将它作为主键。
更好地制作CI。 iii)将ID设为PK。
iv)他们中的许多人都遵循相同的设计模式。如果该表将增长到数百万条记录并且经常用于搜索和加入,那么这绝对是糟糕的设计。
如果是这种情况,请保留单独的更改表并删除审计列。
v)即使你的桌子很小,那也是糟糕的设计。你要付出写作的代价isAtive =' YES'在所有查询中。
vi)虽然保持单独的表需要更多的代码和维护,但值得做。