450 likes | 603 Views
数据库系统概论. 关系数据理论. 问题的提出(1). 关系模式: R( U ,D, dom, F ) , 其中: U : 一组属性 D : 属性组中的属性所来自的域 Dom: 属性到域的映射 F : 属性组上的一组数据依赖——通过一个关系中属性间值的相等与否体现出来的数据间的相互关系。(函数依赖、多值依赖等). 问题的提出(2). 函数依赖( functional dependency 简称 FD): 指一个或一组属性的值可以决定其他属性的值。如学号决定学生的姓名。
E N D
数据库系统概论 关系数据理论
问题的提出(1) • 关系模式: R(U ,D, dom, F) ,其中: • U :一组属性 • D:属性组中的属性所来自的域 • Dom:属性到域的映射 • F:属性组上的一组数据依赖——通过一个关系中属性间值的相等与否体现出来的数据间的相互关系。(函数依赖、多值依赖等)
问题的提出(2) • 函数依赖(functional dependency简称 FD):指一个或一组属性的值可以决定其他属性的值。如学号决定学生的姓名。 • 设X,Y是关系的两个不同的属性组,如果Y函数依赖于X或X函数决定Y ,则其依赖关系可表示为 。 • 函数依赖存在与否,完全决定于数据的语义。
引例(1) • 设有一关系R,具有下列属性:学号(S#)、课程号(C#)、成绩(G)、TN(任课教师姓名)、教师所在系(D)。数据具有如下语义: • 一个学生一个学号,一门课程一个课程号 • 一位学生所修的每门课程都有一个成绩 • 每门课程只有一位任课教师,一教师可教多门课 • 教师中没有重名,每位教师只属于一个系
S# C# G TN D 引例(2) • 具有的函数依赖: F={(S#, C#) →G, C# →TN, TN →D} • 可用图表示如下:
引例(3) • 数据冗余太大。 • 修改异常。如修改一门课的任课教师 • 由于主属性不能为空,会引起插入异常。如某系一位教师不教课,其数据便不能插入 • 删除异常。如所有的学生都退选某门课,必须将有关这门课的其他数据(任课教师及其所在系)删除。
引例(4) • 缺点的产生主要来自关系的结构。该关系中包含三方面数据:成绩,开课教师和所属系。解决途径是将关系进行分解—关系规范化。 SCG(S#, C#, G) CTN(C#, TN) TND(TN, D) • 关系规范化主要是对关系进行必要的分解,如何分解,分解后是否有损于原来的信息?
规范化(1) • 规范化理论在1971年由E.F.Kodd提出,主要研究如何根据一个关系所具有的数据依赖情况来判定其是否具有某些不合适的性质。 • 对于任何一个关系,最低要求是每一个属性是不可再分的数据项,满足这个条件的关系模式即为第一范式。 • 按属性间依赖情况,区分关系规范化程度为1NF, 2NF, 3NF, BCNF, 4NF, 5NF。
函数依赖的定义 • 设R(U)是属性集U 上的关系模式。X,Y是U 的子集。若对于R(U) 的任意一个可能的关系r, r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数决定Y或Y函数依赖 X,记作: X→Y。
记号和术语 • X→Y, 但Y X, 则称X→Y为非平凡函数依赖 • X→Y, 但Y X, 则称X→Y为平凡函数依赖 • 若X→Y,则X叫做决定因素 • 若X→Y,Y→X,则记作X←→Y • 若Y不函数依赖于X,则记作X→Y
完全函数依赖 • 在R(U)中,如果X→Y, 并且对于X的任何一个真子集X’,都有X’ →Y, 则称Y对X完全函数依赖,记作: • 若X→Y,但Y不完全函数依赖X,则称Y对X部分函数依赖,记作: • 例:SC(S#, C#, G)中, (S#, C#)→G, S#→G, C#→G,
传递函数依赖 • 在R(U)中,如果X→Y(Y X), Y→X, Y→Z,则称Z对X传递函数依赖。 • 例:某银行定期储蓄数据库,R(帐号, 姓名, 储蓄额, 收储员, 储蓄所名) 帐号→姓名, 储蓄额, 收储员, 储蓄所名; 收储员→ 储蓄所名 储蓄所名传递函数依赖帐号。
码 • 设K为R(U, F)中的属性或属性组合, 若 则K为R的候选码。 • 若候选码多于一个,则选定其中一个为主码。 • 包含在任何一个候选码中的属性叫主属性。 • 不包含在任何码中的属性称为非主属性。 • 整个属性是码,称为全码。 • 关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外码。
范式 • 范式:符合某一种级别的关系模式的集合,即规范化的关系模式。 • 对于各种范式之间的联系有: • 规范化:一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程叫规范化。
S# SD G C# SL 2NF(1) • 若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。 • 例:SLC(S#, SD, SL, C#, G),每个系的学生住在同一个地方,码为(S#, C#),函数依赖F: (S#, C#) →G, S# →SD, S# →SL, SD →SL SLC∈2NF
2NF(2) • 问题: • 插入异常:若插入未选课学生情况(S7, PHY, N),由于码的一部分为空,所以不能插入。 • 删除异常:若某学生只选了一门课,现在这门课也不选了,将删除改学生所有的情况 • 修改复杂:某学生转系了,则需修改多处,使修改变得复杂。 • 数据冗余:某学生选了多门课,则系别须重复多次,造成大量数据冗余。
S# SD G S# C# SL 2NF(3) • 解决方法:用投影分解 • 将上述关系分解为: SC(S#, C#, G), SL(S#, SD, SL)
3NF(1) • 对于SL(S#, SD, SL),处于第二范式,但仍存在问题: • 插入:若新建一个系,尚无学生,则无法插入 • 删除:若该系所有学生都毕业了,删除学生信息的同时将系的信息也删除了 • 修改:修改SL时,有多少学生就要修改多少次 • 出现上述问题,因为未消除传递函数依赖。
SD S# SL 3NF(2) • 关系模式R(U, F)中若不存在这样的码X,属性组Y及非主属性Z(Z不包含于Y),使得X→Y(Y→X)Y→Z成立,则称R∈3NF。 • 若R∈3NF,则每一个非主属性既不部分依赖于码,也不传递依赖于码。 • 上述关系的解决方法:将SL分解 S_D(S#, SD) , DL(SD, SL)
C Z S BCNF(1) • 由Boyce和Codd提出 • 3NF关系模式的遗留问题是其定义中未涉及主属性的存储异常问题。 • 例:关系模式R(C(City), S(Street), Z(Zip)),其函数依赖: (C, S) →Z, Z →C,显然(C,S)为码,
BCNF(2) • 关系模式R(U, F)∈1NF,,若X→Y,且Y不包含于X时,X必含有码,则R∈BCNF。即关系模式R(U, F)中,若每一个决定因素都包含码,则R∈BCNF。 • 一个满足BCNF的关系模式: • 所有非主属性对每一个码都是完全函数依赖 • 所有的主属性对每一个不包含它的码也是完全函数依赖 • 没有任何属性完全函数依赖于非码的任一组属性
S J P BCNF(3) • 若R∈BCNF,则R∈3NF,反之不一定。 • 例1:SJP(S, J, P),函数依赖: (S, J) →P; (J, P) →S • SJP∈BCNF
J S T BCNF(4) • 例2:STJ (S, T, J), 函数依赖: (S, J) →T; (S, T) →J; T →J • STJ∈3NF但STJ∈BCNF, 分解为 ST(S, T), (T, J)
BCNF(5) • 仓库保管WPE(W#(仓库), P#(器件), E#(职工), QNT), 反映的语义: • 一个仓库有多个职工 • 一个职工仅在一个仓库工作 • 每个仓库里一种器件由专人负责,但一个人可以管理几种器件 • 函数依赖: (W#, P#)→QNT, (W#, P#)→E#, E#→W#, (E#, P#)→QNT • 该关系模式是3NF
多值依赖(1) • 学校中某门课程由多个教师讲授,使用相同的一套参考书,每个教师可以讲授多门课程,每中参考书可以供多门课程使用。
多值依赖(2) • 设R(U)是属性集U上的一个关系模式,X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中的多值依赖X→→Y成立,当且仅当对R(U)的任意关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x的值而与z值无关。这种依赖称为多值依赖(Multivalued Dependency, 简称MVD)。 • 在上例中,C→→T。
多值依赖(3) • 在R(U)的任一关系r,如果存在元组t, s使得t[X]=s[X],那么就必然存在有元组w,v∈r,使得w[X]=v[X]=t [X],而w[Y]=t[Y], w[Z]= s[Z], v[Y]=s[Y],v[Z]=t[Z](即交换s, t元组的Y值所得的两个新元组必在r中),则Y多值依赖于X,记作 X→→Y。 其中X,Y是U的子集,并且Z=U-X-Y。 • 若X→→Y,而Z=Φ,则称X→→Y为平凡多值依赖。
多值依赖的性质(1) • 多值依赖具有对称(互补)性。即若X→→Y,则X→→Z,其中, Z=U-X-Y。 • 多值依赖具有传递性。即若X→→Y,Y→→Z,则X→→Z。 • 函数依赖是多值依赖的特殊情况。即若X→Y则X→→Y。
多值依赖的性质(2) • 多值依赖的合并规则:若X→→Y,X→→Z,则X→→YZ。 • 多值依赖的分解规则:若X→→Y,X→→Z,则X→→Y∩Z; • 多值依赖的分解规则:若X→→Y,X→→Z,则X→→Y-Z, X→→ Z-Y。
多值依赖和函数依赖的区别 • 多值依赖的有效性与属性集的范围有关。 • 设有属性子集W,满足XY W U,如果X→→Y在U上成立,则在W上一定成立,反之则不一定。这种仅在U的子集上成立的多值依赖称为嵌入多值依赖。 • 若函数依赖X→Y在R(U)上成立,则对于任何 均有X→Y’成立。而对于多值依赖X→→Y,若在R(U)上成立,却不能断定对于任何 有X→→Y’成立。
4NF • 关系模式R(U, F)∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y X),X都含有码,则R∈4NF。 • 如果一个关系模式是4NF,则必为BCNF。 • P180例2中的关系模式不是4NF,可用投影分解的方法消去非平凡且非函数依赖的多值依赖,分解为WS(W, S)和WC(W, C)。
连接依赖(1) • 函数依赖表现为对属性值的约束,多值依赖实际上表示为对元组值的约束。 • 设有一关系SPJ(S#, P#, J#),如果此关系的语义满足下列条件: SPJ= SPJ[S#, P#] SPJ[P#, J#] SPJ[S#,J#]即可分解为等价的三个二元关系,满足这样条件的分解称为无损连接分解(nonloss or lossless join decomposition)。
连接依赖(2) • 例SPJ A B • 在A中插入(S2,P1,J1),分解后的三个二元关系连接后为B所示。可见无损分解这样的语义约束对元组值施加了限制,即为连接依赖。
连接依赖(3) • 设X1、X2、…、Xn是关系R的属性集U的子集,且 。若对R的任一值, 均成立,则称R具有连接依赖。记作: (X1, X2, … , Xn) • 对连接依赖了解即可,在数据库设计中,几乎不需要考虑这种数据依赖。
规范化小结(1) • 目的:使结构合理,消除存储异常使数据冗于尽量消,便于插入、删除和更新。 • 原则:遵从概念单一化“一事一地”原则,即一个关系模式描述一个实体或实体间的一种关系。 • 方法:将关系模式投影分解成两个或两个以上的关系模式。 • 要求:分解后应保持属性间合理的联系。
规范化小结(2) 1NF 消除 消除非主属性对码的部分函数依赖 决定 2NF 因素 消除非主属性对码的传递函数依赖 非码 3NF 的非 消除主属性对码的部分和传递函数依赖 平凡 BCNF 函数 消除非平凡且非函数依赖的多值依赖 依赖 4NF
函数依赖的公理系统 • 对于满足一组函数依赖F 的关系模式R,其任何一个关系r,若函数依赖 X→Y都成立,则称F 逻辑蕴含X→Y。即一关系模式如果满足F,则必然满足X→Y。 • 为确定给定关系模式的码,为了从已知的函数依赖推导出其他函数依赖,Armstrong于1974年提出了一套推理规则,通常称之为Armstrong公理( Armstrong’s axioms)。
Armstrong公理系统(1) • 设关系模式R(U,F), U为属性集总体,F是U上的一组函数依赖: • A1自反律(Reflexivity):若Y X U,则X→Y为F所蕴含。这是一个平凡函数依赖。 • A2增广律:如果X→Y为F所蕴含,且Z U,则XZ→YZ为F所蕴含。 • A3传递律:若X→Y及Y→Z为F所蕴含,则X→Z为F所蕴含。
Armstrong公理系统(2) • 定理1:Armstrong公理是正确的,即如果F成立,则有F根据Armstrong公理所推导的函数依赖总是成立的。 • 证明A1:设t, s是关系R中任意两个元组,如果t[X]=s[X],由于Y X,有t[Y]=s[Y],得证。 • 证明A2:设t, s是关系R中任意两个元组, 如果t[XZ]=s[XZ],则有t[X]=s[X]和 t[Z]=s[Z], 由于X→Y,可得t[Y]=s[Y], 所以t[YZ]=s[YZ],得证。
Armstrong公理系统(3) • 证明A3:设t, s是关系R中任意两个元组, 如果t[X]=s[X],则有t[Y]=s[Y], 如果t[Y]=s[Y],则有t[Z]=s[Z], 由上可知:如果t[X]=s[X],则有t[Z]=s[Z], 即X→Z,得证。
三条推理规则(1) • 合并规则:由X→Y, X→Z,有X→YZ。 • 证明: 由X→Y得X→ XY (A2) 由X→Z得XY→YZ (A2) 所以:有X→YZ。(A3) • 伪传递规则:由X→Y, WY→Z,有XW→Z。 • 证明: 由X→Y得WX→WY (A2) 由WY→Z, 所以:有X→YZ。A3)
三条推理规则(2) • 分解规则:由X→Y, Z Y,有X→Z。 • 证明: 由Z Y得Y→Z (A1) 由X→Y, 所以:有X→Z。(A3) • 引理: X→A1,A2, …,An成立的充要条件是X→Ai(i=1,2, …n)成立。 • 证明:由分解规则,如果X→A1,A2, …,An成立则X→Ai(i=1,2, …n)成立。由合并规则,由X→Ai(i=1,2, …n)成立,则X→A1,A2, …,An成立。得证。
习题(1) • 设学生(学号,姓名,年龄,性别,成绩,专业),该关系模式的主码是( )。 A 学号 B 学号,姓名 C 姓名 D 学号,姓名,年龄 • X→Ai(i=1,2, …n)成立是X→A1,A2, …,An成立的( )。 A 充分条件 B 必要条件 C 充要条件 D 既不充分也不必要 • 关系数据课设计理论中,其核心作用的是: A 范式 B 模式设计 C 数据依赖 D 数据完整性
习题(2) • 下列有关范式的说法正确的是( )。 A 如果关系模式R∈1NF,且R中主属性完全函数依赖于主码,则R∈2NF。 B 如果关系模式R∈3NF,X,Y U,若X→Y,则R ∈BCNF C 如果关系模式R∈BCNF,若 X→→Y(Y X)是平凡的多值依赖,则R∈4NF。 D 如果一个关系模式R∈4NF,则一定有R∈BCNF,反之不一定成立。
习题(3) • 关系模式学生(学号,课程号,名次),若每一个学生每门课程有一定的名次,每门课程每一名次只有一名学生,则叙述正确的是: A 只有(学号,课程号)能作为候选键 B 关系模式属于第三范式 C 关系模式属于BCNF D (学号,课程号)和(课程号,名次)都可以作为候选键