第 12 章 · 第一节 · 课件第 1、2 页
第 12 章 关系模式的规范化理论
上一章看到台账要拆,这一章讲拆到什么程度算好,以及怎样拆。

知道更多本章内容
本章三部分:规范化的内容和常见异常、函数依赖、范式。
上一章看到台账要拆,这一章讲拆到什么程度算好,以及怎样拆。

本章三部分:规范化的内容和常见异常、函数依赖、范式。
以函数依赖为工具,衡量关系模式规范到了哪一级,不够就分解。

规范化的输入是不规范的关系,输出是一组规范的关系,衡量的标准是范式。
规范化理论由关系数据库的创始人 E. F. Codd 于 1970 年提出。
学生、选课、系三件事,放在了一张表中。
| SNo | SN | Age | Dept | MN | CNo | Score |
|---|---|---|---|---|---|---|
| S1 | 赵亦 | 17 | 计算机 | 刘伟 | C1 | 90 |
| S1 | 赵亦 | 17 | 计算机 | 刘伟 | C2 | 85 |
| S2 | 钱尔 | 18 | 信息 | 王平 | C4 | 70 |
| S2 | 钱尔 | 18 | 信息 | 王平 | C5 | 57 |
| S2 | 钱尔 | 18 | 信息 | 王平 | C6 | 80 |
| S2 | 钱尔 | 18 | 信息 | 王平 | C7 | NULL |
| S3 | 孙珊 | 20 | 信息 | 王平 | C1 | 75 |
| S3 | 孙珊 | 20 | 信息 | 王平 | C2 | 70 |
| S3 | 孙珊 | 20 | 信息 | 王平 | C4 | 85 |
| S4 | 李思 | 21 | 自动化 | 刘伟 | C1 | 93 |
主码是 (SNo, CNo),两个属性合起来才能确定一行。本章的例子都用这张表。
数据冗余,以及由它引起的插入异常、删除异常和更新异常。
| 问题 | 在 SCD 中的表现 | 后果 |
|---|---|---|
| 数据冗余 | 信息系和系主任王平存了 7 次,钱尔的姓名、年龄、系别存了 4 次 | 浪费存储空间,并引出后面三个问题 |
| 插入异常 | 新成立的系还没有学生,学号和课程号都是空值,而主码不能为空 | 这个系和它的系主任记不进去 |
| 删除异常 | 自动化系只有李思一名学生,删除他的记录 | 自动化系的信息跟着消失 |
| 更新异常 | 信息系换系主任要改 7 行,学生改名要改他的每一条选课记录 | 漏改一行,数据就前后矛盾 |
| SNo | SN | Dept | MN | CNo | Score |
|---|
姓名跟着每一条选课记录存了一份,选了几门课就要改几处,漏改就前后矛盾。
SCD 把三件事放在一张表中,分解为 S、SC、D 三个关系。

一个关系模式只描述一件事,四个问题就一起消失了。
该在哪里把表分开?用什么来判断?