DBMS所有键组合混乱

时间:2013-09-26 18:19:13

标签: key primary-key rdbms database candidate-key

我对数据库管理系统中的密钥感到困惑。因为有许多部分问题......但这个是一个很好的组合问题。这就是我在这里发帖的原因。  SUPER KEY,KEY,PRIMARY KEY,ALTERNATE KEY,CANDIDATE KEY,MINIMAL KEY之间的混淆 这就是我对它的理解。

SUPER KEY:属性或属性集,可以唯一地标识一个tupple。

候选键:所有SUper键的集合..

键:一组候选键中的一个键是最小的(最小属性存在)

主键:候选键组中的最小键..

备用键:除主键外的所有候选键的集合

外键。 :我非常清楚,很难提及所有的东西..

但我在超级密钥,密钥,候选密钥,主密钥,备用密钥之间存在混淆..(如果剩余则添加任何密钥) 所有的定义都是好的? 对于ER模型,这些键的定义与关系模型中的定义不同?

你能不能用例子给你答案。一张桌子上有这些钥匙。!! 感谢... !!

1 个答案:

答案 0 :(得分:3)

超级密钥是任何一组属性,对于这些属性,任何时候都保证所有允许的元组集都是唯一的。

候选键(= 最小超级键)是每个超级键中唯一唯一的属性集。因此,从候选键中删除任何一个属性将使其成为非唯一(不再是超级键)。

主键只是任何候选键。主键和任何其他候选键之间没有区别。

备用密钥是未指定为主键的任何候选密钥。

外键根本不是键(名字有点不幸)。外键只是关系的一组属性,它们受参照完整性约束的约束,其中同一组属性也是另一个关系中的候选键。

一个例子?假设你有一个婚姻关系,有丈夫和妻子的属性(为简单起见,我只考虑一夫一妻制,男女婚姻)

Marriages {Husband, Wife}

婚姻关系有三个超级密钥:{Husband, Wife}{Husband}{Wife}(一个人一次只能有一个配偶,所以这两个属性都必须是唯一的。)

{Husband}{Wife}是候选键。

现在考虑两个{Husband}{Wife}中的哪一个可能是主键,哪个是备用?答案是无关紧要:无论您选择称为“主要”密钥,此关系的形式,功能和预期含义都完全相同。主键和备用键是等效的概念,关系模型不区分它们。

实体关系建模确实倾向于区分主键和其他键,并且通常为每个实体提供一个键优先于其他键,有时排除或损害其他同等重要的键。这是ER建模的一个方面,通常会导致数据库设计和数据管理中的错误。