发布于 2015-11-20 13:41:17
如果关系R等于R1 JOIN R2 JOIN ...然后我们可以使用R1 JOIN R2 JOIN ...而不是R显然。但是R1,R2 ..。将是R的投影,而如果我们取投影R1',R2',...其中R不等于‘JOIN R2’R1 ...那么我们就不能使用R1‘JOIN R2’JOIN ...而不是使用R显然。但是R1‘JOIN R2’JOIN ...就像R加上一些其他的元组。与R和R1 JOIN R2 JOIN的值相比,它们是“虚假的元组”。但它们属于R1‘JOIN R2’JOIN ...。为了“摆脱虚假的元组”,不要使用R1‘JOIN R2’JOIN ...但你为什么要这么做呢?除非你认为R的任何旧投影都会连接回R,但它们不会。但是,它们为什么会呢?
所以你的问题表达得很奇怪。我们想要替换一个表,这个表是一些其他表的连接。我们不想替换一个不是其他表的连接的表。因此,我们可以通过不这样做来“摆脱虚假的元组”。
规范化是关于替换一个表,该表是一些其他表的连接。当R= R1 JOIN R2 JOIN ...我们说JD (连接依赖)在R中成立。与公认的智慧相反,如果我们正在寻找并且知道我们的表的含义,那么很容易看到JD。当R包含"...A1a...A1b...和...A2a...A2b... AND ...“的元组时,它是R1,R2,...的连接。在相应的属性集{A1a,A1b,... }上,{A2a,A2b,...},...具有各自含义的"...A1a...A1b ...“、"...A2a...A2b...”、...我们很自然地使用R1,R2,...大部分时间都是在设计之初。公认的智慧也是,没有伴随FD(函数依赖)的JD是很少的。它们是,但仅仅是因为大多数JD是如此明显,以至于我们最初的设计都避免了它们。它们之所以“难找”,仅仅是因为它们太容易找到了。(对于不会导致问题的每个JD,不进行分解会稍微复杂一些。)
https://stackoverflow.com/questions/33791585
复制相似问题