模式的分解
模式分解

2.保持FD (函数依赖)的分解定义1:设F 是属性集U 上的FD 集,Z 是U 的子集,F 在Z 上的投影用πZ (F)表示,定义为πZ (F)={X →Y|X →Y ∈F +,且XY ⊆Z}定义2. 设},...{1K R R =ρ 是R 的一个分解,F 是R 上的FD 集,如果有)(1F R i ki π=Y ╞ F ,那么称分解ρ保持函数依赖集F 。
根据定义1,测试一个分解是否保持FD ,比较可行的方法是逐步验证F 中的每个FD 是否被)(1F R i ki π=Y 逻辑蕴涵。
如果F 的投影不蕴涵F ,而我们又用},...{1K R R =ρ表达R ,很可能会找到一个数据库实例σ 满足投影后的依赖,但不满足F 。
对σ的更新也有可能使r 违反FD 。
案例1:R (T#,TITLE ,SALARY )。
如果规定每个教师只有一个职称,并且每个职称只有 一个工资数目,那么R 上的FD 有T#→TITLE 和TITLE →SALARY 。
如果R 分解成ρ={R 1,R 2},其中R 1={T#,TITLE},R 2={T#,SALARY }。
则该分解具有无损连接性,但未保持函数依赖,丢失了依赖TITLE →SALARY 。
习题1:设关系模式R (ABC ),ρ={AB ,AC}是R 的一个分解。
试分析分别在F 1={A →B};F 2={A →C ,B →C},F 3={B →A},F 4={C→B,B→A}情况下, 是否具有无损分解和保持FD的分解特性。
算法1:分解成2NF模式集的算法设关系模式R(U),主码是W,R上还存在FD X→Z,并且Z是非主属性和X⊂W,那么W→Z就是非主属性对码的部分依赖。
此时,应把R分解成两个关系模式:R1(XZ),主码是X;R2(Y),其中Y=U-Z,主码仍为W,外码是X(参照R1)利用外码和主码的连接可以从R1和R2重新得到R。
如果R1和R2还不是2NF,则重复上述过程,一直到数据库模式中的每个关系模式都是2NF为止。
关系模式的分解准则

关系模式的分解准则
关系模式的分解准则有:
(1)实体冗余(E-R)分解法。
根据E-R模式的规则,可以把一个实体分成多个实体,其中重要的实体可以多次出现。
(2)覆盖索引(CRC)分解法。
它考虑了实体约束和属性约束,用两个分解条件来分解关系模式,即冗余表分解(RD)和实体冗余分解(ERD)。
(3)非集中规范化(3NF)分解法。
它强调的是保持一般情况表的不可分割性,
其分解方法是根据实体与属性的约束,从模式中把出现在死关系中的属性拆分出来。
(4)最终规范化(BCNF)分解法。
这种分解方法更强调实体的约束,它是根据实体与实体之间的约束,把关系拆分成几个满足BCNF规范化要求的子集。
关系模式分解例题

关系模式分解例题例1:现有如下关系模式:R(教师号,姓名,部门号,部门名称,科研项⽬编号,项⽬名称,项⽬经费,担任⼯作,完成时间)每名教师可以参加多项科研项⽬,每个项⽬可以有多名教师参加,教师参加科研⼯作包括担任⼯作及他完成所担任部分的完成时间。
(1)根据上述条件,写出关系模式R的关键码。
(2)R最⾼属于第⼏范式,为什么? (3)将R规范到3NF。
由关系模式可以得出(⾁眼凭经验看出):候选码:(教师号,部门号,科研项⽬编号)(教师号)→(姓名)(部门号)→(部门名称)(科研项⽬编号)→项⽬名称(科研项⽬编号)→项⽬经费由题⽬描述可以得出:(教师号,科研项⽬编号)→(担任⼯作)(教师号,科研项⽬编号)→(完成时间)(1)⾁眼看出候选码就是(教师号,部门号,科研项⽬编号)(2)第⼀范式,存在姓名依赖于教师号,⽽担任⼯作依赖于教师号和科研项⽬编号,这是个⾮主属性对码的部分函数依赖(3)教师(教师号,姓名)部门(部门号,部门名称)科研项⽬(科研项⽬编号,项⽬名称,项⽬经费)教师科研情况(教师号,科研项⽬编号,担任⼯作,完成时间)例2:现有关系模式如下:借阅(图书编号,书名,作者名,出版社,读者编号,读者姓名,借阅⽇期,归还⽇期)(1)读者编号是候选码吗请说明理由。
(2)写出该关系模式的主码。
(3)该关系模式中是否存在部分函数依赖如果存在,请写出两个。
(4)该关系模式最⾼满⾜第⼏范式并说明理由。
(5)如何分解该关系模式,使得分解后的关系模式均满⾜第三范式(3NF)由关系模式可以得出:候选码:(图书编号,读者编号,借阅⽇期)(图书编号)→(书名)(图书编号)→(作者名)(图书编号)→(出版社)(读者编号)→(读者姓名)归还⽇期不能依赖于借阅⽇期(1)不是,读者编号只能决定书名、作者名、出版社,不能决定所有的属性,因此该关系模式不能完全依赖于读者编号。
(2)(图书编号,读者编号,借阅⽇期)(3)偶上边写了5个XDDD(4)第⼀范式,因为存在⾮主属性对码的部分函数依赖,⽐如(图书编号,读者编号,借阅⽇期)→(书名),⽽(图书编号)→(书名)。
关系模式分解的两种主要准则

关系模式分解的两种主要准则关系模式分解的两种主要准则在数据库设计过程中,关系模式分解是一个重要的步骤,它将一个复杂的关系模式分解为多个简单的关系模式。
这个过程有助于提高数据库的性能和可维护性。
在关系模式分解过程中,有两种主要的准则,即函数依赖和多值依赖。
函数依赖函数依赖是关系模式分解的重要准则之一。
函数依赖描述了一个关系模式中的属性之间的关系。
在一个关系模式中,如果一个属性的值可以通过其他属性的值来确定,那么我们说这个属性依赖于其他属性。
这种依赖关系可以用函数依赖来表示。
具体来说,如果在一个关系模式R中,属性集X的值决定着属性集Y的值,我们可以表示为X->Y。
其中,X称为函数依赖的左侧,Y称为函数依赖的右侧。
函数依赖的左侧属性集称为决定因素,右侧属性集称为被决定因素。
在关系模式分解过程中,我们需要将函数依赖的左侧属性集作为一个新的关系模式的主键,并将函数依赖的右侧属性集作为新的关系模式的属性。
函数依赖的准则包括:完全依赖:如果函数依赖X->Y满足以下条件,我们称之为完全依赖:Y不包含X中的任何一个属性。
如果从X中移除任何一个属性,函数依赖不再成立。
部分依赖:如果函数依赖X->Y满足以下条件,我们称之为部分依赖:Y包含X中的某些属性。
如果从X中移除任何一个属性,函数依赖仍然成立。
通过分解满足完全依赖和部分依赖的关系模式,我们可以得到一个更规范、更高效的数据库设计。
多值依赖多值依赖是关系模式分解的另一个重要准则。
它描述了一个关系模式中两个属性之间的关系,其中一个属性的值可以确定另一个属性的多个值。
具体来说,如果在一个关系模式R中,属性集X的值决定着属性集Y的多个值,我们可以表示为X->>Y。
其中,X称为多值依赖的左侧,Y称为多值依赖的右侧。
在关系模式分解过程中,我们需要将多值依赖的左侧属性集作为一个新的关系模式的主键,并将多值依赖的右侧属性集作为新的关系模式的属性。
多值依赖的准则包括:非平凡多值依赖:如果一个多值依赖X->>Y满足以下条件,我们称之为非平凡多值依赖:X与Y没有公共属性。
数据库模式的分解无损连接性教案

则ρ={ R1<U1>,R2<U2>}是R的无损分解。反之也
成立。 如:模式S-L(Sno, Sdept, Sloc) 分解为2个模式:
ND(Sno, Sdept) ,NL(Sno, Sloc) 则是无损分解。
解:HJ是L类属性,所以候选键至少包含HJ,另 外,(HJ)+ ={FGHIJ},所以HJ是唯一的候选键。 (1)求出最小依赖集
Fmin=F={F→I,J→I,I→G,GH→I,IH→F}
3.9.4 模式分解算法
(2) 将关系分解为: ρ={ R1(FI),R2(JI),R3(IG),R4(GHI),R5(IHF)} (3) ρ并上候选键: ρ={R1(FI),R2(JI),R3(IG),R4(GHI),R5(IHF),
R6(HJ)}
3.9.4 模式分解算法
课后习题: 已知,关系模式R(A,B,C,D,E),R的最小依 赖集Fmin={A→B,C→D}。 试将R分解为3NF,并具有无损连接性和保持 函数依赖性。
3.9.4 模式分解算法
算法5 转换为BCNF的无损连接分解。 (1)关系模式R的分解ρ,初始时ρ={R<U,F>}。 (2)检查ρ中各关系模式是否均属于BCNF。若是,则
算法2 判别一个分解的无损连接性
②逐一检查F中的每个函数依赖,并修改元素,方法 是:取F中一函数依赖X→Y,找出X所对应的列中具 有相同符号的行,考察这些行中Y列的元素,若其 中有aj,则全部改为aj,否则全部改bmj,其中m是 这些行的行号最小值。
若在某次更改后,有一行是a1a2…an,那么ρ相对 于F是无损分解,算法结束。
数据库系统原理第七章答案

例子
【例】已知关系R〈U,F〉,其中U={A,B,C,D,E}, F={AB→C,B→D,C→E,EC→B,AC→B},求(AB)F+。 设X=AB ∵ XF(0)=AB XF(1)=ABCD
XF(2)=ABCDE
XF(3)= XF(2)=ABCDE ∴ (AB)F+=ABCDE={A,B,C,D,E}
XF+={ Ai | Ai∈U,X→Ai∈F+}
第十九页,编辑于星期五:九点 九分。
(2) 属性集闭包XF+的求法
1) 选X作为闭包XF+的初值XF(0)。 2) XF(i+1)是由XF(i)并上集合A所组成,其中A为F中存在 的函数依赖Y→Z,而AZ,YXF(i)。 3) 重复步骤2)。一旦发现XF(i)= XF(i+1),则XF(i)为所求 XF+。
1) 合并规则:由X→Y,X→Z,有X→YZ。 2) 伪传递规则:由X→Y,WY→Z,有XW→Z。 3) 分解规则:由X→Y及ZY,有X→Z。
第十八页,编辑于星期五:九点 九分。
3. 函数依赖集闭包F+和属性集闭包XF+
(1) 函数依赖集闭包F+和属性集闭包XF+的定义 定义:在关系模式R〈U,F〉中,为F所逻辑蕴含的函数 依赖的全体叫做F的闭包,记作F+。 定义:设有关系模式R〈U,F〉,X是U的子集,称所有 从F推出的函数依赖集X→Ai中Ai的属性集为X的属性闭 包,记作XF+。即:
第八页,编辑于星期五:九点 九分。
完全函数依赖、传递函数依赖
2) 在R〈U〉中,如果X→Y,并且对于X的任何一个真子集X’,
都有X’ Y,则称Y对X完全函数依赖,记作:X→Y;若XF →Y,
第五章关系数据理论

第五章关系数据理论部门: xxx时间: xxx整理范文,仅供参考,可下载自行编辑第五章关系数据理论6.3 数据依赖的公理系统1. 逻辑蕴含定义6.11 对于满足一组函数依赖 F 的关系模式R <U,F>,其任何一个关系r,若函数依赖X→Y都成立, (即对于r中任意两个元组s,t,若s[X]=t[X],则s[Y]t[Y]>,则称F逻辑蕴含X→Y例如R(X, Y,Z>,F={X→Y, Y→Z}X→Z为了求得给定关系模式的码,为了从一组给定的函数依赖求得蕴涵的函数依赖,就需要一套推理规则。
这组推理规则是Armstrong于1974年提出的,所以称为Armstrong公理系统。
2. Armstrong公理系统一套推理规则,是模式分解算法的理论基础用途:求给定关系模式的码从一组函数依赖求得蕴含的函数依赖关系模式R <U,F >来说有以下的推理规则:Al.自反律<Reflexivity):若Y X U,则X →Y为F所蕴含。
(Sno,S name> →Sname注意:由自反律所得到的函数依赖均是平凡的函数依赖,自反律的使用并不依赖于FA2.增广律<Augmentation):若X→Y为F所蕴含,且Z→U,则XZ→YZ为F所蕴含。
A3.传递律<Transitivity):若X→Y及Y→Z为F所蕴含,则X→Z为F所蕴含。
定理 6.1 Armstrong推理规则是正确的<l)自反律:若Y X U,则X →Y为F所蕴含证: 设Y X U对R <U,F> 的任一关系r中的任意两个元组t,s:若t[X]=s[X],由于Y X,有t[y]=s[y],所以X→Y成立.自反律得证<2)增广律: 若X→Y为F所蕴含,且Z U,则XZ→YZ 为F 所蕴含。
证:设X→Y为F所蕴含,且Z U。
设R<U,F> 的任一关系r中任意的两个元组t,s;若t[XZ]=s[XZ],则有t[X]=s[X]和t[Z]=s[Z];由X→Y,于是有t[Y]=s[Y],所以t[YZ]=s[YZ],所以XZ→YZ为F所蕴含.增广律得证。
数据库模式的分解

15
R1
R2
SNO
S1
SDEPT
D1
SNO S1 S2
SMN 张五 张五
S2 S3
S4
D1 D2
D3
S3
S4
李四
王一
16
以后可以证明ρ2对R的分解是可恢复的,
但是前面提到的插入和删除异常仍然没 有解决,原因就在于原来在R中存在的 函数依赖 SDEPT→MN,现在在R1和R2 中都不再存在了。因此人们又要求分解 具有"保持函数依赖"的特性。
答案:R1=({ST,ZIP},{Φ }) R2=(CITY,ZIP,{ZIP→CITY}) ρ是无损分解,但不具有函数依赖保持性。
40
模式分解的算法
若要求分解保持函数依赖,那么模式分解总可以 达到3NF,但不一定能达到BCNF; 若要求分解既保持函数依赖,又具有无损连接性, 可以达到3NF,但不一定能达到BCNF; 若要求分解具有无损连接性,那一定可达到4NF.
41
算法6.3 (合成法)转换为3NF的保持函数依赖的 分解。 算法6.4 转换为3NF既有无损连接性又保持函数依 赖的分解 算法6.5 转换为BCNF的无损连接分解(分解法)
A a1 a2 B b1 b1
r2=πR2(r)
B b1 b1 C c1 c2
A a1 mρ (r) a1 a2 a2
B b1 b1 b1 b1
C c1 c2 c1 c2
r2=πR2(mρ (r)) A a1 a2 B b1 b1 B b1 b1 C c1 c2
27
r1=πR1(mρ (r))
结论:分解后的关系做自然联接必包含 分解前的关系,即分解不会丢失信息, 但可能增加信息,只有r=mρ (r)时,分解 才具有无损联接性
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
2018/10/5
11
判断无损连接的算法
算法6.2 判断一个分解的无损连接性 {R1 U1, F1 , R2 U2 , F2 ,..., Rk Uk , Fk是 }R<U,F〉的一 个分解,U={A1,A2,…,An},F={FD1,FD2,…, FDm},这里我们设F是一个极小依赖集,记FDi为 Xi→Ali。 (1)建立一张n列k行的表。一列对应一个属 性,一行对应一个分解后的模式;在i行j列中的空白 处,若属性Aj属于Ui,则填上aj,否则填上bij。
2018/10/5
8
6.4.2.1 分解的“无损连接性”
我们先来定义几个符号: 分解: {R1 U1, F1 , R2 U2 , F2 ,..., Rk Uk , Fk } 其中r是R<U,F>的一个关系。 再定义: m = ( r ) Ri 也就是说 是r在各个模式分解上的投 m 影的连接。
2018/10/5 3
本小节要讨论的内容
• “无损连接性”和“保持函数依赖”的含 义; • 对于这三种角度的分解可以达到的分离程 度,即可以达到第几范式; • 对于这几种分离的分解算法;
下面用一个实际分解的例子来引出本小 节的内容。
2018/10/5 4
一个分解实例
例4:一个关系模式R<U,F>,其中U={Sno,Sdept, Mn},F={Sno→Sdept,Sdept →Mn}。 如果我们把它分解成:
我们从r1,r2和r3这三个关系中已经不能回 答“某个学生在哪个系学习”了,显然这样的分 解是失败的。这是由于失去了关原来的关系。 而我们把r1,r2和r3做自然连接(它们的笛卡 尔积)后,我们得到的是一个具有4*4*4=64行的 没有实际意义的关系表。不能恢复表5.3所示的 含义了。
7
一个分解实例(续3)
我们来看一个比较好的分解:
3 {R 我们按这种模式分解后的关系通过自然连接是 1 {Sno, Sdept},{Sno Sdept} , R2 {Sdept , Mn},{Sdept Mn} }
可以恢复到原来的关系的,同时,我们可以显然的 发现在原关系模式中的函数依赖在新的关系模式中 都存在,因此,这次分解既保证了“无损连接特 性”,又“保持了函数依赖”。 下面我们用形式化的概念来描述“无损连接性” 和“保持函数依赖性”。
我们可以对照课本表6.5和分解的办法,我们可以把表6.5 分解成了三个关系: r1={S1,S2,S3,S4} r2={D1,D2,D3} r3={张五,李四,王一}
1 {R1 Sno, , R2 Sdept, , R3 Mn, }
2018/10/5
5
一个分解实例(续)
2018/10/5 13
判断无损连接的算法(续2)
对F中的m个FD逐一进行一次这样的处置, 称为对F的一次扫描。 (3)比较扫描前后表的变化,若有则转到第 (2)步,否则算法终止。 如果发生循环,那么前次扫描至少应使该表 减少一个符号,表中符号有限,因此循环必然终 止。 定理6.4:若修改结束后的表格中有一行全 是a,即a1,a2,…,an,那么该模式分解是无 损连接分解。 下面我们用两个例子来解释一下。
2018/10/5
9
其中:r是R的一个关系; ri= (r)是Ri的一个关系; Ri 则有:
m
与r以及ri的关系
(1)r m (r ) (2)若s m (r ), 则 Ri ( s ) ri (3)m (m (r )) m (r )
2018/10/5 10
无损连接的定义
2018/10/5
12
判断无损连接的算法(续)
(2)对于每一个FDi做如下的操作:取 F中的函数依赖X→Y,如果表格中有两行在X 分量上相等,在Y分量上不相等,那么修改Y 分量上的值,使这两行在Y分量上也相等,修 改时分两种情况:
① 如果Y的分量上有一个是aj,那么另外一个 也修改正aj。 ② 如果Y的分量上没有aj,那么下标i较小的那 个bij替换其他的符号。
2018/10/5 6
一个分解实例(续2)
分解2:
这种分解通过自然连接后是可以恢复原 来的关系的,但是我们发现在原来的关系模 式的F中有函数依赖Sdept→Mn,而在分解后 的关系模式中不存在了。 因此,关系模式的分解就要求具有“保 持函数依赖”的特性才好。
2018/10/5
2 {R1 {Sno, Sdept},{Sno Sdept} , R2 {Sno, Mn},{Sno Mn} }
其中 U U i并且没有Ui U j ,1 i, j n, Fi是F在Ui上的投影
i 1 n
定义6.17: Fi是指函数依赖集合{X→Y∣ X→Y∈F+∧XY是Ui的子集}的一个覆盖。
2018/10/5 2
6.4.1 模式分解的三个定义
对于每一个分解是多种多样的,但是分 解后的模式应该与原模式是等价的。 那么怎么衡量分解的等价呢?从不同的 角度可以分为三种: • 分解要具有“无损连接性” • 分解要“保持函数依赖” • 分解既要“保持函数依赖”,又要具有 “无损连接性”
数据库原理
第六章第四节 模式的分解
2018/10/5
1
定义6.16 模式分解
在对函数依赖的基本性质了解之后,可以具体地 来讨论模式的分解了。 定义6.16:关系模式R(U,F)的一个分解是指: {R1 U1, F1 , R2 U2 , F2 ,..., Rn Un , Fn }
定义6.18 {R U , F , R U , F ,..., R U , F 是R<U,F>的一个分解,若对R<U,F>的任 何一个关系r均有r= (rm )成立,则称这个分 解具有无损连接性。 也就是说:把分解后的关系做自然连接 后可以恢复成原来的关系就可以了。 那么用什么样的数学法子来判断呢?