Podrías crear otra tabla CommentableEntity
(aunque llamarlo algo mejor). Cada una de las filas de sus tablas (Articles
, Recipes
etc.) tendría una referencia a una fila única en esta tabla. La tabla de entidades podría tener un type
campo para indicar el tipo de entidad (para ayudar a la unión inversa).
A continuación, puede tener un Comment
tabla que hace referencia a CommentableEntity
, de forma genérica.
Entonces, por ejemplo, terminará con las siguientes tablas:
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...
Puede agregar el registro CommentableEntity cada vez que agrega un Artículo/Receta, etc. Todo lo que su código de manejo de comentarios debe saber es CommentableEntity_id; no importa qué tipo de cosa sea.