我是MySQL新手,我对我遇到的不同术语感到困惑。我试着谷歌搜索答案,但结果真的令人困惑,当我尝试理解它似乎他们是相同的东西。
密钥,超级密钥,最小超级密钥,候选密钥和主密钥之间究竟有什么区别?
答案 0 :(得分:70)
我在这里复制粘贴我收集的一些信息
<强>关键强> 键是单个或多个字段的组合。其目的是根据需要从表中访问或检索数据行。密钥在表中定义,以快速平滑地访问或排序存储的数据。它们还用于在不同表之间创建链接。
密钥类型
主键 唯一标识关系中的行或记录的属性或属性组合称为主键。
辅助密钥 作为检索基础的字段或字段组合称为辅助密钥。辅助密钥是非唯一字段。一个辅助键值可以引用许多记录。
候选键或备用键 关系只能有一个主键。它可能包含许多可用作主键的字段或字段组合。一个字段或字段组合用作主键。未用作主键的字段或字段组合称为候选键或备用键。
复合键或连接键 由两个或多个属性组成的主键称为复合键。
排序或控制键 用于对存储数据进行物理排序的字段或字段组合,称为排序键。它也是已知的控制键。
超级密钥是可以唯一用于标识数据库记录的属性组合。一个表可能有很多超级密钥。候选键是超级键的特殊子集,其中没有任何无关信息。
超级密钥的示例:
想象一下包含字段<Name>
,<Age>
,<SSN>
和<Phone Extension>
的表格。该表有许多可能的超级键。其中三个是<SSN>
,<Phone Extension, Name>
和<SSN, Name>
。在列出的那些中,只有<SSN>
是候选键,因为其他键包含不唯一标识记录所必需的信息。
外键 外键是关系中的属性或属性组合,其值与另一个关系中的主键匹配。创建外键的表称为依赖表。外键所引用的表称为父表。
答案 1 :(得分:21)
我一直觉得很难记住所有钥匙;所以我保持下面的笔记方便,希望他们帮助别人! 如果可以改进,请告诉我。
键:唯一标识关系表中实体/记录的属性或属性组合。
PK :一个唯一且不为null的密钥。它是其中之一 候选钥匙。
外键:FK是一个表(子)中的一个键,它唯一地标识另一个表(父)的行。子表中的FK不是唯一的。它是父表中的候选键。保持参照完整性,因为FK中的值作为父表中PK的值出现,否则为NULL。
唯一键:唯一可能为NULL的键
自然键:OLTP中的PK。它可能是OLAP中的PK。
代理键:OLAP中的代理PK充当了 在OLTP中替代PK。内部生成的人工密钥 OLAP。
复合键:PK由多个属性组成
SuperKey :可以唯一用于标识数据库记录的密钥, 包含不必唯一标识的额外属性 记录。
候选键:候选键可以唯一使用 识别没有任何无关数据的数据库记录。他们不是 空虚而独特。这是一个最小的超级钥匙。
备用密钥:非主键的候选密钥称为备用密钥。
带有无关数据的候选键:考虑一下 可用于标识Employee表中的记录但是候选者 只有密钥就足以完成这项任务。所以 成为无关的数据。
请注意PK,外键,唯一键,自然键,代理键, Composite Key定义为Database对象;哪里的自然键 是OLTP中的PK,可以是目标OLAP中的PK。对于其余的 密钥,由DB设计师/架构师决定是否 需要强制执行唯一/非空/参照完整性约束或 不
下面我尝试使用集合论来简化密钥w.r.t的成员资格的表示。彼此。
key = { All of the below keys }
PK = { PK }
Foreign Key = { Key with Not Null constraint }
Unique Key = { {Candidate Key/s}, {attributes containing NULL} }
Natural key = { PK }
Surrogate Key = { PK }
Composite Key = { PK }
Super Key = { {Candidate Key/s}, {Candidate Key/s with Extraneous data} }
Candidate Key = { PK, {Alternate Key/s} }
Alternate Key = { {Candidate Keys} - PK }
Candidate Key/s with Extraneous data = { }
我在下面总结了它:
备注:an-overview-of-the-database-keys-primary-key-composite-key-surrogate-key-et-al
答案 2 :(得分:1)
主键是超级键的子集。哪个是唯一定义的,其他字段依赖于它。在表中,它们可以只是一个主键,而休息子集是候选键或备用键。
答案 3 :(得分:1)
超级键 - 唯一定义关系中元组的属性或属性集。但是,超级密钥可能包含唯一标识不需要的其他属性。
候选键 - 一个超级键,使得没有适当的子集是关系中的超级键。因此,基本上有两个属性:每个候选键唯一地标识关系中的元组; &安培; 组合键的正确子集没有唯一性属性。
复合键 - 当候选键由多个属性组成时。
主键 - 选择用于在关系中唯一标识元组的候选键。
备用密钥 - 不是主键的候选密钥。
外键 - 关系中与某个关系的候选键匹配的属性或属性集。
答案 4 :(得分:1)
主要基于已接受的答案,但通过一些调整以更好地适应某些课程中教授的定义:
答案 5 :(得分:0)
超级钥匙:
用于唯一标识数据库中元组的属性或属性集。
候选钥匙:
PRIMARY KEY:
用于唯一标识DB中记录的候选键之一
not null
答案 6 :(得分:0)
超级密钥:超级密钥是一组一个或多个属性,其值唯一地标识关系中的元组。
候选键:候选键可以定义为超级键的最小子集。在某些情况下,候选键不能单独使用,因为只有一个属性是最小子集。例如,
员工(id,ssn,name,addrress)
这里候选键是(id,ssn),因为我们可以使用id或ssn轻松识别元组。通过,超级密钥的最小子集是id或ssn。但是他们俩都可以被视为候选人。
主键:主键是候选键之一。
示例: 学生(身份证,姓名,部门,结果)
下面
超级密钥:{Id,Id + Name,Id + Name + Dept}因为超级密钥是属性集。
候选键:Id因为Id本身就是super的最小子集 键。
主键:Id,因为Id是候选键之一
答案 7 :(得分:-1)
<强>超密钥强>
A superkey is a combination of attributes that can be uniquely used to identify a
database record. A table might have many superkeys.Candidate keys are a special subset
of superkeys that do not have any extraneous information in them.
Examples: Imagine a table with the fields <Name>, <Age>, <SSN> and <Phone Extension>.
This table has many possible superkeys. Three of these are <SSN>, <Phone Extension, Name>
and <SSN, Name>.Of those listed, only <SSN> is a **candidate key**, as the others
contain information not necessary to uniquely identify records.