数据库原理与应用 第 12 章 · 第三节
课程第 12 章第三节 看依赖像函数定义三种联系分三种完全部分传递四类案例依赖 版式
第 12 章 关系模式的规范化理论 · 第三节

函数依赖

本 节 知 识 点
  1. 11接下来讲函数依赖
  2. 12函数依赖像中学的 y=f(x)
  3. 13函数依赖的定义与记法
  4. 141对1、多对1、多对多
  5. 15函数依赖分三种
  6. 16完全函数依赖与部分函数依赖
  7. 17传递函数依赖
  8. 18两个维度交叉出四类
  9. 19商品库存的函数依赖怎么写
11
第 12 章 · 第三节

接下来讲函数依赖

要下刀子,先得说清属性之间谁定谁。

第 11 页课件

重 点

函数依赖是这一章唯一的工具,范式全靠它来定义。

知道更多

这一节符号最多,可要记的其实只有三种依赖和一个箭头。

想一想

属性和属性之间,能有什么关系?

12
第 12 章 · 第三节

函数依赖像中学的 y=f(x)

给一个 x 算出唯一的 y,给一个学号查到唯一的姓名。

第 12 页课件

打个比方

给一个学号只查得出一个姓名,这就是一个函数。

重 点

SNo 的值一定,SN、Age、Dept 三个值跟着就定了。

想一想

反过来,给一个姓名能定出学号吗?

13
第 12 章 · 第三节

函数依赖的定义与记法

X 的每个值都只对着一个 Y 值,就记作 X→Y。

第 13 页课件

关键术语记住这个名字

函数依赖Functional Dependency
X 定一个值,Y 就跟着定,记作 X→Y,缩写 FD

试一试这条成不成立

点一条,看它在 SCD 里成不成立
想问的成不成立

重 点

X 叫决定因素,Y 叫依赖因素,两边都定得下就记作双箭头。

知道更多更正

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

14
第 12 章 · 第三节

1对1、多对1、多对多

属性之间是什么联系,就有什么依赖。

第 14 页课件

试一试换一种联系看看

X 与 Y 的联系

分清楚

联系有哪些依赖例子
1 比 1X→Y 且 Y→X不重名时学号与姓名
多 比 1只有 X→Y学号与系别
多 比 多一条都没有学号与课程号

重 点

函数依赖看的是语义,跟表里此刻装了什么数据无关。

15
第 12 章 · 第三节

函数依赖分三种

完全、部分、传递,后面两级范式各管一种。

第 15 页课件

记牢它三种的名字

  1. 完全函数依赖
  2. 部分函数依赖
  3. 传递函数依赖

重 点

2NF 消部分依赖,3NF 消传递依赖,先把这两个名字对上号。

想一想

为什么单属性做左边就没有部分依赖?

16
第 12 章 · 第三节

完全函数依赖与部分函数依赖

左边少一个还成立就是部分,少一个就垮才是完全。

第 16 页课件

试一试三条依赖各判一次

看哪条

    重 点

    (SNo,CNo)→Score 是完全的,(SNo,CNo)→SN 是部分的。

    记牢它记号也要记

    1. 完全记 f
    2. 部分记 p

    上机做

    上机二第 6 题 验一次部分依赖

    17
    第 12 章 · 第三节

    传递函数依赖

    SNo 定 Dept,Dept 定 MN,中间绕了一道弯。

    第 17 页课件

    重 点

    定义要求 Dept 定不回 SNo,绕这一道弯才算传递。

    知道更多更正

    课件例子说成 SNO 传递依赖于 MN,按定义应是 MN 对 SNo 传递依赖。

    上机做

    上机二第 3 题 验一次 MN 定不回 Dept

    想一想

    如果 Dept 也能定回 SNo,还算传递吗?

    18
    第 12 章 · 第三节

    两个维度交叉出四类

    完全还是部分是一条轴,传递还是非传递是另一条。

    第 18 页课件

    分清楚

    非传递传递
    完全完全非传递完全传递
    部分部分非传递部分传递

    知道更多更正

    课件左边那四条把「部分、传递」印了两遍,第三条应是部分非传递。

    重 点

    范式定义只说完全不完全,对传不传递另有一条要求,两条轴分开看。

    19
    第 12 章 · 第三节

    商品库存的函数依赖怎么写

    一个编号管一摊,一摊写一行,这就是 F。

    第 19 页课件

    重 点

    商品编号定商品那一摊,经销商编号定经销商那一摊,两摊靠编号接上。

    练一练

    商品编号 → 经销商编号 → 经销商名称,这说明存在什么?
    1. A部分函数依赖
    2. B传递函数依赖
    3. C完全函数依赖
    4. D没有依赖
    答案 B

    中间绕了经销商编号这一道弯,所以经销商名称对商品编号是传递依赖。

    记牢它写 F 的诀窍

    1. 一个编号一摊
    2. 一摊写一行
    3. 编号之间接上
    保山学院·人工智能教研室·曹鼎鼎