
关系必须是规范化的,简单说来,就是在结构表设计时,消除冗余性和不协调的从属关系。即每一个分量必须是不可分的数据项,但是这只是最基本的规范化。规范化理论就是研究如何将一个不好的关系模式转化为好的关系模式的理论,规范化理论是围绕范式而建立的。规范化理论认为,一个关系数据库中所有的关系,都应满足一定的规范(约束条件)。规范化理论把关系应满足的规范要求分为几级,满足最低要求的一级叫做第一范式(1NF),在第一范式的基础上提出了第二范式(2NF),在第二范式的基础上又提出了第三范式(3NF),以后又提出了BCNF范式,4NF,5NF,以及“域/关键字”范式。范式的等级越高,应满足的约束集条件也越严格。规范的每一级别都依赖于它的前一级别,例如若一个关系模式满足2NF,则一定满足1NF。
可能有点复杂,希望你认真看。
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。
若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,
而在Y上的属性值不等,
则称
“X函数确定Y”
或
“Y函数依赖于X”,记作X→Y。
X称为这个函数依赖的决定属性集(Determinant)。
Y=f(x)
说明:
1
函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。
2
函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。
例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立
3
数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“姓名→年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在,
则拒绝装入该元组。
例:
Student(Sno,
Sname,
Ssex,
Sage,
Sdept)
假设不允许重名,则有:
Sno
→
Ssex,
Sno
→
Sage
,
Sno
→
Sdept,
Sno
←→
Sname,
Sname
→
Ssex,
Sname
→
Sage
Sname
→
Sdept
但Ssex
-\→
Sage
若
X
→
Y,并且
Y
→
X,
则记为
X
←→
Y。
若
Y
不函数依赖于
X,
则记为
X
-\→
Y。
在关系模式R(U)中,对于U的子集X和Y,
1如果
X
→
Y,但
Y
不为
X
的子集,则称
X
→
Y
是非平凡的函数依赖
例:在关系SC(Sno,
Cno,
Grade)中,
非平凡函数依赖:
(Sno,
Cno)
→
Grade
2若
X
→
Y,但
Y
为
X
的子集,
则称
X
→
Y
是平凡的函数依赖
平凡函数依赖:
(Sno,
Cno)
→
Sno
,(Sno,
Cno)
→
Cno
3若
x
→
y
并且,存在
x
的真子集
x1,使得
x1
→
y,
则
y
部分依赖于
x。
例:学生表(学号,姓名,性别,班级,年龄)关系中,
部分函数依赖:(学号,姓名)→
性别,学号
→
性别,所以(学号,姓名)→
性别
是部分函数依赖
4若
x
→
y
并且,对于
x
的任何一个真子集
x1,都不存在
x1
→
y
则称y完全依赖于x。
例:成绩表(学号,课程号,成绩)关系中,
完全函数依赖:(学号,课程号)→
成绩,学号
-\→
成绩,课程号
-\→
成绩,所以(学号,课程号)→
成绩
是完全函数依赖
5若x
→
y并且y
→
z,而y
-\→
x,则有x
→
z,称这种函数依赖为传递函数依赖。
例:关系S1(学号,系名,系主任),
学号
→
系名,系名
→
系主任,并且
系名
-\→
学号,所以
学号
→
系主任
为传递函数依赖
1课名<-->老师,老师-->家庭住址,
2ABC,BC为侯选码
因BC-D,D-E
所以BC-E,又ABC包含BC,ABC-E,所以存在非主属性E部分函数依赖于ABC,因此它不满足第2范式,它满足第一范式。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)