Mik*_*Hil 24 primary-key unique-constraint candidate-key
我是 DBMS 的新手,我仍在学习理论。
我对这个关键业务感到非常困惑,在谷歌搜索之后,我将它缩小到只有 2 个我没有得到的键(主键和超级键)。
我有几个关于 DBMS 的问题。如果您能为我解答这些问题,我将不胜感激。
1) DBMS 中的主键和超级键有什么区别? 如果你能用一个全面的例子来正确解释,非常感谢
2)主键和超级键都可以可以有多个列组合成主键和超级键吗?
3)主键是超级键的子集,反之亦然?
Pie*_*ens 24
一个超级中心是一个简单的非最小的候选键,也就是一个有没有严格要求,以确保该行的唯一附加列。
一个主键是最小的候选键,这是说所有组成列,以确保其唯一性严格要求。
作为拥有 30 年经验的数据库开发人员/设计师,在看到这个问题并查了一下之前,我什至从未听说过Super Key这个词。超级键的概念似乎与性能和物理模式设计的主题更相关,因为它直接映射到具有附加列的唯一非聚集索引的概念,以改进查询覆盖。
小智 22
超级键:超级键代表键的超集。超级密钥是一组一个或多个属性,它们被共同使用并且可以唯一地标识所有其他属性。
例如,考虑下表:
Book (BookId, BookName, Author)
Run Code Online (Sandbox Code Playgroud)
所以在这张表中我们可以有
- (BookId)
- (BookId, BookName)
- (BookId, BookName, Author)
- (BookId, Author)
- (BookName, Author)
Run Code Online (Sandbox Code Playgroud)
作为我们的超级钥匙。每个 Super Key 都能够唯一标识每个元组(记录)。
候选键:候选键是没有任何冗余属性的超级键。换句话说,候选键是最小的超级键。例如,在上图中
- (BookId)
- (BookName,Author)
Run Code Online (Sandbox Code Playgroud)
这两个键可以是候选键,因为其余键具有冗余属性。Super Key(BookId, BookName)
记录中的手段可以被唯一标识BookId
,因此BookName
是冗余属性。
主键:它是数据库设计者选择的候选键,用于标识实体集中的实体。或 用于唯一标识每条记录的键称为主键。
从上面的候选键中,任何一个都可以是主键。另一个未被选为主键的将被称为备用键