Tar*_*ryn 14
直接从SO拉出:
您只能拥有一个主键,但主键中可以有多个列.
您还可以在表上使用唯一索引,这将有点像主键,因为它们将强制执行唯一值,并将加快查询这些值.
主键背景下的主要意味着它在重要性方面排名第一.因此,只能有一个键.这是定义.
它通常也是索引附加实际数据的关键,也就是说,数据与主键索引一起存储.其他索引仅包含要编制索引的数据,也可能包含一些包含的列.
实际上,EFCodd(关系数据库模型的发明者)[1]发起了术语"主键"来表示关系的任意数量的键 - 而不仅仅是一个.他明确表示很可能拥有多个这样的钥匙.他的建议是,数据库设计师可以选择一个键作为首选标识符(" 在主键") -但在原则上,这是可选的,这样的选择是'任意’(这是他的话).因为所有键都具有彼此相同的属性,所以没有必要选择任何一个键而不是另一个键.
后来[2],Codd最初称为主键的东西被称为候选键,而单键被挑出来作为首选键被称为"主要"键.然而,这并不是一个根本性的转变,因为主键意味着与候选键完全相同.因为它们是等同的概念,所以当我们说"必须"只有一个主键时,它并不意味着什么重要.如果您有多个候选键,如果您愿意,可以合理地将其中一个称为"主要",因为它不会对数据库的含义和功能产生任何逻辑或实际差异.
(我和其他人)一直认为,将每个表的一个密钥指定为"主要"的想法完全是多余的,有时是对数据库设计和数据完整性问题的良好理解的积极阻碍.然而,这个概念是如此根深蒂固,我们可能会坚持下去.
所以对你的问题的正确答案是"惯例"和"便利".根本没有好的技术理由.
[1]大型共享数据库的数据关系模型(1970)
[2]例如"关系数据库模型的进一步规范化"(1971)
| 归档时间: |
|
| 查看次数: |
13772 次 |
| 最近记录: |