关系键

帆 2024-08-02 0 阅读 0 评论

  关系键是关系数据库的重要组成部分。关系键是一个表中的一个或几个属性,用来标识该表的每一行或与另一个表产生联系。一列(或一组列),其值能够唯一区分表中每个行。

  主键

  主键(primary key或unique key),又称主码,数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。unique 可空,可以在一个表里的一个或多个字段定义;primary key 不可空不可重复,在一个表里可以定义联合主键;unique索引和primary索引区别:

  1、primary key = unique + not null

  2、唯一约束和主键一样都是约束的范畴,而且都可以作为外键的参考,不同的是,一张表只能有一个主键

  3、主键和唯一约束的创建需要依靠索引,如果在创建主键或唯一约束的时候没有已经建好的索引可以使用的话,Oracle会自动建立一个唯一的索引。

  表中的任何列都可以作为主键,只要它满足以下条件:

  ▲unique 就是唯一,当你需要限定你的某个表字段每个值都唯一,没有重复值时使用。

  ▲任意两行都不具有相同的主键值;

  ▲每个行都必须具有一个主键值(主键列不允许NULL值)。

  除mysql强制实施的规则外,应该坚持的几个普遍认可的最好习惯为:

  ▲不更新主键列中的值;

  ▲不重用主键列的值;

  ▲不在主键列中使用可能会更改的值。(例如,如果使用一个名字作为主键以标识某个供应商,当该供应商合并和更改其名字时,必须更改这个主键。)

  超键

  超键(superkey),有的文献称“超码”,是在数据库关系模式设计中能够唯一标示多元组(即“行”)的属性集。包含所有属性的集叫做明显(平凡)超键。

  超键指的是可以唯一标识一条记录的属性集合,不一定是最小的。超键的属性集合可能还包括其他属性,但是其中必须包含唯一标识记录的属性集合。例如,一个学生信息表中,学号和班级可以作为超键,因为这两个属性集合可以唯一标识一条学生记录,但是其中班级属性可以不包括,仍然是超键。

  候选键

  在关系模型中,候选键或候选码(candidate key)是某个关系变量的一组属性所组成的集合,它需要同时满足下列两个条件:

  ▲这个属性集合始终能够确保在关系中能唯一标识元组

  ▲在这个属性集合中找不出真子集能够满足条件

  满足第一个条件的属性集合称为超键,因此我们也可以把候选键定义为“最小超键”,也就是不含有多余属性的超键。

  候选键指的是可以唯一标识一条记录的最小属性集合(最小超键),即在该关系中,候选键的属性集合不可再被减少,否则将无法保证唯一标识一条记录。例如,一个学生信息表中,可以将学号作为候选键,因为学号可以唯一标识一条学生记录。

  候选键的重要性是它们能够在关系中唯一标识出不同的元组,因此超键也是在设计数据库模式时需要指定的最重要的约束之一。由于在关系模型中,每个关系都是一个集合(没有重复的元素),所以每个关系都至少有一个候选键(因为所有属性组合必然是个超键)。但是在某些关系型数据库中表也能代表多重集,所以在每个关系中都显式地定义至少一个候选键是一条很重要的设计原则。数据库管理系统通常都需要将每个关系中的某个候选键定义为主键,亦即这个候选键是区分不同元组时首选的识别方式,例如外键通常就是引用主键而非其他候选键。

  外键

  外键(foreign key,台湾译作外来键),又称外部键。其实在关系数据库中,每个数据表都是由关系来连系彼此的关系,父数据表(Parent Entity)的主键(primary key)会放在另一个数据表,当做属性以创建彼此的关系,而这个属性就是外键。

  比如,学生跟老师之间是教学的关系,学生数据表会有个属性叫指导老师(FK),而这个值就是对应到老师数据表的老师代号(PK),学生的指导老师就是外键。

  代理键

  在关系型数据库设计中,代理键是在当数据表中的候选键都不适合当主键时,例如数据太长,或是意义层面太多,就会请一个无意义的但唯一的字段来代为作主键。

  代理键是:

  ▲Surrogate (1) – Hall, Owlett and Codd (1976) 一个代理键值确定了外部世界的一个实体。代理键值是数据库生成的,从来不显示给用户或应用程序看。

  ▲Surrogate (2) – Wieringa and De Jonge (1991) 一个代理键值确定了数据库中的一个对象。代理键值是数据库生成的,用户或应用程序看不到它。

  在实践中,代理键值通常是个自动递增的数字。在Sybase或SQL Server,用identity column标识代理键,PostgreSQL里用serial,Oracle里用SEQUENCE,在MySQL里用一个标记有AUTO_INCREMENT的字段。

  自然键

  自然键与代理键相反,它是在自然生活中唯一确定一个事物的标识。身份证号就是一个自然键,用于确定一个人。

本文来源:重庆seo博客

本文地址:https://focusonseo.cn/mysql/147.html

文章声明:以上内容(如有图片或视频亦包括在内)除非注明,否则均为重庆seo博客原创文章,转载或复制请以超链接形式并注明出处。

相关文章

上一篇:数据表

下一篇:数据库技术构成