三大范式的实际作用

第一范式(1NF):每一列都是不可分割的原子数据项

**好处:**减少了数据冗余

存在可再分项,一条订单存储了多个商品

|----|------|----|-----|------|------|----|-----|
| 班级 | 日期 | 学号 | 姓名 | 图书编码 | 图书名 | 单价 | 数量 |
| C1 | 1-22 | 1 | 程少商 | 1001 | 星汉灿烂 | 45 | 500 |
| C1 | 1-22 | 1 | 程少商 | 1002 | 月升沧海 | 32 | 200 |
| C2 | 4-30 | 2 | 田枣 | 1003 | 胡同 | 38 | 178 |
| C2 | 4-30 | 2 | 田枣 | 1004 | 摔跤记 | 26 | 54 |
| C3 | 8-2 | 3 | 柳依依 | 1005 | 萌妻食神 | 60 | 802 |
| C3 | 8-2 | 3 | 柳依依 | 1004 | 柔弱少女 | 32 | 100 |

|------|------|----|-----|
| 图书编码 | 图书名 | 单价 | 数量 |
| 1001 | 星汉灿烂 | 45 | 500 |
| 1002 | 月升沧海 | 32 | 200 |
| 1003 | 胡同 | 38 | 178 |
| 1004 | 摔跤记 | 26 | 54 |
| 1005 | 萌妻食神 | 60 | 802 |
| 1004 | 柔弱少女 | 32 | 100 |

应拆分成

|----|------|----|-----|
| 班级 | 日期 | 学号 | 姓名 |
| C1 | 1-22 | 1 | 程少商 |
| C2 | 4-30 | 2 | 田枣 |
| C3 | 8-2 | 3 | 柳依依 |

第二范式(2NF):表中只能存储一种数据,确保的每一列所有字段都必须和主键有关

**好处:**利于维护、修改和展示

出现冗余

|------|------|----|-----|
| 图书编码 | 图书名 | 单价 | 数量 |
| 1001 | 星汉灿烂 | 45 | 500 |
| 1002 | 月升沧海 | 32 | 200 |
| 1003 | 胡同 | 38 | 178 |
| 1004 | 摔跤记 | 26 | 54 |
| 1005 | 萌妻食神 | 60 | 802 |
| 1004 | 柔弱少女 | 32 | 100 |

应拆分成

|----|------|-----|
| 班级 | 图书编码 | 数量 |
| C1 | 1001 | 500 |
| C2 | 1002 | 200 |
| C2 | 1002 | 200 |
| C3 | 1003 | 178 |

|------|------|----|
| 图书编码 | 图书名 | 单价 |
| 1001 | 星汉灿烂 | 45 |
| 1002 | 月升沧海 | 32 |
| 1003 | 胡同 | 38 |
| 1004 | 摔跤记 | 26 |
| 1005 | 萌妻食神 | 60 |
| 1004 | 柔弱少女 | 32 |

第三范式(3NF):确保表中的每列都和主键直接相关,而不是间接相关

**好处:**修改了一个字段不会影响其他字段

没有主键直接相关

|----|------|----|-----|
| 班级 | 日期 | 学号 | 姓名 |
| C1 | 1-22 | 1 | 程少商 |
| C2 | 4-20 | 2 | 田枣 |
| C3 | 8-2 | 3 | 柳依依 |

应拆分成

|----|------|----|
| 班级 | 日期 | 学号 |
| C1 | 1-22 | 1 |
| C2 | 4-30 | 2 |
| C3 | 8-2 | 3 |

|----|-----|
| 学号 | 姓名 |
| 1 | 程少商 |
| 2 | 田枣 |
| 3 | 柳依依 |