Vous pourriez créer une autre table CommentableEntity
(bien que l'appeler quelque chose de mieux). Chacune des lignes de vos tableaux (Articles
, Recipes
etc.) aurait une référence à une ligne unique dans cette table. La table d'entités peut avoir un type
pour indiquer le type d'entité (pour faciliter la jointure inversée).
Vous pouvez alors avoir un Comment
table qui référence CommentableEntity
, de manière générique.
Ainsi, par exemple, vous vous retrouverez avec les tableaux suivants :
Articles
-----------------
Article_id
CommentableEntity_id (fk, unique)
Content
....
Recipes
-----------------
Recipe_id
CommentableEntity_id (fk, unique)
Content
....
CommentableEntity
-----------------
CommentableEntity_id (pk)
EntityType (e.g. 'Recipe', 'Article')
Comment
-------
Comment_id (pk)
CommentableEntity_id (fk)
User_id (fk)
DateAdded
Comment
...etc...
Vous pouvez ajouter l'enregistrement CommentableEntity chaque fois que vous ajoutez un article/une recette, etc. Tout ce que votre code de gestion des commentaires doit savoir est le CommentableEntity_id - il ne se soucie pas de quel type de chose il s'agit.