2012-07-23 126 views
0

我在开发具有以下标题的数据库的过程:数据库结构查询

地区,城市,郊区

每个标题将有大约4000行,所以我猜,如果我会更好使用一个单独的表格而不是一个有许多列的表格。

什么是最好的方式来设置区域ID城市ID和郊区ID?为什么当我想选择特定区域信息?

+1

如何地区,城市和郊区相互关联? – Taryn 2012-07-23 21:56:53

+0

@bluefeet一个地区是奥塔哥南地区,有一个叫做\t的城市,但尼丁拥有一个名为Pine Hill的郊区 – 2012-07-23 21:59:54

回答

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 
0

我假设城市是地区的一部分,郊区是城市的一部分。如果是这样,你可能需要更多的表格。

您的区域的一个表格,其中包含列ID(自动递增)的所有信息。

为您的城市提供了一个表格,其中包含列ID(自动递增)的所有信息。

您的郊区的一个表格,其中包含列ID(自动递增)的所有信息。

然后,将您的城市与您的地区相关联的一张表。其中一列是ID(自动增加),一个是城市(您的城市表中的城市ID将从该城市转到该城市),另一列是区域(您的区域表中的区域ID将从该城市转到该城市)。这让你知道哪些城市属于哪个地区。

接下来,将您的郊区与您的城市相关联的一张表。一列是ID(自动增量),一列是区域(再次来自您的区域表),另一列是郊区(来自您的郊区表)。这让你知道哪些郊区属于哪个城市。

通过此设置,您可以使用INNER JOIN获取您的城市或郊区,并且您将拥有郊区数据和更一般类别的数据。

希望这会有所帮助,我一直在开发关系Web应用很长一段时间,并且发现我的上述方法工作得很好。