假设您有一个员工表和一个工作列表表。表中每个员工必须有一份工作。通常,我会给每个工作一个id,并将其作为员工表中的外键引用。然而,我的一位同事建议我们将工作列表表用作字典,在插入/更新之前,我们检查表中是否存在"工作类型",然后将工作类型作为字符串插入员工表。
据我所见
优点:
更快的选择(尽管主键上的联接应该是边际的差异)
缺点:
按工作类型选择员工的速度较慢
更难换工作型
以上哪种方法最好?
我不确定我是否理解为什么会发生冲突。您知道主键和外键都可以像数字类型一样容易地成为字符串类型吗?通过将职务类型字段设置为职务类型表中的主键,并将外键设置为员工表中的外键,可以同时具有这两种系统的优点。
这种方法的优点是,您不需要将工作类型表连接回employee表来获得工作类型的描述性名称,同时您仍然使用数据库来提供对数据库设计很重要的引用完整性。
缺点是,如果您有大量员工,您将使用更多的存储资源,并且如果您更改了职位描述,则需要在员工表中级联这些更改。
虽然使用整数作为主键是很常见的(有些框架需要这样做),但没有规则规定必须这样做。
如果这会使管理工作类型变得更加困难(我假设这是你或其他人将要做的事情),那么为了小幅提高性能真的值得吗?这听起来也像是为了一个小小的奖励而使事情过于复杂。为了简单起见,我认为最好的做法是使用外键。