Możesz utworzyć kolejną tabelę CommentableEntity
(choć nazwij to czymś lepszym). Każdy z wierszy w Twoich tabelach (Articles
, Recipes
itp.) miałoby odniesienie do unikalnego wiersza w tej tabeli. Tabela encji może mieć type
pole do wskazania typu jednostki (aby wspomóc łączenie odwrotne).
Następnie możesz mieć Comment
tabela odwołująca się do CommentableEntity
, w sposób ogólny.
Na przykład otrzymasz następujące tabele:
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...
Możesz dodać rekord CommentableEntity za każdym razem, gdy dodajesz artykuł/przepis itp. Wszystko, co musi znać twój kod obsługi komentarzy, to CommentableEntity_id — nie ma znaczenia, jaki to rodzaj.