关系模式的第四范式(4NF)
假设关系模式 R ( U ) R(U) R(U) 满足第一范式,对于 U U U 的任意两个属性子集 X , Y ( X ⊉ Y ) X,Y\,(X\not\supe Y) X,Y(X⊇Y),若 X ↠ Y X\twoheadrightarrow Y X↠Y 且非平凡时必有 X X X 包含某候选键,那么就称该关系模式是满足第四范式(fourth normal form,4NF)的。比如下图左侧的关系模式虽然满足第三范式,但不满足 4NF(该场景下科目和学生电话是相互独立的):
显然该定义是 3NF 的进一步收紧,由于非平凡的严格多值依赖与“ X X X包含候选键”是冲突的(包含候选键就一定是函数依赖了),所以 4NF 是在 3NF 的基础上进一步剔除了非平凡的严格多值依赖的情况(或说 4NF 不允许存在两个多值依赖)。
关系模式的 4NF 规范化(分解法)
在依照〖关系模式的 BCNF 规范化(分解法)〗得到满足 BCNF 的无损连接分解 ρ = { R 1 ( U 1 , F 1 ) , ⋯ , R k ( U k , F k ) } \rho=\{R_1(U_1,F_1),\cdots,R_k(U_k,F_k)\} ρ={R1(U1,F1),⋯,Rk(Uk,Fk)} 的基础上,再进行以下操作便可实现 4NF(继续保持无损连接性):
- 若 ρ \rho ρ 中存在 R i ( U i , F i ) R_i(U_i,F_i) Ri(Ui,Fi) 不满足 4NF,那么必有 X ↠ A ∈ F i + ( A ∉ X ) X\twoheadrightarrow A\in F_i^+\,(A\notin X) X↠A∈Fi+(A∈/X)(即 R i R_i Ri 中存在非平凡的严格多值依赖),于是可按定理一对 R i R_i Ri 进行分解: σ = { S 1 ( X ∪ { A } , F S 1 ) , S 2 ( U i − { A } , F S 2 ) } \sigma=\{S_1(X\cup\{A\},F_{S_1}),\enspace S_2(U_i-\{A\},F_{S_2})\} σ={S1(X∪{A},FS1),S2(Ui−{A},FS2)},以 σ \sigma σ 代替 R i ( U i , F i ) R_i(U_i,F_i) Ri(Ui,Fi),不断执行上述过程直到 ρ \rho ρ 中所有模式均满足 4NF;
该算法是经过严格证明的有效的,可以上面图中的模式为例进行测试。同样,由于不保证得到的分解是保持函数依赖的,因此需要的话可考虑改用〖关系模式的 3NF 规范化(合成法)〗。
关系模式的第五范式(5NF)
假设关系模式 R ( U ) R(U) R(U) 满足第四范式,若 R R R 不能被无损连接分解(即不存在连接依赖),则称该关系模式满足第五范式(fifth normal form,5NF),也叫投影-连接范式(projection–join normal form,PJ/NF)。比如下图左侧的关系模式虽然满足第四范式(因为不存在非平凡多值依赖),但不满足 5NF(该场景下代理、公司和产品之间两两多值依赖):