別のテーブル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だけで、それがどのような種類のものであるかは関係ありません。