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

Por que se debe romper una relacion mucho a muchos?

Estas en el tema de Por que se debe romper una relacion mucho a muchos? en el foro de Bases de Datos General en Foros del Web. siempre he escuchado que se debe hacer una tabla intermedia con las clave primaria de las tablas involucradas, pero en si no entiendo bien que ...
  #1 (permalink)  
Antiguo 14/08/2012, 08:04
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Por que se debe romper una relacion mucho a muchos?

siempre he escuchado que se debe hacer una tabla intermedia con las clave primaria de las tablas involucradas, pero en si no entiendo bien que sucede si no se rompe esa relacion.

Lo otro eso de crear una tabla intermedia es lo mejor o hay mas opciones y cuales serian?
Gracias
  #2 (permalink)  
Antiguo 14/08/2012, 08: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: 16 años, 5 meses
Puntos: 2658
Respuesta: Por que se debe romper una relacion mucho a muchos?

No entiendo a qué te refieres cuando hablas de "romper" esa relación.

La tabla relacional surge de la necesidad de relacionar cada registro de la tabla A con cada uno de los registros de la tabla B, tal que nunca se repita un par de claves A/B.
Es tan sencillo como eso.
Es absolutamente imposible crear una relación N:N entre dos tablas sin usar una tabla adicional, porque sino necesitarías poner un campo FK en cada tabla por cada relación con la otra.
Supongamos que tienes 10.000 registros en cada una, y que un registro de la A se relaciona con 500 registros de la B. Necesitarías agregar 500 columnas mas, pero esas columnas serían inútiles para la mayoría de los registros, ya que ese es un caso excepcional.
Y supongamos que en la tabla B, uno de los registros que aparecen en uno de esas otras columnas de la A, se relaciona con otros 1200 registros más de la A... ¿Que harías? ¿Agregar 1.200 columnas adicionales en la tabla B?
Es muchísimo más simple hacer una sola tabla, con dos campos, que contenga 1700 registros (500+1200), que al ser al mismo tiempo PK de su propia tabla jamás podrán repetirse.

El único otro escenario es cuando por alguna razón, una relación N:N entre dos tablas a su vez puede repetir la relación A/B en algún registro. Eso implica que usar sólo las FK como PK es insuficiente para administrar la cardinalidad de la relación y se debe agregar alguna otra columna como parte de la PK. Usualmente ese tercer campo es un DATETIME.
Ese escenario se da, por ejemplo, en las matriculaciones anuales de un alumno repitiente: Mismo Curso, misma Persona... diferente Año. Es decir, la cursada es parte de la clave.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: relacion, romper, 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 13:49.