想象我得到了以下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
它是正確的嗎?
想象我得到了以下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
它是正確的嗎?
您正在考慮錯誤的方式。你不玩弄依賴關係(除非這是一個特定告訴你的玩具HW問題);你想分割表,以便所有的表都在3NF。在你的情況,這將是(我想!):
一個 b
bÇ
Ç d
凡斜體字母代表的關鍵。現在,爲什麼你不玩弄依賴關係的一個例子:
說這個數據庫是人,並保存他們的SS,BDate和名稱。然後你可以說SS - > BDate,Name,因爲你的SS號碼對你來說是非常正確的。現在,當你玩弄依賴時,你會玩弄什麼數據意味着。 SS號碼可以決定你的名字,這不是真的嗎?它簡直就是。說SS - > BDate和消除名稱屬性是簡單的錯誤。
同樣,對於您的數據庫,雖然ABCD並不代表什麼,但它們的依賴關係是固定的,不會被改變。所以,那是我超長的說法:拆分表格,不要觸摸依賴關係! =)
這不是超長。 +1強調*含義*。 Wannabe理論家這些天抽象的東西,它失去了它的意義,然後他們想知道爲什麼他們感到困惑。 – PerformanceDBA 2015-04-18 11:22:49
你不分離依賴關係,你分開表。你應該把原始表R(a,b,c,d)分成兩個表(比如R1和R2)。你做到了嗎?只是爲了澄清你可能已經知道的東西:a,b,c和d是一張表中的列。 – 2015-04-05 09:58:32
FD c-> bd發生了什麼? – 2015-04-07 17:39:23
@SimoKivistö新關係實際上是新表。對不起,沒有讓它清楚。 – 2015-04-12 01:14:59