一、第一范式 First Normal Form

  1. 如果域(Domain)是不可分的,则称域是原子(Atomic)的

  2. 如果关系范式中的所有域都是原子的,则称该关系范式满足第一范式(1NF)

  3. 一般要求关系型数据库中的所有关系都满足第一范式

    **示例:**不满足第一范式的关系设计

    • 复合属性:可以进一步分解为更小组件的属性

    • 多值属性:允许存放多个值的属性

    • 复杂数据类型:在属性中存放对象

      学生ID| 姓名          | 课程
      1     | Tim,Cook     | 数学,物理
      2     | Steve,Jobs   | 化学
      
      // 姓名可以继续分为姓和名,故为复合属性
      // 课程允许存放多个值,故为多值属性
      // 它们都不满足第一范式
      
  4. 将不满足第一范式的关系转化为第一范式

二、函数依赖 Functional Dependencies(FDs)

1. 函数依赖的概念

  1. 定义

    示例:

    在下图的关系中, $A\rightarrow B$ 不成立, $B\rightarrow A$ 成立

    image.png

  2. 函数依赖与键(Key)的关系

  3. 平凡的函数依赖

    示例:

    $A\rightarrow A$、 $AB\rightarrow A$ 都是平凡的函数依赖

2. 函数依赖集的闭包 Closure of a Set of Functional Dependencies

  1. 定义:由函数依赖集 $F$ 可以逻辑推导出的所有函数依赖关系组成的集合 $F^+$ 称为函数依赖集 $F$ 的闭包;函数依赖集与其闭包是等价关系

    示例:

    image.png

  2. Armstrong’s Axioms

    以下三条定律为基本定律:

    以下三条定律为导出定律,它们可以由基本定律导出:

    示例:

    image.png

  3. 求函数依赖集的闭包的算法

    image.png

  4. 对于 $n$ 个属性的关系范式,其函数依赖集的闭包最多可能有 $2^n\times 2^n$ 个元素

3. 属性集的闭包 Closure of Attribute Sets

  1. 定义:在函数依赖集 $F$ 下,由属性集 $a$ 能够决定的所有属性的集合 $a^+$称为属性集 $a$ 的闭包

  2. 求属性集的闭包的算法

    image.png

  3. 使用属性集的闭包检查超键

    <aside> 📌

    可以使用画图的方法寻找超键 / 候选键

    image.png

    使用画图寻找超键 / 候选键时,一定要小心遗漏

    示例:

    $R=(A, B, C, D ,E)$

    $F=\set{A\rightarrow B, BC\rightarrow D, D\rightarrow A}$

    使用画图的方法寻找候选键时,一定不要遗漏 $E$,正确答案为 $ACE$, $BCE$, $CDE$

    image.png

    </aside>