Potresti creare un'altra tabella CommentableEntity
(anche se chiamalo qualcosa di meglio). Ciascuna delle righe nelle tabelle (Articles
, Recipes
ecc.) avrebbe un riferimento a una riga univoca in questa tabella. La tabella di entità potrebbe avere un type
campo per indicare il tipo di entità (per facilitare l'unione inversa).
Puoi quindi avere un Comment
tabella che fa riferimento a CommentableEntity
, in modo generico.
Quindi, ad esempio, ti ritroverai con le seguenti tabelle:
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...
Puoi aggiungere il record CommentableEntity ogni volta che aggiungi un Articolo/Ricetta, ecc. Tutto il codice di gestione dei commenti che deve sapere è CommentableEntity_id - non importa che tipo di cosa sia.