次の見出しを持つデータベースを開発中です。
地域、都市、郊外
各見出しには約 4000 行あるため、多くの列を持つ 1 つのテーブルではなく、別のテーブルを使用する方がよいと思います。
Region id City id と Suburb id を設定する最良の方法は何ですか? 特定の地域の情報を選択したい場合はどうすればよいですか?
次の見出しを持つデータベースを開発中です。
地域、都市、郊外
各見出しには約 4000 行あるため、多くの列を持つ 1 つのテーブルではなく、別のテーブルを使用する方がよいと思います。
Region id City id と Suburb id を設定する最良の方法は何ですか? 特定の地域の情報を選択したい場合はどうすればよいですか?
これらのテーブルをモデル化する方法はいくつかありますが、設定する方法の 1 つを次に示します。
Region
id int, -- PK
name varchar(50)
City
id int, -- PK
region_id int, -- FK
name varchar(50)
Suburb
id int, -- PK
city_id int, -- FK
name varchar(50)
次に、データが必要な場合はJOIN
、テーブルを
SELECT r.name as RegionName
, c.name as CityName
, s.name as SuburbName
FROM Region r
INNER JOIN City c
ON r.id = c.region_id
INNER JOIN Suburb s
ON c.id = s.city_id
都市は地域の一部であり、郊外は都市の一部であると想定しています。その場合は、さらにテーブルが必要になる場合があります。
地域の 1 つのテーブルには、列 ID (自動インクリメント) を含むすべての情報が含まれています。
都市の 1 つのテーブルには、列 ID (自動インクリメント) を持つ都市のすべての情報が含まれています。
suburbs用の 1 つのテーブル。これには、列 ID (自動インクリメント) を含むすべての情報が含まれています。
そして、都市と地域を関連付ける 1 つのテーブル。1 つの列は ID (自動インクリメント)、1 つは都市 (都市テーブルの都市 ID が入る場所)、もう 1 つは地域 (地域テーブルの地域 ID が入る場所) です。これにより、どの都市がどの地域に属しているかがわかります。
次に、郊外を都市に関連付ける 1 つのテーブル。1 つの列は ID (自動インクリメント)、1 つは地域 (再び地域テーブルから)、もう 1 つは郊外 (郊外テーブルから) です。これにより、どの郊外がどの都市に属しているかがわかります。
このセットアップでは、INNER JOIN を使用して都市または郊外を取得でき、郊外のデータとより一般的なカテゴリのデータの両方を取得できます。
私は長い間リレーショナル Web アプリケーションを開発してきましたが、前述の方法が非常にうまく機能することがわかりました。