范式是具有最小冗余的表结构。3 范式具体如下:
第一范式(1st NF -列都是不可再分)
第一范式的目标是确保每列的原子性:如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)
| BuyerID | Address | 
|---|---|
| 1 | 中国北京市 | 
| 2 | 美国纽约市 | 
| 3 | 英国利物浦 | 
| 4 | 日本东京市 | 
Address分解为
| Country | City | 
|---|---|
| 中国 | 北京 | 
| 美国 | 纽约 | 
| 英国 | 利物浦 | 
| 日本 | 东京 | 
第二范式(2nd NF-每个表只描述一件事情)
首先满足第一范式,并且表中非主键列不存在对主键的部分依赖。 第二范式要求每个表只描述一件事情。
 Orders(订单表)
| 字段 | 例子 | 
|---|---|
| 订单编号 | 001 | 
| 产品编号 | A001 | 
| 订购日期 | 2000-02-03 | 
| 价格 | $29.00 | 
分解为两张表
 orders(订单表)
| 字段 | 例子 | 
|---|---|
| 订单编号 | 001 | 
| 订购日期 | 2000-02-03 | 
Products(产品表)
| 字段 | 例子 | 
|---|---|
| 产品价格 | A001 | 
| 价格 | $29.00 | 
第三范式(3rd NF- 不存在对非主键列的传递依赖)
第三范式定义是,满足第二范式,并且表中的列不存在对非主键列的传递依赖。除了主键订单编号外,顾客姓名依赖于非主键顾客编号。
 Orders(订单表)
| 字段 | 例子 | 
|---|---|
| 订单编号 | 001 | 
| 订购日期 | 2000-02-03 | 
| 顾客编号 | AB001 | 
| 顾客姓名 | Tony | 
转换为
| 字段 | 例子 | 
|---|---|
| 订单编号 | 001 | 
| 订购日期 | 2000-02-03 | 
| 顾客编号 | AB001 | 










