Можете да създадете друга таблица CommentableEntity
(въпреки че го наречете по-добре). Всеки от редовете във вашите таблици (Articles
, Recipes
и т.н.) ще има препратка към уникален ред в тази таблица. Таблицата на обекта може да има type
поле за указване на типа обект (за подпомагане на обратното свързване).
След това можете да имате Comment
таблица, която препраща към CommentableEntity
, по общ начин.
Така например ще получите следните таблици:
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...
Можете да добавяте записа CommentableEntity всеки път, когато добавяте статия/рецепта и т.н. Всичко, което вашият код за обработка на коментари трябва да знае, е CommentableEntity_id - не го интересува какъв тип е то.