Parfois plus d'un artiste sera sur une chanson. Par exemple, la nouvelle chanson de Jay-z "A Star is Born" met en vedette l'artiste Cole, et serait ainsi répertorié comme "Jay-z (mettant en vedette Cole) - A Star is Born" dans un catalogue. Ma question est comment modéliser ceci dans ma base de données.Comment modéliser le concept de "Featuring" (c'est-à-dire, quand un artiste est "en vedette" sur une chanson)
En ce moment, c'est assez simple: chaque chanson belongs_to :artist
et tous les artistes has_many :songs
. Je veux changer cela afin que les chansons aient beaucoup d'artistes, avec un artiste spécifié comme «primaire» - c.-à-d. Si A, B et C sont tous associés à une chanson donnée et A est primaire, l'artiste de cette chanson sera affiché comme "A (avec B et C)".
Voici ce que je pense:
chanson:
has_many :artists, :through => :performances
Artiste:
has_many :songs, :through => :performances
où le modèle performance
aurait un seul champ pour primary?
, désignant si une performance donnée était la performance "primaire" sur la chanson, ce qui signifie que l'artiste associé à cette performance est l'artiste principal de la chanson.
Cette approche a-t-elle un sens?