1. 分类:六种范式
2. 第一范式(1NF):每一列都是不可分割的原子数据项
3. 第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)
a. 函数依赖:
A --> B
如果通过A属性(属性组)的值,可以确定唯一B属性的值,则称B依赖于A。
例如:学号 --> 姓名,(学号,课程名) --> 课程得分
姓名依赖学号属性,课程得分依赖学号和课程名组成的属性组
b. 完全函数依赖:
A --> B
如果A是一个属性组,如果B的唯一确定依赖与属性组中所有属性,则称完全函数依赖
例如:(学号,课程名)--> 课程得分
课程得分必须依赖属性组中所有属性才能确定唯一
c. 部分函数依赖:
A --> B
如果A是一个属性组,如果B的唯一确定依赖与属性组中部分属性,则称部分函数依赖
例如:(学号,课程名)--> 姓名
姓名仅依赖属性组中学号属性就可以确定唯一
d. 传递函数依赖:
A --> B, B --> C
如果通过A属性(属性组)的值,可以确定唯一B属性的值,通过B属性(属性组)的值可以确定唯一C,则称C传递依赖于A
例如:学号 --> 系名, 系名 --> 系主任
学号确定唯一系名,一个系确定唯一的系主任
e. 码:
如果在一张表中,一个属性(属性组)被其他所有属性所完全依赖,则称该属性(属性组)为该表的码
例如:(学号,姓名,系名,系主任,课程名称,课程得分)中码为属性组(学号,课程名称)
主属性:码属性组中的所有属性
非主属性:除码中属性外的其他属性
4. 第三范式(3NF):在2NF的基础上,任何非主属性不依赖于其他非主属性(在2NF基础上消除传递依赖)