关系范式
一. 范式 1NF
若关系模式 R ( U ) R(U) R(U) 中关系的每个分量都是不可分的数据项(值,原子),则称 R ( U ) R(U) R(U) 属于第一范式,记为: R ( U ) ∈ R(U) \in R(U)∈ 1NF
不符合 1NF 的处理
- 将复合属性处理为简单属性;
- 将多值属性与关键字单独组成一新的关系;
- (面向对象数据库)引入新的数据模型处理:Object-Oriented Data Model
二. 第二范式 2NF
若 R ( U ) ∈ R(U) \in R(U)∈ 1NF 且 U U U 中的每一非主属性完全函数依赖于候选键,则称 R ( U ) R(U) R(U) 属于第二范式,记为: R ( U ) ∈ R(U) \in R(U)∈ 2NF
例子1:
- 2NF 消除了非主属性对候选键的部份依赖
例子2:
三. 第三范式 3NF
若 R ( U , F ) ∈ R(U,F) \in R(U,F)∈ 2NF 且 R R R 中不存在这样的情况:候选键 X X X,属性组 Y ⊆ U Y \subseteq U Y⊆U 和非主属性 A A A,且 A ∉ X , A ∉ Y , Y ⊄ X , Y ↛ A A \not\in X, A\not\in Y, Y \not\subset X, Y\not\rightarrow A A∈X,A∈Y,Y⊂X,Y→A 成立。满足以上条件则称 R ( U ) R(U) R(U) 属于第三范式,记为: R ( U ) ∈ R(U) \in R(U)∈ 3NF
例子1:
- 3NF 消除了非主属性对候选键的传递依赖
例子2(满足 2NF 但不满足 3NF):
- 关系模式设计如果满足 3NF,则一定能满足 2NF,反之则不然
关系模式分解成 3NF
四. BCNF
若 R ( U , F ) ∈ R(U, F) \in R(U,F)∈ 1NF,若对于任何 X → Y ∈ F X\rightarrow Y \in F X→Y∈F(或 X → A ∈ F X\rightarrow A \in F X→A∈F),当 Y ⊄ X Y \not\subset X Y⊂X (或 A ∉ X A\not\in X A∈X)时, X X X 必含有候选键,则称 R ( U ) R(U) R(U) 属于 Boyce-Codd 范式,记为: R ( U ) ∈ R(U)\in R(U)∈ BCNF
例子1:
- BCNF 消除了任何属性(主属性和非主属性)对关系键的部分函数依赖和传递函数依赖