数据库原理与应用 第 12 章 · 第四节
课程第 12 章第四节 看范式范式1NF2NF3NF一事一地四级两个原则 版式
第 12 章 关系模式的规范化理论 · 第四节

范式与模式分解

本 节 知 识 点
  1. 20接下来讲范式
  2. 21范式是衡量规范化程度的尺子
  3. 22第一范式:属性原子化
  4. 23第二范式:消部分依赖
  5. 24第三范式:消传递依赖
  6. 25规范化的总原则
  7. 26四级范式各消掉什么
  8. 27无损连接与保持函数依赖
20
第 12 章 · 第四节

接下来讲范式

工具有了,该拿尺子量这张表到底差在哪一级。

第 20 页课件

重 点

范式越高要求越严,本章量到 3NF 就够用了。

知道更多

范式越高表越多,查一次要连的表也越多,得在安全和快之间权衡。

练一练

下列关于范式的说法,正确的是?
  1. A满足 3NF 可能不满足 1NF
  2. B2NF 要求消除传递依赖
  3. C3NF 要求非主属性不传递依赖于主码
  4. D范式越高性能一定越好
答案 C

范式层层递进,3NF 必然先满足 2NF。消传递依赖是 3NF 的活,2NF 消的是部分依赖。

想一想

是不是范式越高就一定越好?

21
第 12 章 · 第四节

范式是衡量规范化程度的尺子

一级一级往上,每升一级消掉一种毛病。

第 21 页课件

关键术语记住这个名字

范式Normal Form
衡量关系模式规范化程度的等级,缩写 NF

试一试点一级看它消掉什么

点一级,看它把哪一种毛病消掉了
范式这一级的要求

重 点

四级是层层递进的,判的时候按 1NF、2NF、3NF 的顺序往下走。

22
第 12 章 · 第四节

第一范式:属性原子化

每个格子只装一个值,这是最低的门槛。

第 22 页课件

重 点

MySQL 建的表天生满足 1NF,一个字段本来就塞不下两个值。

打个比方

联系方式一栏里既写手机又写邮箱,就不满足 1NF。

练一练

下面哪张表不满足 1NF?
  1. A有一列叫爱好,里面写着「篮球、football、读书」
  2. B有两行主码重复
  3. C有一列全是空值
  4. D有一列依赖另一列
答案 A

一个格子里塞了三个爱好,属性还能再分,所以不满足第一范式。

23
第 12 章 · 第四节

第二范式:消部分依赖

非主属性都得完全依赖主码,不许只靠一半。

第 23 页课件

试一试看那张依赖图裂开

走到

重 点

SCD 卡在这一级,SN、Age、Dept、MN 只靠 SNo 一半就定得下。

记牢它只有一种情况会栽

  1. 主码是组合码才可能违反
  2. 单属性主码天然满足

上机做

上机三第 1 题 亲手拆第一步

24
第 12 章 · 第四节

第三范式:消传递依赖

非主属性不许绕着别的非主属性来。

第 24 页课件

试一试四个模式各判一次

判哪个

    重 点

    SD 里 SNo→Dept→MN 这条链要切开,切在 Dept 那儿。

    上机做

    上机三第 3 题 亲手拆第二步

    想一想

    切完之后 Dept 在两张表里都有,重复了吗?

    25
    第 12 章 · 第四节

    规范化的总原则

    一个关系模式只描述一件事,不多装。

    第 25 页课件

    重 点

    拆到最后,学生表管学生,选课表管选课,系表管系。

    试一试换个题自己拆

    对答案

    打个比方

    像收纳,袜子进衣柜,文件进档案夹,一个抽屉只放一类。

    26
    第 12 章 · 第四节

    四级范式各消掉什么

    1NF 原子化,2NF 消部分,3NF 消传递,BCNF 管主属性。

    第 26 页课件

    分清楚

    范式这一级的要求
    1NF属性原子化
    2NF非主属性完全依赖码
    3NF非主属性不传递依赖码
    BCNF主属性也不部分依赖码

    知道更多更正

    课件右图写「非主属性对主属性」,按左边的定义应是对码。

    练一练

    R(A,B,C,D) 主码 A,F={A→B, B→C, A→D},最高是第几范式?
    1. A1NF
    2. B2NF
    3. C3NF
    4. DBCNF
    答案 B

    主码是单属性,2NF 天然满足。A→B→C 是传递依赖,3NF 过不了。

    27
    第 12 章 · 第四节

    无损连接与保持函数依赖

    分解结果不唯一,可有的分法会把信息弄乱。

    第 27 页课件

    试一试同一张表两种切法

    怎么切

    关键术语记住这个名字

    无损连接lossless join
    分解后自然连接回来,与分解前信息量相同

    重 点

    切错地方,四行连回来变六行,多出来的两行是凭空编的。

    上机做

    上机三第 7 题 亲手切错一次

    保山学院·人工智能教研室·曹鼎鼎