【问题标题】:shall I avoid composite primary key as much as I can? [closed]我应该尽可能避免复合主键吗? [关闭]
【发布时间】:2016-05-13 23:43:15
【问题描述】:

我有一个业务案例,其中实体的键是复合的,我应该将它保存在数据库中还是应该添加一个自动递增的 ID 作为主键? ...添加自动递增的 ID 会给设计带来一些复杂性。

有什么理由避免使用复合键@乍一看?

我正在使用 java-hibernate-Mysql

【问题讨论】:

  • 复合键非常适合对多个列进行唯一索引。添加一个唯一的 ID 不是那么多,除非这是您要查找的内容。
  • 这取决于引用了多少字段,以及键入的数据类型。简单的明显示例:姓名和生日对于用户数据中的主键来说可能是唯一的,但每个引用用户的表可能不会从必须以这种方式引用用户中受益。 (免责声明:我并不是说姓名和生日是最好的主键,只是提供一个过于简单的例子。)
  • 不错@Uueerdo,我正要写这些发现

标签: mysql sql database hibernate


【解决方案1】:

拥有复合键并没有什么坏处。最常见的使用是在一个表中,该表充当对其他两个表的交叉引用。交叉引用表还可以包含仅与该记录组合相关的其他数据。我发现最好设计您的表和关系以尽量减少复杂性。因此,如您所说,如果不使用复合键,您将增加复杂性,那么请务必使用复合键,而不是尝试在某些解决方案中硬塞,该解决方案仅用于删除复合键而没有任何真正的受益。

【讨论】:

    猜你喜欢
    • 2020-10-05
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    相关资源
    最近更新 更多