大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
相关系列:
ER图转为关系模式
无损分解和保持依赖
3NF分解与BCNF分解
正则覆盖与候选码
如何设计ER图(弱实体集)
如何设计ER图(映射基数)
1. 3NF分解
- 先求出正则覆盖Fc
- 对于Fc里面的所有函数依赖a->b,均转化为Ri=ab
- 对于所有的模式Ri
- 如果包含候选码,进行第4
- 如果都不包含候选码, 将任意一个候选码添加到模式Ri里面
- 如果一个模式被另一个模式包含,则去掉此被包含的模式。
例子:U={A,B,C,D,E,G},F={B->G,CE->B,C->A,CE->G,B->D,C->D}
- 正则覆盖为{B->DG,CE->B,C->AD}
- R1=BDG,R2=CEB,R3=CAD
- CE是候选码,R2包含CE
- R1,R2,R3没有包含关系
- 3NF分解为{BDG},{CEB},{CAD}
例子关系模式r(A,B,C,D,E,F),函数依赖集F: A->BCD,BC->DE,B->D,D->A
1.函数依赖是:A->BC.B->DE,D->A
2.R1=ABC,R2=BDE,R3=DA,不包含候选码(AF,BF,DF)中任意一个,所以任意添加一个R4=AF
3. 3NF分解为{ABC,BDE,DA,AF}
2.BCNF分解
给出R和函数依赖集F:
- 求出候选码
- 观察函数依赖集,如果左边不是超码(候选码),则不满足条件
- 用不满足条件的函数依赖(A->B)进行分解,这样分解之后就满足了
- R1=AB(这样就满足了)
- R2=(R-R1)∪A
- F2={…}去掉B的所有函数依赖,尽可能写全
- 对F2进行步骤1的计算。
- 重复直到所有的满足条件
例:R(A,B,C,D,E)
F={A->C,C->D ,B->C,DE->C,CE->A}
候选码为BE
考虑A->C,
R1=AC,R2=ABDE
F2={A->D,B->D,DE->D,BE->A,DE->A},候选码为BE,不是BCNF分解,所以继续分解。
考虑A->D
R21=AD,R22=ABE
F22={BE->A} 候选码为BE,全部满足
所以为{AC,AD,ABE}
例子:
R候选码为A,CD,BC,E
存在非候选码B,B->D
所以R不是BCNF分解。
考虑B->D,
R1=BD
R2=ABCE
F2={A->BC,BC->E,E->A,BC->A}候选码为A,E,BC
所以BCNF分解为{ABCE,BD}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/219147.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...