问题标签 [bcnf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
79 浏览

database - BCNF 项目 FD 关于结果关系

所以我与 FD 有关系 R(A, B, C, D, E)

我想将其标准化为 BCNF。

因为 A->C 和 D->E 违反了 BCNF。我从 ABCDE 中减去 C 和 E,这将是 ABD。但是我如何将原始关系的 FD 投影到新的 ABD 关系?有人告诉我,ABD 上的结果 FD 将是

我不太明白。

任何帮助,将不胜感激!

0 投票
2 回答
914 浏览

schema - 对 BCNF 的困惑

Schema:R(A,B,C,D,E,F,G,H,I,J)和功能依赖FD = { A->DE, IJ->H, I->A, J->FG, G->BC }

问题: BCNF中有关系吗?

答:不是因为Ais not superkey。

我知道在什么条件下关系在 BCNF 中,但一直让我感到困惑的是superkey. 谁能解释为什么答案A不是超级键?为什么不选择,例如,IJ或者I作为超级键?ķ

0 投票
1 回答
334 浏览

database - 在电影数据库中检查 BCNF?

我有点困惑如何在数据库图中检查 BCNF。我看到了一些关于什么是数据库规范化(1NF、2NF ......)的 youtube 视频,但是到了将这些规则应用于我的项目的时候,我不知道该怎么办 。

我的电影数据库的 ER 图

ER图到postgre sql代码:

电影数据库设计的主要来源: 如何设计电影数据库?

因此,在给定的 ER 图上,我的目的是找到函数依赖关系并应用 BCNF 规范化。

任何帮助表示赞赏!

0 投票
2 回答
555 浏览

sql - sql 数据库:具有 2 列(id 名称)和 2 个主键的表 第三范式 Boyce-Codd 范式

想象一下下表。就我而言,我完全确定name需要uniquenot null[unique+not null = 主键]。因此name是主键。由于某些原因(可能是习惯),我很自然地创建了一个idint 类型的主键列。

其他假设:我绝对需要保留name在我的表中,并且我绝对确定name(类型varchar)永远不会超过 20 个字符。

现在我的第一个问题是[可能是肯定或否的接近问题]:如果我创建这样一个表,我是否尊重 BCNF Boyce-Codd 范式?

id第二个可选问题[可能是开放式问题]:在这种情况下创建列是一种好习惯吗?

0 投票
0 回答
173 浏览

database-normalization - 数据库标准化为 BCNF

我在理论上的 BCNF 规范化任务上遇到了一些麻烦。

R(A, B, C, D, E, F)与功能依赖有关系:

我的论点:

因此,让我们从寻找潜在的密钥开始,密钥必须包含BCF,因为它们是不可获取的。而且它只是key,因为我们可以从这个key中获取所有的属性。

现在我们可以移除多余的函数依赖FB -> D,因为我们有B -> A -> E -> D,对吧?

这意味着这甚至不是 2 NF,因为B -> A. 这是第一个问题。我将不得不提取A到单独的表,但是A -> EFD -> A. 这是否意味着我们必须同时进行?因此,在转换为 2NF 的第一步之后,我们有关系:{ BCF DE, B A, FD A, A E}?

如果我是对的,现在是 2 NF,但不是 3 NF,因为 FD E -> D(E 不属于密钥),所以让我们将其提取到单独的关系:{BCEF, E D, B A, FD A,一个E}

现在是 3 NF 并且......它也是 BCNF 吗?我没有看到任何违反它的FD。或者我的整个推理是错误的?

提前致谢!

0 投票
1 回答
662 浏览

database - 我如何指出违反 BCNF 的行为?

本周我有一个数据库期中考试,但在识别 BCNF 违规行为时遇到了麻烦。我知道如何分解关系并找出哪个是键,哪个是超键。我还可以写出隐含的 FD。我正在观看以下视频:https ://www.youtube.com/watch?v=hTFyG5o8-EA 。

总结一下,解释的女士开始将 BCNF 算法应用于以下关系(她使用了学生示例,但我已将其转换为字母以简化它):

R(A, B, C, D, E, F, G, H) 带 FD:A -> BCG, G -> H, D -> EF。

我知道关键是 AD,因为它的关闭是 AD+ = ABCDEFGH。她说提出的所有 FD 都是违规行为,并开始应用该算法:

BCNF 尝试 #1:

R1 = D -> EF (D+ = DEF) // 没有违规,但为什么?不就是违规吗?

R2 = ABCDEFG - (DEF - D) = ABCDGH // 违规,也很困惑为什么?它包含两个键。


BCNF 在 R2 上尝试 #2:

R3 = G -> H (G+ = GH) // 没有违规,因为只有两个属性 GH,我相信

R4 = ABCDG // 违规,但我不知道为什么。


BCNF 在 R4 上尝试 #3:

R5 = A -> BCG // 无违规 (?)

R6 = AD // 没有违规 (?)

最终关系: R1、R2、R5、R6。

0 投票
1 回答
252 浏览

database - 如何确定完成 3NF 的正确步骤?

这是教科书中的一个例子:考虑关系 R (A ,B ,C ,D ,E ) 与 FD 的 AB -> C、C -> B 和 A -> D。

我们知道关键是 ABE 和 ACE。分解:ABE+=ACE+=ABCDE。

你如何检查最小化?我知道 AB+=ABD 并且教科书上说因为 AB+ 不包括 C。那么它是最小的。C+=AB 和 A+=AD 也是最小的。但我不知道为什么。你如何检查最小化?

另外,除了检查是否执行 3-NF 的那些之外,我们是否必须找到所有的 FD?

然后我们检查 AB -> C 是否可以拆分为 A -> C 和 B -> C,我们注意到它们不能独立存在,因此 AB -> C 不可拆分。

我们剩下最后的关系:S1(ABC),S2(BC),S3(AD)和密钥(因为不存在)S4(ABE)(或S4(ABC))。然后我们删除 S2,因为它是 S1 的子集。

如果它在3NF并且没有违规,那么他们为什么将原始关系拆分为:S1(A,B,C),S2(A,D)和S4(A,B,E)。

书名和页码:Ullman's Database Systems 第 103 页

0 投票
1 回答
829 浏览

decomposition - BCNF分解算法不起作用

我有以下问题:R(ABCDEFG) 和 F ={ AB->CD, C->EF, G->A, G->F, CE ->F}。显然,B & G 应该是键的一部分,因为它们不是依赖集的一部分。此外,BG+ = ABCDEFG,因此是候选键。显然,AB->CD 违反了 BCNF。但是当我遵循算法时,我没有得到任何答案。可能是做错了什么。谁能告诉我如何正确应用算法来达到分解?

提前致谢。

0 投票
2 回答
367 浏览

database - 给定 F = {AB -> E, BC -> G, C-> BG, CD->A, EC->D, G->CH},BCNF 分解能否保留所有函数依赖关系?

给定F = {AB -> E, BC -> G, C-> BG, CD->A, EC->D, G->CH},执行 BCNF 分解并检查它是否保留了所有功能依赖关系。

最小覆盖是R = {AB->E,C->B,C->G,CD->A,EC->D,G->C,G->H}

我执行R了 BCNF 分解(必须在最小覆盖上执行)并且我保留了两个依赖项,其中一个被保留,一个不被保留。在答案中,他们告诉我所有的依赖关系都被保留了。可以请任何人确认这一点吗?

0 投票
1 回答
104 浏览

database - BCNF - 范式

想知道您是否认为下表用于将员工存储在数据库中会被​​视为 BCNF 中的数据库?

所以我的问题是你认为这会满足加入 BCNF 的标准吗?或者我应该有一个国籍表、职位表、宗教表等,因为它们将是数据库中的重复信息

我只是学习规范化的新手,所以任何想法和提示都会有所帮助