私は世界のすべての地理的な場所の場所とその関係を含むテーブルを持っています。どの階層モデルを使用しますか?隣接、ネストまたは列挙?
階層を示す例です。あなたは、データが実際に
データは明らかにどちらか変化しない3つのすべての
- 列挙パス
- 隣接リストとして格納されていることがわかります。 (5.6million行を持つ)大画像
geoplanet_places
:http://tinyurl.com/68q4ndx私はその後、別のテーブルと呼ばれている以下は13911.
表のWOEIDを持っている場所イギリスのブライトンの直接の祖先の一例です
entities
。このテーブルには、地理的な場所にマップしたいアイテムが格納されています。私は基本的な情報をいくつか保存していますが、最も重要なのはgeoplanet_places
からの外来キーであるwoeid
です。最終的に
entities
テーブルには数千のエンティティが含まれます。エンティティを含むすべてのノードの完全なツリーを返すことができるようにしたいと思います。地理的な場所に基づいてエンティティのフィルタリングと検索を容易にし、その特定のノードで検出できるエンティティの数を検出できるようにする予定です。
私は私の
entities
テーブル内の1つのエンティティを持っているのであれば、私はこの`地球(1)
イギリス(1)
イングランド(1)のようなものを持っているかもしれません
イーストサセックス(1)
ブライトンシティ(1)
ブライトン(1) `
私はデヴォンに位置している別のエンティティを持っていることを言って、その後、それはのようなものを示すだろうことができます:
地球(2)
ユナイテッドKingom(2)
イングランド(2)
デボン(1)(1) ...多くの企業がそれぞれの地理的位置の「内部」であるかと言うだろうなど
(カウント)がライブである必要はありません。毎時間私のオブジェクトを生成してキャッシングすることができます。
目的は..エンティティを持っている唯一の国を示す出始めるかもしれないインターフェイスを作成できるようにすることです
のようなので、Argentina (1021)
、Chile (291)
、...
、United States (32,103)
、United Kingdom (12,338)
次に、ユナイテッドキンドムなどの場所をクリックすると、英国の子孫であるエンティティを持つすべての直接の子ノードが与えられます。
United Kindgdomには32の郡がありますが、ドリルダウンするとそのうち23門にエンティティが格納されていれば、残りの9桁は表示したくありません。
このサイトでは、適切に私が実現したい機能を示しています http://www.homeaway.com/vacation-rentals/europe/r5
あなたは、私がこのようなデータ構造を管理することをお勧めするにはどうすればよいですか?
私が使用しているもの
- PHP
- MySQLの
- Solrの
私はドリルダウンが可能な限り迅速であることを計画。私は検索のために一見無くなるAJAXインターフェイスを作成したい。
また、インデックス作成をお勧めする列を知りたい場合もあります。
これは大きな質問です。 –