设计数据库的三大范式
本人做了一些简单的总结:
1、第一范式(不可再分)
任意一个列【字段】都不可再分
举例:
假设有一个字段叫【联系电话】,真实业务场景【联系电话】有2大类:【办公联系电话】、【私人联系电话】。
所以,若要满足第一范式,【联系电话】这个字段应该改为【办公联系电话】+【私人联系电话】。
2、第二范式(完全依赖于主键)
非主键列要 完全 依赖于主键列
举例:
假设有一个联合主键为:{【订单号】+【客户号】}
其他的非主键列为:【订单金额】、【客户地址】、【折扣力度】
我们假设【折扣力度】是根据:客户下了何种订单以及客户的身份决定的,那么【折扣力度】完全依赖于【联合主键】
我们假设【客户地址】只与【订单号】有关,那么【客户地址】就不完全依赖于【联合主键】,它只 部分 依赖于主键,此时便不满足第二范式
3、第三范式(直接依赖于主键)
非主键列要 直接 依赖于主键列
举例:
主键为A,非主键B,非主键C
C先依赖于B建立了关系,B依赖于A建立了关系
由此,C 间接 依赖于A建立了关系
A与C的依赖关系是通过B间接形成的,所以就不符合第三范式
PS:满足第二范式,必须先满足第一范式;满足第三范式,必须先满足第二范式