代码改变世界

数据库的范式

2016-08-29 21:54  shuaihanhungry  阅读(196)  评论(0编辑  收藏  举报

数据库范式分为1NF,2NF,3NF,BCNF,4NF,5NF。一般在我们设计关系型数据库的时候,最多考虑到BCNF就够。符合高一级范式的设计,必定符合低一级范式,例如符合2NF的关系模式,必定符合1NF。

1)符合1NF的关系中的每个属性都不可再分。
2)2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。
3)3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。
4)BCNF在3NF的基础之上,消除主属性对于码的部分与传递函数依赖。

数据范式并不是越高越好。例如在海量数据的场景,为了避免数据库多表关联操作,往往会使用数据冗余等违反数据库范式的手段,实践表明,这些手段带来的收益远高于成本。

参考:https://www.zhihu.com/question/24696366。