关系模式又五部分组成,是一个五元组:
R(U,D,DOM,F) 其中 R 是符号化的元组语义
U 为一组属性,D 为属性组U中的属性所来自的域
DOM 为属性到域的映射,F为属性组U上的一组数据依赖
由于D、DOM与模式设计关系不大,因此在本章中把关系模式看作一个三元组:R<U,F>
第一范式(NF)
作为二维表,关系要符合一个最基本的条件:
每个分量必须是不可分开的数据项
数据依赖(关系内部属性与属性的约束关系)
主要类型:
(1)函数依赖
例如:一个学号只对应一个学生,一个学生只在一个系中学习
Sname = f(Sno) ,Sdept = f(Sno)
即Sno函数决定Sname,Sno函数决定Sdept
记作 Sno->Sname,Sno->Sdept
【定义】设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元祖在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X->Y
【例】Student(Sno,Sname,Ssex,Sage,Sdept),假设不允许重名,则有:
Sno->Ssex, Sno->Sage,Sno->Sdept,Sno->Sname,Sname->Ssex,Sname->Sage,Sname->Sdept
平凡函数依赖和非平凡函数依赖
若X→Y,则X称为这个函数依赖的决定因素
若X→Y,Y→X,则记作X←→Y
若Y不函数依赖于X,则记作X↛Y
完全函数依赖和部分函数依赖
传递函数依赖
【例】在关系Std(Sno,Sdept,Mname)中,有:
Sno->Sdept,Sdept->Mname,Mname传递函数依赖于Sno
码
候选码可以唯一的确定一个元组
超码的某个真子集为候选码,候选码为最小的超码
若关系模式R中有多个候选码,则选定其中的一个做为主码
主属性与非主属性:
包含在任意一个候选码中的属性,称为主属性(任一候选码中含有的属性全都为主属性)
不包含在任何码中的属性称为非主属性
整个属性组是码,称为全码
关系模式R中属性或属性组X并非是R的码,但X是另一个关系模式中的码,则称X是R的外部码(也称外码)
范式
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。
2NF
【例】S-L-C(Sno,Sdept,Sloc,Cno,Grade),Sloc为学生的住处,并且每一个系的学生住在同一个地方。S-L-C的码为为(Sno,Cno)
函数依赖有:
非主属性Sdept,Sloc并不完全依赖于码,关系模式S-L-C不属于2NF
一个关系模式不属于2NF,会产生以下问题
(1)插入异常
(2)删除异常
(3)修改复杂
解决方法:用投影方法把关系模式S-L-C发呢借我两个关系模式
SC(Sno,Cno,Grade)
S-L(Sno,Sdept,Sloc)
SC的码为(Sno,Cno),SL的码为Sno,这样使得非主属性对码都是完全函数依赖了
3NF
(没有传递依赖)
【例】S-L中Sno →Sdept( Sdept ↛ Sno), Sdept→Sloc,可得Sno → Sloc。
解决的办法是将S-L分解成
S-D(Sno,Sdept)∈ 3NF
D-L(Sdept,Sloc)∈ 3NF
BCNF
(扩展的第三范式)
(1)没有部分函数依赖和传递函数依赖
(2)决定因素中包含码
【例】关系模式S(Sno,Sname,Sdept,Sage)
假设Sname具有唯一性
- S中有两个候选码:Sno,Sname 非主属性:Sdept,Sage
- 非主属性不存在对码的传递依赖和部分依赖,所以S∈3NF
- S中决定因素Sno,Sname包含码,所以S也属于BCNF
多值依赖
【例】设学校中某一门课程由多个教师讲授,他们
使用相同的一套参考书。每个教员可以讲授多门课
程,每种参考书可以供多门课程使用
建立关系模式Teaching(C,T,B)
课程C
教师T
参考书B
设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关
4NF
规范化小结
习题