第一范式:
属性中没有多值属性和组合属性
Boyce-Codd范式 (BCNF范式)
对所有的函数依赖,至少有一个成立
1 α-->β是平凡的函数依赖
2.α是模式R的一个超码
eg. bor_loan=(customer,loan_number,amount) loan_number--->amount 成立 ,一个贷款号只能对应一个金额,但是loan_number并不是超码,因为一笔贷款可以有多个customer。 分解成 borrower=(customer,loan_number) loan=(loan_number,amount) 满足BCNF范式
处理非BCNF范式的方法:将R分解成下列两个模式 α∪β 和 R-(β-α)
在我们分解不属于BCNF范式的模式时,可能会产生多种不属于BCNF范式的值,需要进行多次分解,直至最后产生一个BCNF模式的集合
第三范式(3NF):
放松了BCNF的要求,允许非平凡函数依赖的左边不是超码。
对所有的函数依赖,至少有一个成立
1 α-->β是平凡的函数依赖
2.α是模式R的一个超码
3.β-α中的每个属性A都包含在R的一个候选码中
1.假设我们将模式R={A,B,C,D,E}分解为(A,B,C,) (A,D,E) 证明该分解是无损分解,如果如下函数依赖集F成立:
A->BC
CD->E
B->E
E->A
如果R1∪R2-->R1 or R1∪R2-->R2 则是无损分解 R1∪R2=A ,A是候选码,所以成立。是无损分解
2.解释如何用函数依赖表明
实体集account和customer 间存在的一对一联系集
实体集account和customer间存在的多对一联系集
pk(r) 表示关系r的主键
pk(account)-->pk(customer) pk(customer)-->pk(account) 说明存在一对一的联系集
pk(account)-->pk(customer) 说明存在多对一的联系集
3.用Armstrong公理证明合并律的正确有效性
若α-->β 则 α-->αβ (增补律)
若α-->γ 则αβ-->βγ (增补律)
α-->βγ (传递律)
4 计算关于关系传递模式R=(A,B,C,D,E)的如下函数依赖集F的闭包
A-->BC 得到 A-->B ;A-->C;A-->D;A-->E ;A-->ABCDE
CD-->E 得到 CD-->ABCDE
B-->D 得到 BC-->CD-->ABCDE
E-->A 得到 E-->ABCDE
列出R的候选码 (A,BC,CD,E)
找出上述F的正则覆盖Fc,左边都是没有重复的,也没有无关属性,因此Fc=F,不用修改