2016-05-13 33 views
0

我有一个商业案例,实体的关键是复合的,我应该把它保持在数据库中,还是应该添加一个自动增加的ID作为主键? ...添加自动增加的ID会给设计带来一些复杂性。我应该尽可能避免复合主键吗?

是否有任何理由避免使用组合键@第一眼看?

我正在使用java-hibernate-Mysql

+1

复合键非常适合对多列进行唯一索引。添加一个唯一的ID不是很多,除非这是你想要查找的。 –

+2

这取决于字段被引用的程度以及被键入的数据类型。简单明显的示例:名称和生日对于用户数据中的主键可能是唯一的,但每个引用用户的表都可能不必从以这种方式引用用户的方式受益。 (免责声明:我不是说名字和生日是最好的主键,只是提供了一个非常简单的例子。) – Uueerdo

+0

很好@Uueerdo,我正要写这些发现 –

回答

1

有组合键没有什么坏处。最常见的用法是放在一个表格中,作为对其他两个表格的交叉引用。交叉引用表还可以包含仅与记录组合相关的其他数据。我发现最好设计你的表格和关系,以尽量减少复杂性。因此,如果像您所说的那样不使用复合键,则会增加复杂性,然后通过一切手段使用复合键而不是尝试在某种解决方案中发出号角,这种解决方案仅用于删除没有任何实数的复合键效益。

相关问题