关系数据库基础理论~~
DDL:Data Definition Language,数据库模式定义语言;
DML:Data Manipulation Language,数据操纵语言命令使用户能够查询数据库以及操作已有数据库中的数据;
关系范式学习:
要理解范式必须先理解一下依赖关系
1.数据依赖
数据依赖指的是通过一个关系中属性间的相等与否体现出来的数据间的相互关系,其中最重要的是函数依赖和多值依赖。
2.函数依赖
设X,Y是关系R的两个属性集合,当任何时刻R中的任意两个元组中的X属性值相同时,则它们的Y属性值也相同,则称X函数决定Y,或Y函数依赖于X。
3.平凡函数依赖
当关系中属性集合Y是属性集合X的子集时(Y?X),存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。
4.非平凡函数依赖
当关系中属性集合Y不是属性集合X的子集时,存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。
5.完全函数依赖
设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
6.部分函数依赖
设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
7.传递函数依赖
设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
举例说明:完全依赖和部分依赖,其他的类似
关系 SB(学号,姓名,系名,系主任,课号,成绩)中,、
非主属性“姓名”仅函数依赖于“学号”,也就是“姓名”部分函数依赖于主码(学号,课号)而不是完全依赖;
非主属性“系名”仅函数依赖于“学号”,也就是“系名”部分函数依赖于主码(学号,课号)而不是完全依赖;
非主属性“系主任”仅函数依赖于“学号”,也就是“系主任”部分函数依赖于主码(学号,课号)而不是完全依赖。
第一范式(1NF--normal form)--设 R 是一个关系模式,如果 R 中的每一个属性 A 的值域中的每个值都是不可分解的,则称 R 是属于第一范式的,记作 R ∈ 1NF;
第二范式(2NF)---定义如果关系 R ∈ 1NF,并且 R 中每一个非主属性完全函数依赖于任一个候选码,则 R ∈ 2NF;
第三范式(3NF)---定义如果关系 R ∈ 2NF,并且 R 中每一个非主属性对任何候选码都不存在传递函数依赖,则 R ∈ 3NF 。
第三范式反例:
SD(学号,姓名,系名,系主任)中,存在如下函数依赖:
学号 → 系名
系名 → 系主任
系名 -\→ 学号
那么,存在着一个传递函数依赖“学号 → 系主任”成立。所以这个关系不是一个3NF。
将 SD 分解为
SE(学号,姓名,系名)
SF(系名,系主任)此时满足3NF。