好的,我知道这不是一个独特的概念。然而,我发现的示例和教程并没有真正涵盖太多,它们都是关于这就是你所做的,上传它并完成。这在很大程度上是可以的。但是我想从头开始构建一个。
我拥有的是对产品进行投票的用户,我正试图弄清楚如何将表格正确地放在一起以支持这一点。所以我有我的用户表,我的产品表,我想从中创建 2 个新表。一个实际上是每个产品的投票,每个产品投票排名都有一个唯一的 ID,这样我就可以有第二个表,上面有评论和投票。我可以在大 table 上创建 2 的组合,是的.. 但我预见到随着 table 的增长会出现问题。所以我宁愿将 2 分开。我想做的另一件事是密切关注 10 个不同的等级选择。 1/2 是最低的 5 是最高的,总票数超过所有选票。那么,至少为每个产品的评分存储构建一个表的最佳方法是什么。
除此之外,输入数字的最佳方式是什么?小数点?整数?我将如何计算 5 星概念。
最佳答案
三个表(我假设您已经有两个):
users (id, etc...)
products (id, etc...)
votes (userId, productId, rating, comments)
rating
可以是 SMALLINT
类型。这为您提供了 0-255 的范围,您可以将其视为用户分数的“十倍”。例如:4 颗星 = 40,0.5 颗星 = 5。除非您预见到用户想要给某些东西打 3.1415 颗星,否则这应该足够了,而且比 float
列的内存效率更高。
然后,当你想求平均分时:
SELECT AVG(rating) FROM votes WHERE productId = xxx
我认为您不应该对这样的表结构有任何特殊问题。如果您非常偏执,那么是的,您可以为评论创建一个单独的表格,但是,这将是过早优化的教科书定义。
关于php mysql 5星评级结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9072814/