做题需要明确知道的概念:
码:可以唯一区别一个元组(即表中的一行数据)的属性或属性的集合。
候选码:可以唯一区别一个元组(即表中的一行数据)的最少的属性或属性的集合。
码和候选码的区别:比如学生表student(id,name,age,sex,deptno),其中的id是可以唯一标识一个元组的,所以id是可以作为候选码的,既然id都可以做候选码了,那么id和name这两个属性的组合可不可以唯一区别一个元组呢?显然是可以的,此时的id可以成为码,id和name的组合也可以称为码,但是id和name的组合不能称之为候选码。因为即使去掉name属性,剩下的id属性也完全可以唯一标识一个元组,就是说,候选码中的所有属性都是必须的,缺少了任何一个属性,就不能唯一标识一个元组了。
主码:一个表的候选码可能有多个,从这些个候选码中选择一个做为主码。
主属性:因为一个表可以有多个候选码,所以如果有一个属性在所有的候选码中都出现,它就称为主属性。
非主属性:不包含在任何一个候选码中的属性称为非主属性。
完全函数依赖:
- 如果码是:{学号,课号}
- 已知存在依赖:{学号,课号}–>成绩
- 因为: 学号+课号 可以决定成绩,但只有学号or只有课号无法决定成绩
- 所以称:成绩完全函数依赖于码。
部分函数依赖:
- 如果码是:{学号,课号}
- 已知存在依赖:{学