数据库6:关系数据理论

一、学习目标

例6.11和课堂练习4和5会就可以了

1.选择&填空&简答(基本概念

一个不好的关系模式存在四个问题

(1)数据冗余

(2)更新异常

(3)插入异常

(4)删除异常

原因:某些数据依赖引起的

解决方案:规范化理论改造关系模式


什么是数据依赖?F(x)=Y 只要x相同Y一定相同,即为Y依赖于X,X为“决定因素”

但是在这一章里面应该把X普遍的理解为好几个属性的合集,这样下面的理解就会更简单,比如

X=(SNO,SNMAE)

                非平凡的函数依赖:X →Y,但Y ⊈X,则称X →Y 是非平凡的函数依赖

平凡的函数依赖:X →Y,但Y ⊆X ,则称X →Y 是平凡的函数依赖

完全函数依赖:X缺一个属性都不能决定Y(缺一不可

不完全函数依赖:X缺少一些属性还是可以决定Y

传递函数依赖:在R(U)中,如果Y依赖于X(Y ⊈X),X不依赖于Y,Y →Z,Z ⊈Y, 则称Z 对X 传递函数依赖,记作 X  传递→ Z(如果Y →X, 即X ↔ Y,则Z 直接依赖于X,而不是传递函数依赖)


单属性码:只有一个属性的候选码

多属性码:有一个以上属性的候选码

候选码:能够完全函数依赖确定一个元组

超码:能够部分完全依赖确定一个元组

主码:候选码中的一个

主属性:包含在任何一个候选码中的属性

非主属性:不包含在任何一个候选码中的属性

全码:整个属性组是候选码(缺了谁都不能唯一确定一个元组

判断:全码是否等价于所有属性都是主属性?

外码:在A表是候选码,在B表不是,则是B表的外码


范式:符合某种级别的关系模式的集合

规范化:低级的范式的关系模式通过模式分解转换为若干高一级范式的关系模式集合

1NF:属性不可再分

2NF:若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF

每一个非主属性都完全依赖于任何一个候选码

可以直接判断为第二范式:

     没有非主属性

     主码由单属性构成(因为肯定是完全依赖

可直接判断不为第二范式:

     候选码的部分可以确定某个非主属性

     候选码一样,但是非主属性不一样

非2NF的问题:插入异常、删除异常、修改复杂

原因:有两种非主属性,一类对码完全依赖,一类i不完全依赖

怎么拆:投影分解——按照完全依赖和不完全依赖拆开,最终达到子表不存在部分函数依赖

3NF:没有非主属性对码的传递依赖设关系模式R<U,F>∈1NF, R不存在这样的码X、属性组Y 及非主属性ZY Z , 使得X Y (Y X )Y Z 成立,则称R<U,F> ∈ 3NF

怎么拆:将传递依赖拆开

证明:符合3NF就符合2NF

BNCF(函数依赖)范式:非主属性直接不能有依赖关系(决定因素只能是码

证明:所有非主属性都完全函数依赖与每个候选码、所有主属性都完全函数依赖于每个不包含它的候选码、没有任何属性完全函数依赖于非码的任何一组属性


多值依赖:就是F(x)=一组y  而不是一个y了,比如一个人可以教n门课,那课就多值依赖于人

记作x-->-->y

平凡多值依赖:

举个多值依赖的经典例子(一般多值依赖都是全码,有木有发现 

多值依赖的性质:

·对称性

·传递性

·函数依赖是多值依赖的特殊情况

4NF:多值依赖箭头左边都是码


2.大题

01.关于数据依赖合集F

题目1:根据语义完整的写出关系模式的数据依赖集合

 答案:– F={ SnoSdept, SdeptMname, (Sno, Cno) → Grade}

题目2:根据具体的表格写出关系模式的数据依赖集合

02.求关系模式的候选码(求闭包XF+)

Armstrong公理的应用

03.判断是第几范式

  1. 写出候选码、写出依赖合集——前提是这部分你不能错
  2. 部分依赖有无——如果依赖合集左侧根本没有多属性码,那肯定是第二范式  2NF
  3. 传递依赖有无——传递依赖还是比较好看的吧 3NF
  4. 除码之外的决定因素有无——依赖合集左侧都得是码  BCNF

判断的顺序建议是从后到前:先判断是不是BCNF,然后再一步步往前判断

因为不能构成传递依赖,(S,C)-->I  I-->C   (S,C)-->C 但是这是个平凡依赖,不能算是传递过来的,本来(S,C)就可以确定C啊 

这个题要细品一下

 3NF

04.分解成BCNF

答案:通过分析可知,AE为R的主码(只有一个候选码),且存在非主属性(B,C)对码的部分依赖,所以R属于1NF。利用BCNF分解算法(如下),可得到R的一种分解结果。

*05.多值依赖的判定方法

 *06.分解成4NF

假设R(A,B,C)∈BCNF满足A→→B, A→→C,则分解R可分解为R1(A, B)和R2(A, C),要求R1(A, B)和R2(A, C) 都是平凡的多值依赖(一般这样按照多值依赖分开就okk

07.证明一个依赖关系和另一个依赖关系等价

08.最小依赖集的求法

这个博主写的很好

①分解依赖右侧为单个

②分别求依赖左侧闭包,不能包含依赖右侧内容,包含的就去掉

③对于留下来的每一个依赖,将依赖左侧做分组组合,求闭包,如果等于右侧,则用该组合的依赖代替留下来的依赖

※最小值依赖不唯一哦!

3.我不懂的题

这题选D

猜你喜欢

转载自blog.csdn.net/karonneveralone/article/details/122290253