1

是否有可能完全擺脫所謂的「虛假元組」?是否有可能完全擺脫所謂的「虛假元組」?

例如:在this example,我沒有看到任何基表錯誤。

但是,它在加入後仍然生成假元組。

+0

我已經在[dba.stackexchange](http://dba.stackexchange.com/questions/121519)上回答了這個確切問題/是-IT-可能對GET-擺脫的最-所謂的雜散元組,完全) –

回答

1

在關係模式的分解中,「虛假元組」只是丟失信息的假設症狀。這意味着由於將該關係分解爲兩個或更多個組件,某個給定關係中表示的某些依賴關係將會丟失。這是否是需要解決的問題取決於失去的依賴對你有多重要。

在您引用的示例中,EmpRoleProj表告訴我們每個員工正在處理的項目。在表1中,表2設計了信息丟失 - 我們不能再說明瓊斯只能在亞馬遜項目上工作,而不能在尼羅河項目上工作。

作爲一個數據庫設計師,您需要考慮丟失了什麼信息或完整性,然後決定採取什麼操作:更改設計,添加額外的完整性約束或決定新的分解實際上是對它之前的改進。

0

如果關係R等於R1 JOIN R2 JOIN ...則我們可以使用R1 JOIN R2 JOIN ...而不是R.顯然,但是R1,R2,...將是R的投影。而如果我們對R的投影R1',R2',...其中R是而不是等於R1'JOIN R2'JOIN ...則我們可以't使用R1'JOIN R2'JOIN ...而不是使用R.顯然。但是R1'JOIN R2'JOIN ...將會像R 加上一些其他的元組。與R和R1 JOIN R2 JOIN ...的值相比,它們是「虛假元組」。但他們屬於 R1'JOIN R2'JOIN ...。 那不是R。要「擺脫虛假元組」只是不使用R1'JOIN R2'JOIN ...爲R。但那麼,爲什麼會你?只有當你認爲R的任何舊的預測JOIN回到R.但他們不。但那麼,爲什麼呢?

所以你的問題是奇怪的措辭。我們想要替換其他人加入其他人的表格。我們不要想替換一個表而不是這些別人的加入。所以我們可以總是「擺脫虛假元組」不是那麼做

規範化是關於替換其他人加入其他人的表。當R = R1 JOIN R2 JOIN ...我們說在R中存在JD(加入依賴關係)。與已知的智慧相反,它非常容易看到JD,如果我們正在查找並且我們知道我們的表的含義。當R持有元組「... A1a ... A1b ... AND ... A2a ... A2b ... AND ...」時,它是R1,R2,...的連接。在各自的屬性集{A1a,A1b,...},{A2a,A2b,...},...以及相應的含義「... A1a ... A1b ...」,「。 ..A2a ... A2b ...「,...。我們自然使用R1,R2,...大部分時間開始設計。所獲得的智慧也是不伴隨FD(功能依賴)的JDs很少見。他們是,但只是因爲大多數JD非常明顯,我們的最初設計避免了他們。他們「很難找到」只是因爲他們很容易找到。 (對每個不會導致問題的JD進行分解要複雜一點。)

相關問題