什么是范式
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。
第一范式
原子性
保证每一列都是不可以再划分的
比如:有一列叫学生信息,包含了学号班级等等,这就不满足原子性,应该拆分为学号,姓名等等
第二范式
前提:满足第一范式(1NF)
综述:每一张表只描述一件事情,即除主键之外的列的信息都必须与主键绑定
比如:一个表里有订单号和商品号作为联合主键,表中描述了订单和商品的信息,但是订单号,只跟订单金额和时间相关联,表中就不应该出现商品相关的,这时候就需要将他们拆成订单表和商品表,而两者之间的关系应该由一张中间表进行关联,保存有关系的订单表信息的主键和商品表信息的主键
第三范式
前提:满足第一范式(1NF)和第二范式(2NF)
综述:每一行数据都和主键直接相关,而不能间接相关
比如:一个订单表有客户信息,这时候只能有客户的主键去作为关联就好,其他关联查出来就可以了
合理运用范式
- 三范式只是规范化数据库设计,具体还需要根据实际需求而定
- 性能和规范之间有取胜,因为表的数量多,关联查询多的时候性能不佳,导致用户体验不佳
- 当字段冗余不多的时候可以适当冗余,使得多表变单表
- 当故意增加一些计算列,减少查询维护结果数据的压力