数据库设计笔记1-无损分解,无损连接,函数依赖,闭包,范式,键,投影

1.无损分解
好的设计—好的分解–无损分解
……判断方法……
R=R1∪R2
R1∩R2=R1/R2的超键
2.函数依赖
<1平凡的函数依赖x→y,就是y是x的函数,y又是x的子集
eg:
(学生ID,姓名)->(姓名)
其中x是(学生ID,姓名),y是(姓名)
那么如果知道了学生ID,姓名,肯定可以得到唯一的姓名
<2非平凡函数依赖----y不是x的子集
部分函数依赖
eg:
学生ID(StudentID)
课程号(CourseID)
学生姓名(StudentName)
(学生ID,课程号)是可以推出学生姓名的
而只有学生ID也可以推出决定学生姓名,所以可以继续拆分,为部分函数依赖,换句话说x的子集也能推出决定右边
完全函数依赖
eg:
x->y的函数依赖,y依赖x的全部,那么则是全部函数依赖,x不可以再拆分
换句话说x的子集不能推出决定右边
3.闭包
给定的属性集合关于另一个属性几个的所有可能依赖–所有可能的函数关系
……求闭包……
自反率(Reflexivity Axiom): 如果X是一个属性集合,那么X的任何子集都可以推出X:x→x
扩展律(Augmentation Axiom):XZ → YZ
传递律(Transitivity Axiom): 如果X → Y和Y → Z,那么X → Z。
Union Rule(并集规则):X → Y1 和 X → Y2,那么 X → (Y1 ∪ Y2)
Splitting Rule(拆分规则):X → (Y1 ∪ Y2),那么 X → Y1 和 X → Y2
Pseudotransitivity Rule(伪传递规则):Pseudotransitivity Rule(伪传递规则)
4.范式
1NF:
列包含不可分割、原子数据
单元格只包含一个值
每个行都应具有唯一标识
2NF:
非主键属性完全依赖主键
–如果存在部分函数依赖,需要将表进行拆分
3NF:
消除传递依赖,非主键属性完全依赖于主建且只依赖于主键
…………总结……………
第一范式:简单说 列不能再分

第二范式:简单说 建立在第一范式基础上,消除部分依赖

第三范式:简单说 建立在第二范式基础上,消除传递依赖。

BCNF是对3NF的改进,消除了对主键子集的依赖
……………………………
……分解得到BCNF……
5.属性集闭包x+
……求属性集闭包……
eg:
设有关系模式R(M,N,X,Y,Z)其依赖集F={M->H,H->Z,Y->Z,N->Y,Z->M}。求M+,MH+
第一步:设要求的闭包属性集是Y,把Y初始化为X.
令X={M},我们先看M->H,由于函数依赖M->H左边的所有属性都在X中,而右边H不在X中,所以可以把H添加到X 中,此时X={M,H}
然后按照顺序我们再看H->Z,我们不难发现函数依赖H->Z左边的所有属性都在X中,右边的属性Z又不在X中,仍旧添加,这时X={M,H,Z}
下一个
Y->Z,可以发现Y属性不在X中,条件不满足
N->Y,可以发现N属性不在X中,条件不满足
Z->M,Z属性在X中条件满足,但右边M也在X中条件不满足。
属性判断完 ,那么属性M的闭包:M+=MHZ
……测试某个属性集是否为超键……
闭包如果包含所有的属性,那就是超键
……判断某个属性是无关的……
没有它也能推出完整的R
F={AB→CD,A→E,E→C},is C 是冗余的吗
(AB)+under Fnew={AB→D,A→E,E→C}:
result=AB
result=ABD
result=ABDE
result=ABDEC
(AB)+={ABDEC}contains C
6.键
super key(超级键):唯一标识任何一条记录
candidate key(候选键):不可拆分的super key
7.无损连接
将一个关系模式分解成若干个关系模式后,通过自然连接和投影等运算仍能还原到原来的关系模式
只考虑两个子模型的情况
在这里插入图片描述……判断是否为无损连接……
8.函数依赖保留F 分解的子集合并(∪)之后,仍能恢复原 F 的函数依赖关系
在这里插入图片描述
在这里插入图片描述
9.投影

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值