3.6.3数据库系统-模式分解:是否保持函数依赖、保持函数依赖分解定义、无损分解、表格法、公式法

3.6.3数据库系统-模式分解:是否保持函数依赖、保持函数依赖分解定义、无损分解、表格法、公式法

是否保持函数依赖

函数依赖是通过某一个维度可以函数决定另一个部分,这里在关系模式中函数依赖一定是存在于属性之间的,只要属性在,函数依赖就存在与属性之间,在考虑模式分解的过程中,分解前有一个关系模式,

比如属性集如下:
学生(学号,姓名,系号,系名,系位置)
分解前的关系模式为:
F{学号→姓名,系号→系名,系号→系位置}

可以对这个关系模式进行分解,可以分解为如下关系模式:
当属性存在,函数依赖会随之保留下来,拆分属性即函数依赖关系
学(学号,姓名) F1{学号→姓名}
系(系号,系名,系位置) F2{系号→系名,系号→系位置}

整个关系模式分解的过程当中,到底有没有保持函数依赖?
需要首先将原关系模式的函数依赖集合列出F,对分解之后的关系模式,一般会分解成多个F1、F2,它里面的关系模式又会有自己的函数依赖集合。

所谓的保持函数依赖就是将分解之后的函数依赖的集合合并起来,只要合并之后,与原来的函数依赖集合是保持等价的,我们就会说是保持函数依赖的。

在这个过程中,有些函数依赖是可以通过公理体系推导出来的,能够推导出来的叫做冗余函数依赖,冗余函数依赖在是否保持函数依赖分解的判断中,是不需要考虑的,因为可以通过推导而得出。

保持函数依赖分解定义

设数据库模式ρ={R1,R2,…,Rk}是关系模式R的一个分解,F是R上的函数依赖集,ρ中每个模式Ri上的FD集是Fi。如果{F1,F2,…,Fk}与F是等价的(即相互逻辑蕴涵),那么称分解ρ保持FD。

例题

例1:有关系模式R(A,B,C),F={A→B,B→C},将其拆分为:R1{A,B},R2{B,C},是否保持函数依赖。

R1{A,B},F1{A→B}
R2{B,C},F2{B→C}

F1,F2与F是等价的,所以保持函数依赖分解。

例2:有关系模式R(A,B,C),F={A→B,B→C,A→C},将其拆分为:R1{A,B},R2{B,C},是否保持函数依赖。

R1{A,B},F1{A→B}
R2{B,C},F2{B→C}

F1和F2可以推导出A→C,因此A→C是冗余函数依赖,不考虑。

F1,F2与F是等价的,所以保持函数依赖分解。

无损分解

什么是有损,什么是无损?
有损:不能还原
无损:可以还原

无损联接分解:指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式。

一般会用表格法或公式法来验证是否是无损分解。

表格法

先画出一个初始表,分解前所有的属性写作列名,然后将分解后的关系模式所出现的所有属性画√。这样判断同名属性列很方便,同一列有√的就是同名属性列。

例题

有关系模式:成绩(学号,姓名,课程号,课程名,分数)
函数依赖:学号→姓名,课程号→课程名,(学号,课程号)→分数,若将其分解为:
成绩(学号,课程号,分数)
学生(学号,姓名)
课程(课程号,课程名)
该分解是否为无损分解?

解析:
(1)首先看是否保持函数依赖?这个看下来没问题
(2)看是否为无损分解?
我们对这三个关系模式来做自然连接。自然要做的两个事:
①自然连接的条件是存在同名属性列,有同名属性列,取值相等。首先属性上来看,同名属性列重复不需要记录。
②同名属性列在还原的过程当中,需要随之还原一些非主属性。非主属性一定是由同名属性列来决定,否则等值所取到的同名属性列不知道是谁取的。(即以同名属性列为左侧决定因素的函数依赖有一个保留下来了,保留下来的结果是可以随之还原右侧被决定的因素)

成绩⋈学生
由于有:学号→姓名,所以:
成绩(学号,课程号,分数,姓名)
成绩⋈学生⋈课程
由于有:
,所以:
成绩(学号,课程号,分数,姓名,课程名)
请添加图片描述
然后针对都打√的行数,区判断是否保持函数依赖。

公式法

公式法只能适用于分解为两个关系模式的情况,超过两个就无法用公式法了。但是表格法是通用的。公式法一般只要证明交集推差集(两个方向的差集)即可

定理:如果R的分解为ρ={R1,R2},F为R满足的函数依赖集合,分解ρ具有无损连接性的充分必要条件是:
R1∩R2→(R1-R2)
或R1∩R2→(R2-R1)

其中R1∩R2表示模式的交,为R1与R2的公共属性组成,R1-R2或R2-R1表示模式的差集,R1-R2表示R1中去除R1和R2的公共属性所组成。当模式R分解成两个关系模式R1和R2时,如果R1与R2的公共属性能函数决定R1中或R2中的其他属性,这样的分解就具有无损连接性。

例题

设R=ABC,F={A→B},则分解ρ1={R1(AB),R2(AC)},与分解ρ2={R1(AB),R3(BC)}是否都为无损分解?
解析:
R1∩R2=A
R1-R2=B
R2-R1=C
A→B或A→C
R1∩R3=B
R1-R3=A
R3-R1=C
B→A或B→C

版权声明:本文为博主作者:郝开原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/qq_41929714/article/details/130014442

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2024年1月16日
下一篇 2024年1月16日

相关推荐