钱塘江上潮信来 今日方知我是我.|

Appletree24

园龄:2年10个月粉丝:25关注:0

数据库复习

列出下图所示关系满足的所有非平凡的函数依赖(忽略蕴含的函数依赖)。
A B C
a1 b1 c1
a1 b1 c2
a2 b1 c1
a2 b1 c3
做题之前搞清几个概念:

  • 函数依赖:X和Y是关系R的两个属性集合,当任意时刻R中任意两个元组的X属性相同时,则Y也必定相同。我们就说X->Y或Y依赖X
  • 平凡&非平凡函数依赖:设一个关系为R(U),X和Y为属性集U上的子集,如果X->Y并且X不包含Y,则称X->Y为非平凡函数依赖;否则若X包含Y,则必有X->Y,则称为平凡函数依赖。
    现在依据上面的概念来做这道题目
    首先看A属性,当A确定时,发现B也会完全相同。并且A并不包含B,所以A->B是一个非平凡的函数依赖。
    之后再看B属性,当B属性确定时,发现并没有哪个属性是必定相同的。所以B不存在函数依赖
    最后看C属性,当C属性确定时,发现B属性被确定,则C->B也是一个非平凡函数依赖。
    所以最后答案为A->B和C->B

假设有关系模式R(A,B,C,D,E),其函数依赖集F={A→BC,CD→E,B→D,E→A}
列出R的所有候选码。

  • 码就是键。超键=码。即可以唯一标识一条记录的属性或属性集
  • 候选键=候选码,即能够唯一标识一条记录的最小属性集
  • 主键=主码,从候选码中人为的选择一条
    所以根据上述概念来看,如果要找到所有候选码,那就要从超键里进一步挑选,先找到所有超键。
    而判断属性集合是否为超键,还要先了解如何寻找属性集的闭包,如果闭包中包含所有属性,那么就是超键。闭包求解比较好理解,不再阐述。
    当考虑一个属性的超码后,发现A和E是超码,那么因为候选码是最小属性集,所以A和E将不会出现在两个属性的候选码中,不再考虑。
    同样方法,最终求得BC、CD是两个属性的超码。此时不再存在更大的候选码。
    综上,候选码为A、E、BC、CD

假设有关系模式R(A,B,C,D,E),其函数依赖集F={A→BC,CD→E,B→D,E→A}
计算正则覆盖Fc。

  • 正则覆盖中任何函数依赖都不包含无关属性。无关属性的定义很形象,例如AB->C,如果你认为此函数依赖中A是无关属性,也就是说有无A都可以推导出这个函数依赖,那么形式化可以写为(F-{AB->C}∪{B->C}),如果F逻辑蕴涵上述内容,那么就说明A是无关属性。
  • 正则覆盖中函数依赖的左半部分是唯一的
    以本题为例,阐述求解函数依赖的过程:
    1.右侧化为单属性(阿姆斯特朗定理逆用)
    2.去除左侧无关属性
    3.去除冗余函数依赖
    4.合并
    1686478874603.jpg
    综上,F的正则覆盖其实就是自己。

考虑如下关系模式R(A,B.C.D,E,F)上的函数依赖集F:
{A→BCD,BC→DE,B→D,D→A}
计算B的闭包。
求属性集合的闭包十分简单,直接写答案:

考虑如下关系模式R(A,B.C.D,E,F)上的函数依赖集F:
{A→BCD,BC→DE,B→D,D→A}
(使用Armstrong公理)证明AF是超码。
证明某个属性集合是超码,其实就是验证其闭包含有所有属性。而求闭包则应用到阿姆斯特朗定理
直接求AF的闭包即可:
{A,B,C,D,E,F}包含全部属性,所以是超码

考虑如下关系模式R(A,B.C.D,E,F)上的函数依赖集F:
{A→BCD,BC→DE,B→D,D→A}
计算上述函数依赖集F的正则覆盖;给出你的推导的步骤并解释。(直接写答案)

考虑如下关系模式R(A,B.C.D,E,F)上的函数依赖集F:
{A→BCD,BC→DE,B→D,D→A}
基于正则覆盖,给出R的一个3NF分解。
分解分为BCNF分解和3NF分解,本题讲述如何3NF分解。
如果要求解3NF分解,首先要求解函数依赖集的最小依赖,而最小依赖其实就是正则覆盖,所以即求解正则覆盖即可
求解正则覆盖后,观察所有函数依赖的左右两侧,如果出现有属性从未出现过,则单独分为一个子集。之后按照函数依赖,将一个函数依赖的左右两侧属性合并,并为一个子集。
其实就是3NF分解,但一般题型都要求无损连接性与保持函数依赖,所以还要有最后一步。
我们要在上一步求解出的3NF分解后添加候选码,候选码就是从两侧均未出现的元素和未出现在右侧的属性,最终合并得正确答案。
1686484044127.jpg
上述最后一步中,我们发现此时F属性从未出现过,而AF正好就是候选码,所以我们直接添加到最后,得到最终答案即可。

image.png
首先审题得知,要求给出无损链接并保持依赖的3NF分解,即最终要加入候选码。
第一步求出F的正则覆盖就是其本身。
第二步寻找是否存在N类属性。求解发现不存在,所以按照已有函数依赖左侧右侧并集划分为若干子集。{ABC},{CDE},{BD},{EA}
第三步,因为题目要求特殊,最终还要加入候选码。首先寻找有无L类属性或两侧均未出现属性,发现没有。则无需添加
综上,最终答案为{ABC},{CDE},{BD},{EA}

考虑如下关系模式R(A,B.C.D,E,F)上的函数依赖集F:
{A→BCD,BC→DE,B→D,D→A}
利用原始的函数依赖集,给出R的一个BCNF分解。
BCNF分解较为复杂,资料不太详细,暂时理解过程如下:
首先要知悉如何判断R满足BCNF与否。方法如下:

  • 若R的函数依赖集合中存在某函数依赖左侧不存在候选码中的其一,则R不符合BCNF,需要进行分解
    在进行第一次分解时,按照如下方式分解为R1和R2:
  • 若R中存在若干函数依赖不符合BCNF,则任选其一开始分解(此类题答案不唯一的原因)
  • 如本题从A->BCD开始进行分解,则R1即为左右两侧属性的集合{A,B,C,D};R2集合则为R与选择函数依赖右侧属性集合的差集
  • 在进行第一步分解后,就需要检验R1与R2此时是否符合BCNF,而检验是否符合BCNF的标准此时是,从R1和R2中各选择其属性子集,进行如下验证:若选取的子集的闭包不包含Ri与选取子集的差集中的任意属性或选取子集的闭包包含Ri的所有属性,则符合BCNF。若不符合BCNF,则需要进一步分解
  • 若经过一次分解过后的R仍然不符合BCNF,则之后的分解方式如下:以R1中的属性子集{A}检验出不符合BCNF为例,求解A属性的闭包与R1的交集,将A属性与交集单独分解为一个子集。另外再将除A闭包以外的所有属性与A单独再分为一个子集。则完成了进一步分解,此时再重复上一步骤,判断分解结果是否都满足BCNF。直至满足为止

image.png
首先求解R的候选码,不难得出候选码为A、E、BC、CD。
第一步,从函数依赖集合中找一条不满足BCNF的函数依赖。F中只有B->D不满足。则选择该条函数依赖进行分解。将R分解为{B,D}与{ABCE}
第二步,判断R1与R2是否符合BCNF要求。{B,D}的属性子集为{B}&{D},分别求解闭包,得知第一子集满足包含R1所有属性,第二子集闭包满足只包含自身,均无问题。所以{BD}符合BCNF要求。求解R2的属性子集{A}{B}{C}{E}。第一和第四子集均符合包含R2所有属性,第二第三子集均符合闭包只含自身。所以也符合BCNF要求。综上所述最终R的BCNF分解即为{B,D}与{A,B,C,E}

image.png
无损分解的判定也十分简单,只需遵循以下内容即可:

  • 首先需要求解函数依赖集的闭包,利用阿姆斯特朗定理
  • 求解完毕后,只要R1∩R2->R1或R1∩R2->R2在闭包中,那么就是无损分解
  • 其实还有更简单的方式,只要R1∩R2是R1或R2的超码,那么分解就是一个无损分解
    上述题目中,R1∩R2={A},而A的闭包则正好是{A,B,C,D,E},满足是R1或R2的超码,所以是一个无损链接分解。

image.png
同样按照上述方式判断。R1∩R2={C},C的闭包为{C},所以并不能成为R1或R2的超码,即分解并不是无损分解

本文作者:Appletree24

本文链接:https://www.cnblogs.com/appletree24/p/17484045.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Appletree24  阅读(269)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 愛錠 (Edit ver.) LiSA
愛錠 (Edit ver.) - LiSA
00:00 / 00:00
An audio error has occurred.

話してしまえば 思い出

隠してしまえば 幸せ

時間がすべてを奪ってく

What do you think?do you think?

愛してしまえば 地獄で

離れてしまえば 孤独だ

もう戻れない

ああ、想う 想うほど 絡まる愛錠

この手を繋ぐ鎖のように

ただ目の前の明日を信じられるのならば

それだけでいい

今そっと手を伸ばした

もたれてしまえば 2倍で

壊してしまえば それぞれ

時間このまま過ぎ去って

What do you think?do you think?

願ってしまえば 欲しくて

叶ってしまえば 足りない

知っている

もう戻れはしない

あの日には

今夜すべてを置き去りに

独りで逃げ出したって

きっと私はいつまでも

後悔に縛られたまま

ずっときょうを恨みながら

罪責と悪夢に魘されるのでしょう

解けないわ

鉄と鉄が擦れ合い

指と指の温もりも

今ここに貴方を感じられるカギ

ああ、想う 想うほど 絡まる愛錠

この手を繋ぐ鎖のように

ただ目の前の明日を信じられるのならば

それだけでいいよ 今は

ああ、巡る 巡るほど 絡まる愛錠

切れない絆 確かめながら

どんな見えない明日も貴方が傍にいるのなら

それだけでいい

強く確かな愛情