0

想象我得到了以下DB:多的依賴時,試圖達到第三範式

a   //primary key 
b 
c 
d 

在這樣下面的函數依賴是有效的:

a -> bcd 
b -> cd 
c -> bd 

WHT應該怎樣做才能將它傳遞到第三範式?

我試圖分開如下:

a -> b   //this b is the foreing key to the b of the other tables 
b -> c 
b -> d 

它是正確的嗎?

+0

你不分離依賴關係,你分開表。你應該把原始表R(a,b,c,d)分成兩個表(比如R1和R2)。你做到了嗎?只是爲了澄清你可能已經知道的東西:a,b,c和d是一張表中的列。 – 2015-04-05 09:58:32

+0

FD c-> bd發生了什麼? – 2015-04-07 17:39:23

+0

@SimoKivistö新關係實際上是新表。對不起,沒有讓它清楚。 – 2015-04-12 01:14:59

回答

1

您正在考慮錯誤的方式。你不玩弄依賴關係(除非這是一個特定告訴你的玩具HW問題);你想分割表,以便所有的表都在3NF。在你的情況,這將是(我想!):

一個 b

bÇ

Ç d

凡斜體字母代表的關鍵。現在,爲什麼你不玩弄依賴關係的一個例子:

說這個數據庫是人,並保存他們的SS,BDate和名稱。然後你可以說SS - > BDate,Name,因爲你的SS號碼對你來說是非常正確的。現在,當你玩弄依賴時,你會玩弄什麼數據意味着。 SS號碼可以決定你的名字,這不是真的嗎?它簡直就是。說SS - > BDate和消除名稱屬性是簡單的錯誤。

同樣,對於您的數據庫,雖然ABCD並不代表什麼,但它們的依賴關係是固定的,不會被改變。所以,那是我超長的說法:拆分表格,不要觸摸依賴關係! =)

+0

這不是超長。 +1強調*含義*。 Wannabe理論家這些天抽象的東西,它失去了它的意義,然後他們想知道爲什麼他們感到困惑。 – PerformanceDBA 2015-04-18 11:22:49