Você pode criar outra tabela
CommentableEntity
(embora chamá-lo de algo melhor). Cada uma das linhas em suas tabelas (Articles
, Recipes
etc.) teria uma referência a uma linha exclusiva nesta tabela. A tabela de entidades pode ter um type
campo para indicar o tipo de entidade (para auxiliar a junção reversa). Você pode então ter um
Comment
tabela que faz referência a CommentableEntity
, de forma genérica. Então, por exemplo, você terminará com as seguintes tabelas:
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...
Você pode adicionar o registro CommentableEntity toda vez que adicionar um Artigo/Receita, etc. Todo o seu código de tratamento de comentários precisa saber o CommentableEntity_id - não importa que tipo de coisa seja.