数据库范式

简要说明

  • 第一范式 : 属性不可再分
  • 第二范式: 消除非主属性对主属性的部分依赖
  • 第三范式: 消除非主属性对主属性的传递依赖
  • BCNF范式:消除主属性(候选键)之间的部分或传递依赖
    - 第四范式: 限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖
    这个我说明一下 可以这样理解一下,如果非主属性之间互相独立,但是有多个值,这样一定会有冗余数据的出现,例如:
    数据库范式
    这种就是有很多冗余的值存在,假如我们这样改造一下:数据库范式

数据库范式
也就是说只要有两个及以上1:n关系出现在同一张表中,就一定会有数据的冗余,不满足第四范式。

- 第五范式:如果关系模式R中的每一个连接依赖, 都是由R的候选键所蕴含。
如果它在4NF 中并且不包含任何连接依赖关系并且连接应该是无损的,则关系在5NF 中。(消除连接依赖)

这个定义真是太抽象难懂了,而且到现在为止也没有找到可以参考的资料让人完全理解,粘一张图吧。
数据库范式
第五范式是在第四范式的基础上做的进一步规范化。第四范式处理的是相互独立的多值情况,而第五范式则处理相互依赖的多值情况。 (终于找到一句可以让人理解的话了)
上图中,ABC三列相互依赖,也是像第四范式那样出现各种冗余数据,不同于第四范式之间的独立属性,互不依赖。