【问题标题】:Implementing a simple review database/application scheme实施一个简单的审查数据库/应用程序方案
【发布时间】:2012-01-10 06:28:16
【问题描述】:

我是 Web 开发和数据库设计的新手,对于如何最好地完成一个简单的项目审查系统感到有些困惑。

在当前的数据库模式中,我有一个表,称为tbl_item,其中包含用于项目不同属性的列。我希望用户能够评论项目并将tbl_reviews 中的每个评论与特定项目相关联。

当然,我在tbl_item 中设置了一个引用 id 列的外键,但我不知道从这里去哪里。基本上我的问题是:什么应该计算评论平均值?

应用程序是否应该在每次请求特定项目的评论分数时进行 SQL 调用,然后数据库必须搜索所有 tbl_reviews 行以找到具有特定 item_id 的那些?

(这似乎是错误的。)DB 是否应该参与其中并拥有某种类型的计算字段或视图或存储过程?

我是否应该在tbl_item 中有一个新列,其中包含平均分数,并且每当与特定项目对应的任何新评论被 CRUD 删除时都会更新?

如果重要的话,我正在使用 Yii (PHP) 和 MySQL。

【问题讨论】:

    标签: php mysql database-design yii application-design


    【解决方案1】:

    基本上你问的是效率和数学。

    我会这样做:

    您的数据库是关系型的。很好,你明白了。每条评论都有一个数值?比如1-10? 说它适用于这个例子。

    我会说,在每次审核时,审核本身都设置在数据库中,以及操作表中的队列。具有项目 ID 和操作类型的东西。在这种情况下审查。 然后,您每隔一分钟左右就会在后台运行一个 cron,检查该操作队列,如果有新的评论或一组评论,您将为每个适用的项目运行一个算法,该算法收集评论中可用的所有数据并返回基于集体数据的标准差的受过教育的数字。

    这样,计算不会由用户实时运行,也不会在发送评论时运行。据我们所知,您有大量的项目和大量的评论,所以如果您的情报脚本很重,实时性会很糟糕。

    至于标准偏差,我检查了大量的反垃圾邮件。我存储所有用户数据、IP、日期时间和其他任何我能做到的东西,以确保不仅仅是一个人使用不同的帐户登录,每次都以 10 分来审查他自己的东西。不能因此而堕落。 此外,如果您获得 100 条 10 条看起来合法的评论和 1 条得分为 1 的评论,您可以将其视为讨厌者,而在结果中忽略它。

    你必须明白你的要求是巨大的,所以在这里代码 sn-ps 是不可能的。 我刚才解释的就像是为一个大客户和一个严肃的反垃圾邮件计算器工作了 4 个月。

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 1970-01-01
      • 2011-12-27
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多