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!
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...
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!