У меня есть таблица, которая содержит местоположение всех географических местоположений в мире и их взаимоотношения.Какую иерархическую модель мне следует использовать? Адяжентность, Вложенный или Перечислимый?
Вот пример, показывающий иерархию. Вы увидите, что данные хранятся как все три
- Перенумерованного Путь
- списка смежности
- Nested Set
Данные, очевидно, никогда не меняется либо. Ниже приведен пример прямых предков места Брайтона в Англии, который имеет WOEID из 13911.
Таблица: geoplanet_places
(Имеет 5.6million строк) Большие изображения: http://tinyurl.com/68q4ndx
я тогда еще одна таблица называется entities
. В этой таблице хранятся мои объекты, которые я хотел бы сопоставить с географическим положением. Я храню некоторую базовую информацию, но самое главное, я храню woeid
, который является внешним ключом от geoplanet_places
.
В конечном итоге таблица entities
будет содержать несколько тысяч объектов. И я хотел бы иметь возможность вернуть полное дерево всех узлов, которые содержат объекты.
Я планирую создать что-то, что облегчит фильтрацию и поиск объектов на основе их географического местоположения и сможет узнать, сколько объектов можно найти на этом конкретном узле.
Так что, если у меня есть только один объект в моем entities
столе, я мог бы что-то вроде этого
`Земля (1)
Соединенное Королевство (1)
Англия (1)
East Sussex (1)
Брайтон-Сити (1)
Brighton (1) `
Позволяет затем сказать, что у меня есть другой объект, который находится в Девон, то это было бы показать что-то вроде:
Земли (2)
Соединенное интегрированным (2)
Англия (2)
Девон (1)
Восточный Суссекс (1) ...и т. д.
The (Counts), который скажет, сколько объектов «внутри» каждого географического местоположения не обязательно должно быть живым. Я могу жить с созданием моего объекта каждый час и кэшированием его.
Цель, чтобы быть в состоянии создать интерфейс, который могли бы начать показывать только те страны, которые субъекты ..
Так как
Argentina (1021)
, Chile (291)
, ...
, United States (32,103)
, United Kingdom (12,338)
Затем пользователь нажимает на местоположение, такое как United Kindom, и затем будет предоставлено все непосредственные дочерние узлы, которые являются потомками Соединенного Королевства и имеют в них сущность.
Если в Объединенном Kindgdom есть 32 округа, но только 23 из них в конце концов, когда вы сверляете, имеют в них сущности, то я не хочу отображать другие 9. Это только местоположения.
Этот сайт метко демонстрирует функциональность, что я хочу добиться: http://www.homeaway.com/vacation-rentals/europe/r5
Как вы рекомендуете, что я управлять такой структурой данных?
Вещи, которые я использую.
- PHP
- MySQL
- Solr
Я планирую иметь Сверло спады быть как можно быстрее. Я хочу создать интерфейс AJAX, который будет казаться бесполезным для поиска.
Мне также было бы интересно узнать, в каких столбцах вы бы порекомендовали индексирование.
Это отличный вопрос! –