我有一个表格,其中包含世界上所有地理位置的位置及其关系。我应该使用哪种分层模型?邻接,嵌套或枚举?
下面是一个显示层次结构的示例。您将看到数据实际存储为所有三个
- 枚举路径
- 邻接表
- 嵌套集合
的数据显然是永远不会改变无论是。下面是一个具有13911.
表一WOEID在英国布赖顿的位置直接祖先的例子:geoplanet_places
(已5.6million行) 大图:http://tinyurl.com/68q4ndx
我再呼吁另一个表entities
。此表存储我想要映射到地理位置的项目。我存储了一些基本信息,但最重要的是我存储woeid
这是geoplanet_places
的外键。
最终entities
表将包含数千个实体。我想要一种能够返回包含实体的所有节点的完整树的方式。
我打算创建一些内容,以便根据地理位置过滤和搜索实体,并能够发现在该特定节点上可以找到多少实体。
所以,如果我只有一个实体在我entities
表,我可能有这样的事情
'地球(1)
英国(1)
英格兰(1)
东萨塞克斯郡(1)
布赖顿市(1)
布莱顿(1)`
让我们再有人说我这是位于德文郡的另一个实体,那么它会显示类似:
地球(2)
美国Kingom(2)
英格兰(2)
德文(1)
东萨西克斯郡(1) ...等等
这将说明有多少实体是在每个地理位置“内部”不需要是活的(Counts)。我可以每小时生成一次对象并缓存它。
的目的,就是为了能够创造可能开始时只显示其有实体的国家的接口..
所以像
Argentina (1021)
,Chile (291)
,...
,United States (32,103)
,United Kingdom (12,338)
然后,用户将点击一个位置,如United Kindom,然后将被赋予所有直属的子节点,这些节点是英国的后代,并且在其中有一个实体。
如果United Kindgdom有32个县,但最终只有23个县在深入了解实体时存在,那么我不想显示其他9个。它只是位置。
本网站恰如其分地表明,我希望实现的功能: http://www.homeaway.com/vacation-rentals/europe/r5
你怎么建议我管理这样一个数据结构?
我正在使用的东西。
- PHP
- MySQL的
- Solr的
我计划具有钻取是尽可能地快。我想创建一个AJAX界面,这对于搜索来说是无可挑剔的。
我也很想知道你会建议索引哪些列。
这是一个很好的问题! – 2012-01-25 21:31:39