数据库三范式
1、前言
数据库关系模式可分为第一范式(1NF),第二范式(2NF),第三范式(3NF)和Boyce-Codd范式(BCNF)。这几个规范要求越来越严格,他们之间的关系为 1NF ⊂ 2NF ⊂ 3NF ⊂ BCNF,即,如果满足第二范式一定满足第一范式,满足第三范式一定满足第二范式,以此类推。
如果一关系模式r(R)的每个属性对应的域值是不可分的,则称r(R)属于第一范式,记为r(R)⊂1NF。
name | sex | address | ||
province | city | street |
name | sex | province | city | street |
4.1 定义
首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。
4.2 案例
如图,主键为 OrderId,其余所有属性都完全依赖于这个主键,但是ProductName(产品名字)、Producter(生产商)属性直接依赖于ProductId,ProductId依赖于主键,这就是 通过传递才依赖主键的,不符合3NF。拆分后,满足。
- 2NF:是否存在部分依赖主键
-
3NF:是否存在主键依赖传递