Table 结构和验证

Table structure and validation

我有一名 table 员工,希望得到有关定义主要 key/table 的建议。最初我想保留 EMP ID 字段作为主键,但后来我还想跟踪所有更改 - TL Name 为员工。此 table 应仅允许一个唯一的活动 EMP ID,但可以允许多个非活动 EMP ID。请推荐。

下面是 table.

的示例结构
+----+--------+----------+---------+-----------+
| 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       |
+----+--------+----------+---------+-----------+

i) 如果您在 table 中使用 IsActive 规则,则 EmpID 不能是主要的 key.you hv,无法通过代码实现。

ii) 如果您删除 IsAcTive 规则,那么我认为 EmpID 是通过代码生成的,然后在同一代码中您可以放置​​一个 filter.so 将其作为主键毫无意义。

最好做到 CI。 iii) 将ID设为PK。

iv) 他们中的许多人都遵循相同的设计 pattern.If,即 table 将增长到数百万条记录,并且在搜索和加入中非常频繁地使用,那么这绝对是糟糕的设计。

如果是这种情况,则保持单独更改 table 并删除那些审计列。

v) 即使你的 table 很小,但在所有查询中付出写 isAtive='YES' 的代价也是不好的 design.you hv。

vi) 虽然保持独立 table 需要更多的代码和维护,但这是值得的。