函数依赖定义
函数依赖描述什么约束?
- 定义: 关系 R 上的函数依赖指, 若 R 的两个元组在属性组 上取值相同, 则两者必定在属性组 上取值相同;
- 记法: ;
- 读法: 函数决定 , 或 函数依赖于 ;
- 类比: 是输入, 是输出, 相同输入必得相同输出;
一个函数依赖的例子长什么样?
| title | year | length | studioName | studioAddr |
|---|---|---|---|---|
| Star Wars | 1977 | 124 | Fox | Hollywood |
| The Godfather | 1972 | 175 | Paramount | Hollywood |
| Star Wars | 1977 | 124 | Fox | Hollywood |
title, year -> length, studioName: 主键决定其余属性;studioName -> studioAddr: 同一制片公司只对应一个地址;- 检查方式: 只要存在两条
studioName相同而studioAddr不同的元组, 后一个依赖就不成立;
函数依赖在什么范围内成立?
- 约束对象: 关系模式, 而不是某一个具体实例;
- 要求: 对该关系的所有合法实例都成立;
- 判别: 只要找到一对在 上相同、在 上不同的元组, 依赖就不成立;
什么是非平凡函数依赖?
- 平凡依赖: 中每个属性都属于 , 此时依赖天然成立, 不携带信息;
- 非平凡依赖: 中至少有一个属性不属于 ;
- 用途: 范式判定只讨论非平凡依赖, 见 第三范式;
(source: 020-关系数据库设计理论.md §函数依赖)