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

Relación entre tablas

Estas en el tema de Relación entre tablas en el foro de Bases de Datos General en Foros del Web. Hola a todos, Tengo una tabla A y una tabla B. Desde la tabla A existen dos relaciones 1 a Muchos con la tabla B, ...
  #1 (permalink)  
Antiguo 04/07/2012, 13:51
 
Fecha de Ingreso: marzo-2005
Mensajes: 309
Antigüedad: 19 años, 8 meses
Puntos: 1
Relación entre tablas

Hola a todos,

Tengo una tabla A y una tabla B.

Desde la tabla A existen dos relaciones 1 a Muchos con la tabla B, esto es porque en la tabla B tengo dos campos Foreign Key que hacen referencia a la tabla A.

Mi pregunta es, ¿Es correcto que una tabla tenga dos relaciones con otra?

Muchas gracias desde ya.

Saludos.
  #2 (permalink)  
Antiguo 04/07/2012, 14:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Relación entre tablas

Técnicamente es posible, pero sería necesario saber cuáles son las entidades y cuál la relación, para saber si no estás confundiendo una relación N:N que tiene restricciones de modelado, con una 1:N.
Supongamos que sea una tabla de cambio de mercadería: En ese caso, la tabla tendrá dos relaciones de FK con Producto; una para el producto devuelto, y otra para el producto entregado por cambio.
Pero si son relaciones de tipo familiar, por ejemplo, no es correcto. No puedes crearle a una persona dos FK, una para el cónyuge y otra para un hijo, porque no peudes definir a priori que sólo tendrá esas relaciones.

¿Se entiende la distinción?
__________________
¿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 04/07/2012, 15:07
 
Fecha de Ingreso: marzo-2005
Mensajes: 309
Antigüedad: 19 años, 8 meses
Puntos: 1
Re: Relación entre tablas

Hola,

Muchas gracias por tu respuesta.

Verás, tengo una tabla llamada generales en la que defino diferentes 'cosas' como:

Paises
Ciudades
Estados
Status
Tipos de Documentos

Y otra tabla llamada detalles_generales en la que defino los detalles de generales, como por ejemplo:

1 Argentina
2 Colombia
3 Venezuela
4 Buenos Aires
5 Córdoba
6 Bogotá
7 Caracas
8 Activo
9 Inactivo

Entonces, por ejemplo, si tengo una tabla personas y en la misma tengo campos como:

nombre
apellido
fecha_nac
pais_fk
ciudad_fk
estado_fk
status_fk

Esto significa que la tabla detalles_generales tiene 4 relaciones 1:N con la tabla personas.

De acuerdo a tu respuesta, me parece que este diseño que tengo está bien, igual quería saber tu opinión al respecto, pensé que además de un mal diseño (ahora me parece no lo es), también podría representar un problema de performance este tipo de relaciones que tengo.

Muchas gracias de nuevo.
  #4 (permalink)  
Antiguo 04/07/2012, 17:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Relación entre tablas

Perdona, pero el diseño que planteas es un espanto...
No puedes mezclar ciudades con paises. Son entidades diferentes, con dominios diferentes y dependencias diferentes.
No existen las "generalidades" en ese contexto. Tienes que ponerlas en tablas diferentes, y entonces descubrirás que la tabla Personas bién podría tener sólo relación con Ciudad, ya que el resto de los detalles se obtiene por consulta.
Además, Activo o Inactivo no es una FK de una tabla sino un atributo de dominio acotado o restricción funcional.
Tienes que replantear el moddlo.
__________________
¿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 06/07/2012, 13:30
 
Fecha de Ingreso: marzo-2005
Mensajes: 309
Antigüedad: 19 años, 8 meses
Puntos: 1
Re: Relación entre tablas

Hola,

Muchas gracias por tu respuesta.

Haré los cambios respectivos a la estructura de la base de datos.

Gracias nuevamente.

Saludos.

Etiquetas: tabla, tablas, campos
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 23:02.