Database-Design
複合主鍵加上一個單獨的(代理)id 列用於外鍵引用
我正在嘗試建立一個關於位置的數據庫,如下所示:
- 國家→地區→城鎮
國家將填充使用者輸入的預定義全球國家、地區和城鎮的列表。
區域可能不適用於每個位置,因此允許使用空白字元串(因此是多對多連結表)。
這是我想出的最好的設計:
該
town_id
列設置為 AUTO_INCREMENT & UNIQUE。然後將其用作其他表中的外鍵引用。該
town
列本身不是唯一的,因為您可能在多個地方具有相同的城鎮名稱。
towns
表格正確嗎?我問的原因是因為將它作為參考對我來說似乎很奇怪
town_id
,但是它不能被包含或用作主鍵(因為如果這樣做,它會導致重複)?如果這種方法是正確的,我會歡迎回饋。
我建議使用它 (town_id) 作為唯一的主鍵(前提是我的第一條評論是關於增量和唯一性的),並且地區/國家 ID 應該只是外鍵。這將允許您擁有重複的城鎮名稱。
您可能想在 country_id、region_id、town 上放置一個唯一索引,因為我很確定沒有政治分區有兩個同名的城鎮,它會反映這種業務邏輯。
我相信您可以為國家/地區中的區域和參考區域以及城鎮中的參考國家創建主鍵,以便將數據標準化為 3nf。像這樣