2012-07-23 158 views
4

可以说你有一张员工表和一份工作清单表。每个员工必须在桌上有一份工作。通常我会给每个工作一个id,并将其作为员工表中的外键引用。然而,我的一位同事建议我们使用作业列表表作为字典,并且在插入/更新之前,我们检查表中是否存在“作业类型”,然后将作业类型作为字符串插入到员工表中。我应该使用外键的外键还是字符串值?

至于我可以看到

的优点:

更快的选择(虽然在主键上加入应使边际 差)

的缺点:

较慢选择按作业类型的员工
更难以改变工作 型

其中上述方法是最好的?

+1

不,你没有错过任何东西。有没有你想问的关于上述说法的问题?如果不是,这应该被视为“不是真正的问题”。 – meagar 2012-07-23 02:42:07

+1

哪个是最佳做法? – Mark 2012-07-23 02:42:52

+1

请更新您的问题,以便您实际上提出问题。然而,对于所有情况都没有正确的答案。 – meagar 2012-07-23 02:43:27

回答

6

我不知道,我明白为什么有冲突。你知道主键和外键都可以很容易地将字符串类型作为数字类型吗?通过将作业类型字段作为作业类型表中的主键和员工表中的外键,您可以获得两种系统的优势。

此方法的优点是,您不需要将作业类型表连接回员工表以获取作业类型的描述性名称,而仍然使用数据库来提供参照完整性对你的数据库设计很重要。

的缺点是,如果你有一个非常大的数量的员工,你会使用更多的存储资源,并且如果你改变了作业说明你需要通过级联雇员表的变化。

虽然通常使用整数作为主键(有些框架需要它),也没有规定说它必须是这样。

1

如果这将使它更难以管理的作业类型(这我假设是你或其他人会做的东西),这将真正是值得的一个小的性能提升?这听起来似乎可能会让一些小事情变得过于复杂。为了简单起见,我认为最好的做法是坚持使用外键。