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.