Je suis en train de préparer un petit projet perso pour gérer ma collection de vinyles, et je bloque sur un truc qui doit sembler basique. J'ai une table pour les artistes et une pour les albums, mais pour les albums en collaboration, où plusieurs artistes sont crédités, je me demande si je dois créer une nouvelle entrée pour ce "groupe" temporaire dans la table artistes, ou si je passe par une table de liaison. J'ai l'impression de surcomplicer mon schéma pour quelque chose de simple, et je ne sais pas trop quelle approche adopter pour modéliser ça proprement sans me tirer une balle dans le pied plus tard.
|
Quoi faire pour modéliser les albums en collaboration dans ma base vinyles?
|
|
Pour gérer les albums qui impliquent plusieurs artistes, la solution propre et largement adoptée est une table de liaison entre albums et artistes (album_artiste ou credits). Elle permet d'attribuer un artiste à un album avec un rôle et un ordre, sans dupliquer les artistes existants. Créer une entrée séparée pour un 'groupe' temporaire peut marcher, mais ça surcharge ta table artistes et crée des doublons si ce groupe devient plus tard une entité distincte ou s'il apparaît ailleurs. Le mot clé ici est artistes, et c'est la flexibilité qui compte.
J'ai l'impression que ça ressemble à un casse-tête sentimental: des crédits qui veulent cohabiter sans qu'on se perde. Le plus simple et robuste, c'est la table de liaison entre albums et artistes; elle accepte les collaborations sans te demander de créer des entités supplémentaires. Et puis ça te permet d'afficher qui a vraiment joué sur quoi sans tricher avec les noms.
Pourquoi pas une entrée groupe dans artistes et faire simple? Parce que sur le long terme tu risques d'avoir des doublons, des incohérences, et aussi des cas où le 'groupe' n'existe que pour un seul album. Une table de liaison évite tout ça et te donne le contrôle sur le rôle, l'ordre et les crédits, c'est tout.
Ton souci, c'est plutôt la manière de représenter les crédits multiples sans surcharger ton modèle: créer des groupes ou utiliser une relation plusieurs-à-plusieurs? Le vrai enjeu est la traçabilité et les requêtes futures sur qui a participé à quel album.
Si tu prévois d'étendre ton modèle, la table de liaison reste la voie la plus scalable: albums, artistes, et une table pivot avec des colonnes artiste_id, album_id, role, order_id et éventuellement une colonne pour le nom affiché. Cela évite les duplications et rend les recherches simples (qui a collaboré sur tel album, qui est crédité sous quel rôle). Tu pourras aussi lier des artistes sous différents noms sans toucher aux autres tables. Le mot clé ici demeure artistes mais le design est pensé pour le futur.
Une piste est d'accepter que le graphe des artistes soit hétérogène et d'accepter une logique de crédits multiples; sinon, est-ce que tu préfères une solution qui te force à nommer un groupe cohérent et réutilisable même si ce dernier ne réapparaît jamais ailleurs?
|
|
« Sujet précédent | Sujet suivant »
|

