数据库中的分层位置数据

时间:2018-01-10 09:36:08

标签: sql database location relational-database hierarchical-data

我想要与某个位置相关的数据集(例如“人数”)。这些地点的形式简单: 大陆&gt;国家&gt; <地区>城市

我想创建一个看起来像这样的表:

ID | location_ID | num_people | year
1  | 1           | 10         | 2000
2  | 2           | 10         | 2000
3  | 2           | 10         | 2001
4  | 3           | 10         | 2000

这里location_ID指的是一个城市(通常也可以是地区)。

现在:如何保存位置数据。我可以使用一个adjecency列表,但这会使它变得相当慢,因为你必须使用几个内连接。

一些注意事项:

  1. 人数可以链接到城市,地区甚至国家
  2. 我有数据的位置数限制为最多几百到一千)
  3. 我可能会使用postgreSQL数据库
  4. 大陆名称不会更改,通常国家/地区名称和城市名称也不会更改。这使它更容易。但是,我确实希望数据是分层的,以便我可以根据数据的可用性将数据链接到国家,地区或城市。
  5. 如何最好地处理一个国家,例如俄罗斯是两大洲(亚洲和欧洲)的一部分?
  6. 我想知道最好的选择是什么。有没有人对此有所了解?

1 个答案:

答案 0 :(得分:1)

根据给定的要求,如果需要避免M-M关系,我可能会使用链接表创建city-&gt; region-&gt; country-&gt;大陆的简单表格层次结构。然后将实际人口数据保存到最小的实体中,在这种情况下是城市。然后为了加快速度,我可能会为我感兴趣的每个级别创建视图,并添加增加效率所需的索引。

这只是一种可能的方法,在阅读你的帖子后,这是我脑海中的第一件事。