数据库学习笔记_9_BNCF与3NF范式以及分化方法

上次笔记讲到了函数依赖 functional dependency, 那么现在讲的这个boyce-codd normal form and the third normal form is based on the concept of FD。

  BCNF的条件:

  对于一个关系中存在的任何一个函数依赖,其必须满足以下两个条件中的一个:

  1.这个函数依赖是自导的(不重要的 trivial)

  2.对于依赖LA(a)->LA(b),LA(a)为该关系的一个超键。

  而3nf的条件则是在bcnf上多加了一个合法条件,准确的说,就是更加的宽松,其为:

  3.依赖LA(a)->LA(b),LA(b)是一个候选键(最小超键)的子集。

  而不用BCNF而使用3NF的原因是因为虽然BCNF提高了安全性,但是它对于函数依赖的条件过于苛刻,以至于表被拆分的太散,大大增加了检查约束所需要的时间。(called dependency preservation)

  对于BCNF,分化方法即为将其不合法的LA(a)并LA(b)分为一张表,然后将R+(LA(a)-LA(b))作为另外一张表。(事实上这个并不完全正确,具体的在数据库学习笔记13会解释)

posted @ 2017-05-08 11:42  duskcloudxu  阅读(608)  评论(0编辑  收藏  举报