1

比方說,我們有如下函數依賴:是否有下列函數依賴傳遞依賴

A->B, B->C, C->B, and A->C 

當函數依賴A->C是明確的,即你不必去到B去從。C

有A和C之間的傳遞依賴?如果我想用這個來建立我的關係,有關係滿足第三範式,我將不得不把它分解成兩個關係?:

A* B 
B* C 

(其中*表示主鍵,每一行是關係的報頭)

還是會保持它爲:

A* B C 

仍能滿足第三範式?

明確我的問題是給定函數依賴:A->B, B->C, C->B, and A->CA->C傳遞依賴,爲什麼/爲什麼不呢?

回答

0

A-> C不傳遞依賴。 A-> B-> C是傳遞依賴。

術語「傳遞」只是手段的依賴已經超過一個部分吧。請注意,關係可能會滿足3NF,同時仍然具有傳遞依賴性。然而在這種情況,爲了滿足3NF,你需要分解A,B,C與A,B和C都爲候選鍵至少有兩個關係。

+0

我認爲3NF意味着你沒有傳遞依賴。 – thed0ctor

+0

不幸的是,3NF通常用傳遞性依賴來解釋,這可能使它難於理解。國際海事組織Carlo Zaniolo對3NF的解釋更加清晰和令人滿意(儘管它完全等同於Codd's)。對於R的每一個非平凡FD,關係R是3NF iff,X→A, (a)X是R的超級鍵或 (b)A是R的關鍵屬性 – sqlvogel

+0

http://www.cs .ucla.edu /〜zaniolo /紙/ tods82b.pdf – sqlvogel

0

如果是這種依賴關係的完整列表,然後有一個transitive dependency A - >乙 - > C,這是因爲:

  • 甲 - >乙
  • 乙 - >
  • 乙 - >ç

(如果這不是依賴關係的完整列表,那麼我們不知道是否有可能爲B - > A或不是,因此w^è不知道傳遞依賴是否持有)

還有一個傳遞依賴A - >ç - > B.

是A-下的傳遞依賴,爲什麼/爲什麼不> ?

甲傳遞依賴是3個屬性之間,所以沒有。


爲了標準化相對於3NF,你需要將其分割爲2個...關係

  • A * B
  • B * C *

...要麼...

  • 甲* C
  • B * C *

...其中*表示鍵(主或替代)。