我在開發具有以下標題的數據庫的過程:數據庫結構查詢
地區,城市,郊區
每個標題將有大約4000行,所以我猜,如果我會更好使用一個單獨的表格而不是一個有許多列的表格。
什麼是最好的方式來設置區域ID城市ID和郊區ID?爲什麼當我想選擇特定區域信息?
我在開發具有以下標題的數據庫的過程:數據庫結構查詢
地區,城市,郊區
每個標題將有大約4000行,所以我猜,如果我會更好使用一個單獨的表格而不是一個有許多列的表格。
什麼是最好的方式來設置區域ID城市ID和郊區ID?爲什麼當我想選擇特定區域信息?
雖然有幾種方法,你可以將這些表格模型,這裏是設置了一個辦法:
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
我假設城市是地區的一部分,郊區是城市的一部分。如果是這樣,你可能需要更多的表格。
您的區域的一個表格,其中包含列ID(自動遞增)的所有信息。
爲您的城市提供了一個表格,其中包含列ID(自動遞增)的所有信息。
您的郊區的一個表格,其中包含列ID(自動遞增)的所有信息。
然後,將您的城市與您的地區相關聯的一張表。其中一列是ID(自動增加),一個是城市(您的城市表中的城市ID將從該城市轉到該城市),另一列是區域(您的區域表中的區域ID將從該城市轉到該城市)。這讓你知道哪些城市屬於哪個地區。
接下來,將您的郊區與您的城市相關聯的一張表。一列是ID(自動增量),一列是區域(再次來自您的區域表),另一列是郊區(來自您的郊區表)。這讓你知道哪些郊區屬於哪個城市。
通過此設置,您可以使用INNER JOIN獲取您的城市或郊區,並且您將擁有郊區數據和更一般類別的數據。
希望這會有所幫助,我一直在開發關係Web應用很長一段時間,並且發現我的上述方法工作得很好。
如何地區,城市和郊區相互關聯? – Taryn 2012-07-23 21:56:53
@bluefeet一個地區是奧塔哥南地區,有一個叫做\t的城市,但尼丁擁有一個名爲Pine Hill的郊區 – 2012-07-23 21:59:54