我正在練習以一組函數依賴和輸出候選鍵爲輸入。有沒有算法,以及如何在這種情況下沒有基於Web的實現,我可以輸入我的FD和作爲輸出獲得超級密鑰/候選鍵列表?找到給定FD的候選鍵的方法:s?
我練什麼我發現這裏的SO和合適的問題是 how to find the highest normal form for a given relation 這裏提到的函數依賴是
B-「G
BI-> CD
EH-> AG
G-> DE
請檢查我是否正在做這件事t當我嘗試發現候選鍵是BFHI時:
FD B-> G可以重寫爲ABCDEFHI-> ABCDEFGHI,因此ABCDEFHI是一個超鍵。 FD BI-> CD可以改寫爲ABEFGHI-> ABCDEFGHI,因此ABEFGHI是一個超級鍵。 FD EH-> AG可以改寫爲BCDEEFHI-> ABCDEFGHI,因此BCDEEFHI是一個超級鍵。 FD G-> DE可以改寫爲ABCFGHI-> ABCDEFGHI,因此ABCFGHI是一個超級鍵。
在我們的超級跑車中,BFHI是每一個。因此,BFHI是候選關鍵字,它不能被進一步減少,從檢查中可以看出(?)
我推斷這是正確的嗎?
有增廣算法可以處理,如果它的工作原理另外一個問題, Database extraneous attributes and decomposition
這裏,FD:s爲
A-> BCD
BC-> DE
B-> D
D-> A
這裏FB A-> BCD可以寫爲AEF-> ABCDEF,因此AEF是一個超級鍵。 FD BC-> DE可以重寫爲ABCF-> ABCDEF,因此ABCF是超級密鑰。 FD B-> D可以重寫爲ABCEF-> ABCDEF,因此ABCEF是一個超級鍵。 FD D-> A可以重寫爲BCDEF-> ABCDEF,因此BCDEF是超級密鑰。對於所有超級鍵,F是每個超級鍵中唯一的成員,因此F是唯一的候選鍵。
這是行不通的?
感謝您的任何答案/評論
「怎麼會在這樣的情況下,沒有基於網絡的實現」 - 因爲你還沒有建立一個呢! –
是的,有阿姆斯特朗的公理,但這不是一種方法。它只是說明可以用FD做什麼。我正在尋找的方法,而不是定義/公理。我正在用增強算法的另一個應用程序更新這個問題,以查看它是否通用。非常感謝您的評論。 –