一个关系模式 R 属于 第三范式(3NF),当且仅当对于每一个 非平凡函数依赖 X → A,满足以下两个条件之一:
传递函数依赖
如果存在如下依赖链:
A → B,B → C,但 A ↛ C,
那么 C 对 A 是传递依赖。
示例
Employee(emp_id, name, dept_id, dept_name)
其中:
- emp_id → name, dept_id
- dept_id → dept_name
所以 emp_id → dept_name 是一个传递依赖,违反 3NF。
解决方法是将其拆分为:
- Employee(emp_id, name, dept_id)
- Department(dept_id, dept_name)
现在两个表都符合 3NF。