我是DBMS的新手,但仍在学习该理论。
我对这个关键业务感到非常困惑,在谷歌搜索之后,我将其范围缩小到只有我没有得到的两个关键(主键和超级键)。
我对DBMS有几个问题。如果您能为我回答,我将不胜感激。
1)DBMS中的主键和超级键有什么区别? 如果您可以使用一个全面的示例正确解释,请多多关照
2)主键和超级键都可以有多个列组合形成主键和超级键吗?
3)主键是超级键的子集,反之亦然吗?
我是DBMS的新手,但仍在学习该理论。
我对这个关键业务感到非常困惑,在谷歌搜索之后,我将其范围缩小到只有我没有得到的两个关键(主键和超级键)。
我对DBMS有几个问题。如果您能为我回答,我将不胜感激。
1)DBMS中的主键和超级键有什么区别? 如果您可以使用一个全面的示例正确解释,请多多关照
2)主键和超级键都可以有多个列组合形成主键和超级键吗?
3)主键是超级键的子集,反之亦然吗?
Answers:
一个超级中心是一个简单的非最小的候选键,也就是一个有没有严格要求,以确保该行的唯一附加列。
一个主键是一个最小的候选键,这是说所有组成列,以确保其唯一性严格要求。
作为拥有30年经验的数据库开发人员/设计人员,直到我看到这个问题并加以查询之前,我什至从未听说过“ 超级密钥 ”一词。超级键的概念似乎与性能和物理模式设计主题更紧密相关,因为它直接映射到唯一的非聚集索引的概念,该索引带有附加的列以改善查询范围。
超级密钥:超级密钥代表密钥的超级集。超级密钥是一个或多个属性的集合,这些属性被共同采用并且可以唯一地标识所有其他属性。
例如,我们有桌子
Book (BookId, BookName, Author)
因此,在此表中,我们可以
(BookId)
(BookId,BookName)
(BookId, BookName, Author)
(BookId, Author)
(BookName, Author)
作为我们的超级钥匙。每个超级键都可以唯一地标识每个元组(记录)。
候选键候选键是没有任何冗余属性的超级键。换句话说,候选密钥是最小超级密钥。例如,在上图中
(BookId)
(BookName,Author)
这两个密钥可以是候选密钥,因为其余密钥具有冗余属性。超级键(BookId,BookName)记录中的均值可以仅通过bookid唯一标识,因此Bookname是冗余属性
主键:是数据库设计人员选择的候选键,用于标识实体集中的实体。或用于唯一标识每个记录的键称为主键。
从上面,候选键中的任何一个都可以是主键。而另一个未被选择为主键的键称为备用键
alternative key
是secondary key
相同的。好答案!
候选关键字是一组唯一标识行的列,并且不包含唯一标识行的较小(“适当”)列子集。
超键是一组唯一标识行的列。因此,候选键是不包含更小的超级键的超级键。
在SQL中,您不能声明空的候选键。同样,UNIQUE NOT NULL和PRIMARY KEY(就约束而言,这意味着UNIQUE NOT NULL)声明了超键,而不是键本身。如果此类声明的列集不包含声明为超键的较小列集,则它声明的超键是候选键。
从我的这个stackoverflow.com答案重新给定表:
对于列集合X和Y的,我们可以写X - >ÿ。我们说X是行列式集,而Y是函数依存关系(FD)X-> Y 的确定集。
我们说X在功能上确定 Y,而Y 在功能上由 X 确定。我们说X是X-> Y 的行列式。在{C}-> Y中,我们说C在功能上确定 Y。在X-> {C}中,我们说X 功能上确定 C。当X是Y的超集时,我们说X-> Y是平凡的。
当X值的每个子行始终/仅与Y值的相同子行一起出现时,我们说X-> Y 在表T中成立。或者我们说X-> Y是T中的FD 或 FD 。当X是行列式时在表T中的某些FD中,我们说X 是 T 的决定因素。
甲超密钥一个表T的是一组列在功能上确定的每个属性。一个候选键(CK)是不包含更小的超密钥一个超密钥。我们可以选择一个CK作为主键(PK),然后将其他CK称为备用键。当列位于某些CK中时,该列为素数。
(正如我在此处评论的那样,“ FD,hold,superkey和CK这四个粗体字就足够了。”)
(具有空CK的表被限制为最多包含一行。由空集确定的列集被限制为每行具有相同的子行值。)
密钥密钥是单个或多个字段的组合。它的目的是根据需要访问或检索表中的数据行。在表中定义了键,以便快速,平稳地访问或排序存储的数据。它们还用于在不同表之间创建链接。
按键类型下表或关系式将用于定义不同的按键类型。
主键唯一标识关系中的行或记录的属性或属性组合称为主键。
辅助键作为检索基础的字段或字段组合称为辅助键。辅助密钥是一个非唯一字段。一个辅助键值可以引用许多记录。
候选键或备用键关系只能有一个主键。它可能包含许多字段或可用作主键的字段组合。一个字段或字段的组合用作主键。未用作主键的字段或字段组合称为候选键或备用键。
复合键或串联键由两个或多个属性组成的主键称为复合键。
排序或控制键用于对存储的数据进行物理排序的字段或字段组合,称为排序键。也称为控制键。
甲超密钥是可以唯一地用于识别的数据库记录的属性的组合。一个表可能有许多超级键。候选键是超键的特殊子集,其中没有任何多余的信息。
超键示例:想象一个包含名称,年龄,SSN和<电话分机>字段的表。该表有许多可能的超级键。其中三个是SSN,电话分机和名称。在列出的那些中,只有SSN是候选密钥,因为其他的包含唯一标识记录所不需要的信息。
外键外键是关系中属性的值或属性组合,其值与另一个关系中的主键匹配。在其中创建外键的表称为从属表。它引用的外键表称为父表。
有关“ 最小超级键”的信息,请参见此链接,网址为http://www.answers.com/topic/superkey-1