4

假设您有一个员工表和一个工作列表表。每个员工必须在表中拥有一份工作。通常我会给每个工作一个 id 并将其作为员工表中的外键引用。然而,我的一位同事建议我们将作业列表表用作字典,并且在插入/更新之前,我们检查表中是否存在“作业类型”,然后将作业类型作为字符串插入到员工表中。

据我所知

优点:

更快的选择(尽管主键上的连接应该产生微小的差异)

缺点:

按工作类型选择员工的速度较慢
更难改变工作类型

以上哪种方法最好?

4

2 回答 2

6

我不确定我是否理解为什么会有冲突。您知道主键和外键都可以像数字类型一样容易地成为字符串类型吗?通过将工作类型字段设置为工作类型表中的主键和员工表中的外键,您可以同时获得这两种系统的优势。

这种方法的优点是您不需要将工作类型表连接回员工表来获取工作类型的描述性名称,同时您仍然使用数据库来提供对数据库很重要的引用完整性设计。

缺点是如果您有大量员工,您将使用更多存储资源,并且如果您更改职位描述,您需要通过员工表级联更改。

虽然使用整数作为主键很常见(并且某些框架需要它),但没有规则说必须这样。

于 2012-07-23T03:11:38.393 回答
1

如果这会使管理工作类型变得更加困难(我假设这是您或其他人将要做的事情),那么对于性能的小幅提升真的值得吗?听起来这可能会使事情变得过于复杂以获得小奖励。为了简单起见,我想说最好的做法是坚持使用外键。

于 2012-07-23T02:48:47.247 回答