2015-12-04 79 views
0

我只是想知道這樣一個簡單示例的最佳實現是什麼。表之間的多對多關係 - 如何在SQL中建模

如果我下面有2個表格,並且一個單位有多個升級是可變量,我正在考慮以CSV格式保存一個升級ID列表,然後我加載該單元並從列表中提取ID升級ID。

我只是覺得有可能有​​更好的方法來實現這個,因爲我已經工作了很長一段時間,我不確定這是最佳實踐還是我可能無法預見的任何問題。

單位 { ID,姓名,升級 }

升級 { ID,名稱,描述 }

+2

這就是所謂的正常化。第一種方法(逗號分隔值)違反1範式(列中只有原子數據) – lad2025

+2

relationshsip是一對多還是多對多?基本上可以將一個升級與多個設備關聯嗎?對於一對多,你需要在升級表中使用外鍵。對於多對多,你需要一個單獨的表格,將單元和升級映射到對方。 – juharr

+0

我聽說過關於這本書「數據庫設計僅僅是人類」的好消息。 –

回答

5

這聽起來像一個多一對多的關係:一個單位可以有許多升級,並可以在許多單位上設置升級。

您可以創建一箇中間表像UnitUpgrade:

Unit  UnitUpgrade  
Id --- UnitId   Upgrade 
Name  UpgradeId --- Id 
         Name 
         Description 
+0

是的,多個單位也可以有相同的升級。我沒有想到一個很有意義的中間表,我在一段時間內沒有使用過SQL,所以不確定最好的方法,謝謝。 – Prisoner42

相關問題