数据库结构查询

时间:2012-07-23 21:53:07

标签: data-modeling

我正在开发一个包含以下标题的数据库:

地区,城市,郊区

每个标题都有大约4000行,所以我猜我用一个单独的表而不是一个有很多列的表会更好。

设置区域ID城市ID和郊区ID的最佳方法是什么?当我想选择特定地区的信息时?

2 个答案:

答案 0 :(得分: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 :(得分:0)

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

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

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

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

然后,一张表将您的城市与您所在的地区联系起来。一列是ID(自动递增),一列是城市(城市表中的城市ID),一个是区域(区域ID中的区域ID)。这可以让您知道哪些城市属于哪个区域。

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

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

希望这有帮助,我一直在开发关系型Web应用程序很长一段时间,并且发现我的上述方法运行良好。