当前位置:文档之家› 6-关系数据库理论

6-关系数据库理论




更新异常:如果学生转系,若他选修了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)
事例
关系模式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
范式

定义


范式是对关系的不同数据依赖程度的要求; 是符合某一种级别的关系模式的集合。 通过模式分解将一个低级范式转换为若干个 高级范式的过程称作规范化(概念的纯粹 化)。




超码:设K为R< U , F >的属性或属性组,若K U, 则称K为R的超码。 候选码:设K为R< U , F >的超码,若K f U,则称 K为R的候选码。 主码:若R(U , F)有多个候选码,则可以从中选定一个 作为R的主码。 主属性:包含在每一个候选码中的属性,称作主属性。 全码:关系模式的码由整个属性组构成。 如(S#,C#,P#)
存在的问题(Ⅲ)

解决之道:分解! 分解!! 再分解!!!
哇,原来可以如此简单
职工 赵明 钱广 孙志 李开 周祥
级别 4 5 6 5 6
级别 4 5 6 7
工资 500 600 700
8
800 900
存在的问题(Ⅳ)
有关学生的关系模式S(S# , SN , SD , DEAN , C# , G)
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
快速热身:它有哪些数据冗余? 望闻问切:不良的数据依赖
多值依赖(Ⅴ)

找出关系上所满足的多值依赖。
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
函数依赖(Ⅰ)

定义

函数依赖:设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),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)。
王军 张立 李明

王军
张立 李明

如果只是查询出生日期,则它满足1NF。 如果查询两人生日是否相同,则只比较月、日,需要将生 日分解,就不满足1NF。 如果比较两人的生肖呢?
2NF(Ⅰ)
关系模式S(S# , SN , SD , DEAN , C# , G)

满足1NF的可能不良特性:

插入异常:如果学生没有选课,关于他的个人信 息及所在系的信息就无法插入。 删除异常:如果删除学生的选课信息,则有关他 的个人信息及所在系的信息也随之删除了。
第六章 关系数据库设计 理论
主要内容

关系数据库存在问题;
函数依赖 范式 多值依赖与第4范式* 关系模式的规范化* 数据依赖的公理系统* 关系模式的分解算法*
存在的问题(Ⅰ)

示例:
考虑为管理职工的工资信息而设计一个关系模式。
职工 赵明 钱广 孙志 李开 周祥
级别 4 5 6 5 6



多值依赖(Ⅲ)

定义

描述型:关系模式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#。
所有非主属性都完全函数依赖于每个候选码; 所有主属性都完全函数依赖于每个不包含它的候选码;

没有任何属性完全函数依赖于非码的任何一组属性。
多值依赖(Ⅰ)


关系模式TEACH(C#,P#,B#),一门课程由多 个教员担任,一门课程使用相同的一套参考书。 它的码是(C#,P#,B#),所以属于BCNF。

思考
SPC 3NF ?
BCNF(Ⅱ)

不良特性

插入异常:如果没有学生选修某位老师的任课,则该老师 担任课程的信息就无法插入。 删除异常:删除学生选课信息,会删除掉老师的任课信息。 更新异常:如果老师所教授的课程有所改动,则所有选修 该老师课程的学生元组都要做改动。


数据冗余:每位学生都存储了有关老师所教授的课程的信 息。



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)

有效性范围

多值依赖 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 ′成立。
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#)为候选码。

改造
3NF(Ⅰ)
S_SD(S# , SN , SD , DEAN)

不良特性

插入异常:如果系中没有学生,则有关系的信息就无法 插入。 删除异常:如果学生全部毕业了,则在删除学生信息的 同时有关系的信息也随之删除了。 更新异常:如果学生转系,不但要修改SD,还要修改 DEAN,如果换系主任,则该系每个学生元组都要做相 应修改。 数据冗余:每个学生都存储了所在系的系主任的信息。
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 ′成立。
工资 500 600 700 600 700
存在的问题(Ⅱ)

问题:麻烦! 麻烦!! 好麻烦!!! 唉,剪不断,理还乱




插入异常:如果没有职工具有8级工资,则8级工资的 工资数额就难以插入。 删除异常:如果仅有职工赵明具有4级工资,如果将赵 明删除,则有关4级工资的工资数额信息也随之删除了。 数据冗余:职工很多,工资级别有限,每一级别的工 资数额反复存储多次。 更新异常:如果将5级工资的工资数额调为620,则需 要找到每个具有5级工资的职工,逐一修改。
相关主题