Ver Mensaje Individual
  #14 (permalink)  
Antiguo 13/07/2010, 17:55
enridp
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 19 años, 6 meses
Puntos: 11
Respuesta: Herencia de Tablas? (Que se recomienda para tablas similares?)

Cita:
Iniciado por gnzsoloyo
¿Registros diferentes para cada calle de cada ciudad?
Si, perfectamente, siempre que tengas en cuenta que debe abarcar la totalidad de la información necesaria, como por ejemplo, las alturas de todos los segmentos que lo componen, en ambas veredas, como mínimo. De lo contrario te podrán direcciones inexistentes (trata de encontrar Avenida Santa Fe 1256 en Córdoba... Queda debajo del puente, en medio del río Suquía).
SI no va a tener un mínimo de detalle necesario, es mejor implementar un mapeo desde Google que te devuelva el punto que el usuario te señale.
Si es cierto, el sistema planteado solo guarda los nombres no las alturas asique no puede controlar ese dato de por si, y es susceptible a que introduzcan mal una altura.
Pero eso ya corre por cuenta del que registra la dirección, si cuando mandas una carta por correo pones mal la direccion tambien llega mal.
Tal vez sería util para el usuario una advertencia en todo caso si se equivoca al colocar el numero pero creo que el beneficio no alcanza a cubrir el costo en ese caso.

Cita:
Iniciado por gnzsoloyo
¿Usarla solamente para las calles por el usuario?
A mi entender eso sería más sencillo con una simple consulta a GoogleMap con el nombre de la calle. Usando un HttpRequest se obtiene la información perfectamente.
Pero un HTTpRequest de google andaria muchisimo mas lento que una consulta directa a la BD, ademas de que no tengo tanto control, incluso algunos pueblos chiquitos no estan en Google.
Buscando en mi tabla calles puedo por ej. poner sinonimos o errores comunes de las calles, a veces hay nombres raros que la gente escribe mal, a veces hay calles que cambiaron de nombre y la gente la sigue llamando con el nombre viejo, etc. Tener mi propia tabla tiene miles de ventajas respecto a Google.
Solo que Google tiene informacion geografica imposible de armar para mi, asique para eso si no me queda otra me parece.

Cita:
Iniciado por gnzsoloyo
Por otro lado, si sólo invocas las direcciones de la Capital Federal tienes 2144 nombres, entre calles y avenidas. Intenta imaginar cuántas sería entre las calles y avenidas de las cinco principales ciudades, nada más.
Si, eso es lo que te comentaba que me austaba un poco, el tamaño que tendría la tabla, pero tal vez me asombro yo porque nunca trabaje con tantos datos, Facebook trabaja con 400millones de usuarios, no creo que llegue a 400millones de calles. Y el filtrado sería por localidad, la columna nombre es un indice asique supongo que filtrando la FK por localidad y usando el indice en 2144 no deberia ser un problema para la BD.
El problema es cargar esos 2144 nombres... pero supongo las municipalidades tienen una base de datos con las calles que podria pedir.


Cita:
Iniciado por gnzsoloyo
Personalmente me parece poco funcional si no es en localidades pequeñas, o a través de un prefiltrado.
En principio si es para localidades pequeñas, pero la idea es que sea escalable.
Como implementarias el sistema entonces?
La idea de las direcciones es la siguiente:
1) Informar al usuario la direccion, o direcciones si tiene varias de un comercio, profesional, etc.
2) Permitir que un usuario busque comercios por dirección, esto incluye que ponga una calle, una calle y un numero, o 2 calles q se intersectan.



Cita:
Iniciado por gnzsoloyo
¿Latitud y Longitud irrelevantes?
SI. Porque cuando aplicas a un campo geometrico que guarda un POINT las funciones X() e Y(), te devuelve esos mismos valores, así que en realidad los estás guardando dos veces. Y cualquier cosa que guardes dos veces, también tienes que mantenerla dos veces...
Si, fue intencional la doble entrada, porque quiero probar si me conviene tener POINT o el valor decimal y listo.


Cita:
Iniciado por gnzsoloyo
¿POINT o GEOMETRY?
GEOMETRY te permite poner cualquier cosa adentro, no solamente puntos, y en cuanto a uso en disco no hacen mucha diferencia en el tipo de datos..
Por otro lado, si no usas indices SPATIAL, en realidad se desperdicia bastante la capacidad otorgada a los GEOMETRY.
Si eso lei, por eso no estoy seguro bien que hacer, la otra alternativa era crear la tabla esa como MyISAM, pero necesito las FK, podria controlarlas a mano en esa tabla, supongo es una opcion si usar POINT se vuelve trascendental.
La otra opción que pensé es que podria crear una COPIA de la tabla en MyISAM, asi tendria dos tablas iguales una con InnoDB que controla la FK y la otra que le copia todo a la de InnoDB pero esta en MyISAM para hacer las busquedas ahi.
Es muy loca la idea?
De todas formas los indices SPATIAL aceleran las busquedas es cierto, pero tener un valor POINT puede resultar util mas alla de las busquedas, ya que permite por ejemplo hacer calculos de distancias entre puntos, o reconocer si un punto esta dentro de una zona, etc. las funciones siguen andando...



Cita:
Iniciado por gnzsoloyo
¿Hacer un "scan" a google maps?
Si encuentras el modo...
Google no te da acceso a la base de datos, solamente responde consultas puntuales, y en todo caso puede que logres ir construyendo tu inteligencia de negocios por medio de sucesivas consultas, pero no vas a poder escanear las tablas...
A ellos les lleva tiempo crear los mapas. Tampoco te regalan el paquete completo.
La verdad no tengo ni idea, fue solo algo que se me cruzó, me imaginé que si tenemos los nombres de las calles podemos recorrer cada calle con todas las alturas posibles mediante consultas a Google y ver que coordenadas nos da en cada caso.
Pero sea como sea, Google tiene la ventaja que para este caso si buscaría mas rapido que mi tabla, incluso aunque se tenga que hacer otro HTTPRequest.