我正在构建一个移动Android应用程序,用户可以在其中找到最近的位置,然后在查看这些位置时,他们可以查看详细信息并对其进行评分。除此之外,他们还可以在地图上添加新地点。我希望能够尽可能地降低人们添加假点的机会,所以这就是为什么我要实施一个评级系统,这是假点的另一层保障。
我不确定如何设计数据库表。现在我只有:
Location: name, address, type, terrain, difficulty, lng, lat, rating.
评级栏仅允许值:1,2,3,4,5。
我还需要什么来保持评级的总和?
设计表格后。我想知道最合适的方法来计算平均评分,然后能够根据评分删除它们。问题是,如果一个点有1票,评级为1,这是100%否定,那么当一个点有100票,90票,1票,10票,5票时,它将被视为不好。当然,第一个应该被认为更糟,然后删除。我该怎么解决这个问题?
答案 0 :(得分:0)
有很多方法可以做到这一点。更复杂的趋势监测系统缓冲投票并查看最后一天,小时,分钟等的费率。
但是,对于一个简单的系统,您可以查看总票数和平均评分。你可能不关心总和(你可以从另外两个得到它)。
更新评级:
average = ((average*total)+new)/(sum+1);
total ++;
当您查看删除它们时,您需要设置最低投票数(总计)的阈值,然后根据平均评分删除。 1个糟糕的投票可能不够,你认为有多少,取决于你的使用水平。
答案 1 :(得分:0)
我想说制作一个单独的表格,其中包含提交评论的用户ID的位置和ID的外键将是有用的(当然还有评级)。这样用户可以在以后编辑他们的评论。