关系数据库设计
- 函数依赖
- 定义
- 已知元组 、关系模式 和关系 ,。
- 若对任意 , 时 ,则 函数决定 , 函数依赖于 ,记作 。
- 分类
- 平凡和非平凡
- 已知 ,如果 ,则其为非平凡函数依赖,否则为平凡函数依赖。
- 平凡函数依赖中 是 分量中的一部分,函数由整体得到部分。
- 平凡函数依赖一定成立。
- 完全和部分
- 已知 ,如果任意 都没有 ,则其为完全函数依赖,否则为部分函数依赖。
- 完全函数依赖 的每一部分都是必要的,部分函数依赖只要一部分 就可以决定 。
- 传递和直接
- 已知 ,,则 。
- 如果 ,则 为传递函数依赖,否则为直接函数依赖。
- 直接函数依赖中 一一对应, 之间的依赖关系可以与 无关。
- 平凡和非平凡
- 定义
- 多值依赖
- 定义
- 已知元组 、关系模式 和关系 ,。
- 若对任意 满足 ,都存在 满足 ,则有多值依赖 。
- 等价定义:对任意 ,都存在一组 与其对应,与 无关, 对应相同的一组 。
- 分类
- 若 ,则 是平凡多值依赖,否则是非平凡多值依赖。
- 性质
- 对称性:若 , 则 。
- 传递性:若 ,则 。
- 定义
- 范式
- 1NF
- 若关系模式 的每一个属性对应的值域都不可再分,则 满足 1NF,记作 。
- 1NF 是最低级别的,所有关系都是 1NF。
- 2NF
- 已知 ,若 中所有非主属性都完全依赖于每个候选键,则 。
- 如果候选键有多个属性,则其部分可能重复,非主属性如果依赖部分,则会产生重复。
- 如果 ,则可以把 以及其候选键拆分,直到子关系满足 2NF。
- 3NF
- 已知 ,若 中所有非主属性都直接依赖于每个候选键,则 。
- 如果 则 ,。
- BCNF
- 已知 ,若 中所有属性都直接依赖于每个候选键,则 。
- 等价定义: 的所有函数依赖 都满足 包含一个候选键,则 。
- 。
- 3NF 仅解决非主属性的传递函数依赖问题,BCNF 解决了所有传递函数依赖问题,是函数依赖范围内的最高范式。
- 4NF
- 已知 ,若 中任意多值依赖 满足 包含键,则 。
- 。
- 4NF 解决了非平凡非函数依赖的多值依赖,4NF 所允许的非平凡多值依赖实际上是函数依赖。
- 1NF