数据库原理与应用 第 12 章 · 上机二
课程第 12 章上机二 怎么验系定主任反过来呢学号定课吗完全依赖部分依赖只能证伪连起来 版式
第 12 章 关系模式的规范化理论 · 上机二

函数依赖成不成立,验给它看

一句 GROUP BY 加 HAVING 就能给一条函数依赖挑反例,挑不出来才叫站得住。
已完成 0 / 7
本 次 上 机 题 目
  1. 01一句 SQL 检验一条函数依赖
  2. 02Dept → MN 成不成立
  3. 03MN → Dept 成不成立
  4. 04SNo → CNo 成不成立
  5. 05成绩要几个属性才定得下来
  6. 06姓名只要学号就够了
  7. 07改一个字,成立的依赖就垮了
  8. 把 SCD 的 F 整个验一遍
01
第 12 章 · 上机二

一句 SQL 检验一条函数依赖

X→Y 成立,就是说同一个 X 底下不会出现两个不同的 Y。

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

重 点

Empty set 就是一个反例都挑不出来,SNo→SN 在这批数据里站得住。

记牢它记住这个句式

  1. GROUP BY 左边
  2. COUNT DISTINCT 右边
  3. HAVING 大于 1
02
第 12 章 · 上机二

Dept → MN 成不成立

把左右两边换成系别和系主任,句式一个字不用改。

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

重 点

还是 Empty set,一个系只有一名系主任,这条依赖成立。

想一想

这条依赖在第 17 页起了什么作用?

03
第 12 章 · 上机二

MN → Dept 成不成立

把左右两边对调,看看还是不是 Empty set。

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

重 点

刘伟管两个系,反例当场挑出来了,MN→Dept 不成立。

知道更多

传递依赖的定义要求 Y 定不回 X,这一步验的正是那个条件。

04
第 12 章 · 上机二

SNo → CNo 成不成立

一个学生选好几门课,猜猜这条能不能站住。

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

重 点

三个人都超过一门,学号和课程号之间是多对多,没有函数依赖。

上机做

上机二第 5 题 接着验成绩那条

05
第 12 章 · 上机二

成绩要几个属性才定得下来

左边先只放学号,再只放课程号,最后两个一起放。

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

重 点

前两句都挑得出反例,第三句 Empty set,所以是完全函数依赖。

想一想

左边少一个就不成立,这叫什么依赖?

06
第 12 章 · 上机二

姓名只要学号就够了

主码是两个属性,可姓名只用得着其中一个。

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

重 点

两句都是 Empty set,左边扔掉 CNo 照样成立,这就是部分依赖。

记牢它两句话分清楚

  1. 左边少一个还成立就是部分
  2. 少一个就不成立才是完全
07
第 12 章 · 上机二

改一个字,成立的依赖就垮了

把 S2 其中一行的姓名改掉,再验一次刚才那条。

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

重 点

反例一出,SNo→SN 立刻不成立,可现实中一个学号还是只有一个姓名。

知道更多

函数依赖是语义定的,数据只能推翻它,永远证明不了它。

想一想

那教材里的 F 是怎么定出来的?

第 12 章 · 上机二

把 SCD 的 F 整个验一遍

教材第 13 页那个 F,一条一条过。

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

重 点

第一句每行都是 1,第二句每行也是 1,第三句 Empty set,F 全过。

知道更多更正

课件第 13 页的 F 漏了 Dept→MN,第 17 页讲传递依赖要用它。

想一想

F 里为什么没有 CNo → Score?

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