接下来讲函数依赖
要下刀子,先得说清属性之间谁定谁。

重 点
函数依赖是这一章唯一的工具,范式全靠它来定义。
知道更多
这一节符号最多,可要记的其实只有三种依赖和一个箭头。
想一想
属性和属性之间,能有什么关系?
要下刀子,先得说清属性之间谁定谁。

函数依赖是这一章唯一的工具,范式全靠它来定义。
这一节符号最多,可要记的其实只有三种依赖和一个箭头。
属性和属性之间,能有什么关系?
给一个 x 算出唯一的 y,给一个学号查到唯一的姓名。

给一个学号只查得出一个姓名,这就是一个函数。
SNo 的值一定,SN、Age、Dept 三个值跟着就定了。
反过来,给一个姓名能定出学号吗?
X 的每个值都只对着一个 Y 值,就记作 X→Y。

| 想问的 | 成不成立 |
|---|
X 叫决定因素,Y 叫依赖因素,两边都定得下就记作双箭头。
课件这一页的 F 少了 Dept→MN,第 17 页讲传递依赖要用它。
属性之间是什么联系,就有什么依赖。

| 联系 | 有哪些依赖 | 例子 |
|---|---|---|
| 1 比 1 | X→Y 且 Y→X | 不重名时学号与姓名 |
| 多 比 1 | 只有 X→Y | 学号与系别 |
| 多 比 多 | 一条都没有 | 学号与课程号 |
函数依赖看的是语义,跟表里此刻装了什么数据无关。
完全、部分、传递,后面两级范式各管一种。

2NF 消部分依赖,3NF 消传递依赖,先把这两个名字对上号。
为什么单属性做左边就没有部分依赖?
左边少一个还成立就是部分,少一个就垮才是完全。

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

定义要求 Dept 定不回 SNo,绕这一道弯才算传递。
课件例子说成 SNO 传递依赖于 MN,按定义应是 MN 对 SNo 传递依赖。
如果 Dept 也能定回 SNo,还算传递吗?
完全还是部分是一条轴,传递还是非传递是另一条。

| 非传递 | 传递 | |
|---|---|---|
| 完全 | 完全非传递 | 完全传递 |
| 部分 | 部分非传递 | 部分传递 |
课件左边那四条把「部分、传递」印了两遍,第三条应是部分非传递。
范式定义只说完全不完全,对传不传递另有一条要求,两条轴分开看。
一个编号管一摊,一摊写一行,这就是 F。

商品编号定商品那一摊,经销商编号定经销商那一摊,两摊靠编号接上。
中间绕了经销商编号这一道弯,所以经销商名称对商品编号是传递依赖。