1

我已閱讀了定義和獲得它的種類 - 在無損連接之後,您不應該丟失任何信息。但爲什麼這個具體的例子適用於第三種分解解決方案呢? 這個例子來自Elmasri和Navathe的數據庫系統基礎。使用Boyce Codd Normal Form分解示例解釋非添加性propery

我們有一張名爲TEACH的表格,列有學生,教師和課程。這是第三範式,我們正在努力使其成爲BCNF(博伊斯科德範式)。

示教(學生,課程,講師)

STUDENT COURSE INSTRUCTOR 
Nathan Database Mark 
Smith Database Navathe 
Smith Op Sys Ammar 
Smith Theory Schulman 
Wallace Database Mark 
Wallace Op Sys Ahamad 
Wong  Database Omienscki 
Zelaya Database Navathe 

文說,有對關係三種可能的分解示教

1) {Student, Instructor} and {Student, Course} 
2) {Course, Instructor} and {Course, Student} 
3) {Instructor, Course} and {Instructor, Student} 

根據課文中,只有兩個功能依賴

1){student,course} - >指導者

2)指導員 - >課程

根據文本,只有解決方案3是有效的,因爲它不會生成虛假元組,因此具有非附加屬性。

虛假元組來自加入非主要屬性或非外鍵。學生不是主要屬性嗎?那麼爲什麼解決方案1沒有工作?

我對爲什麼是解決方案3的理解是,我們無法檢索諸如「我有教練,教練教授什麼課程?」等信息。從解決方案1和2.這將涉及到原始表中的函數依賴關係,即教師 - >課程。

回答

1

你似乎沒有掌握正常化。你需要學習和使用精確的定義。

標準化通過預測(無損/無添加)地將其聯繫到一個關係來替代關係。當一個元素位於其中一個元素的超級鍵的列上時,去除有問題的FD(函數依賴)的二元分解是無損/不可加的。 (一個超級密鑰是一個CK(候選密鑰)的超集。)(「加入非主要屬性或非外部密鑰」不是描述有損案例。爲什麼你認爲?)一旦你有組件,你必須確定他們的CK /超級鍵是什麼。

大概你的意思是說那兩個FD形成原始表格的封面。 (也就是說,持有的唯一的FD是持有的,因爲這些持有。)然後,組件中唯一不重要的FD是講師 - >課程,{講師}是組件{講師,課程} ,並且在組件的超級鍵上加入的唯一選擇是3)。

學生是其出現在每個組件中的主要屬性,這意味着它是CK的成員。但是對於無損的重要的是,在超級密鑰上是否加入,{student}不是任何組件的超級鍵。

PS 1.並不是說「在無損加入之後,你不應該丟失任何信息」。 根據定義無損連接是當你你不會丟失任何信息。類似地,「不會生成假元組」意思是「定義爲」具有「非附加屬性」的相同事物。

PS 2.你的「理解」沒有明確解釋。假設原始關係存放着「教師INSTRUCTOR教授課程對學生學生」的行。當FD講師 - >課程持有原版時,它也可以被描述爲持有「講師講師教課程課程和講師講師教導學生學生」的行。由於JOIN表的含義是表的含義的AND /連詞,我們可以通過加入「教師INSTRUCTOR教程課程」兩個表格「&」教師INSTRUCTOR教授學生學生「每3個)來重建表格。但該FD不允許我們用AND來改寫原始含義2)。所以在這些情況下用JOIN替換它是不合適的。

+0

好的我已經添加了本書所述的函數依賴關係。是的,我不清楚正常化的情況,但是我們的課程在課程的最後2天內衝過了這個部分,我們沒有對這個材料進行任務。沒有機會練習它。 –