2

我正在学习数据库的规范化,我遇到了以下问题:

 Given the following relation, BOSQID and its functional dependencies
 F={S->D, I->B, IS->Q, B->O},

我将如何找到将上述内容无损、保持依赖关系的分解为第 3 范式?

不太确定第三范式是什么,我查了一下,发现了以下要求:

1. The relation R (table) is in second normal form (2NF)

2. Every non-prime attribute of R is non-transitively dependent on every superkey of R.

读完以上内容后,我不太确定从哪里开始。另外,不确定它是否对回答问题有帮助或相关,但我发现候选键是

IS

如果有人能指出我正确的方向,我将不胜感激。

4

1 回答 1

1

我们有一个关系 R(BOSQID) 及其函数依赖关系:

F={S→D, I→B, IS→Q, B→O}

因为,您已经得出结论,只有 {SI} 是候选键,因为 {SI}+ = SIDBQO=BOSQID 并且没有计算 {SI} 的子集关系 R 的所有属性。

根据部分依赖的定义,{S→D, I→B} 是部分依赖,因为候选键的子集映射非主属性。

根据2NF,不允许部分依赖(即{S→D,I→B})。但是 {IS→Q, B→O} 在 2NF 中都是允许的。最后,关系 R 不在 2NF 中。

为了实现 2NF,我们分解关系 R 使得分解应该满足无损连接和依赖保留关系。

我将其分解为关系 R1(ISQ) 与 F1={IS→Q}、R2(SD) 与 F2={S→D} 以及 R3(IBO) 与 F3={I→B, B→O}。

现在,候选键和关系 R1、R2 和 R3 的正常形式分别是具有 BCNF 的 {IS}、具有 BCNF 的 {S} 和具有 2 个 NF 的 {I}。

由于分解 R3 不在 3NF 中,由于 FD {B→O},B 既不是 R3 的候选者,O 也不是 R3 的素数属性。因此,我们需要再次分解以在关系 R3 中实现 3NF,这样分解应该满足无损连接和依赖保留关系。

我用 F31={I→B} 分解 R31(IB) 中的 R3,用 F32={B→O} 分解 R32(BO)。现在候选键和关系 R31 和 R32 的正常形式分别是 {I} 和 BCNF 和 {B} 和 BCNF。

因此,最终的 BCNF 以及 3NF 分解为 R1(ISQ)、R2(SD)、R31(IB) 和 R32(BO)。

于 2016-07-24T13:02:51.633 回答