【发布时间】:2017-12-07 00:03:55
【问题描述】:
如果一个关系被分解成 2 个子关系使得分解是有损的,那么如果父关系在 bcnf 中,这些子关系可以是任何正常形式(3nf 或 bcnf)吗?
考虑具有以下函数依赖关系的关系 R(S,T,U,V):- S->T , T->U, U->V, V->S.
现在,如果我将上述关系分解为 2 个关系 R1 和 R2,使得 R1 交点 R2 像 R1(S,T) 和 R2(U,V) 一样为空,那么分解是在 bcnf 中吗?
我知道 R1 可以有函数依赖 S->T、T->S 和 R2 可以有函数依赖 U->V 和 V->U 这使它看起来像 BCNF。
我的问题是我们是否将分解视为 BCNF,即使它不是有效的分解?无效是指有损分解。
【问题讨论】:
-
这不清楚,就像大多数涉及“a”、“can”、“any”等的非正式短语一样。例如,存在 a certain 关系在some NF 中具有某个 有损二进制分解的BCNF。但是,你的问题的答案是真的还是假的?您需要使用“对于所有关系 R,[...]”和“对于某些关系 S,[...]”(或其等价物,“存在关系 T,其中 [...]”)来表达您的陈述)。不只是“a”、“can”、“any”、“all”、“some”等(可能有一些使用后者的明确的非正式措辞。这不是一个.) PS 要反驳,请寻找反例。
-
我的问题没有歧义。我只是问如果父关系在 bcnf 中,分解的关系是否有可能在 bcnf 中,或者换句话说,有损分解后子关系在 bcnf 中的可能性。
-
我建议您尝试正式地编写您的问题和评论陈述,因为您会发现不清楚哪些清晰、正式的陈述表达了它们中的每一个。此外,虽然不清楚,但您的问题不能像您的评论一样被解释为询问组件是否可以在 BCNF 中。
-
您的编辑保留了您不清楚的原始问题并添加了一个完全不同的最终问题。请弄清楚您的问题是什么,然后清楚地问它。 (现在您的问题中有 2 个短语,您的评论中有 2 个。)关于分解是在某个 NF 中,请参阅我编辑的答案。
-
PS 如果给定的 FD 形成一个封面,那么 CK 是 {{s},{t},{u},{v}} & R 在 BCNF 中。当您草率地说“R1 交集 R2 为空”时,我猜您的意思是 R1 和 R2 的属性集的交集是空集。 R2的V->S应该是V->U。当您奇怪地说组件“可以拥有”那些 FD 时,我猜您的意思是它们确实拥有它们,即它们满足它们。组件在 BCNF 中。分解是有损的。然后你草率地/不清楚地说“有效”然后定义它,当你首先使用适当的技术术语说了一些有意义的东西时。
标签: database normalization database-normalization