关系模式设计的问题
一.关系模式设计的问题 张表
1.假设有描述学生选课及住宿情况的关系模式
S-L-C CSno,Sname,Ssex,Sdept,Slol,Cno,Grade)
主键(Sno,Cno)
2.问题
1.数据冗余问题
数据重复 空间浪费,数据不一致
2.数据更新问题
繁琐,信息不一致
3.数据插入问题
例:新成立一个系,但未召生,Sno.Cno为空,而主键不能为空
4.数据删除问题
例列:一名同学选了一门课,之后放弃,删除时会删除该同学其余基本信息
3.数据的增,删改都称为操作异常.
原因:这个关系没有设计好,某些属性之间存在“不良”的函攻依赖关系
解决方法:关系规范理访是要改造这个关系模式,并避免上述问题
进行模式分解 即把一个关系模式分解成两个或多个关系模式在分解中都那些“不良”的时依赖,从而获得良好的关系模式
函数依赖
1 基本概念
在关系数据库中讨论函数成函教依确性重的是样受上的要.例如:省=f(城市)
只要给出一个具体的城市值,就会有唯一的“省”值和它对应 如 '衡阳市”在“湖南省”,这里“城市”是自变量X,“省”是因变量或函数值Y。一般把X函数决定Y,或Y函数依赖与X表示为 X--->Y
根据以上讨论可以写出较直观的函数依赖定义,即如果有一个关系模式R(A1.A2 An),X和Y为{A1,A2,.....An}的子集,r是R的任一具体关系,那么对于关系r中任意一个x值,都只有一个Y值与之对应,则称X函数决定Y或y函数依赖于x。
例如,对学生关系模式Student (Sno, Sname,Sdept, Sage) 有以下函数依赖关系Sno→ Sname.
Sno → Sdept, Sno→ Sage
对学生选课关系模式SC(Sno, Cno,Grade)有以下函数依赖关系:
(Sno, Cno)→ Grade
下面给出函数依赖的形式化定义
定义 9.1 设有关系模式( A1 A2 …,An),X和Y均为{A1,A2,......An}的子集 ,是R的任一具体关系t1,t2是r中的任意两个元组。如果由t1[X]=t2[X]可以推导出t1[Y]=t2[Y],则称X函数决定Y,或Y函数依赖于X,记为X→Y。
在以上定义中特别要注意,只要t1[X]=t2[X],t1和[Y]=t2[Y]成立,就有X--->Y。
2 一些术语和符号
设有关系模式R(A,A,…,A,),X和Y均为A,4,…,A. 的子集,则有以下结论:
(1)如果X→Y,但Y不包含于X,则称X一Y是非平凡的函数依赖。如不做特别说明,我们讨论的都是非平凡的函数依赖。
(2)如果y不函数依赖于X,则记作X---->/Y。
(3)如果X→Y,则称X为决定因子。
(4)如果X一>Y,并且Y一X,则记作X<--->Y
(5)如果,并且对于X的一个任意子集X"都有X"--->/Y,则称Y完全函数依赖于X,记作X—f>Y;如果x'一>Y成立,则称Y部分函数依赖于X,记作X一p>Y
(6)如果X→Y(非平凡函数依赖,并且Y---/>X)、Y→Z,则称Z传递函数依赖于X
(7)设K为关系模式R的一个属性或属性组,若满足:
K→fA1 K---f>A2 .........K---f>An
则称K为关系模式R的候选键(或候选码)。称包含在候选键中的属性为主属性,不包含在 若任何候选码中的属性称为非主属性。
例9.1 设有关系模式SC(Sno, Sname, Cno, Credit, Grade),其中各属性分别为:学号、姓名、课程号、学分和成绩,主键为(Sno,Cno),则有如下函数依赖:
Sno→ Sname 姓名函数依赖于学号
(Sno, Cno)—p>Sname 姓名部分函数依赖于学号和课程号
(Sno,Cno)----f>Grade 成绩完全函数依赖于学号和课程号
例9.2 设有关系模式S(Sno, Sname, Sdept, Dept_master),其中各属性分别为:学号、姓名、所在系和系主任(假设一个系只有一个主任),主键为Sno,则有如下函数依赖关系:
Sno —→f Sname 姓名完全函数依赖于学号
由于有:
Sno--->fSdept 所在系完全函数依赖于学号
Sdept —f>Dept_master 系主任完全函数依赖于所在系
因此:
Sno ---传递>Dept_master 系主任传递函数依赖于学号
函数依赖的推理规则
1.Amstrong 公理
(1)自反律(reflexivity)
若YXU 则X一Y在R上成立。即一组属性函数决定它的所有子集
例如,对关系模式SC(Sno, Sname, Cno, Credi,Grade)
有:(Sno, Cno)→Cno和 (Sno, Cno)→ Sno
(2)增广律(augmentation)。
著X一Y在R上成立,且Z U,则XZ→YZ在R上也成立。
(3)传递律(transitivity)。
若X一Y和Y→Z在R上成立,则X→Z在R上也成立。
2. Armstrong 公理推论
(1)合并规则(union rule)。
若x→Y和X→Z在R上成立,则X→YZ在R上也成立。
例如,对关系模式Student (Sno, Sname, Sdept, Sage),有Sno→(Sname, Sdept),Smo-age
则有 Sno→(Sname, Sdept, Sage)成立。
(2)分解规则(decomposition rule)。
若X→Y和ZY在R上成立,则X→Z在R上也成立。
从合并规则和分解规则可得到如下重要结论:
如果A1 …An,是关系模式R的属性集,那么X→A1…An成立的充分必要条件是X一Ai(i=1,2,…,n)成立。
(3)伪传递规则(pseudo-transitivity rule)。
若X→Y和YW→Z在R上成立,则XWZ在R上也成立。
(4)复合规则(composition rule)。
若X→Y和W→Z在R上成立,则XW→YZ在R上也成立。
例如,对关系模式SC(Sno, Sname,Cno, Credit, Grade)
有:Sno→ Sname 和 Cno→ Credit 成立
则有:(Sno, Cno)→(Sname, Credit)