第一范式(无重复的列)
理解:要求记录的属性是原子性,不可分,就是属性不能分,这是关系型数据库的基本要求,不满足这个就不能叫关系型数据库了
- 通俗点讲(一个字段只存储一项信息)
EG: 班级:高三年级14班,应改为2个字段,一个年级、一个班级,才满足第一范式
满足1NF后为
第二范式(属性完全依赖于主键)
理解:不能有部分依赖,部分依赖的前提条件是有组合主键,就是每条记录是需要一个主键的,这个主键可以是一个单独的属性,但也可以是组合主键,就是由记录的多个属性来唯一确定一条记录,那么只要出现了组合主键就可以产生部分依赖,部分依赖是组合主键出现的前提下,剩余的属性,不完全依赖于组合主键,也是部分依赖组合主键,比如该表的N条记录中由组合主键中的一条或者几条就可以确定剩余属性的属性,那么就可以说产生部分依赖,而在实际开发中,一般不采用组合主键,而是自己增加一个字段id自增长,作为主键,这样的单属性主键是不会产生部分依赖的!
EG:
满足2NF后为
或者改为两张表
第三范式(属性不能传递依赖于主属性)
理解:满足第二范式前提,如果某一属性依赖于其他非主键属性,而其他非主键属性又依赖于主键,那么这个属性就是间接依赖于主键,这被称作传递依赖于主属性。大白话说就是一张表最多只存2层同类型信息
EG:
满足3NF后
参考:https://blog.csdn.net/weixin_37766087/article/details/103405623