- 给定一个 X ,从 X 出发一定能找到 Y ,就是 Y 依赖于 X ,记作 X → Y
(无重复值) (X) |
(允许重复值) (Y) |
学号 — |
—> 姓名 |
1001 |
张三 |
1002 |
李四 |
1003 |
王五 |
1004 |
张三 |
- 以上关系表中,姓名依赖于学号 (学号 → 姓名),但是学号不依赖于姓名
- 根据表的相应联系,可以有以下的函数依赖关系:
1. 如果 X 与 Y 是 1 : 1 的联系,则存在函数依赖X ←→ Y
学号 <— |
—> 身份证号 |
1001 |
362020010603142513 |
1023 |
362020110603092313 |
2. 如果 X 与 Y 是 n : 1 的联系,则存在函数依赖X → Y
学号 — |
—> 年龄 |
1003 |
23 |
1024 |
22 |
3. 如果 X 与 Y 是 n : m 的联系,则不存在函数依赖
- 如果 Y 是 X 的子集,则称为 X → Y 是平凡的函数依赖
- 如果 Y 不是 X 的子集,则称为 X → Y 是非平凡的函数依赖
平凡函数依赖
- 若X->Y,且Y是X的子集(对任一关系模式,平凡函数依赖必然成立),就是平凡函数依赖
非平凡函数依赖
- 若X->Y,但Y不是X的子集,就是非平凡函数依赖
完全函数依赖
(X) |
(Y) |
学号 |
课程 |
分数 |
1001 |
高等数学 |
94 |
1002 |
大学英语 |
98 |
1003 |
数据库 |
96 |
1004 |
C语言 |
90 |
- 以上关系表中,存在 X → Y ,[学号] 和 [课程] 都是是 X 的真子集,
不存在
[学号] → [分数]
[课程] → [分数]
部分函数依赖
(X) |
(Y) |
学号 |
课程 |
系名 |
1001 |
高等数学 |
计算机与科学 |
1002 |
大学英语 |
软件工程 |
1003 |
数据库 |
大数据 |
1004 |
C语言 |
软件工程 |
(X) |
(Y) |
(Z) |
学号 |
系名 |
系主任 |
1001 |
计算机与科学 |
刘一 |
1002 |
软件工程 |
赵三 |
1003 |
大数据 |
赵三 |
1004 |
软件工程 |
刘五 |
- 上表中存在X → Y → Z,
存在
[学号] → [系名]
[学号] → [系主任]