数据库系统(三)关系模式设计之规范形式


关系模式设计之规范形式

函数依赖

(1) 函数依赖的定义
R(U) 是属性集合 $ U = {A_1,A_2,…,A_n} $ 上的一个关系模式,X, YU 上的两个子集。若对 R(U) 的任意可能关系 rr 中不存在两个元组在 X 中的属性值相等而在 Y 中的属性值不等,则称 “X函数决定Y” 或 **”Y函数依赖于X”**,记作 $ X \to Y $。

示例

属性全集
$ U = {\text{学号}, \text{姓名}, \text{年龄}, \text{班号}, \text{班长}, \text{课号}, \text{成绩}} $

▢ $ \text{学号} \to {\text{姓名}, \text{年龄}} $
▢ $ \text{班号} \to \text{班长} $
▢ $ {\text{学号}, \text{课号}} \to \text{成绩} $ z


设计关系模式时
除给出属性全集外,还需明确给出 数据依赖集合


函数依赖的成立取决于:

  1. 问题领域的限定和分析;
  2. 业务规则的正确理解。

示例说明

  • 若问题领域中学生无重名,则存在:
    $ \text{姓名} \to {\text{年龄}, \text{家庭住址}} $
  • 若问题领域中学生有重名,则上述依赖不成立。

函数依赖的特性

  1. 非平凡函数依赖
    对 $ X\rightarrow Y $,但 $ Y\subsetneq X $,则称 $ X\rightarrow Y $ 为非平凡的函数依赖。

  2. 决定因素
    若 $ X\rightarrow Y $,则任意两个元组在X上值相等时,在Y上值必然相等,称X为决定因素。

  3. 相互函数依赖
    若 $ X\rightarrow Y $ 且 $ Y\rightarrow X $,则记作 $ X\leftrightarrow Y $。

  4. 非函数依赖表示
    若Y不函数依赖于X,则记作 $ X\not\rightarrow Y $。

  5. 依赖的适用范围

    • 基于模式R:对任意关系r成立
    • 基于具体关系r:仅对某一特定关系r成立
  6. 特殊情形下的恒等依赖
    如一关系r的某属性集X,r中不存在X值相等的两个元组,则 $ X\rightarrow Y $ 恒成立。

函数依赖类型:完全依赖与部分依赖

[Definition] 部分或完全函数依赖

在关系模式 R(U) 中:

依赖类型定义表示法
完全函数依赖X → Y 且对 X 的任意真子集 X' 都有 X' ↛ Y$ X \xrightarrow{f} Y $
部分函数依赖X → Y 但存在 X 的真子集 X' 使得 X' → Y$ X \xrightarrow{p} Y $

概念解析:

  1. 完全依赖的核心特征

    • 决定因素 X 必须完整才能确定 Y
    • 移除 X 的任意属性都会破坏依赖关系
      示例:
      $ {\text{学号}, \text{课程号}} \xrightarrow{f} \text{成绩} $
  2. 部分依赖的识别

    • Y 可由 X 的某个真子集单独决定
    • 存在属性冗余的决定因素
      示例:
      $ {\text{学号}, \text{姓名}} \xrightarrow{p} \text{年龄} $
      (因 $\text{学号} → \text{年龄}$ 已成立)

视觉提示:

  • 完全依赖符号:$ \xrightarrow{f} $ (f: full)
  • 部分依赖符号:$ \xrightarrow{p} $ (p: partial)
  • 非函数依赖符号:$ \not\rightarrow $

传递函数依赖

[Definition]

在关系模式 R(U) 中,设 X, Y, ZU 的子集。若满足:

  1. $ X \to Y $
  2. $ Y \to Z $
  3. $ Y \not\subset X $(即 Y 不是 X 的子集)
  4. $ Z \not\subset Y $
  5. $ Z \not\subset X $
  6. $ Y \not\to X $(即 Y 不能函数决定 X)

则称 Z 传递函数依赖于 X,记作 $ X \xrightarrow{t} Z $(t: transitive)。


核心条件解析:

条件数学表示语义说明
依赖性$ X \to Y $ 且 $ Y \to Z $存在依赖链传递关系
非包含性$ Y \not\subset X $
$ Z \not\subset Y $
$ Z \not\subset X $
排除因集合包含关系导致的依赖
非相互依赖$ Y \not\to X $确保 Y 不是 X 的等价属性集

传递依赖的本质:当且仅当依赖不能通过直接路径($ X \to Z $)建立,但可通过中间属性 Y 间接推导时成立。


示例说明:

学生选课系统中:
$ \text{学号} \to \text{班号} $
$ \text{班号} \to \text{班长} $
且满足非包含条件:

  • 班号 ⊄ 学号
  • 班长 ⊄ 班号
  • 班长 ⊄ 学号
  • 班号 ↛ 学号

则 $ \text{学号} \xrightarrow{t} \text{班长} $

[Definition] 候选键

设 $ K $ 为关系模式 $ R(U) $ 中的属性或属性组合,若满足:
$$ K \xrightarrow{f} U $$
则称 $ K $ 为 $ R(U) $ 上的 候选键 (Candidate Key)。


说明:

  1. 主键选择
    可任选一候选键作为 $ R $ 的 主键 (Primary Key)

  2. 主属性划分

    • 包含在任一候选键中的属性 → 主属性 (Prime Attribute)
    • 未包含在任何候选键中的属性 → 非主属性 (Non-Prime Attribute)
  3. 超键定义
    若 $ S \supset K $($ S $ 真包含 $ K $)且 $ K $ 是候选键 →
    $ S $ 为 超键 (Super Key)


概念关系图解

graph LR
    A[超键] --> B[候选键] --> C[主键]
    B --> D[主属性]
    C --> D
    A -.-> E[非主属性]

外来键
若R(U)中的属性或属性组合X并非R的候选键,但X却是另一关系的候选键,则称X为R的外来键(Foreign Key),简称外键。

第一范式

若关系模式R(U)中关系的每个分量都是不可分的数据项(值、原子),则称R(U)属于第一范式,记为:R(U) ∈1NF。

1NF要求关系中不能有复合属性、多值属性及其组合。

将 非1NF转换为 1NF情况:将复合属性处理为简单属性;将多值属性与关键字单独组成一新的关系。

第二范式

若R(U)∈ 1NF 且 U中的每一非主属性完全函数依赖于候选键,则称R(U)属于第二范式,记为:R(U)∈2NF。

第二范式消除了非主属性对候选键的部分依赖。

第三范式

第三范式 (3NF) 定义 若关系模式 $R(U, F) \in \text{2NF}$ 且 $R$ 中不存在以下情况:

  • 候选键 $X$
  • 属性组 $Y \subseteq U$
  • 非主属性 $A$
  • 满足: 1. $A \notin X$ 且 $A \notin Y$ 2. $Y \not\subseteq X$ (Y 不包含于 X) 3. $Y \nrightarrow X$ (Y 不函数决定 X) 4. $X \rightarrow Y$ 且 $Y \rightarrow A$ 则称 $R(U)$ 属于第三范式,记为: $$R(U) \in \text{3NF}$$

第3范式消除了非主属性对侯选键的传递依赖

关系模式设计如满足第3范式,则一定能满足第2范式;反之则不然。

BCNF

若 $R(U, F) \in \text{1NF}$,且对于任何 $X \rightarrow Y \in F$(或 $X \rightarrow A \in F$),当 $Y \not\subseteq X$(或 $A \notin X$)时,$X$ 必含有候选键,则称 $R(U)$ 属于 Boyce-Codd 范式,记为:$$R(U) \in \text{BCNF}$$

[定理] 若 $R(U,F) \in \text{BCNF}$,则 $R(U,F) \in \text{3NF}$。

证明
(反证法)假设 $R(U,F) \in \text{BCNF}$ 但 $R(U,F) \notin \text{3NF}$。
依据 3NF 定义,必存在传递依赖:
$$\exists X \rightarrow Y,\ Y \rightarrow A$$
其中:

  • $X$ 是候选键
  • $A \notin X$ 且 $A \notin Y$
  • $Y \nrightarrow X$(即 $X \notin Y$)

由于 $A \notin Y$,$Y \rightarrow A$ 违反 BCNF 的定义(BCNF 要求所有非平凡函数依赖的左侧必须包含候选键,但 $Y$ 不是候选键)。
故假设矛盾,定理得证。
证毕

总结:存在传递依赖或不满足 3NF 的关系模式,必定不满足 BCNF。

image-20250626103811862

多值依赖(MVD)

定义
设 $X, Y \subseteq U$, $Z = U - X - Y$,
$X \to\to Y$ 成立当且仅当:
对任意 $t_1, t_2$ 满足 $t_1[X] = t_2[X]$,
必存在 $t_3, t_4$ 使得:

  1. t3[X]=t4[X]=t1[X]
  2. t3[Y]=t1[Y] 且 t3[Z]=t2[Z]
  3. t4[Y]=t2[Y] 且 t4[Z]=t1[Z]

关键特性

性质规则
互补性$X \to\to Y \Rightarrow X \to\to Z$
FD蕴含MVD$X \to Y \Rightarrow X \to\to Y$
超键条件$X \to\to Y$ 中 $X$ 是超键 ⇒ 平凡 MVD

典型案例:课程分配表

CourseTeacherTextbook
MathAliceCalculus
MathAliceAlgebra
MathBobCalculus
MathBobAlgebra

MVD存在
$Course \to\to Teacher$
$Course \to\to Textbook$(互补性)

graph LR
A[1NF] --> B[2NF]
B --> C[3NF]
C --> D[BCNF]
D --> E[4NF]

subgraph MVD处理
D -- 存在非平凡MVD --> E
end

subgraph FD处理
A -- 消除部分依赖 --> B
B -- 消除传递依赖 --> C
C -- 消除主属性依赖 --> D
end

**第四范式 (4NF) **

设关系模式 $R(U) \in \text{1NF}$,$D$ 是其上的一组依赖(包括函数依赖和多值依赖)。若对任意非平凡多值依赖 $X \to\to Y \in D$ 满足以下条件:

  1. $Y \neq \phi$ (Y 非空)
  2. $Y \not\subset X$ (Y 不包含于 X)
  3. $XY \neq U$ (X 和 Y 的组合不等于全集)

必有 $X$ 为超键(即 X 包含候选键),则称 $R(U)$ 满足第四范式,记为:
$$R(U) \in \text{4NF}$$

如果有多值依赖,则一定依赖于候选键

第四范式消除了非主属性对候选键以外属性的多值依赖。


$R(U) \in \text{4NF}$ 当且仅当:

  1. $R \in \text{BCNF}$
  2. 对所有非平凡 MVD $X \to\to Y$,$X$ 必须是超键

分解方法

若存在非平凡 MVD $X \to\to Y$,可无损分解为:
$$R_1(X \cup Y), \quad R_2(X \cup Z) \quad (Z = U - X - Y)$$

范式关系条件结论
4NFBCNF无限制恒成立
BCNF→4NF仅存在函数依赖(无MVD)等价
BCNF→4NF存在多值依赖(MVD)不成立
graph LR
    BCNF -- 存在多值依赖 --> 需升级至 --> 4NF
    4NF -- 仅函数依赖 --> 等价于 --> BCNF
    4NF -- 无限制 --> 严格强于 --> BCNF

关系的第4范式和弱第4范式

[Definition] W4NF
设关系模式 $R(U) \in \text{3NF}$,若 $R$ 上的任何互补多值依赖

  • $X \twoheadrightarrow Y$
  • $X \twoheadrightarrow (R - X - Y)$

满足约束条件:

  1. $XY \neq U$ ($X$ 与 $Y$ 组合非全集)
  2. $Y - X \neq \varnothing$ ($Y$ 有独立于 $X$ 的属性)

则必有一个是多值依赖是函数依赖(即 $X \to Y$ 或 $X \to (R-X-Y)$),此时称 $R$ 是弱第四范式的,记为:
$$R \in \text{W4NF}$$

  1. W4NF 不一定是 BCNF
  2. BCNF 也不一定是 W4NF
  3. $\twoheadrightarrow$ 表示多值依赖符号(常见替代:X \to\to Y

image-20250626110905760


文章作者: nusqx
文章链接: https://nusqx.top
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 nusqx !
评论
  目录