我有桌子:

Articles{...}
Recipes{...}
Notifications{...}
Photos{...}

我需要实现“用户评论”功能(比如Facebook)。
我应该用1:n关系制作表格:ArticleComments, RecipesComments等吗?
或者为所有人创建一个Comments表(但我不知道如何设计这个表)?

最佳答案

您可以创建另一个表CommentableEntity(尽管称之为更好的表)。表中的每一行(ArticlesRecipes等)都将引用此表中的唯一行。实体表可能有一个type字段来指示实体的类型(以帮助反向连接)。
然后可以有一个以通用方式引用CommentCommentableEntity表。
例如,您将得到以下表格:

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/

10-12 19:07