Bonjour,

Quand on a trois tables comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
USER (id, ...)
BADGE (id, ...)
USER_BADGE (#user_id, #badge_id)
Où un user peut avoir plusieurs badges et la table USER_BADGE a comme clé primaire composite user_id et badge_id, il parait logique, en théorie comme en pratique, de laisser tel quel.

Si on rajoute une colonne dans la table USER_BADGE, ce qui donnerait :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
USER_BADGE (#user_id, #badge_id, gain_date)
Est-il correct de laisser la table avec sa clé primaire composite ? Ou faut-il rajouter un id unique auto-incrémenté et faire un INDEX UNIQUE sur user_id et badge_id ? En théorie ? En pratique ?

J'ai déjà plus ou moins ma réponse en pratique, puisque Doctrine considère qu'à partir du moment où une relation many to many a des colonnes supplémentaires, il faut la transformer en relation one to many et many to one.
Ma question porte plus sur l'aspect théorique de la chose et sur l'aspect pratique hors Doctrine.