参考链接
候选码、主码、全码、外码、主属性、主键、主关键字、非主属性清晰总结 - 知乎 (zhihu.com)
1.码:
能够标识一条记录的属性或者属性集
2.候选码
能够标识一条记录的最小属性集
任一候选键的任何真子集都不能唯一标识一个记录(比如在成绩表中(学号,课程号)是一个候选键,单独的学号,课程号都不能决定一条记录)
3.主码
唯一标识一条记录的最小属性集(从候选码中认为的挑选一条)
候选码有很多个,但是主码只有一个,所以是从候选码中挑一个
注意:主键只能有一个,但是主键可以有多个属性(这是一个容易被大家误的地方)
4.主属性
主属性是候选码所有属性的并集
5.非主属性
不包含候选码中的属性称为非主属性,非主属性是相对主属性来定义的。
举例
学生成绩信息表中有(学号、姓名、性别、年龄、系别、专业等)
在这个表中的姓名是唯一的,没有重名现象。
码
由于学号能确定一个学生,因此学生表中含有学号的任意组合都为此表的超键。如:(学号)、(学号,姓名)、(学号,性别)等。
学号唯一,所以是一个超键
姓名唯一,所以是一个超键
(姓名,性别)唯一,所以是一个超键
(姓名,年龄)唯一,所以是一个超键
(姓名,性别,年龄)唯一,所以是一个超键
候选键
学号唯一,而且没有多余属性,所以是一个候选键
姓名唯一,而且没有多余属性,所以是一个候选键
候选键可以是(C)(D)(A ,B)如果是这种的话,单独的A或者B都不能确定一条信息
(姓名,性别)唯一,但是单独姓名一个属性就能确定这个人是谁,所以性别这个属性就是多余属性,所以(姓名,性别)不是候选键
(姓名,年龄),(姓名,性别,年龄)同上,也不是候选键
主键
就是在候选码中选一个,人为规定的,例如学生表中,我们通常会让“学号”做主键,学号能唯一标识这一个元组。
主属性
学号,姓名
非主属性
性别、年龄、系别、专业
练习题
名字会重复
1.答案:
(1)候选关键字2个:(学号),(身份证号)
(2)主关键字:(学号)
(3)主属性2个:学号,身份证号
(4)非主属性2个:姓名,系别
2. 答案:
(1)候选关键字1个:(学号,课程号)
(2)主关键字:(学号,课程号)
(3)主属性2个:学号,课程号
(4)非主属性1个:成绩
3.答案
(1)候选关键字1个:(课程号)
(2)主关键字:(课程号)
(3)主属性1个:课程号
(4)非主属性2个:课程名,学分