数据库学习笔记_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会解释)