database - 第三范式关系的无损、依赖保留分解

标签 database database-normalization bcnf

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

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

我将如何着手找到将上述内容分解为第三范式的无损、依赖性保留分解?

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

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

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

最佳答案

我们有一个关系,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 的范式分别是 {IS} with BCNF、{S} with BCNF 和 {I} with 2 NF。

因为分解 R3 不在 3NF 中,因为 FD {B→O},B 不是 R3 的候选对象,O 也不是 R3 的主属性。因此,我们需要再次分解以实现关系 R3 的 3NF,使得分解应满足无损连接和依赖保持关系。

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

Therefore, final BCNF as well as 3NF decomposition is R1(ISQ), R2(SD), R31(IB) and R32(BO).

关于database - 第三范式关系的无损、依赖保留分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33225357/

相关文章:

database - BCNF分解?

database - 确定 super 键

database - Oracle 索引何时以及为何失效?

mysql - 我是在标准化之前还是之后创建 ER 图?

database - 典型的 RDBMS 如何存储和定位 block ?

database - 在数据库列中存储分隔列表真的那么糟糕吗?

database - 对于任何关系,规范封面总是唯一的吗?

relational-database - 检查分解是否为 Boyce Codd 范式

mysql - 从多行插入并同时更新一些静态值?

javascript - 在 Sequelize 中查找与来自其他模型的多个(所有)实例关联的实例