数据库范式

第一范式:

      属性中没有多值属性和组合属性


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,不用修改




 

   




你可能感兴趣的:(数据库范式)