aer*_*aer 36 terminology key database-schema
我是MySQL的新手,我对我遇到的不同术语感到困惑.我试着谷歌搜索答案,但结果真的令人困惑,当我尝试理解它似乎他们是相同的东西.
密钥,超级密钥,最小超级密钥,候选密钥和主密钥之间究竟有什么区别?
bHa*_*aTh 71
在这里,我复制粘贴我收集的一些信息
键 A键是单个或多个字段的组合.其目的是根据需要从表中访问或检索数据行.密钥在表中定义,以快速平滑地访问或排序存储的数据.它们还用于在不同表之间创建链接.
密钥类型
主键 唯一标识关系中的行或记录的属性或属性组合称为主键.
辅助密钥 作为检索基础的字段或字段组合称为辅助密钥.辅助密钥是非唯一字段.一个二级密钥值可以指许多记录.
候选键或备用键 关系只能有一个主键.它可能包含许多可用作主键的字段或字段组合.一个字段或字段组合用作主键.未用作主键的字段或字段组合称为候选键或备用键.
复合键或连接键 由两个或多个属性组成的主键称为复合键.
排序或控制键 用于对存储数据进行物理排序的字段或字段组合,称为排序键.它也是已知的控制键.
甲超密钥是可以唯一地用于识别的数据库记录的属性的组合.一个表可能有很多超级密钥.候选键是超级键的特殊子集,其中没有任何无关信息.
例如,对于超键:想象一下,一个表中的字段<Name>,<Age>,<SSN>和<Phone Extension>.该表有许多可能的超级键.其中三个是<SSN>,<Phone Extension, Name>和<SSN, Name>.在列出的那些中,只有<SSN>候选密钥,因为其他密钥包含唯一标识记录所不需要的信息.
外键 外键是关系中属性或属性组合,其值与另一个关系中的主键匹配.创建外键的表称为依赖表.外键所引用的表称为父表.
Ken*_*war 21
我总是发现很难记住所有的钥匙; 所以我保持下面的笔记方便,希望他们帮助别人!如果可以改进,请告诉我.
密钥:唯一标识关系表中的实体/记录的属性或属性组合.
PK:唯一且不为空的单个密钥.它是候选键之一.
外键:FK是一个表(子)中的键,它唯一地标识另一个表(父)的行.子表中的FK不是唯一的.它是父表中的候选键.保持参照完整性,因为FK中的值作为父表中PK的值存在,否则为NULL.
唯一键:唯一可能为NULL但可能不为NULL的键
自然键:OLTP中的PK.它可能是OLAP中的PK.
代理键:OLAP中的代理PK是OLTP中PK的替代品.OLAP内部生成的人工密钥.
复合键:PK由多个属性组成
SuperKey:可以唯一用于标识数据库记录的密钥,可以包含唯一标识记录所不需要的额外属性.
候选键:候选键可以唯一地用于标识数据库记录而无需任何无关数据.它们不是空的而且是独一无二的.这是一个最小的超级钥匙.
备用密钥:不是主密钥的候选密钥称为备用密钥.
具有无关数据的候选密钥:考虑可以用于识别Employee表中的记录,但仅有候选密钥就足以完成此任务.因此成为无关的数据.
注意,PK,外键,唯一键,自然键,代理键,复合键被定义为数据库对象; 其中Natural键是OLTP中的PK,可以是目标OLAP中的PK.对于其余的密钥,由DB设计者/架构师决定是否需要强制执行唯一/非空/参照完整性约束.
下面我尝试使用集合论来简化密钥的成员资格的表示.
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 = { }
Run Code Online (Sandbox Code Playgroud)
我总结如下:

注意:数据库密钥 - 主键 - 复合 - 密钥 - 代理 - 密钥 - 等的概述