关系数据理论
一、函数
数据依赖关系:函数依赖(一个x有一个y与之对应,好)、多值依赖(一个x有好几个y与之对应,不好)
函数依赖关系:完全依赖(好)&部分依赖(不好)、传递依赖(不好)、平凡(不好)&非平凡依赖(好)




二、码
候选码:在一个关系(表)中,能够唯一标识 一条元组(行)的最小属性集合。
唯一性:候选码的值能唯一确定一条记录。
最小性:候选码中的任何一个属性都不能被删除,否则将破坏唯一性。也就是说,候选码中不能包含多余的属性。
在学生表(学号,姓名,身份证号,班级)中,学号 可以唯一标识一个学生,是一个候选码。身份证号 也可以唯一标识一个学生,是另一个候选码。
在选课表(学号,课程号,成绩)中,单独的 学号 或 课程号 都不能唯一标识一条记录,因为一个学生可以选多门课,一门课可以被多个学生选,但属性集 (学号,课程号) 可以唯一标识一个学生的一门课的成绩,因此它是这个表的唯一候选码。
主属性:包含在任何一个候选码中的属性。非主属性:不包含在任何候选码中的属性。
主属性是候选码的组成部分,主属性本身可能就是一个候选码(如果候选码是单属性),也可能是某个候选码的一部分(如果候选码是属性集)。 一个表可以有多个候选码,因此主属性也可以有多个。在上面的学生表示例中,有两个候选码:学号 和 身份证号, 那么,学号 和 身份证号 都是主属性,而 姓名 和 班级 既不是 学号 也不是 身份证号 的一部分,所以它们是非主属性。
主码:是从所有候选码中人为选定的一个,用来作为数据库操作的主要依据。一个表只能有一个主码。主属性是所有候选码中包含的属性的总和,一个表可以有多个主属性。在上面的学生表中,如果我们选择 学号 作为主码,那么 学号 和 身份证号 依然是主属性。主码 学号 只是主属性的一个子集。
全码:整个属性组是码
三、范式
范式是符合某一种级别的关系模式的集合
(数据冗余和增删改异常)
函数依赖
第一范式 关系(表)中的每一个属性(列)都必须是不可再分的原子值。
第二范式 若关系模式属于第一范式,并且每一个非主属性都完全函数依赖于任何一个候选码(非主属性对主属性没有部分函数依赖)
第三范式 若关系模式属于第二范式,并且非主属性对主属性没有传递函数依赖
BCNF (三范式的特殊情况的修正)写出所有的函数关系,每一个箭头的左边,都是候选码;主属性内部没有部分或传递依赖,有则不是BC范式
多值依赖

第四范式

