数据库关系分解
㈠ 数据库系统系统原理,关系模式方面问题
Q1:问第三题具体是该如何实现的?
A1:第三题可采用保持函数依赖的分解算法。
Q2:第三题问题将R分解成等价的3NF,是不是说R分解出来的所有关系模式都必须是3NF的?
A2:可以说模式分解后的关系模式一定是3NF的,其中:
1.保持函数依赖的分解一定是3NF,但不一定是BCNF。
2.既保持函数依赖又有无损连接性的分解一定是3NF,但不一定是BCNF。
3.具有无损连接性的分解,一定可达到4NF。
Q3:第一范式,第二范式都能理解,那么第三范式是在第二范式的基础上,增加了什么条件?
A3:第三范式是在第一模式的基础上,消除了每一个非主属性与码的传递依赖,比如X→Y,Y→Z,这里就是Z传递依赖于X。
Q4:以R1(Sno, Cno, G)为例,由于(Sno,Cno)-->G,但是并不能确定G就一定不能决定(Sno,Cno),所以R1就是第三范式。这样理解对不对?
A4:以R1(Sno, Cno, G)为例,由于(Sno,Cno)-->G,这里只有(Sno,Cno)决定G这一个函数依赖,此例G完全依赖于(Sno,Cno),并不存在传递依赖,决定因素也只有码(Sno,Cno)一个,所以R1是BCNF范式,自然也是第三范式。(ps:4NF多值依赖这一块我还在理解,如果仅仅R(Sno,Cno,G),F={(Sno,Cno)-->G}这个条件的话我认为是属于4NF的,等我理解了再来补答~)
㈡ 数据库 分解成3NF范式
1:
R((职工号,日期)->日营业额,职工号->部门名,部门名->经理)
候选码:职工号,日期,部门名
2,因为R集合中存在传递函数依赖,会产生冗余数据,所以不是3NF
3NF如下:
R1(职工号,日期,日营业额)
R2(职工号,部门名)
R3(部门名,部门经理)
㈢ 数据库 关系模式 BC → D, C → AF, AB → CE 如何分解成BCNF
我们先来推断一下码;
c->af====>c->a,c->f
ab->ce===>ab->c,ab->e
这样我们得到:ab->a,ab->c,ab->f,ab->e
又因为
bc->d,ab->c
我们是不是能得到ab->d呢,答案是肯定的。所以呢ab作为码就可以了。
根据BCNF定义,可分为:
R1 {A,B,C,E}
R1 {A,B,D,F},如果不对,欢迎指正。