学习信息表
学号,姓名,系,课程名称,分数
分析是不是符合范式,从第一范式开始
原子列,也可拆分列的关系
第二范式:
几个概念:
1、函数依赖:A -->B 如果通过A属性(属性组)的值,可以确定唯一B属性的值。则称B依赖的A
例如:学号 -->姓名 (学号、课程名称)-->分数
2、完全函数依赖:A-->B,如果A是一个属性组,则B属性值的确定需要依赖于A属性组中所有的属性值
3、部分函数依赖:A-->B,如果A是一个属性组,则B属性值得确定只需要依赖于A属性组中某一些值即可
例如:(学号,课程名称)--> 姓名
4、传递函数依赖:A --> B,B -->C,如果通过A属性(属性组)的值,可以确定唯一B属性的值,在通过B属性(属性组)的值可以确定唯一C属性的值,则称C传递函数依赖于A
5、如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性码)值
例如:该表中的码为:(学号,课程名称)
*主属性:码属性组中的所有属性
*非主属性:除过码属性组的属性
例如:学号 -->系名,系名 -->系主任
不满足第一范式的话,连表都建立不起来
因为创建表的时候,不可能搞出复合列
码:如果在一张表中,一个属性或属性组,被其它的依赖
例如:该表中码为:一个属性组(学号,课程名称)
主属性:码属性组中的所有属性
非主属性:除过码属性组的属性
消除传递依赖
三大范式,