您将如何设置数据库来处理博客站点的评论?
How would you set up a database to handle comments for a blogging site?
我是一名学习数据库设计的学生,目前正在学习一对一、一对多、多对多之间的关系。我对这个概念理解得很好,但我觉得我缺乏 experience/information 如何在实际生产场景中实施它。
我的问题是
If I have a blog website with a Blog Post as an entity and comments for each blog post, how would you handle the comments in the database?`
您是否会使用一对多关系并将所有评论存储在一个 table 中。然后 link 每个博客的评论 post 和创建它的用户?
如果每条评论都有子评论怎么办?您会为子评论创建单独的 table 并为单个评论创建 link 吗?这会不会在数据库本身内造成过多的开销和混乱?
我了解所有概念,但不了解处理看似基本内容的最佳做法。
提前致谢!
最简单的解决方案是坚持一对多关系。使用一个 table 并每行存储一个评论,引用 post 和评论作者,以及一个时间戳,以便您可以按时间顺序对评论进行排序。
您似乎不确定是否需要“线程评论”层次结构。这更复杂,所以 if you don't need it, don't bother.
如果您确实需要显示评论线程,那么您应该了解 运行 MySQL 8.0 中的递归查询:https://dev.mysql.com/doc/refman/8.0/en/with.html#common-table-expressions-recursive
你仍然只需要一个table。不要为子评论创建第二个 table。就像在一对多示例中那样存储评论,但每个评论在回复时可能 link 到其“父”评论。
许多网站使用的另一种解决方案是跳过实现自己的评论系统,而只是嵌入评论服务,如 Disqus。这可能比你的更可靠和安全。但是,如果您将此作为一种学习练习,那也是值得的。
我是一名学习数据库设计的学生,目前正在学习一对一、一对多、多对多之间的关系。我对这个概念理解得很好,但我觉得我缺乏 experience/information 如何在实际生产场景中实施它。
我的问题是
If I have a blog website with a Blog Post as an entity and comments for each blog post, how would you handle the comments in the database?`
您是否会使用一对多关系并将所有评论存储在一个 table 中。然后 link 每个博客的评论 post 和创建它的用户?
如果每条评论都有子评论怎么办?您会为子评论创建单独的 table 并为单个评论创建 link 吗?这会不会在数据库本身内造成过多的开销和混乱?
我了解所有概念,但不了解处理看似基本内容的最佳做法。
提前致谢!
最简单的解决方案是坚持一对多关系。使用一个 table 并每行存储一个评论,引用 post 和评论作者,以及一个时间戳,以便您可以按时间顺序对评论进行排序。
您似乎不确定是否需要“线程评论”层次结构。这更复杂,所以 if you don't need it, don't bother.
如果您确实需要显示评论线程,那么您应该了解 运行 MySQL 8.0 中的递归查询:https://dev.mysql.com/doc/refman/8.0/en/with.html#common-table-expressions-recursive
你仍然只需要一个table。不要为子评论创建第二个 table。就像在一对多示例中那样存储评论,但每个评论在回复时可能 link 到其“父”评论。
许多网站使用的另一种解决方案是跳过实现自己的评论系统,而只是嵌入评论服务,如 Disqus。这可能比你的更可靠和安全。但是,如果您将此作为一种学习练习,那也是值得的。