【问题标题】:What is the ideal way to store comments to a blog?将评论存储到博客的理想方式是什么?
【发布时间】:2021-06-20 11:22:29
【问题描述】:

我正在使用 django 制作一个演示网站,并且在网站上您有博客。我试图添加的是一种为每个博客添加 cmets 的方法,而我试图弄清楚的是如何安排数据库。我考虑了 3 个选项,要么在每个博客中存储 cmets 列表,要么存储所有 cmets 列表和它们所属的博客,或者为每个带有 cmets 的博客创建一个表。就实现难度和内存消耗而言,以下哪一项最好?

【问题讨论】:

  • 对于关系数据库,您通常有一个 Comment 模型和一个 ForeignKeyBlog 这些属于。
  • 您可能还想考虑对 cme​​ts 的回复。 :)
  • 查看各种开源产品的数据库模式通常很有帮助。 Here is WordPress's schema.他们有一个 cmets 表。

标签: mysql django database


【解决方案1】:

让我们走实体关系路线来设计它。

在您的网站世界中有一个称为评论的实体。它具有comment_textdatestamp 等属性。

  1. 每条评论都与一个帖子有关……人们对帖子发表评论。

  2. 每条评论都与一个人有关系……每条评论都有一个作者。

  3. 评论可能是也可能不是对先前评论的回复。如果是,则它与另一个评论有关系。

这是您的应用程序的正确实体关系模型吗?如果是这样,那就太好了。如果没有,你可以修改它。

这种风格的 Comment 实体对应于具有这些列的 RDBMS 表。

  • comment_id 代理主键(自动递增 INT)
  • active TINYINT 1 表示活动,2 表示不活动/不可见/预定删除。
  • post_id 与帖子的关系。从不为 NULL。
  • person_id 与人的关系。如果您允许匿名 cmets(不要!),这可以为 NULL,否则永远不会为 NULL。
  • replyto_id 回复的评论的 comment_id 值。这可以是 NULL 也可以不是。
  • comment_text 评论本身。
  • datestamp 撰写评论的日期和时间。

(如果您允许编辑 cmets,您可能需要两个日期戳。)

看看这是怎么回事?如果您理清了您希望 cmets 是什么以及它们与系统其他部分的关系,那么您将知道如何设计数据库来保存它们。

【讨论】:

  • 只是出于好奇提出一个问题,匿名 cmets 有什么问题?
  • 如果你在公共网络上放置一个允许匿名内容的系统,你会被垃圾邮件淹没。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 2017-05-20
  • 2013-04-16
  • 1970-01-01
相关资源
最近更新 更多