我有桌子:
Articles{...}
Recipes{...}
Notifications{...}
Photos{...}
我需要实现“用户评论”功能(比如Facebook)。
我应该用1:n关系制作表格:
ArticleComments, RecipesComments
等吗?或者为所有人创建一个
Comments
表(但我不知道如何设计这个表)? 最佳答案
您可以创建另一个表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-它不关心它是什么类型的东西。
关于mysql - 关于许多表数据库设计问题的评论,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5723209/