Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

referencia de una tabla a varios campos de otra

Estas en el tema de referencia de una tabla a varios campos de otra en el foro de Mysql en Foros del Web. Buenas tardes resulta que estoy confundido porque no se como hacer la referencia de una tabla a varios campos de otra, como se puede apreciar ...
  #1 (permalink)  
Antiguo 11/06/2011, 14:20
 
Fecha de Ingreso: abril-2011
Ubicación: Manizales
Mensajes: 17
Antigüedad: 13 años
Puntos: 0
Pregunta referencia de una tabla a varios campos de otra

Buenas tardes resulta que estoy confundido porque no se como hacer la referencia de una tabla a varios campos de otra, como se puede apreciar en las imagenes estoy referenciando de varias maneras los campos de dos tablas a una 3ra tabla que ocntiene varios campos de las dos anteriores como son:

Tabla personas(id, departamento_nacimiento, departamento_residencia, municipio residencia y municipio_nacimiento)

tabla departamentos(id, nombre_departamendo, cod_departamento)

tabla municipios(id, nombre_municipio, cod_municipio, fk(departamento_id))

en las 3 imagenes muestro la forma de relacionarlas pero no se cual seria la correcta o mejor planteada para mi modelo de BD ya que estoy empezando con la creacion de un sistema.

Muchas Gracias.
1. imagen relacion de la tabla municipios a todos los campos de la tabla persona por medio del id del municipio y de la fk_id_departamento por cada campo una fk



2.relacion de las tablas de forma independiente por cada campo una fk.



3. relacion de cada tabla para un campo por medio de una fk relacionandola despues por php o algo asi.

  #2 (permalink)  
Antiguo 11/06/2011, 14:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: referencia de una tabla a varios campos de otra

Bueno, por un lado, a menos que tengas un cierto tiempo en FDW, no puedes poner links o imágenes en tus post. Es por cuestiones de seguridad anti-spam, no por otra cosa, pero aparece entre las políticas de foros del web (presumo que no las leíste en detalle, no te preocupes, a mí también me pasó).

Yendo al tema, pareces tener alguna confusión respecto al tema de relaciones entre tablas y claves foráneas (foreign key). Aclaremos:
- Las FK son campos o conjuntos de campos que referencian a la clave primaria de otra tabla.
- Si la clave primaria de la tabla referida está compuesta por un único campo, la FK en la tabla secundaria deberá ser de un campo.
- Si la PK de la tabla referida tiene más de un campo, la FK debe tener la misma cantidad de campos en la tabla secundaria, del mismo tipo, y en el mismo orden en que aparecen en la tabla de origen.
- Una FK sólo puede apuntar a una PK. MySQL incluye la opción de apuntar a una clave candidata si y sólo si la misma, en su tabla, se definió con un índice UNIQUE.
- No se puede apuntar una FK a un campo que no sea clave en la tabla referida. La obtención de ese campo se hace por medio de la FK formal, la cual es sólo por claves.
- Una FK puede ser PK de su propia tabla, o ser parte de ella. En el segundo caso se indica que existe una dependencia formal entre la tabla secundaria y la primaria (la clave se hereda).
- Una tabla puede contener tantas FK como sean necesarias, pero formalmente si la PK de la tabla está formada por FKs, sólo puede haber tres FK que conformen la PK de la misma. Si hay más, hay un problema de normalización muy grave o un diseño de relaciones deficiente.

¿Se entienden estos detalles?

Postea la dirección de las imágenes, pero no intentes ponerlas como links o como IMG.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 11/06/2011, 18:24
 
Fecha de Ingreso: abril-2011
Ubicación: Manizales
Mensajes: 17
Antigüedad: 13 años
Puntos: 0
Respuesta: referencia de una tabla a varios campos de otra

Hola gnzsoloyo jejeje no sabia eso que pena, respecto a lo que dices ya te entiendo igual me gustaria que observaras las imagenes.

Muchas Gracias.
imageshack.us/photo/my-images/718/11261011.png/
imageshack.us/photo/my-images/811/98886710.png/
imageshack.us/photo/my-images/857/17241313.png/
  #4 (permalink)  
Antiguo 11/06/2011, 19:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: referencia de una tabla a varios campos de otra

Estos son tus diagramas:
Caso 1:



Caso 2:



caso 3:



En realidad, los tres diagramas tienen errores.
1) Siendo que cada entidad (departamento y municipio) ya tienen un codigo propio que los identifica, originado en algún atributo administrativo, ninguno de los dos necesita que le fabriques un ID numérico como estás haciendo. Sería suficiente con el cod_departamento y el cod_municipio.
2) El municipio sólo requiere como FK el cod_departamento, por cuanto un municipio sólo puede pertenecer a un único departamento, pero un departamento puede tener N municipios.
3) La persona no necesita el cod_departamento, porque es suficiente con el de municipio. Poner el cod_departamento en esta tabla implica redundancia innecesaria, ya que el dato se puede obtener del municipio, por tanto no es necesario ponerlo. Como el cod_municipio ya nos puede entregar el departamento con un JOIN, el dato es superfluo en la tabla persona.

¿Se entiende esto?

Resumiendo: La tabla Municipios se vincula a Departamento por la FK de despartamento, y a su vez la tabla persona se vincula con Municipio, pero no directamente con Departamento.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 11/06/2011, 19:50
 
Fecha de Ingreso: abril-2011
Ubicación: Manizales
Mensajes: 17
Antigüedad: 13 años
Puntos: 0
Respuesta: referencia de una tabla a varios campos de otra

Muchísimas gracias por tu ayuda gnzsoloyo, te explico lo del campo id como clave primaria lo que pasa es que estoy aprendiendo cakephp y ahí toca poner las claves primarias como id, antes yo las tenia por código como dices pero como no se puede todo me toco por id y el código por aparte, y gracias ahora ya tengo todo claro para organizar mi BD jejeje.

PD: el código lo sigo teniendo ahí porque en la empresa ya tienen los códigos de los departamentos y los municipios todos de dígitos o mas la verdad no recuerdo la cantidad.

Etiquetas: campos, referencia, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:37.