数据库原理与应用 第 12 章 · 上机一
课程第 12 章上机一 看清楚数冗余加不进改漏一行再改全删没了找病根先想一想连起来 版式
第 12 章 关系模式的规范化理论 · 上机一

烂表的毛病一条条撞出来

课件第 5 页那张 SCD 表已经装好,冗余数一数,三种异常一条一条撞出来。
已完成 0 / 8
本 次 上 机 题 目
  1. 01先把这张烂表看一遍
  2. 02同一件事抄了多少遍
  3. 03新系还没招学生,想先记下来
  4. 04信息系换主任,只改了一半
  5. 05补上剩下那几行
  6. 06自动化系只有李思一个人
  7. 07一行里到底装了几件事
  8. 08如果拆开,各是几行
  9. 一口气把四个毛病过一遍
01
第 12 章 · 上机一

先把这张烂表看一遍

七个字段十行数据,和课件第 5 页那张一模一样。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开,课件第 5 页那张 SCD 表就已经建好装好,当前库是 norm。
mysql>

重 点

主码是 SNo 加 CNo 两列,DESC 回显里这两行的 Key 都写着 PRI。

想一想

这张表其实在讲几件事?

02
第 12 章 · 上机一

同一件事抄了多少遍

一句 GROUP BY 就把重复的份数数出来了。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开,课件第 5 页那张 SCD 表就已经建好装好,当前库是 norm。
mysql>

重 点

信息系加王平这一对抄了 7 遍,钱尔那一整套抄了 4 遍。

知道更多更正

配套讲义说王平重复了 6 次,数出来是 7 次。

03
第 12 章 · 上机一

新系还没招学生,想先记下来

机器人系已经挂牌了,可它一个学生一门课都还没有。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开,课件第 5 页那张 SCD 表就已经建好装好,当前库是 norm。
mysql>

重 点

报 1364,SNo 是主码的一半,不能为空,这个系就记不进去。

关键术语记住这个名字

插入异常insertion anomaly
现实中存在的信息,表里放不下

想一想

为什么系的信息非要跟着学生才存得下?

04
第 12 章 · 上机一

信息系换主任,只改了一半

手一抖只改了 S2 的记录,S3 那几行还是老主任。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开,课件第 5 页那张 SCD 表就已经建好装好,当前库是 norm。
mysql>

重 点

同一个信息系查出来两个主任,数据自己跟自己打架了。

关键术语记住这个名字

更新异常update anomaly
一处事实存多份,改漏一份就不一致
05
第 12 章 · 上机一

补上剩下那几行

这回不加 SNo 条件,看它一共要动几行。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开,课件第 5 页那张 SCD 表就已经建好装好,当前库是 norm。
mysql>

重 点

Rows matched 是 7,换一次主任要动七行,行数越多越容易漏。

知道更多

最后那句把主任改回王平,后面几题还要用原来的数据。

06
第 12 章 · 上机一

自动化系只有李思一个人

李思毕业了,把他那一行删掉,看系还在不在。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开,课件第 5 页那张 SCD 表就已经建好装好,当前库是 norm。
mysql>

重 点

只剩两个系,自动化系连同它的主任一起从库里消失了。

关键术语记住这个名字

删除异常deletion anomaly
删一件事,把另一件事也删没了

想一想

现实中自动化系还在吗?

07
第 12 章 · 上机一

一行里到底装了几件事

把学生那几列单独去重,看看真正不一样的有几行。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开,课件第 5 页那张 SCD 表就已经建好装好,当前库是 norm。
mysql>

重 点

学生只有 3 种、系只有 2 种,却跟着选课记录存了 9 行。

记牢它三件事挤一行

  1. 学生是一件事
  2. 选课是一件事
  3. 系是一件事
08
第 12 章 · 上机一

如果拆开,各是几行

拆成三张表之后,行数一共会变多还是变少。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开,课件第 5 页那张 SCD 表就已经建好装好,当前库是 norm。
mysql>

重 点

三张表加起来十来行,可每张的列数都比原来少了一多半。

上机做

上机三第 1 题 下一份上机真去拆

想一想

拆开之后,想看完整信息该怎么办?

第 12 章 · 上机一

一口气把四个毛病过一遍

先把刚才删掉那行补回来,再四条查询各照出一个毛病。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开,课件第 5 页那张 SCD 表就已经建好装好,当前库是 norm。
mysql>

重 点

四条查询分别对上冗余、插入异常、更新异常的隐患和病根。

知道更多

头两句先把上机六删掉的那一行补回来,数据回到原样的十行。

想一想

四个毛病里,哪一个后果最严重?

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