0

對於我正在做的評估任務,實體相冊具有屬性also_bought,這是一個自引用屬性。然而,這一個屬性對於任何一個專輯都有多個條目 - 因爲同時提出的建議很少只有一個建議 - 因此,在標準化方面有點問題。我不確定它是否通過1NF。自我參考

需要明確的是,整個實體的集合爲

專輯(album_id,標題,播放時間,類型,上映時間,價格,also_bought)

+0

你的意思是「1NF」的定義是什麼? (請參閱我的答案中的鏈接。)「多個條目」是什麼意思?那also_bought值是album_ids列表?什麼是你的列的類型? – philipxy

回答

0

「也買」的物品應存放在單獨的表,就像是。

AlsoBought (table) 
    album_id 
    also_bought_album_id 

然後配置來自兩列的外鍵以引用Album.album_id。

0

你的意思是專輯是一個「自引用」,因爲它從一個列表FK(外鍵)到另一個在同一個表? (當列表的子列值必須出現在其他地方時,FK約束成立。)如果您的意思是also_bought的類型是album_id的列表,則從前者到後者都不存在FK,因爲前者的值(列表ID)不是後者的值(ID)。有一個限制提醒你FK。

無論如何,規範化是對一個表進行的,並且不依賴於FK。

但是,只要你是"normalizing to 1NF" eliminating "non-atomic columns"你必須先決定你的「表」「列」包含什麼。如果你爲一行中的列確定一個單元格包含「許多值」,那麼你沒有關係表,你必須得出一個。最簡單的方法是假定一組值列以獲得關係,然後按照standard rules for elimination of too-complex column types