Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/09/2007, 13:34
Avatar de MACGREGOR
MACGREGOR
 
Fecha de Ingreso: enero-2005
Mensajes: 89
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: Ayudenme En Esto Amigos

Hola.

Kelpie te ha dado una solución muy buena.

No se si te has fijado pero te ha cambiado los nombres de las ciudades por su código o id en la tabla "distancias".

Si no lo haces así estás duplicando información y creando la posiblilidad inconsistencias de datos. (además de gastando un espacio en disco mucho mayor al guardar un string podiendo guardar un número).
Hay quien dirá que los id's se están duplicando en la tabla "ciudad" y "distancias" pero una clave foránea no se considera duplicidad de datos.

El hecho de utilizar los identificadores de la tabla en lugar de los nombres es lo correcto, ya que lo ideal es que las claves foráneas sean numéricas.
(a la hora de hacer una join entre las dos tablas es infinitamente más rápido comparar dos números que dos cadenas de carácteres).

Respecto a la clave primaria de la tabla "distancias" haría siempre una clave compuesta por los identificadores de las ciudades o los identificadores más la distancia. Esto dependerá de lo que quieras permitir en la DDBB.

¿La distancia entre dos ciudades será siempre la misma?
- entonces los 2 identificadores de las ciudades como clave primaria.

¿existe la posibilidad de que halla 2 o más rutas que comuniquen las 2 ciudades?
- entonces clave primaria los 3 campos. (aunque esto complicaría el esquema de tu DDBB y tendrías la necesidad de crear alguna otra tabla).

Espero que te aclare algún concepto.

Un saludo.

Última edición por MACGREGOR; 14/09/2007 a las 13:39