部分函数依赖

如何理解关系型数据库的常见设计范式?

你说的曾经没有我的故事 提交于 2020-01-07 03:20:47
作者:知乎用户 链接:https://www.zhihu.com/question/24696366/answer/29189700 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 ============ 2015-1-6 更新,补充了 BCNF 的解释 ============ 国内绝大多数院校用的王珊的《数据库系统概论》这本教材,某些方面并没有给出很详细很明确的解释,与实际应用联系不那么紧密,你有这样的疑问也是挺正常的。 我教《数据库原理》这门课有几年了,有很多学生提出了和你一样的问题,试着给你解释一下吧。 (基本来自于我上课的内容,某些地方为了不过于啰嗦,放弃了一定的严谨,主要是在“关系”和“表”上) 首先要明白”范式(NF)”是什么意思。按照教材中的定义,范式是“ 符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度 ”。 很晦涩吧?实际上你可以把它粗略地理解为 一张数据表的表结构所符合的某种设计标准的级别 。就像家里装修买建材,最环保的是E0级,其次是E1级,还有E2级等等。 数据库范式也分为1NF,2NF,3NF,BCNF,4NF,5NF。 一般在我们设计关系型数据库的时候,最多考虑到BCNF就够 。符合高一级范式的设计,必定符合低一级范式,例如符合2NF的关系模式,必定符合1NF。