我想設計一些可以讓用戶將列表放在一起的商品,比如雜貨商品。如果每個用戶可以有多個列表(即不是一個設定的數量),這些列表都有可變數量的項目(同樣,沒有設置),而有些項目出現在幾個不同的列表,我如何創建一個數據庫沒有可怕的多餘?數據庫設計爲未知數量的列表和每個列表上的項目數量可變?
我對這類問題完全陌生,以前沒有把任何複雜的數據庫放在一起,也不知道從哪裏開始。這是我想出了作爲一個例子,但我懷疑這是做事的正確方法:
任何幫助或想法,將不勝感激!
我想設計一些可以讓用戶將列表放在一起的商品,比如雜貨商品。如果每個用戶可以有多個列表(即不是一個設定的數量),這些列表都有可變數量的項目(同樣,沒有設置),而有些項目出現在幾個不同的列表,我如何創建一個數據庫沒有可怕的多餘?數據庫設計爲未知數量的列表和每個列表上的項目數量可變?
我對這類問題完全陌生,以前沒有把任何複雜的數據庫放在一起,也不知道從哪裏開始。這是我想出了作爲一個例子,但我懷疑這是做事的正確方法:
任何幫助或想法,將不勝感激!
看起來你需要一些與此類似:
列表是私人用戶,但一個項目可以在多個列表中共享:
我已經使用識別USER和列表之間關係的圖中的上方,在「下游」的表,其產生更「自然」的鍵:
設計中使用非識別用戶和LIST(生產「苗條」鍵)之間的關係是這樣的:
謝謝您還添加了一個插圖,使其更清晰!我相信你的LIST_ITEM表與我在問題本身發佈的LINK_TABLE的作用相同。 – Chris
@Chris True,但我相信LIST_ITEM是一個更好的名稱 - 如果你有更多需要連接的表,那麼他們不能將它們的鏈接表命名爲「LINK_TABLE」。另外,我沒有在LIST_ITEM中使用代理PK,因爲在這種特殊情況下它是不必要的。 –
您可以創建join table LIST_LINK_ITEM
表之間有三個
她的主鍵是:三個組成主鍵
你提出的解決方案是好的。這裏沒有'可怕的冗餘'。 – Randy
哦,好的。很高興聽你這樣說。在這種情況下,出於好奇開放替代品:-)。 – Chris