有人可以向我解释3NF和BCNF之间的区别吗?如果您还可以提供一些示例,那就太棒了.谢谢.
database-design relational-database 3nf database-normalization bcnf
什么是KISS(保持简单,愚蠢)的方式来记住Boyce-Codd的正常形式是什么以及如何采用非标准化的表格和BCNF呢?
维基百科的信息:对我来说不是很有帮助.
我一直在阅读许多关于如何区分3NF/BCNF关系的不同来源.到目前为止,这是我的理解......
我将以此关系为例......
R = {A, B, C, D, E}
和
F = {A -> B, B C - > E, E D -> A}.
首先,我们必须找到关系的关键.我用这个视频来帮助我做到这一点.我得到了
Keys = {ACD, BCD, CDE}
现在要确保R在BCNF中,我们必须确保每个功能依赖的左侧F是其中之一Keys.我们立即知道情况并非如此,因为第一个FD是A -> B并且A不是其中一个键.所以它不在BCNF.
现在要确保R在3NF中,我们必须确保每个函数依赖的左侧F是Keys OR中的每个函数依赖的右侧之一F是其中一个的子集Keys.如果你看看每个FD的右侧,它们就是B,E和A.这些都是a的子集Key,因此这意味着它在3NF中.
因此,这是一种罕见的情况(根据维基),其中存在关系3NF但不存在 …
database 3nf database-normalization functional-dependencies bcnf
嘿我所有的作业都说:
设R(ABCD)是与函数依赖关系A→B,C→D,AD→C,BC→A的关系以下哪一项是R的无损连接分解为Boyce-Codd范式(BCNF)?
我一直在youtube上研究和观看视频,我似乎无法找到如何开始这个.我想我应该把它分解为子模式,然后填写一张表来找出哪一个是无损的,但是我很难开始使用它.任何帮助,将不胜感激!
Boyce-Codd 范式的定义指出所有非平凡函数依赖的决定因素必须是超键。
我发现 BCNF 中的所有关系示例都使用了候选键。我正在寻找一个实际上有一个超级键作为行列式的例子,它不是候选键。
我没有想出一个只使用无法转换为使用候选键的超级键的关系。
假设我们有一个候选键和一个额外的函数依赖关系,其中一个超级键作为行列式。
R1(A,B,C)
{A}
A,B -> C
Run Code Online (Sandbox Code Playgroud)
这个额外的 FD 是多余的,因为它包含一个明显确定其他属性 (A -> C) 的候选键。
尝试使用两个候选键构建另一个示例也是无用的。
R2(A,B,C,D)
{A,B},{B,C}
A,B,C -> D
Run Code Online (Sandbox Code Playgroud)
这与上面的问题完全相同。
我实际上想知道是否有没有候选键的例子。但为什么定义会比必要的更广泛?或者定义是否等效,因为依赖项总是可以转换?
database key relational-database database-normalization bcnf
一个简单的问题,我似乎在网上找不到答案:没有非平凡函数依赖关系的关系是否被认为是 BCNF 形式,如果不是,我该如何分解它?先感谢您!
因此,作为我作业的一部分,我必须证明与两个属性的任何关系都符合 BCNF。
根据我的理解,如果对于一个关系我们有第三范式并且一个非关键属性在功能上决定了关键属性,那么它就违反了 BCNF。
假设我的关系由两个属性 A1,A2 组成
场景1(只有一个函数依赖)
A1 -> A2 (so A1 is the key, and A2 does not FD A1 : so no violation)
Run Code Online (Sandbox Code Playgroud)
同样适用于
A2 -> A1
Run Code Online (Sandbox Code Playgroud)
但如果
A1->A2 and A2->A1
Run Code Online (Sandbox Code Playgroud)
这里的key可以是A1,A2。另一个非关键属性在功能上决定了关键。
我在理解如何确定关系是否在 BCNF、3NF 中以及通常识别关系的候选键时遇到问题。
考虑R = (A, B, C, D)与函数依赖关系:
AB -> C
C -> D
D -> A
Run Code Online (Sandbox Code Playgroud)
问题包括:
一种。列出 R
b的候选键。确定 R 是否在 BCNF 或 3NF 中。
解决方案解决
一种。R 的 3 个候选键是 AB、BC 和 BD。
湾 R 属于 3NF,但不属于 BCNF。
我已经阅读了 3NF 和 BCNF 有什么区别?并且在引用数据库模式中的非任意词时可以理解 3NF 和 BCNF 之间的区别。正如问题中给出的那样,在尝试确定具有减少关系的关系时,我最终迷失了方向。
有人能解释一下上面的候选键是如何确定的,为什么 R 在 3NF 而不是 BCNF?
我读到一篇声明“BCNF 中至少有一个简单候选键的关系 R 也在 4NF 中”
我不认为这总是正确的,但我无法证明这一点。
有人可以帮忙吗?
我对DB BCNF违规标准的特定方面感到困惑.这是一个例子:
R(ABCDEF)
FD是BC->D, C->AF, AB->CE.
我已经得出了候选键AB and BC.
鉴于所有FD都包含至少部分候选键,因此该关系在BCNF中是正确的吗?
多谢你们!
我看了将一个关系分解为BCNF答案,并在作业中进行了尝试,但是我没有得到正确的答案,所以我寻求BCNF分解的帮助
考虑R=(ABCDEG)&F={BG->CD, G->A, CD->AE, C->AG, A->D}。
我开始选择A->D。
现在S=(AD), R'=(ABCEG).
我选了G->A。
现在我明白了S=(AD,AG) R'=(BCEG)。
我选C->G。现在我想我需要得到S=(AD,AG,CG)和R'=(BCE),但最终答案(AD,AG,CGE,BC)。什么出了问题?还是更好的算法?
我已经在 SO 上阅读了一堆涉及 BCNF 的其他线程,但是我仍然对如何编写函数来确定关系是否在 BCNF 中给定关系及其函数依赖项列表感到有些困惑。
所以很明显,如果 FD 的所有输入和输出的联合不等于关系,那么它不在 BCNF 中,但这显然也是我需要检查的全部。
So, say I'm given an input:
R(A,B,C,D,E,F,G)
A->B
C,D->F
G->E
Run Code Online (Sandbox Code Playgroud)
那么我需要检查什么来确定它是否是 BCNF?