如何制作评论报价功能?

时间:2010-02-05 14:36:32

标签: web comments blogs quotes

我们允许在我们的网站上发表评论(如博客)。现在我们想要改变它,以便人们可以评论其他评论。

我们的表格看起来像这样:

ID    |    CommentID    |    Comment     |    User     |     Date
-------------------------------------------------------------------------
1001  |        1        |    Nice site   |     Me      |     20.01.2010
1001  |        2        |    Thx!        |     You     |     21.01.2010

我想出了两个选择:

1)创建一个ParentCommentID,然后决定如何从上到下列出注释。

2)将您评论的评论与您自己的评论一起存储在某些[QUOTE] -tags或其他内容中。

解决这个问题有什么好的建议吗?

5 个答案:

答案 0 :(得分:2)

您真正要问的是您希望数据库表的normalized。我会说这是一个基于诸如您的网站有多大以及您认为应该采取标准化的程度等因素的判断。要使用类似的示例,在我们的论坛中,我们存储谁在线程表中发布线程的用户名 - 由于性能原因,这是非规范化的 - 有时您只是不想进行大量的连接。关于数据库规范化的维基百科文章更详细。

我个人认为我会将评论与其中的引用一起存储,因为这可以防止人们改变他们已经写过的内容(忍者编辑)来混淆论点/讨论;)

答案 1 :(得分:2)

我会使用ParentCommentID作为外键返回到该表的CommentID。这将强制执行参照完整性,并且您将避免一些重复。

如果十个人引用评论,则会使用选项2复制十次。在选项一中,您只有十个FK。

您在单个评论中允许的字符越多,每个引号与选项2的重复次数就越多。

选项1还允许您进行更多报告。您可以更轻松地查询以找出最常引用的评论。

答案 2 :(得分:1)

听起来我们需要先收集更多要求!

  • 您使用的是哪种类型的数据库(MySQL,MSSQL等)?什么版本?例如,SQL Server 2008具有针对此类事物的内置hierarchyId数据类型。
  • 您是否希望支持多个级别的嵌套注释(即完整的分层回复树)?
  • 您有什么样的性能要求?这是多么可扩展和强大?
  • 您是否需要报告回复或回复是严格意义上的内容?例如,vBulletin只有简单的引用回复,只是消息的一部分,而一些博客评论系统会在您收到回复时提醒您,并且您可以单独查看对您的评论的回复。

答案 3 :(得分:0)

parentid是一个不错的选择。您还可以将时间与日期一起存储以查找已发布回复的层次结构,或者您甚至可以使用CommentID字段。

答案 4 :(得分:0)

如果页面上没有显示评论ID,您可以随时应用编号方案,如IP地址或应用程序版本。 I.E.,CommentID 2.1是关于第二条评论的第一条评论,2.2是关于第二条评论的第二条评论。因为它不需要大量的字符串标记器来确认CommentID 3.1.7是关于帖子的第二条评论的第一条评论的第七条评论。一旦将其标记为整数,排序就变得轻而易举。