范式,数据库规范化,闭包,最小依赖,模式分解

规范化

函数依赖:若对于R(U)的任意一个可能的关系r, r中不可能存在两个元祖在X上的属性值相等, 而在Y上的属性值不等,则称X函数确定Y或者Y函数依赖于X,记做X->Y
X->Y, 但Y不包含于X,则称X->Y是非平凡的函数依赖。
一般是非平凡的函数依赖
X->Y,但Y包含于X,则称X->Y是平凡的函数依赖。

完全函数依赖: 若X->Y, 并且对于X的任何一个真子集X’, 都有X’不确定Y,则Y对X完全函数依赖。
若X->Y,但Y不完全依赖于X, 则Y对X部分函数依赖。比如: 有(Sno,Sname)->Sdept, 其中: 因为Sno->Sdept成立。

第一范式:存在X->Y关系模式的集合。
第二范式:消除非主属性的部分依赖。
第三范式消除非主属性的传递依赖
BCNF消除函数依赖(非主属性+主属性),也就是在第三范式的基础上消除主属性的函数依赖。
第四范式在BCNF基础上,消除非平凡非函数依赖的多值依赖。

闭包

什么是闭包呢。哈哈。看书吧、
如何求X的闭包呢?就是X与(左部为X的子集,(如果X是单属性那子集就是本身)的对应的结果集)合并。

最小依赖集或最小覆盖

概念略:
如何求最小依赖集:
步骤
{
1.分解右部为单个属性
2.判断左部单个属性是否多余
3.判断每个函数依赖不多余(去重)
}
比如啊
有依赖集
F{AB->C, D->EG, C->A, BE->C, BC->D, CG->BD, ACD->B, CE->AG}
求它的最小依赖集
根据步骤:
第一:分解右部为单个属性
得到F’{AB->C, D->E, D->G, C->A, BE->C, BC->D, CG->B, CG->D, ACD->B. CE->A, CE->G}
从中可以去除CG->B或(CG->D), 去除CE->A或CE->G
第二:判断左部单个属性是否是多余;
如:AB->C, A->C, B->C;其中A->C, B->C都是多余的
第三:判断每个函数依赖是否多余,也就是去除重复的函数依赖

模式分解

模式分解三定义:
一:分解具有无损连接性
二:分解要保持函数依赖
三:分解既要保持函数依赖,又要具有无损连接性
概念略过;

假设有
U = {A,B,C,G,H,R,S,T};
F ={C-T, CS-G, HT->R, HR->C, HS->R}

求R的一个候选码?
根据不在函数依赖右边出现的都是候选码,可以判断出F中A,B,H,S都是候选码
求装换为3NF且保持函数依赖的分解?
步骤:
算法(合成法):
1.F进行最小化,得到最小函数依赖集,
2.若X->A属于F,且XA属于U,则p = {R},算法终止(意思就是,去除只有只有两个属性,其中时一个主属性的那种情况)
3.求合并的结果
这题的结果是: (CT)(CSG)(HTR)(HRC)(HSR)(AB)

重点内容求装换为3NF既有无损性连接性且保持函数依赖的分解?
同理:
得到的结果集是装换为3NF且保持函数依赖的分解 得到的结果集和所以的候选码的集合。(CT)(CSG)(HTR)(HRC)(HSR)(AB)(ABHG)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值