Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kommentare zum Designproblem vieler Tabellendatenbanken

Sie könnten eine weitere Tabelle CommentableEntity erstellen (obwohl es etwas besser nennen). Jede der Zeilen in Ihren Tabellen (Articles , Recipes usw.) einen Verweis auf eine eindeutige Zeile in dieser Tabelle haben. Die Entitätstabelle kann einen type haben Feld, um die Art der Entität anzugeben (um das Reverse Joining zu unterstützen).

Sie können dann einen Comment hinterlassen Tabelle, die auf CommentableEntity verweist , in generischer Weise.

So erhalten Sie zum Beispiel die folgenden Tabellen:

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...

Sie können den CommentableEntity-Datensatz jedes Mal hinzufügen, wenn Sie einen Artikel/ein Rezept usw. hinzufügen. Alles, was Ihr Kommentarbehandlungscode wissen muss, ist die CommentableEntity_id - es ist egal, um welche Art von Sache es sich handelt.