我是网络开发和数据库设计的新手,我对如何最好地完成项目的简单审查系统感到困惑。
在当前的数据库模式中,我有一个表,称之为tbl_item
,其中包含不同项目属性的列。我希望用户能够审核项目并将tbl_reviews
中的每个评论与特定项目相关联。
当然我有一个外键设置引用tbl_item
中的id列,但我不知道从哪里开始。基本上我的问题是:什么应该计算审查平均值?
每次为特定项目请求评论分数时,应用程序是否应该进行SQL调用,然后数据库必须搜索所有tbl_reviews
行以查找具有特定item_id
的行?
(这似乎是错误的。)数据库是否应该参与其中并使某些类型的计算字段或视图或存储过程执行相同的操作?
我是否应该在tbl_item
中有一个新列,其中包含平均得分,并且每当与特定项目相对应的任何新评价为CRUD时都会更新?
如果重要,我正在使用Yii(PHP)和MySQL。
答案 0 :(得分:1)
基本上你问的是效率和数学。
这就是我要做的事情:
您的数据库是关系型的。好的,你明白了。每个评论都有一个数值?像1 - 10? 说它适用于这个例子。
我想说,每次审核时,审核本身都会在数据库中设置,也会在操作表中设置。具有item id和action类型的东西。在这种情况下审查。 然后,每隔一分钟左右就有一个cron在后台运行,检查该行动队列,如果是新的评论或一组评论,您为每个适用的项目运行一个算法,该算法收集评论中可用的所有数据并返回基于集体数据标准差的受过教育的数字。
这样,数学不会由用户实时运行或发送评论时。据我们所知,你有大量的项目和大量的评论,所以如果你的情报脚本很重,实时也会很糟糕。
至于标准偏差,我会检查各种各样的反垃圾邮件。我存储了所有用户数据,IP,日期时间以及我能做的任何其他事情,以确保不只是一个人登录不同的帐户,每次评估他自己的东西10评级。不能为此而堕落。 另外,如果您获得100条评论看起来合法且1条评论的评分为1,您可以将其视为仇恨,并在结果中忽略它。
您必须了解您的请求是巨大的,因此这里的代码片段是不可能的。 我刚才解释的是,对于一个庞大的客户和一个严肃的反垃圾邮件计算器,我需要工作4个月。
祝你好运