码迷,mamicode.com
首页 > 数据库 > 详细

数据库求闭包,求最小函数依赖集,求候选码,判断模式分解是否为无损连接,3NF,BCNF

时间:2017-04-29 21:03:42      阅读:2221      评论:0      收藏:0      [点我收藏+]

标签:属性   bcnf   log   3nf   更改   依赖   str   技术   依赖关系   

1.说白话一点:闭包就是由一个属性直接或间接推导出的所有属性的集合。

         例如:f={a->b,b->c,a->d,e->f};由a可直接得到b和d,间接得到c,则a的闭包就是{a,b,c,d}

2.

候选码的求解理论和算法

  对于给定的关系R(A1,A2,…An)和函数依赖集F,可将其属性分为4类:

    L类  仅出现在函数依赖左部的属性。

    R 类  仅出现在函数依赖右部的属性。

    N 类  在函数依赖左右两边均未出现的属性。

    LR类  在函数依赖左右两边均出现的属性。

  定理:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,则X必为R的任一候选码的成员。

  推论:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,且X+包含了R的全部属性;则X必为R的唯一候选码。

  例(2):设有关系模式R(A,B,C,D),其函数依赖集F={D→B,B →D,AD →B,AC →D},求R的所有候选码。

         解:考察F发现,A,C两属性是L类属性,所以AC必是R的候选码成员,又因为(AC)+=ABCD,所以AC是R的唯一候选码。

  定理:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是R类属性,则X不在任何候选码中。

  定理:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是N类属性,则X必包含在R的任一候选码中。

  推论:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类和N类组成的属性集,且X+包含了R的全部属性;则X是R的唯一候选码。

3.求最小函数依赖集分三步:

1.将F中的所有依赖右边化为单一元素

此题fd={abd->e,ab->g,b->f,c->j,cj->i,g->h};已经满足

2.去掉F中的所有依赖左边的冗余属性.

作法是属性中去掉其中的一个,看看是否依然可以推导

此题:abd->e,去掉a,则(bd)+不含e,故不能去掉,同理b,d都不是冗余属性

ab->g,也没有

cj->i,因为c+={c,j,i}其中包含i所以j是冗余的.cj->i将成为c->i

F={abd->e,ab->g,b->f,c->j,c->i,g->h};

3.去掉F中所有冗余依赖关系.

做法为从F中去掉某关系,如去掉(X->Y),然后在F中求X+,如果Y在X+中,则表明x->是多余的.需要去掉.

此题如果F去掉abd->e,F将等于{ab->g,b->f,c->j,c->i,g->h},而(abd)+={a,d,b,f,g,h},其中不包含e.所有不是多余的.

同理(ab)+={a,b,f}也不包含g,故不是多余的.

b+={b}不多余,c+={c,i}不多余

c->i,g->h多不能去掉.

所以所求最小函数依赖集为 F={abd->e,ab->g,b->f,c->j,c->i,g->h};

4.判断模式分解是否为无损连接

方法一:无损连接定理

关系模式R(U,F)的一个分解,ρ={R1<U1,F1>,R2<U2,F2>}具有无损连接的充分必要条件是:

U1∩U2→U1-U€F或U1∩U2→U2 -U1€F+

方法二:算法

ρ={R1<U1,F1>,R2<U2,F2>,...,Rk<Uk,Fk>}是关系模式R<U,F>的一个分解,U={A1,A2,...,An},F={FD1,FD2,...,FDp},并设F是一个最小依赖集,记FDi为Xi→Alj,其步骤如下:

① 建立一张n列k行的表,每一列对应一个属性,每一行对应分解中的一个关系模式。若属性Aj Ui,则在j列i行上真上aj,否则填上bij

② 对于每一个FDi做如下操作:找到Xi所对应的列中具有相同符号的那些行。考察这些行中li列的元素,若其中有aj,则全部改为aj,否则全部改为bmli,m是这些行的行号最小值。

如果在某次更改后,有一行成为:a1,a2,...,an,则算法终止。且分解ρ具有无损连接性,否则不具有无损连接性。

对F中p个FD逐一进行一次这样的处理,称为对F的一次扫描。

③ 比较扫描前后,表有无变化,如有变化,则返回第② 步,否则算法终止。如果发生循环,那么前次扫描至少应使该表减少一个符号,表中符号有限,因此,循环必然终止。

举例1:已知R<U,F>,U={A,B,C},F={A→B},如下的两个分解:

① ρ1={AB,BC}

② ρ2={AB,AC}

判断这两个分解是否具有无损连接性。

①因为AB∩BC=B,AB-BC=A,BC-AB=C

所以B→A ¢F+,B→C ¢ F+

故ρ1是有损连接。

② 因为AB∩AC=A,AB-AC=B,AC-AB=C

所以A→B €F+,A→C ¢F+

故ρ2是无损连接。

举例2:已知R<U,F>,U={A,B,C,D,E},F={A→C,B→C,C→D,DE→C,CE→A},R的一个分解为R1(AD),R2(AB),R3(BE),R4(CDE),R5(AE),判断这个分解是否具有无损连接性。

 ① 构造一个初始的二维表,若“属性”属于“模式”中的属性,则填aj,否则填bij

技术分享

② 根据A→C,对上表进行处理,由于属性列A上第1、2、5行相同均为a1,所以将属性列C上的b13、b23、b53改为同一个符号b13(取行号最小值)。

技术分享

③ 根据B→C,对上表进行处理,由于属性列B上第2、3行相同均为a2,所以将属性列C上的b13、b33改为同一个符号b13(取行号最小值)。

技术分享

④ 根据C→D,对上表进行处理,由于属性列C上第1、2、3、5行相同均为b13,所以将属性列D上的值均改为同一个符号a4

技术分享

⑤ 根据DE→C,对上表进行处理,由于属性列DE上第3、4、5行相同均为a4a5,所以将属性列C上的值均改为同一个符号a3

技术分享

⑥ 根据CE→A,对上表进行处理,由于属性列CE上第3、4、5行相同均为a3a5,所以将属性列A上的值均改为同一个符号a1

技术分享

⑦ 通过上述的修改,使第三行成为a1a2a3a4a5,则算法终止。且分解具有无损连接性。

5.3NF

数据库求闭包,求最小函数依赖集,求候选码,判断模式分解是否为无损连接,3NF,BCNF

标签:属性   bcnf   log   3nf   更改   依赖   str   技术   依赖关系   

原文地址:http://www.cnblogs.com/wangyige/p/6786047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!