2016-10-18 55 views
1

對於我的數據庫類的作業分配,我正在努力理解如何將此模式規範化爲第四範式。將模式規範化爲第四範式

這是我必須做的:

Normalize the following schema, with given constraints, to 4NF: 

Books(accessionno, isbn, title, author, publisher) 
Users(userID, name, deptID, deptname) 

Accesssionno -> isbn 
Isbn -> title 
Userid -> name 
Userid -> deptid 
Deptid -> deptname 

這裏是我在它的企圖:

Books(accessionno, isbn) 
Books2(accessionno, title) 
Books3(accessionno, author, publisher) 

Users(userID, name) 
Users2(userID, deptID) 
Users3(userID, deptName) 

什麼我感到困惑的是書號 - >標題和DEPTID - > deptname

我不知道如何處理這兩個函數的依賴關係,任何人都可以請提供一些幫助?我在lnie上查了一些例子,但我正在努力將它與我的具體問題聯繫起來。感謝您的幫助,非常感謝!

編輯:在看了更多的例子和閱讀更多的材料後,這是我第二次嘗試解決方案。有什麼建議麼?

Books(accessionno, isbn, title, author, publisher) 
Accesssionno -> isbn 
Isbn -> title 

Normalized: 
Books1(accessionno, isbn) 
Books2(accessionno, isbn, title) 
Books3(accessionno, author, publisher) 

Users(userID, name, deptID, deptname) 
Userid -> name 
Userid -> deptid 
Deptid -> deptname 

Normalized: 
Users1(userID, name) 
Users2(userID, deptID) 
Users3(userID, deptID, deptName) 

回答

2

首先,你有兩個不同的關係模式,沒有共同的屬性,所以分開規範化它們是正確的。

所以,從第一個關係開始:

Books(AccessionNo, Isbn, Title, Author, Publisher) 
AccessionNo → Isbn 
Isbn → Title 

的問題是,有沒有與屬性AuthorPublisher指定的依賴,而克利裏我們可以解釋的關係作爲描述的書籍,在這種情況下應該有另外兩種依賴關係:

Isbn → Author 
Isbn → Publisher 

,或者equivalenty,一個可以寫的關係有兩個依賴:

Books(AccessionNo, Isbn, Title, Author, Publisher) 
AccessionNo → Isbn 
Isbn → Title, Author, Publisher 

有了這個「修正」,您可以通過生成以下子模式帶來BC範式的關係:

R1 < (Isbn, Author, Publisher, Title), 
{ Isbn → Author 
    Isbn → Publisher 
    Isbn → Title }> 

R2 < (AccessionNo Isbn), 
{ AccessionNo → Isbn } > 

其中第一個具有唯一的關鍵Isbn而第二個擁有國內唯一鍵AccessionNo

如果,另一方面,該模式應該只有兩個函數依賴提到,在BCNF分解會比較複雜,不是很顯著:

R1 < (Isbn, Title) , 
{ Isbn → Title } > 

R2 < (AccessionNo, Isbn) , 
{ AccessionNo → Isbn } > 

R3 < (AccessionNo, Author, Publisher) , 
{ } > 

,其中第一關係具有關鍵Isbn ,第二個具有密鑰AccessionNo,第三個具有密鑰(AccessionNo, Author, Publisher)

對於第二個關係,

Users(UserID, Name, DeptID, DeptName)  
UserID → Name 
UserID → DeptID 
DeptID → DeptName 

的依賴關係是有意義的,因爲該架構描述了用戶和他們的部門,其中每個用戶只屬於一個部門的關係。在這種情況下,BC正規化由以下分解給出:

R1 < (UserID, Name, DeptID) , 
{ UserID → Name 
    UserID → DeptID } > 

R2 < (DeptID, DeptName) , 
{ DeptID → DeptName } > 

,其中第一關係具有鍵UserID(描述了用戶),並且所述第二關係有(描述了部門)鍵DeptID

作爲最後說明:所有產生的分解都在Boyce-Codd Normal Form中,因此它們已經自動處於第三範式。他們也處於第四範式,因爲沒有多值依賴,需要特殊的處理。