# 第一范式

  • 列符合原子性,表中每个属性不可再分
  • 不存在多值属性
  • 能找到候选码
姓名年龄地址
ZMC1919江西省赣州市

地址属性不符合原子性,应该拆分为:省 +++...+ ...

# 第二范式

非主属性必须依赖于整个主键或候选键,不能只依赖于主键或候选键的一部分属性

员工 ID姓名部门 ID部门名称在部门工作的年数
10011001ZMC110110牛马部11
  • 在部门工作的年数需要通过员工 ID部门 ID 共同确定
  • 姓名仅通过员工 ID 确定
  • 部门名称仅通过部门 ID 确定
    属性不完全依赖整个主键确定,应拆分为员工表和部门表两张表

# 第三范式

任何非主属性不能依赖于其他非主属性

  • 对于任意 aba \to b
    • 要么 aa 是超码
    • 要么 bb 是主属性
    • 二者满足其一即可
员工 ID姓名年龄职位 ID职务
10011001ZMC19191111牛马

职务不仅可以由职位 ID 决定,还可以通过员工 ID 决定
属性依赖于其他非主属性确定,应拆分为员工表和职务表

# BC 范式(BCNF)

在关系 RR 中,UU 为主键,AA 属性是主键的一个属性,若存在 AYA \to YYY 为主属性,则该关系不满足 BCNFBCNF
在野者不能干政

  • 对于任意 aba \to b
    • aa 必须是超码
学号课程号教师教师办公室
0235089001(数据结构)2201荟庐 001

# 函数依赖为:

  • 学号课程号 \to 教师
  • 教师 \to 教师办公室

# 反范式

为了提高查询性能,有时容忍一些数据冗余