0

我正在构建一个移动 Android 应用程序,用户可以在其中找到最近的位置,然后在查看这些位置时,允许他们查看详细信息并对其进行评分。最重要的是,他们可以在地图上添加新地点。我希望能够尽我所能降低人们添加假点的机会,所以这就是我想要实施评级系统的原因,这是假点的另一层安全性。

我不确定我应该如何设计我的数据库表。现在我只有:

Location: name, address, type, terrain, difficulty, lng, lat, rating.

评级列仅允许值:1、2、3、4、5。

我还需要什么来保持收视率的总和?

设计好桌子后。我想知道计算平均收视率的最合适方法,然后能够根据他们的收视率将其删除。问题是,如果一个位置有 1 票,评分为 1,这是 100% 否定的,那么当一个位置有 100 票,90 票,1 票和 10 票,5 票时,它将被认为是糟糕的。当然,第一个应该认为更糟,然后删除。我该如何反击?

4

2 回答 2

0

我会说制作一个单独的表,其中包含位置 id 的外键和提交评论的用户的 id 会很有用(当然还有评分)。这样用户可以在以后编辑他们的评论。

于 2013-03-08T00:40:51.720 回答
0

有很多方法可以做到这一点。更复杂的趋势监控系统缓冲投票并查看过去一天、一小时、一分钟等的比率。

但是,对于一个简单的系统,您可以查看总票数和平均评分。您可能不在乎总和(无论如何您都可以从其他两个中得到它)。

要更新评级:

average = ((average*total)+new)/(sum+1);
total ++;

当您考虑删除它们时,您需要为最小投票数(总)设置阈值,然后根据平均评分删除。1 次差票可能还不够,你认为多少,取决于你的使用水平。

其他答案:PHP/MySQL - “Top Rated”算法

于 2013-03-07T22:48:29.153 回答