数据库的第一范式(1NF)——要有主键
- 属性取值的原子性(不可再分)
- 属性取值数量应该是单一的
- 需要有主键
- 实体中的属性不能有重复组的问题
数据库的第二范式(2NF)——依赖于整个主键
1、必须满足第一范式
2、必须依赖于全部主键
eg:公司订单实体(考虑不同客户的优惠不同):订单号、订单日期、客户号、商品名、商品售价、客户姓名、客户地址,该实体中订单号和客户号应该作为该实体中的主键,显然客户姓名、客户地址并不依赖于订单号,应该把它拆分为两个实体:
- 订单实体(订单号、订单日期、客户号、商品名、商品售价)
- 客户实体(客户号、客户姓名、客户地址)
数据库的第三范式(3NF)——只能依赖于主键
1、必须满足第二范式
2、不能存在传递依赖关系
eg:公司订单实体(订单号、订单日期、客户号、客户姓名、客户地址),在该实体中订单号作为主键,客户地址和客户姓名依赖于客户号,客户号依赖于订单号,此处存在传递依赖关系,应该拆分为以下两个实体:
- 订单实体(订单号、订单日期、客户号)
- 客户实体(客户号、客户姓名、客户地址)