Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: carlosgxs en 6 Abril 2012, 05:04 am



Título: Cómo relacionar 1 tabla con N tablas
Publicado por: carlosgxs en 6 Abril 2012, 05:04 am
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!


Título: Re: Cómo relacionar 1 tabla con N tablas
Publicado por: Kase en 6 Abril 2012, 05:40 am
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...


Título: Re: Cómo relacionar 1 tabla con N tablas
Publicado por: carlosgxs en 6 Abril 2012, 05:57 am
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!