数据库转化为3NF以及BCNF

Posted lvgj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库转化为3NF以及BCNF相关的知识,希望对你有一定的参考价值。

数据库转化为3NF以及BCNF

转换为3NF保持函数依赖

技术图片

例题:关系模型R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D}

  1. 首先最小化处理得到(F=A ightarrow B,A ightarrow C,AD ightarrow E,E ightarrow D)
  2. 合并(R_1={ABC},R_2={ADE},R_3={ED})

转换为3NF保持函数依赖和无损性

技术图片

例题:关系模型R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D}

  1. 首先根据上面得到的(R_1,R_2,R_3)

  2. 计算出R的候选码为AD,AE,生成两个新的关系(R_4{AD},R_5{AE})
  3. 下一步就是看包括关系,明显(R_3,R_4,R_5)包括在(R_2)里面所以得到(R_1,R_2)

转换为BCNF

技术图片

例题:关系模式R<U,F>,其中:U={A,B,C,D,E},F={A→C,C→D,B→C,DE→C,CE→A},将其分解成BCNF并保持无损连接。

A:LR

B:L

C:LR

D:LR

E:L

计算BE的闭包得到ABCDE所以候选码为BE

  1. 对于A→C不符合BCNF所以分离出来,(R_1) ={AC},(R_2)={ABDE}(去除C),这时(F_2) = {B→D,DE→D,BE→A},删除DE→D,得到(F_2) = {B→D,BE→A}
  2. 对于(R_2)其中B→D中的B是决定因素但是不是码(码是BE),所以分离
  3. 得到(R_3= {ABE},R_2 = {BD},R_1 = {AC})

以上是关于数据库转化为3NF以及BCNF的主要内容,如果未能解决你的问题,请参考以下文章

BCNF与3NF之间有啥区别

关系模式范式分解教程 3NF与BCNF口诀

求证BCNF是3NF

数据库范式(1NF 2NF 3NF BCNF)

数据库求闭包,求最小函数依赖集,求候选码,判断模式分解是否为无损连接,3NF,BCNF

数据库范式小结 1NF 2NF BCNF 3NF 4NF DB normal form