0

我正在做一個數據庫理論課程作爲我的CS學位課程的一部分,我們必須確認我們設計的數據庫是以BCNF標準格式。我目前正在嘗試創建函數依賴關係,但我不確定在關係全是素數(即所有屬性都是主鍵,例如當您具有M:N關係時)要執行的操作。與所有素數屬性關係的函數依賴關係?

例如, considder這種關係:

Prod_Cat [名稱,CATEGORY_ID,EPC]

凡的名字,CATEGORY_ID和EPC都是主鍵。

我如何定義這個函數的依賴關係?

任何幫助,我將不勝感激。

由於科裏

回答

1

我不知道你的表格中列的含義,但如果你的主鍵由所有列的,你只有形式的平凡函數依賴A-> B,B是A的一個子集(如果你有任何其他的形式A-> B的函數依賴關係,其中B不是A的一個子集,那麼B就不在關鍵字中。)另外,表必須是在BCNF(但可能不在4NF)。

0

通常情況下,我們將標準化應用於實體表格,而不是交叉表格。這是因爲裸交叉表只包含獨立的鍵,而不包含屬性。一般來說,密鑰是在規範化過程中創建的,因此所有依賴關係都已經解決(假設設計正確)。

但是,交集表定義了關係,並且關係可以具有其他屬性。

create table DeptMgrs(
    DeptID int not null references Departments(ID), 
    MgrID int not null references Employees(ID), 
    Assigned date not null, 
    constraint PK_DeptMgrs primary key(DeptID, MgrID) 
); 

通常,有一個交叉點表的FK字段,從而DeptIDMgrID之間無之間沒有函數依賴 - 它們被導入的鍵字段和它們一起形成的關係的自然鍵。但是,分配的字段告訴這個員工成爲那個部門的經理部門。它不是一個部門或員工的屬性,而是它們之間關係的屬性。當然,這個例子在3nf甚至BCNF中是平凡的,但有了額外的屬性,交叉表的標準化可能是必需的。

這不應該是有趣的負荷?

由於您似乎在交集表中只有FK字段,因此它們之間不應存在依賴關係。