Bases de Datos - Duda Diseño BD

   
Vista:

Duda Diseño BD

Publicado por gondo (1 intervención) el 07/10/2009 16:51:36
Buenas,

Estoy haciendo una base de datos sobre canciones. Teniendo estas dos tablas:
CANCION: [K]id_cancion, titulo, idioma, tipo (solo/dueto)
ARTISTA: [K]nombre, genero (M/F), grupo (Si/No)

Tengo una relacion "Canta" N:N puesto que un artista canta mas de una cancion y una cancion puede ser cantada por mas de un artista en diferentes momentos del tiempo (en el sentido de hacer versiones). Ahora, mi problema es el siguiente: quiero reflejar que una cancion puede ser cantada por uno o dos artistas (duetos) y no se como hacerlo, porque si añado una relacion diferente ("CantaDueto") tendria una relacion reflexiva-ternaria.

Un ejemplo hipotetico en el que la cancion No dudaria la hubiesen cantado Antonio Flores solo, Rosario sola y una ultima version de Rosario con Lolita:

TABLA CANCION
1 - No Dudaria - Español - Solo
2 - No Dudaria - Español - Dueto
...
TABLA ARTISTA
Antonio Flores - M - No
Rosario - F - No
Lolita - F - No
...
en TABLA CANTA tendria:
1 - Antonio Flores
1 - Rosario
...
en TABLA CANTADUETO:
2 - Rosario - Lolita
...
como consigo esto??
hay alguna forma de q aparezca todo en la misma TABLA CANTA?

Siento enrollarme. Espero q este claro.
MUCHAS GRACIAS X ADELANTADO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda Diseño BD

Publicado por Franklin Gamboa (188 intervenciones) el 08/10/2009 15:59:49
Para eso deberias hacer los siguientes cambios

Artistas --> Canta ---> Cancion

En artistas tienes la info de los artistas, en cancion la de las canciones y canta no es mas que la tabla de enlace para romper la relacion muchos a muchos que tendrias. Entonces, para saber quien canta una cancion haces el join ahi y listo.

entonces, canta puede tener mas de un registro por cancion o por artista, de este modo, para saber si es un dueto, simplemente obtienes la cuenta de registros en la tabla canta para una determinada cancion.

Espero haberte ayudado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar