我有一张表,其中包含世界上所有地理位置的位置及其关系。
这是一个显示层次结构的示例。您将看到数据实际上存储为所有三个
- 枚举路径
- 邻接表
- 嵌套集
数据显然也永远不会改变。以下是英格兰布莱顿地区的直系祖先的示例,其 woeid 为 13911。
表:(有 560 万行)
大图:httpgeoplanet_places
: //tinyurl.com/68q4ndx
然后我有另一个名为entities
. 此表存储我想映射到地理位置的项目。我存储了一些基本信息,但最重要的woeid
是我存储了来自geoplanet_places
.
最终该entities
表将包含数千个实体。而且我想要一种能够返回包含实体的所有节点的完整树的方法。
我计划创建一些东西来促进基于地理位置的实体的过滤和搜索,并能够发现在该特定节点上可以找到多少实体。
所以如果我的表中只有一个实体entities
,我可能会有这样的东西
`地球 (1)
英国 (1)
英格兰 (1)
东萨塞克斯 (1)
布莱顿霍夫城 (1)
布莱顿 (1)`
然后假设我有另一个位于德文郡的实体,然后它将显示如下内容:
地球 (2)
联合王国 (2)
英格兰 (2)
德文 (1)
东萨塞克斯 (1) ... 等
将说明每个地理位置“内部”有多少实体的(计数)不需要是活的。我可以忍受每小时生成我的对象并缓存它。
目的是能够创建一个界面,该界面可能一开始只显示具有实体的国家/地区。
所以喜欢
Argentina (1021)
, Chile (291)
, ...
, United States (32,103)
,United Kingdom (12,338)
然后,用户将单击一个位置,例如 United Kingdom,然后将获得所有直接子节点,这些子节点是 United Kingdom 的后代,并且其中有一个实体。
如果英国有 32 个县,但最终只有 23 个县有实体存储在其中,那么我不想显示其他 9 个。它只是位置。
该站点恰当地展示了我希望实现的功能:http:
//www.homeaway.com/vacation-rentals/europe/r5
你建议我如何管理这样的数据结构?
我正在使用的东西。
- PHP
- MySQL
- 索尔
我计划让钻取尽可能快。我想创建一个 AJAX 界面,搜索时会无缝。
我也很想知道您建议在哪些列上建立索引。