Cómo relacionar 1 tabla con N tablas

Iniciado por carlosgxs, 6 Abril 2012, 05:04 AM

0 Miembros y 1 Visitante están viendo este tema.

carlosgxs

Hola buen día,

Tengo un ligero problema a la hora de definir mi base de datos y espero que me puedan auxiliar, les explico mi situación...

Tengo una tabla llamada "grupos" que se relaciona con 1 de varias tablas que pueden ser "liga1", "liga2" y "liga3" cada una de estas tablas tiene campos diferentes o relaciones con otras tablas por lo que NO puedo crear solo 1 tabla general llamada "liga".

Entonces definiendo un poco la cardinalidad de relación, tengo que N "grupos" pertenecen a 1 "liga", el detalle es que si pongo la llave foránea (id_liga) en la tabla "grupos" NO sé si pertenece a "liga1", "liga2" o "liga3".

Realmente llevo varias horas dándole vueltas a la base de datos y no encuentro la solución, ojalá me puedan ayudar... Gracias!

Kase

has una cardinalidad n a m     entre grupos y liga1, liga2, liga3   

no podras hacer en una sola consulta el multiplicado de todo... pero si podras  hacer un:

if grupo exist in liga1 then:
else:
obiamente con tu lenguaje main, no con sql.



la otra es emular herencia.   ases una tabla "liga"  con subtablas "ligaN"


una opcion mas es poner los campos "id_liga1", "id_liga2", "id_liga3" en "grupo" auque paresca.. no estas violando ninguna regla de normalizacion...    liga1. liga2,liga3  son entidades no  registros.



simplemente no podras hacer una unica consulta que te traega el multiplicado de todo...

carlosgxs

Muchas gracias Kase, aprecio mucho tus 3 opciones... bastante interesantes.

Me voy más por la primera opción, crear una tabla de relación llamada "grupos_ligas" que tenta los campos "id_grupo", "id_liga" y "tipo". Para obtener el valor del campo "tipo" y con programación determinar:

si (tipo == 1) {
    obtener los datos de la tabla "liga1" con el "id_liga"
}

La verdad esperaba poder solucionarlo todo con SQL, pero al parecer no hay otra opción. De nuevo muchas gracias por tu respuesta, saludos!