超键、候选键、主键、外键以及sql约束

Posted by JimWang on 2021-02-20

超键、候选键、主键、外键以及sql约束

定义

超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键

候选键(candidate key): 不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不是键了!

主键(primary key): 用户选作元组标识的一个候选键程序主键

外键(foreign key):如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键。

举例

学生信息(学号 身份证号 性别 年龄 身高 体重 宿舍号)和 宿舍信息(宿舍号 楼号)

超键:==只要含有“学号”或者“身份证号”两个属性的集合就叫超键,例如R1(学号 性别)、R2(身份证号 身高)、R3(学号 身份证号)等等都可以称为超键!==

候选键:==不含有多余的属性的超键,比如(学号)、(身份证号)都是候选键==,又比如R1中学号这一个属性就可以唯一标识元组了,而有没有性别这一属性对是否唯一标识元组没有任何的影响!

主键:==就是用户从很多候选键选出来的一个键就是主键==,比如你要求学号是主键,那么身份证号就不可以是主键了!

外键:宿舍号就是学生信息表的外键

约束

  • NOT NULL: 用于控制字段的内容一定不能为空(NULL)。
  • UNIQUE: 控制字段内容不能重复,一个表允许有多个 Unique 约束。
  • PRIMARY KEY: 也是用于控件字段内容不能重复,但它在一个表只允许出现一个。
  • FOREIGN KEY: 用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
  • CHECK: 用于控制字段的值范围。

转载自:

https://blog.csdn.net/jerry11112/article/details/78160771

https://www.yuque.com/fanzhengxu/tba6b8/dx0hvw#4MqAL