文档介绍:数据库系统概论
An Introduction to Database System
第六章 关系数据理论
信息科学与工程学院
College of Information Science and Engineering
Boha及其系主任的信息也丢掉了。
关系模式Student中存在的问题
数据依赖对关系模式的影响
结论:
S关系模式不是一个好的模式。
“好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。
原因:由存在于模式中的某些数据依赖引起的
解决方法:通过分解关系模式来消除其中不合适
的数据依赖。
数据依赖对关系模式的影响
将关系模式S分解成下面三个关系模式:
S(SNO,SDEPT, SNO → SDEPT),
SC(SNO,CNAME,G,(SNO,CNAME) →G),
DEPT(SDEPT,NN,SDEPT → MN)。
这三个模式都不会发生上述异常。
分解的过程一般称为规范化。
规范化
关系必须是规范化的,即每一个分量必须是不可分的数据项。
规范化的关系不一定很好地描述现实世界。
规范化理论是用来
改造关系模式,通过分解关系模式来消除其中不合适的数据依赖。
解决插入异常、删除异常、更新异常和数据冗余问题。
关系的规范化
函数依赖
一、函数依赖
二、平凡函数依赖与非平凡函数依赖
三、完全函数依赖与部分函数依赖
四、传递函数依赖
函数依赖
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。
函数依赖
关系模式S 关系r , 元组t ,s
若t[X]=s[X] ,则t[Y]=s[Y]。如:
t[SNO]=s[SNO], t[SDEPT]=s[SDEPT]
SNO → SDEPT
说明:
1. 函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。例如“Name→Age”这个函数依赖只有在不允许有同名人的条件下成立
2. 数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“Name→Age” 成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在, 则拒绝插入该元组。
3. 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。
说明:
函数依赖
若X→Y,则若X叫做决定因素(Determinant)。
若X→Y,并且Y→X, 则记为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
但Ssex →Sage
二、平凡函数依赖与非平凡函数依赖
若X→Y,但Y X,则称X→Y是非平凡的函数依赖
若X→Y,但Y X, 则称X→Y是平凡的函数依赖
对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明, 我们总是讨论非平凡函数依赖。
平凡函数依赖与非平凡函数依赖
例:在关系SC(Sno, Cno, Grade)中,
非平凡函数依赖: (Sno, Cno) → Grade
平凡函数依赖: (Sno, Cno) → Sno
(Sno, Cno) → Cno
复习
Student(Sno,Sdept,Mname,Cno,Grade)
函数依赖概念
完全函数依赖与部分函数依赖
在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’ Y, 则称Y完全函数依赖于X,记作X F Y。
若X→Y,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作X P Y。
完全函数依赖与部分函数依赖
例: 在关系S(Sno, Sdept, Mname, Cno, Grade)中,
(1)(Sno,Cno)→Grade
由于:Sno →Grade,Cno → Grade,
因此:(Sno, Cno) F Grade
(2)(Sno,Cno)→ S