Tengo una tabla que contiene una ubicación de todas las ubicaciones geográficas del mundo y sus relaciones.¿Qué modelo jerárquico debo usar? Adyacencia, anidado o enumerado?
Aquí hay un ejemplo que muestra la jerarquía. Verá que los datos se almacenan realmente ya que los tres
- Ruta Enumerados
- lista de adyacencia
- conjuntos anidados
Los datos, obviamente, nunca cambia tampoco. A continuación se muestra un ejemplo de los antepasados directos de la ubicación de Brighton en Inglaterra que tiene un WOEID de 13911.
Tabla: geoplanet_places
(tiene 5.6million filas) Ampliación de imagen: http://tinyurl.com/68q4ndx
que luego tener otra tabla llamada entities
. Esta tabla almacena mis artículos que me gustaría asignar a una ubicación geográfica. Guardo algo de información básica, pero lo más importante es que almaceno el woeid
que es una clave foránea de geoplanet_places
.
Eventualmente la tabla entities
contendrá varios miles de entidades. Y me gustaría una forma de poder devolver un árbol completo de todos los nodos que contienen entidades.
Planeo crear algo para facilitar el filtrado y la búsqueda de entidades en función de su ubicación geográfica y ser capaz de descubrir cuántas entidades se pueden encontrar en ese nodo en particular.
Así que si sólo tengo una entidad en mi mesa entities
, podría tener algo como esto
`Tierra (1)
Reino Unido (1)
Inglaterra (1)
East Sussex (1)
Brighton City (1)
Brighton (1) `
Lets luego decir que no tengo otra entidad que se encuentra en Devon, a continuación, se mostraría algo como:
Tierra (2)
Estados Kingom (2)
Inglaterra (2)
Devon (1)
East Sussex (1) ...etc.
No es necesario publicar el (conteos) que indicará cuántas entidades están "adentro" de cada ubicación geográfica. Puedo vivir generando mi objeto cada hora y almacenarlo en la memoria caché.
El objetivo, es ser capaz de crear una interfaz que podría comenzar mostrando sólo los países que tienen las entidades ..
Así como
Argentina (1021)
, Chile (291)
, ...
, United States (32,103)
, United Kingdom (12,338)
Luego, el usuario hará clic en una ubicación, como United Kindom, y luego recibirá todos los nodos secundarios inmediatos que son descendientes de Reino Unido Y tienen una entidad en ellos.
Si hay 32 condados en United Kindgdom, pero solo 23 de ellos eventualmente cuando desgloses tienen entidades almacenadas en ellos, entonces no quiero mostrar los otros 9. Solo son ubicaciones.
Este sitio acertadamente demuestra la funcionalidad que se desea lograr: http://www.homeaway.com/vacation-rentals/europe/r5
Como recomiendan que manejo una estructura de datos?
Cosas que estoy usando.
- PHP MySQL
- Solr
I Plan de tener los niveles de detalle efectuarse tan pronto como sea posible. Quiero crear una interfaz AJAX que será inmejorable para buscar.
También me gustaría saber en qué columnas recomendaría indexar.
¡Esta es una gran pregunta! –