问题标签 [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.
database - 确定 BCNF 违规
所以我有一个与 FD 的关系模式,如下所示:
现在我试图找出所有违反 BCNF 的行为,然后分解表格。我计算了所有 FD 的左侧并发现了这一点:
所以我把表格分解成这样:
唯一的问题是我不确定这是否是我在分解表格时所要做的全部,或者我是否必须做更多。我主要对 AB、CD 和 AD 部分感到困惑。
database - 当属性与任何其他属性没有关系时如何进行 BCNF 分解
任务:
考虑一个关系 (,,,,,,) 及其 FD 集 = { → , → , → , → , → , → }。如果它不在 BCNF 中,则将其分解为 BCNF 关系的集合。确保您的分解是无损连接。
解释
嗨,我正在做我的数据库作业(关系设计章节)。我想我已经根据课堂示例掌握了基本过程。然而,这里棘手的部分是我们有一个与其他人没有关系的属性“H”,这让我很困惑。我应该如何处理?
尝试回答
你对我的错误有何评论?
database - 在 BCNF 分解之后获得相同的 FD?
我对一个有 5 个函数依赖的关系进行了 BCNF 分解,最终得到了 5 个关系。但是,每个新关系都具有与原始函数依赖项之一相同的属性和 FD。
例如,一个功能依赖是 AB -> C,而我最终得到的 5 个关系之一具有属性 ABC 和 AB -> C 功能依赖。其他四个关系也是如此(与原始 FD 之一相同的属性和 FD)。
这是否意味着我错误地进行了 BCNF 分解?
我发现这个问题描述了类似情况的特定 BCNF 分解,据说它是正确的。
这是否意味着您根本不必遵循 BCNF 算法,并且可以从每个 FD 中获取属性并将其放入一个关系中,然后每个关系都将在 BCNF 中,因此由新的关系也会如此吗?
database - 是否需要在关系分解后保留所有功能依赖关系?
在将关系转换为 BCNF 后,如果适用于原始模式的功能依赖 (FD) 丢失,则会创建一个新的“冗余”表以保留所有原始 FD,如果可能的话。我知道 FD 对于分解很重要,但是什么它们是分解后的用途吗?为什么我们必须尝试保存所有的 FD?在将关系转换为 BCNF 后丢失一两个 FD 真的很重要吗?
relational-database - 如何检查关系是否在 BCNF 中
我有一个关系:A,B,C,D,E
与 FD:
既然A->BC
可以A->B
,A->C
那么B->D
就可以成为A->D
。而既然A->C
和A->D
,那么CD->E
就可以成为A->E
。我不确定,E->A
但从那A->E
以后我会认为它会A->A
成为一个微不足道的 FD。这意味着这种关系的关键是{A}
?因此,A
左侧唯一给出的 FD 将是A->BC
.
但是这种关系在 BCNF 中存在吗?如果不是,我将如何将其更改为 BCNF?我已经读到我将使用违反 BCNF 的 FD 作为分离关系的起点,所以我会选择一个左侧没有 A 的 FD 并继续在那里分离吗?
key - 主要属性和键
主要属性只是候选键的成员还是也可以是超级键?我有点困惑,因为我在某处读到主要属性可以是 ANY 键的成员,而其他人说它需要是候选键的成员。
normalization - 函数依赖 lhs 具有素数和非素数属性
考虑表 zoo(a,b,c,d,e,f,g) 和 FD
a → b,d,e,g
c,d → f
f → c
e,g → d
对其进行归一化。
候选键是 {a,c} {a,f},所以素数是 {a,c,f}
2NF 被 a → b,d,e,g 违反
然后新表是 t1(a,b,d,e,g), zoo(a,c,f)
3NF 被 e,g → d 违反
然后新表是 t2(e,g,d), t1(a,b,e,g), zoo(a,c,f)
BCNF 违规是素数 -> 素数,但是 c 和 f 是素数但 d 是非素数,因此 lhs 具有素数和非素数,而 rhs 是素数。
那么我的问题是如何处理 FD c,d → f?
database - BCNF 规范化和多个候选键
在 BCNF Normalization 中,候选键是否可以确定非主键或其他候选键?
如果是,同一张表中是否可以存在多个候选键?还是只有一个?
database - 通过分解实现 BCNF
这里有两个适用于 R 的函数依赖。
R(A,B,C,D,E) {ABCD->E, E->A}
我朋友的回答是可以分解成BCNF。
R1(B,C,D,E) {BCD->E}
R2(A,E) {E->A}
但是,我认为这不可能是真的,因为原始的函数依赖 ABCD->E 没有被保留。因此,在我看来,R不能分解成BCNF,因为原来的函数依赖ABCD->E没有被保留下来。我是对还是错?