Du kan skapa en annan tabell CommentableEntity
(fast kalla det något bättre). Var och en av raderna i dina tabeller (Articles
, Recipes
etc.) skulle ha en referens till en unik rad i den här tabellen. Entitetstabellen kan ha en type
fältet för att ange typen av enhet (för att underlätta omvänd sammanfogning).
Du kan sedan ha en Comment
tabell som refererar till CommentableEntity
, på ett allmänt sätt.
Så till exempel kommer du att sluta med följande tabeller:
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...
Du kan lägga till CommentableEntity-posten varje gång du lägger till en artikel/recept etc. Allt din kommentarshanteringskod behöver känna till är CommentableEntity_id - den bryr sig inte om vilken typ av sak det är.