我有桌子:
Articles{...} Recipes{...} Notifications{...} Photos{...}
而且我需要实现“用户评论”功能(例如Facebook)。我应该ArticleComments, RecipesComments以1:n关系制作table:等等吗?还是Comments为所有人创建一张桌子(但我不知道该如何设计)?
ArticleComments, RecipesComments
Comments
您可以创建另一个表CommentableEntity(尽管称其更好)。表中的每一行(Articles,Recipes等等)都将引用此表中的唯一行。实体表可能具有type指示实体类型的字段(以帮助反向连接)。
CommentableEntity
Articles
Recipes
type
然后,您可以有一个以通用方式Comment引用的表CommentableEntity。
Comment
因此,例如,您将得到下表:
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-它不在乎它是什么类型。