Database 有损分解

Database 有损分解,database,normalization,database-normalization,Database,Normalization,Database Normalization,如果一个关系被分解为2个子关系,这样分解是有损的,那么如果父关系在bcnf中,这些子关系是否可以是任何范式(3nf或bcnf) 考虑具有以下函数依赖关系的关系R(S,T,U,V):- S->T,T->U,U->V,V->S 现在,如果我将上述关系分解为两个关系R1和R2,使得R1交集R2像R1(S,T)和R2(U,V)一样为空,那么分解在bcnf中吗 我知道R1可以有函数依赖项S->T,T->S,R2可以有函数依赖项U->V和V->U,这使它看起来像BCNF 我的问题是我们把分解看作BCNF,即

如果一个关系被分解为2个子关系,这样分解是有损的,那么如果父关系在bcnf中,这些子关系是否可以是任何范式(3nf或bcnf)

考虑具有以下函数依赖关系的关系R(S,T,U,V):- S->T,T->U,U->V,V->S

现在,如果我将上述关系分解为两个关系R1和R2,使得R1交集R2像R1(S,T)和R2(U,V)一样为空,那么分解在bcnf中吗

我知道R1可以有函数依赖项S->T,T->S,R2可以有函数依赖项U->V和V->U,这使它看起来像BCNF

我的问题是我们把分解看作BCNF,即使它不是一个有效的分解吗?无效是指有损分解。

来自您(不清楚)的问题:

如果将一个关系分解为2个子关系,则分解是有损的

在评论中:

我只是问如果父关系在bcnf中,分解的关系是否可能在bcnf中

如果这是你的问题,那么答案是肯定的

考虑BCNF中具有CK(候选键){a}的变量,该变量可以保存以下内容:

a b
1 2
3 4
二元分解{a},{b}与BCNF中的成分一起有损

(当试图证明某些错误时,请查看一些简单的案例,以防您可以找到反例作为证据。)

我们认为分解为BCNF,即使它不是一个有效的分解?无效是指有损分解


当我们说一个分解在某个NF中,也就是说它的所有成分都在那个NF中。但我们只有在分解是无损的情况下才使用这种速记,即“分解”被理解为“无损分解”的缩写,因为有损分解是没有用的。

这不清楚,就像大多数涉及“a”、“can”、“any”的非正式用语一样,例如,在BCNF中有一个特定的关系,它有一个特定的有损二元分解,在某些NF中。但是你的问题的答案是对的,还是错的?您需要使用“for all relations R,[…]”和“for some relations S,[…]”(或其等价物,“there existing a relations T where[…])来表达您的语句。不仅仅是“a”、“can”、“any”、“all”、“some”等(可能有一些使用后者的明确的非正式措辞。这不是一个)。PS要反驳,寻找反例。我的问题没有歧义。我只是问如果父关系在bcnf中,分解的关系是否有可能在bcnf中,或者换句话说,在有损分解后,子关系是否有可能在bcnf中。我建议你试着正式地写下你的问题和评论陈述,因为你会发现不清楚什么是清楚的,正式的陈述表达了它们中的每一个。此外,虽然不清楚,但你的问题不可能像你的评论一样被解释为询问组件是否在BCNF中。你的编辑保留了你不清楚的原始问题,并添加了一个完全不同的最终问题。请弄清楚你的问题是什么,只问清楚。(你的问题中现在有两个短语,你的评论中有两个。)如果你说分解是在某个NF中,请参阅我编辑的答案。PS如果给定的FD构成一个封面,那么CKs是{{s},{t},{u},{v},R是在BCNF中。当你漫不经心地说“R1交集R2为空”时,我猜你的意思是R1和R2属性集的交集为空/空集。R2的V->s应该是V->U。当你奇怪地说组件“可以拥有”这些FD时,我猜你的意思是他们确实拥有它们,即它们满足它们。组件在BCNF中。分解是有损耗的。然后你草率地/含糊不清地说“有效”,然后定义它,当你本来可以用适当的技术术语说一些有意思的话的时候。