版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38287952/article/details/86837013
数据表的设计:
通俗地理解三个范式,对于数据库设计大有好处,在数据库设计中,为了更好的应用三个范式,就必须通俗的理解三个范式(通俗的理解是够用的理解,并不是科学准确的理解)。
第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可分解(只要是关系型数据库都要满足1NF)。
第二范式:2NF是对于记录的唯一约束,要求记录有唯一标识,既实体的唯一。
第三范式:3NF是对字段冗余的约束,既字段不能由其他字段派生出来,它要求字段没有冗余。
1、第一范式(数据的原子性)
1NF是对属性的原子性约束,要求属性具有原子性,不可分解(只要是关系型数据库都要满足1NF)。
比如数据库里的地址,需要经常用到地址的部分属性,那么就需要把 地址 这个地段重新拆分存储,这样对地址中操作其中的某一方部分就会非常方便,这样的设计才满足了数据库的第一范式。如下:
第二范式:每一列都和主键有关系
2NF是对于记录的唯一约束,要求记录有唯一标识,既实体的唯一。
例如:
改进:
第三范式:和主键直接相关,而不是间接相关
3NF是对字段冗余的约束,既字段不能由其他字段派生出来,它要求字段没有冗余。
例如:
改进:
但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行的效率,就必须降低范式的标准, 适当保留冗余的数据,具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到 物理数据模型设计时考虑,降低范式就是增加字段,允许冗余