11:14h.
Estoy tratando de diseñar una sencilla base de datos relacional para hacer un programita de gestión de discos (os prometo que no es una práctica de clase ni nada similar).
Casi todo lo tengo bien modelizado y normalizado, pero me atasco al tratar de relacionar las entidades DISCO, GRUPO y MÚSICO.
Se supone que un disco viene a nombre de un grupo (p. ej., Fontessa del Modern Jazz Quartet) o de un músico en concreto (p. ej., Kind of Blue, de Miles Davis).
En este último caso hay más músicos que intervien en el disco, pero el disco sólo viene a nombre de uno de ellos.
Por otra parte, un grupo se compone de varios músicos en un rango de años en concreto (p. ej.; Weather Report cambió bastante sus formaciones).
Al modelizar DISCO, quiero tener alguna relación para saber a nombre de quién está el disco (músico individual o grupo) y los músicos que tocan.
Estaba pensando en una entidad genérica ARTISTA, que puede ser un GRUPO o un MÚSICO (relación IS-A), pero me pierdo en el momento en que una de las dos entidades especializadas mantiene un relación con la otra (GRUPOS y MUSICOS: existe una relación n:m entre ellos).
También estaba planteando una relación ternaria GRUPO-DISCO-MÚSICO, pero veo que una de las claves (la correspondiente al grupo) podría ser NULL (discos grabados por un solista más músicos invitados, pero no a nombre de un grupo).
Si mantengo dos relaciones DISCOS_MUSICOS (n:m) y DISCOS_GRUPOS (n:m) me encuentro con que una de ellas tendrá datos y la otra no ¿?
Bueno, estoy algo perdido (y dormido). Se agradece alguna pista que me oriente.
Gracias por vuestra atención.
P.D.: consultando por ahí, parece que éste es un problema bastante clásico. Seguiré empollando.
Re:Tablas discografica
(Puntos:2)( Última bitácora: Domingo, 05 Diciembre de 2010, 22:01h )
¿Y si el disco viene a nombre de un grupo en vez de un artista?
Podría tener una relación DISCO_ARTISTA y otra DISCO_GRUPO, pero serían excluyentes: un disco estaría en una o en otra, con lo que debería añadir un atributo a la entidad DISCO para indicar si está a nombre de un ARTISTA o de un GRUPO, y escribir código condicional para tratar esta circunstancia, puesto que los músicos que tocan en un disco los puedo recuperar de dos relaciones distintas: DISCO_ARTISTA ó GRUPO_ARTISTA.
Estoy algo confuso, a ver si lo maduro más y repaso el libro de Elmasri.
Gracias por tu pronta respuesta.