【问题标题】:How to design database for blog system?如何为博客系统设计数据库?
【发布时间】:2017-10-17 19:28:21
【问题描述】:

我正在开发一个简单的博客应用程序,用户可以在其中写帖子,其他人可以喜欢、评论、分享等。我在设计数据库时遇到了困难。 我试过的是:

user (user_id(pk), user_name)

post (post_id(pk), post_content, likes, user_id(fk))

comment(comment_id(pk), comment, post_id(fk))

问题:一个用户可以有很多帖子,很多用户可以喜欢和评论很多帖子。我是否必须分开两个表,例如:userpostuserpost

谁能告诉我这个设计有什么问题吗?

【问题讨论】:

    标签: mysql sql database database-design rdbms


    【解决方案1】:

    您的comment 表缺少指明添加此评论的用户的字段。

    postscomments 加入一个表可能是个好主意——因为评论只是一种帖子。因此,您只需将被评论的帖子的 parent_id 存储在评论记录中即可。

    likes 应该在另一个表中,用于用户和他们喜欢的帖子的多对多关系。

    所以你的表格看起来像:

    users (user_id(pk), user_name)
    
    posts (post_id(pk), parent_post_id(fk), date, post_content, user_id(fk))
    
    likes (like_id(pk), post_id(fk), user_id(fk))
    

    【讨论】:

    • 嗨..谢谢..我想要的只是计算该帖子有多少其他用户喜欢,并知道哪些用户喜欢该帖子(与 facebook 相同)...我需要另一张桌子。
    • 不太清楚 - 表 post 中的哪个字段 likes 在您的实现中。如果它只是一些喜欢 - 那么你将无法确定 - 谁完全喜欢这个帖子。在我提出的实现中,“有多少喜欢的帖子”就像(它的伪代码)select count(like_id) from likes where post_id = ... 而“喜欢帖子的人”是select user_id from likes where post_id = ...。很简单。
    【解决方案2】:

    就像上面提到的那样。最好将评分放在另一个表中

    Ratings (Ratings_id(pk), user_id(fk), Post_id)

    类似上面的。

    谢谢

    【讨论】:

      猜你喜欢
      • 2011-01-28
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      • 2012-02-12
      • 2016-06-15
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      相关资源
      最近更新 更多