三大范式
1. 列不可分
列到底可不可分,和具体应用有关,不具有绝对性。在某应用中地址可能是不可分的,但在另外一个应用中可能会分为省份,城市,街道等等。
2. 消除部分依赖
假设
用大白话说,就是
对于单列主键,肯定不存在部分依赖,一定是完全函数依赖。
对于多列主键,消除了部分依赖,则满足第二范式
3. 消除传递依赖
> 每个非码属性都和主键直接相关
数据库设计时满足的范式越高,数据就倾向于分散到不同的表中,这样就导致查询的时候经常会出现多表连接的情况,查询速度会比较慢,数据库设计者要在”更高的范式”和”更快的查询速度”之间进行权衡。
当然,也可以任性地选择更高的范式,后期进行SQL性能调优,比如建索引,改写SQL语句等方式。