数据库8 关系范式

数据库8 关系范式基本的定理 1 自反率 B 属于 A A B2 分解率 A BC A B 且 A C3 传递率 A B B C A C4 伪传递率 A B CB D AC D 如果 A B 相当于把 B 代替为 A 5 增

大家好,欢迎来到IT知识分享网。

基本的定理

1.自反率:B属于A=> A-> B

2.分解率:A->BC => A->B且A->C

3.传递率:A->B, B->C => A->C

4.伪传递率:A->B,CB->D => AC->D (如果A->B相当于把B代替为A)

5.增补率:A->B => AC->BC

正则覆盖(最小函数依赖)

1.将左边一样的合并,例如A->B, A->C, A->BC

2.对于函数依赖a->b

令F’ 将a->b替换为(a-A)->b,如果F->F’说明A是无关项

令F’将a->b替换为a->(b-B),如果F’->F,说明B是无关项

记忆方法:F和被去掉的属性在箭头的同一侧。

对于a->b,去掉A,检验F->{a-A->b}

对于a->b,去掉B,检验(F-{a->b}+{a->b-B}) -> (a->b)

注意点:

1.尽量先化简右边的

2.不要减少条件,比如A->C, C->B说明A->B,但是不能用A->B代替这个两个

3.不要搞反顺序,A->B, A->C=>A->BC是正确的,但是A->BC=>A->B, A->C是不对的。

候选码

所有属性完全依赖于它。注意,一定是完全依赖,就是少了任何一个属性构成不了依赖。主码和候选码简称码。

分为四类元素:L是只出现在左边的,R是只出现在右边的,LR是左右都出现的,N是左右都不出现的。

1.首先看所有的L,N元素集合能否推出所有属性,可以的话就是唯一的候选码

2.如果不可以,就从LR中选一个出来测试,直到把LR中每个都测了一遍。

然后再选两个出来测试,。。。直到全部选出来测试,注意如果一部分在,不用试验含着部分的,因为是完全依赖。

3.注意有些属性没有出现在函数依赖里面,此时要看题目R(…,…,…)

或者直接在未出现在右边的属性里面找(在题目的关系的定义里面把出现在左边的划掉,然后看选几个看能否推出所有属性)

范式

完全依赖:即左边少一个属性就推不出右边,A->B, AC->B,就是不完全依赖。

部分依赖:左边少一个属性也能推出右边,比如AC->B是部分依赖

主属性:出现在码中的属性。

传递依赖:A->C, C->B, 则A->B是传递依赖

1NF:无重复的列(数据库表中的每一列都是不可分割的基本数据项)

2NF:满足1NF且非主属性完全依赖码。

3NF:满足2NF且非主属性不传递依赖于码。

BCNF:满足3范式,并且主属性之间没有任何依赖关系

3NF分解

保持函数依赖的3NF分解

1.先求出正则覆盖

2.将N类单独变为一个子集

3.每个函数依赖a->b都变成一个子集{a,b}

如果想要无损连接,需要增加一个子集,里面是任意一个候选码。

BCNF分解

1.化简无关属性

2.求出候选码

3.对于所有a->b, 如果a不是超码,那么把R分解为a, b和R-{a,b}+a

4.对于剩下的属性集,看其上面的依赖是否有不满足的,如果有执行2,3

注意对于每一步,都必须重新计算剩下属性集里面的候选码

依赖保持和无损分解

如果把A分解为B, C,B和C共同属性包含A候选码,则是无损分解

如果原来所有依赖都在某一个分解后的集合上成立,说明依赖保持。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/158126.html

(0)
上一篇 2025-01-25 22:26
下一篇 2025-01-25 22:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信