数据库关系分解为BCNF范式

Posted

tags:

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

R = A ,B, C, D

I. C → D, C → A, B → C

II. ABC → D, D → A

如果R不是一个BCFN, 将它分解为BCFN范式。

作业,实在没弄明白。请教高人, 过程详细点哦
多谢~

标准答案是:AC,BC,CD。

分析如下:R(A,B,C,D)函数依赖于AB^100c,C^D和D^A,找到违反BCNF的依赖项(不需要找到右侧多个属性的度数)并将其分解为BCNF关系的聚合。

关系:C→A,版本C→D,D→A,AB→D,AB→C,AC→D,BC→D,BC→A,BC→D,BD→A,BD→C,CD→A,ABC→D,ABD→C,权值BCD→A。

违反BCNF:C到A,C到D,D到A,AC到D,CD到A。

扩展资料:

BCNF范式在3NF的基础上消除了对主代码子集的依赖。

以仓库管理关系表为例:仓库编号、存储项编号、管理员编号和数量。首先,该表满足第三种标准形式,这意味着管理员只在一个仓库中工作,而一个仓库可以存储多个项目。表中有以下依赖项:

(仓库编号、存储项目编号)——>(管理员编号、数量)

(管理员编号、存储项目编号)——>(仓库编号、数量)

从上面的依赖关系中,我们可以知道(仓库号、存储项号)和(管理员号、存储项号)是表关系中的候选代码。

表中唯一的非键字段是number,它符合第三种范式。但由于存在以下决定关系:

(仓库号)——>(管理员号)

(管理员编号)——>(仓库编号)

也就是说,有一个关键字段来确定关键字段,所以它不符合BCNF。

解决方案:将仓库管理关系表拆分成两个关系仓库管理表(仓库号、管理员号)和仓库表(仓库号、存储项号、数量)使数据库表符合BCNF,消除删除异常、插入异常和更新异常。

参考技术A 1: 很容易由 C → D, C → A, B → C
判断出 B 是主码 由于存在 B->C->D 和 B->C->A 故不是3NF,更不是BCNF
分解如下:(B,C)(C,A,D) 这两个关系都是BCNF

2:由于ABC →D,D →A 可知 ABC 是主码,但存在非主属性决定主属性(D->A)
不满足BCNF
分解如下:(A,B,C)(D,A) 这两个关系都是BCNF
参考技术B R(A,B,C,D)和函数依赖AB→C,C→D和D→A.
找出违反BCNF的依赖(不必找出右边多于一个属性的),并将其分解成BCNF关系的聚集.

首先找出了非平凡依赖:
C→A,C→D,D→A,AB→D,AB→C,AC→D,BC→A,BC→D,BD→A,BD→C,CD→A,ABC→D,ABD→C和BCD→A.
违反BCNF的有:
C→A,C→D,D→A,AC→D,CD→A.

然后就是分解了

标准答案给的是

AC,BC,CD本回答被提问者采纳
参考技术C 由于C → D, C → A, B → C故而为了使R满足3NF,可以将R划为:
R1=B,C,R2=C,A,D
由 ABC → D, D → A可将R2再划为R3=C,A,R4=D,A。
仅供参考!还望提宝贵意见!
参考技术D C → D, C → A, B → C
判断出 B 是主码 由于存在 B->C->D 和 B->C->A 故不是3NF,更不是BCNF
分解如下:(B,C)(C,A,D) 这两个关系都 是,

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

1. 1NF指关系中的每个变量不可再分

2. 2NF指消除了非主属性对码(candidate key)的部分依赖的1NF

   比如(S#,C#)-> SN ,(S#,C#)-> SD 。S#->SD那么SD部分依赖与候选键,不是2NF,仅仅能是1NF;分解为SC(S#, C#, G)和S_SD(S#,SN,SD,DEAN)就是2NF

3. BCNF指消除了主属性对码(candidate key)的部分依赖的2NF

比如 (S#,C#)->T#, T#->C#不是BCNF。由于candidate 是 (S#,T#),(S#,C#),主属性C#部分依赖于(S#,T#),所以不是BCNF。能够分解为:

(S#,T#),(T#,C#)两张表

4. 3NF指消除了传递依赖的BCNF

比如 S#->SD, SD->DEAN不是3NF,由于DEAN传递依赖于S#,能够分解为STUDENT(S#,SN,SD)和DEPT(SD,DEAN)

4. 4NF指消除了多值依赖的3NF

比如:

技术分享

 他的原来的主键为(C#,T#,B#),分解为(C#,T#)和(C#,B#)



Comments: SN = Student Name, SD = Student Department, T# = the # of teacher





以上是关于数据库关系分解为BCNF范式的主要内容,如果未能解决你的问题,请参考以下文章

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

数据库系统方面的问题,求最小函数依赖集、候选码、分解满足范式的关系模式

数据库中的1NF、2NF、3NF、BCNF、4NF、5NF是怎么回事?

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

数据库中,三种范式之间的区别,如何判断某个关系属于第几范式?

BCNF范式及其分解方法(对一次Lab作业的总结)