Database-Design

複合主鍵加上一個單獨的(代理)id 列用於外鍵引用

  • February 19, 2019

我正在嘗試建立一個關於位置的數據庫,如下所示:

  • 國家→地區→城鎮

國家將填充使用者輸入的預定義全球國家、地區和城鎮的列表。

區域可能不適用於每個位置,因此允許使用空白字元串(因此是多對多連結表)。

這是我想出的最好的設計:

IS圖

town_id列設置為 AUTO_INCREMENT & UNIQUE。然後將其用作其他表中的外鍵引用。

town列本身不是唯一的,因為您可能在多個地方具有相同的城鎮名稱。

towns表格正確嗎?

我問的原因是因為將它作為參考對我來說似乎很奇怪town_id,但是它不能被包含或用作主鍵(因為如果這樣做,它會導致重複)?

如果這種方法是正確的,我會歡迎回饋。

我建議使用它 (town_id) 作為唯一的主鍵(前提是我的第一條評論是關於增量和唯一性的),並且地區/國家 ID 應該只是外鍵。這將允許您擁有重複的城鎮名稱。

您可能想在 country_id、region_id、town 上放置一個唯一索引,因為我很確定沒有政治分區有兩個同名的城鎮,它會反映這種業務邏輯。

我相信您可以為國家/地區中的區域和參考區域以及城鎮中的參考國家創建主鍵,以便將數據標準化為 3nf。像這樣 在此處輸入圖像描述

引用自:https://dba.stackexchange.com/questions/66495