MySQL base de données complexe

QMeuh

Membre confirmé
7 Août 2007
82
2
Vancouver, BC
kwint.in
Bonjour!

Je me permets de vous soumettre un problème que je rencontre avec une base données que j'aimerais mettre sur pieds. Pour illustrer, le meilleur exemple est probablement une bibliothèque musicale.

Ainsi imaginons... j'ai 8 tables (albums, artists, genres, labels, producers, songs, studios & writers).
Une chanson peut très bien appartenir à plusieurs genres ou labels, et avoir été écrite ou produite par plusieurs personnes différentes.
Comment définir les relations entre ces tables de manière efficace? Faut-il établir les liens de manière individuelles (songs-genres, songs-labels)? Ou existe-t-il un autre moyen?

Merci d'avance!
 
C'est typiquement je genre de soucis que j'ai traité.

Si tu veux aller sur une solution robuste, portable et évolutive je te recommande de rester proche des fonctions de base du sql, ainsi ce sera plus aisé de migrer vers d'autres cieux pour des raisons de performance, d'hébergement ou simplement d'envie.

Donc pour une mise en relation à géométrie variable, je te propose d'ajouter une table supplémentaire à ta base.
Cette table très simple aura pour fonction d'enregistrer et d'indexer les mises en relations de enregistrements des autres tables.

En vrac un début de structure :

ID - ETAT - SONG - TYPE DE RELATION - RELATION

L'état te permet facilement de modifier une liaison entre une chanson et un élément sans forcément l'effacer.
Song est l'id de ta chanson
Type de relation est une énumération des destinations possibles
Relation est l'id de l'élément lié.

Ensuite tu peux jouer de la jointure pour retrouver tous ce que tu veux en une requête.

Bonne chance.