关系模式实例 #
供应者与它所提供的零件信息,关系模式FIRST与函数依赖集F如下:
FIRST(Sno, Sname, Status, City, Pno, Qty)
F={Sno->Sname, Sno->Status, Status->City, (Sno, Pno)->Qty}
1NF #
若关系模式R的每一个分量都是不可再分的数据项,则关系模式R属于第一范式。记为 \(R \in 1NF\).
2NF #
若关系模式 \(R \in 1NF\) ,且每一个非主属性完全依赖于码,则关系模式 \(R \in 2NF\)。换句话说,当1NF消除了非主属性对码的部分函数依赖,则称为2NF.
FIRST中, Sno->Status,非主属性Status部分函数依赖于码,非2NF。满足2NF的分解如下:
FIRST_1(Sno, Sname, Status, City)
FIRST_2(Sno, Pno, Qty)
3NF #
不存在这样的码X,属性组Y,非主属性\(Z(Z \nsubseteq Y)\),使得 \(X \rightarrow Y, (Y \nrightarrow X) Y \rightarrow Z\) 成立,则关系 \(R \in 3NF\).
当2NF消除了非主属性对码的传递函数依赖,则称为3NF。
FIRST_1不满足3NF,因为非主属性City传递依赖于码 Sno(Sno->Status,Status->City). 满中3NF的分解如下:
FIRST_11(Sno, Sname, Status)
FIRST_12(Status, City)
BCNF(Boyce Codd Normal Form) #
4NF #
若关系模式 \(R \in 1NF\) ,若对于R的每个非平凡多值依赖 \(X \rightarrow \rightarrow Y\) 且 \(Y \nsubseteq X\) 时, X必含有码,则关系 \(R \in 4NF\).
4NF是限制关系模式的属性间不允许有非平凡且非函数依赖的多值依赖。
如果只考虑函数依赖,关系模式最高的规范化程度是BCNF,如果考虑多值依赖,关系模式最高的规范化程度是4NF。