6-关系数据库理论
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3NF(Ⅲ)
快速热身
关系模式R(A,B,C,D),码为AB,给 出它的一个函数依赖集,使得R属于2NF而 不属于3NF。
BCNF(Ⅰ)
示例
SPC(S# , P# , C#),
P# C#,每位老师只教授一门课
(S#,P#) C# (S#,C#) P#,某学生选定一门课,就对应一位老 师 (S#,P#),(S#,C#)为候选码。
多值依赖(Ⅳ)
形式化:
关系模式R(U),X、Y、ZU,Z=U–X– Y,对于R(U)的任 一关系r,若存在元组t1,t2,使得t1[X] = t2[X],那么就 必然存在元组t3,t4,使得: t3[X] = t4[X] = t1[X] = t2[X] t3[Y] = t1[Y], t4[Y] = t2[Y] t3[Z] = t2[Z], t4[Z] = t1[Z] 则称Y多值依赖与X,记作X Y。 若(C#, P#, B#)满足C#P#,含有元组t1=(C1, P1, B1),t2=(C1, P2, B2),则也一定含有元组t3=(C1, P1, B2),t2=(C1, P2, B1)。
函数依赖(Ⅰ)
定义
函数依赖:设R(U)是属性集U上的关系模式,X , Y U, r是R(U) 上的任意一个关系,如果成立对t , s r,若 t[X] = s[X],则t[Y] = s[Y],那么称“X函数决定Y”,或 “Y函数依赖于X”,记作XY。称X为决定因素。 如S# SN, (S#,C#) G 平凡函数依赖:如果X Y,但Y X,则称其为非平凡 的函数依赖,否则称为平凡的函数依赖。 如(S#,SN) SN是平凡的函数依赖
传递函数依赖:在R(U)中,如果XY,Y Z,且 Y X,Y X,则称Z对X传递函数依赖。 S# SD,SD DEAN 快速热身3:找出职工工资表中的传递函数依赖。
码
属性集U上的关系模式R(U)常表示为R<U, F>,F 是属性集U上的一组函数依赖。 用函数依赖定义码:
更新异常:如果学生转系,若他选修了k门课,则 需要修改k次。
数据冗余:如果一个学生选修了k门课,则有关他 的所在系的信息重复
2NF(Ⅱ)
定义
若R1NF,且每个非主属性完全依赖于码,则称 R2NF(消除非主属性对码的部分依赖)。 p SN, 如S2NF,因为(S#,C#) p (S#,C#) SD 非主属性有两种,一种完全依赖于码,一种部分依 赖于码。 将S分解为:SC(S# , C# , G) S_SD(S# , SN , SD , DEAN)
有效性范围
多值依赖 Vs 函数依赖(Ⅱ)
XY的有效性与属性集范围有关。
XY在属性集W(XY W U)上成立,但在U 上不一定成立。 XY在U上成立 XY在属性集W(XY W U)上成立。 若在R(U)上,XY在属性集W(XY W U)上成 立,则称XY为R(U) 的嵌入式多值依赖。 若XY在R(U)上成立,则不能断言对于Y′ Y, 是否有XY ′成立。
t3 t4
a2 a1
多值依赖(Ⅵ)
性质
多值依赖具有对称性,即 若XY,则XZ,其中Z=U–X–Y。 函数依赖是多值依赖的特例,即 若XY,则XY。 若XY,U–X–Y=,则称XY为平凡 的多值依赖。
多值依赖 Vs 函数依赖(Ⅰ)
区别
函数依赖规定某些元组不能出现在关系中,也称为 相等产生依赖。 多值依赖要求某种形式的其它元组必须在关系中, 称为元组产生依赖。 XY的有效性仅决定于X、Y属性集上的值,它在任 何属性集W(XY W U)上都成立。 若XY在R(U)上成立,则对于任何Y′ Y,均有 XY ′成立。
3NF(Ⅱ)
定义
关系模式R< U , F >中,若不存在这样的码X,属性 Y),使得下式成立, 组Y及非主属性Z(Z XY , YZ , YX 则称R3NF(消除非主属性对码的传递依赖)。 如S_SD 3NF,因为有S#SD,SDDEAN
改造
将S分解为:STUDENT(S# , SN , SD) DEPT(SD , DEAN)
改造
3NF(Ⅰ)
S_SD(S# , SN , SD , DEAN)
不良特性
插入异常:如果系中没有学生,则有关系的信息就无法 插入。 删除异常:如果学生全部毕业了,则在删除学生信息的 同时有关系的信息也随之删除了。 更新异常:如果学生转系,不但要修改SD,还要修改 DEAN,如果换系主任,则该系每个学生元组都要做相 应修改。 数据冗余:每个学生都存储了所在系的系主任的信息。
思考
SPC 3NF ?
BCNF(Ⅱ)
不良特性
插入异常:如果没有学生选修某位老师的任课,则该老师 担任课程的信息就无法插入。 删除异常:删除学生选课信息,会删除掉老师的任课信息。 更新异常:如果老师所教授的课程有所改动,则所有选修 该老师课程的学生元组都要做改动。
数据冗余:每位学生都存储了有关老师所教授的课程的信 息。
函数依赖(Ⅱ)
部分函数依赖:在R(U)中,如果XY,且对于任意 X的真子集X′,都有X′Y ,则称Y对X完全函数依赖, f 记作X Y ,否则称为 Y对X部分函数依赖,记作 X Y。 p
快速热身2:找出S中的另一部分函数依赖。
f G, (S#,C#) p SN (S#,C#)
症由:
主属性对码的不良依赖。
BCNF(Ⅲ)
定义
关系模式R< U , F >中,对于属性组X,Y,若XY且 Y X时, X必含有候选码,则R< U , F > BCNF。
如SPC BCNF,因为P# C#,而P#不含有码。
改造
将S分解为(S#,P#),(P#,C#)。
性质
存在的问题(Ⅲ)
解决之道:分解! 分解!! 再分解!!!
哇,原来可以如此简单
职工 赵明 钱广 孙志 李开 周祥
级别 4 5 6 5 6
级别 4 5 6 7
工资 500 600 700
8
800 900
存在的问题(Ⅳ)
有关学生的关系模式S(S# , SN , SD , DEAN , C# , G)
多值依赖(Ⅲ)
定义
描述型:关系模式R(U),X、Y、Z U,并且Z = U – X – Y,多值依赖X Y成立当且仅当对R(U)的任一关系r, 给定的一对(x,z)值有一组Y的值,这组值仅仅决定于 x值而与z值无关。 如在关系模式TEACH中,对(C1 , B1)有一组P#值(P1 , P2),对(C1 , B2)也有一组P#值(P1 , P2),这组值仅取 决于C#的取值,而与B#的取值无关。因此,P#多值依 赖于C#,记作C# P#,同样有C# B#。
C# C1 C2 P# {P1,P2} {P1,P3} B# {B1,B2} {B3,B4}
C#
C1 C1
P#
P1 P1
B#
B1 B2
C1
C1 C2 C2 C2 C2
P2
P2 P1 P1 P3 P3
B1
B2 B3 B4 B3 B4
多值依赖(Ⅱ)
不良特性
插入异常:当某门课程增加一名教员时,该门课程有多少 本参考书就必须插入多少个元组;同样当某门课程需要增 加一本参考书时,它有多少个教员就必须插入多少个元组。 删除异常:当删除一门课程的某个教员或者某本参考书时, 需要删除多个元组。 更新异常:当一门课程的教员或参考书作出改变时,需要 修改多个元组。 数据冗余:同一门课的教员与参考书的信息被反复存储多 次。
工资 500 600 700 600 700
存在的问题(Ⅱ)
问题:麻烦! 麻烦!! 好麻烦!!! 唉,剪不断,理还乱
插入异常:如果没有职工具有8级工资,则8级工资的 工资数额就难以插入。 删除异常:如果仅有职工赵明具有4级工资,如果将赵 明删除,则有关4级工资的工资数额信息也随之删除了。 数据冗余:职工很多,工资级别有限,每一级别的工 资数额反复存储多次。 更新异常:如果将5级工资的工资数额调为620,则需 要找到每个具有5级工资的职工,逐一修改。
多值依赖(Ⅴ)
找出关系上所满足的多值依赖。
A a1 B b1 C c1
a1
a2 a2
b1
b1 b1
c2
c1 c3
CB?若使BC成立,需加入哪些元组?
A B b1 b1 C c1 c1 A B C A B b1 b1 C c1 c1
t1 t2
a1 a2
t3 t2.A t1.B t1.C t4 t1.A t2.B t1.C
第六章 关系数据库设计 理论
主要内容
关系数据库存在问题;
函数依赖 范式 多值依赖与第4范式* 关系模式的规范化* 数据依赖的公理系统* 关系模式的分解算法*
存在的问题(Ⅰ)
示例:
考虑为管理职工的工资信息而设计一个关系模式。
职工 赵明 钱广 孙志 李开 周祥
级别 4 5 6 5 6
所有非主属性都完全函数依赖于每个候选码; 所有主属性都完全函数依赖于每个不包含它的候选码;
没有任何属性完全函数依赖于非码的任何一组属性。
多值依赖(Ⅰ)
关系模式TEACH(C#,P#,B#),一门课程由多 个教员担任,一门课程使用相同的一套参考书。 它的码是(C#,P#,B#),所以属于BCNF。
超码:设K为R< U , F >的属性或属性组,若K U, 则称K为R的超码。 候选码:设K为R< U , F >的超码,若K f U,则称 K为R的候选码。 主码:若R(U , F)有多个候选码,则可以从中选定一个 作为R的主码。 主属性:包含在每一个候选码中的属性,称作主属性。 全码:关系模式的码由整个属性组构成。 如(S#,C#,P#)
范式
1NF 2NF 3NF BCNF 4NF 5NF
1NF(Ⅰ)
定义
关系中每一分量不可再分。即不能以集合、序列等 作为属性值。
S#
C# C1 C2 C3
S# S1
C# {C1,C2,C3}
S1 S1 S1
1NF(Ⅱ)
分量是否需要再分,与具体应用有关。如果用到值的一部 分,则需要进一步分割。 姓名 生日 68.7.10 69.7.10 80.3.28 姓名 年 68 69 80 月日 7.10 7.10 3.28
王军 张立 李明
王军
张立 李明
如果只是查询出生日期,则它满足1NF。 如果查询两人生日是否相同,则只比较月、日,需要将生 日分解,就不满足1NF。 如果比较两人的生肖呢?
2NF(Ⅰ)
关系模式S(S# , SN , SD , DEAN , C# , G)
满足1NF的可能不良特性:
插入异常:如果学生没有选课,关于他的个人信 息及所在系的信息就无法插入。 删除异常:如果删除学生的选课信息,则有关他 的个人信息及所在系的信息也随之删除了。
事例
关系模式S(S# , SN , SD , DEAN , C# , G)
主码:(S#,C#)
函数依赖:
f G (S#,C#)
p S# SN,(S#,C#) SN p SD S# SD,(S#,C#)
SD DEAN
范式
定义
范式是对关系的不同数据依赖程度的要求; 是符合某一种级别的关系模式的集合。 通过模式分解将一个低级范式转换为若干个 高级范式的过程称作规范化(概念的纯粹 化)。
多值依赖 Vs 函数依赖(Ⅲ)
A a1 a1 a1 a1 B b1 b1 b2 b2 C c1 c2 c1 c2 D d1 d1 d2 d2
A a1 a1 a1 a1
B b1 b1 b2 b2
C c1 c c2 c2
源自文库
D d1 d2 d1 d2
4NF
定义
S# S01 S02 S01 S03 S04 S05 SN 杨明 李婉 杨明 刘海 安然 乐天 SD D01 D01 D01 D02 D02 D03 DEAN 思齐 思齐 思齐 述圣 述圣 省身 C# C01 C01 C02 C01 C02 C01 G 90 87 92 95 78 82
快速热身:它有哪些数据冗余? 望闻问切:不良的数据依赖