私は次のようにlocationsに関するデータベースを構築しようとしています:
国には、事前定義された世界の国、地域、町のリストが表示され、ユーザーが入力します。
地域はすべての場所に適用されるとは限らないため、空白の文字列が許可されます(したがって、多対多のリンクテーブル)。
これは私が思いついた最高のデザインです:
town_id
列はAUTO_INCREMENT&UNIQUEに設定されています。その後、他のテーブルで外部キー参照として使用されます。
town
列自体は、複数の場所で同じ町名を持っている可能性があるため、一意ではありません。
towns
テーブルは正しいですか?
私が尋ねる理由は、town_id
を参照として持つのは奇妙に思えるからですが、これを主キーとして含めることも使用することもできません(そうすると、重複が発生するため)?
このアプローチが正しければ、フィードバックを歓迎します。
それ(town_id)を唯一の主キーとして使用することをお勧めします(私の最初のコメントが増分と一意性について真である場合)。地域/国IDは外部キーのみである必要があります。これにより、町の名前を複製することができます。
同じ名前の2つの町を持つ行政区画はないと確信しているので、country_id、region_id、townに一意のインデックスを付けることをお勧めします。これは、そのビジネスロジックを反映します。