Mysql
 sql >> Base de données >  >> RDS >> Mysql

Commentaires sur le problème de conception de la base de données de nombreuses tables

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.