如何存储评级系统的 ID?
Posted
技术标签:
【中文标题】如何存储评级系统的 ID?【英文标题】:How to store ids for a rating system? 【发布时间】:2012-04-03 04:10:04 【问题描述】:全部
我需要有关如何将评估者的 ID 存储在 mysql 数据库中以便在 php 脚本中使用它的快速帮助。喜欢 我有一个 php 星级评分脚本,我希望当有人对个人资料进行评分时,他/她的 id 应该存储在数据库中,以检查他们是否已经投票。如何将其与其他评估者个人资料 ID 一起存储在单个列中。数据库结构是这样的
user_id | rated_value | rated_count | raters_id
这里的 user_id 是正在评分的配置文件的 ID rated_value 是所有投票的总价值 rated_count 是对特定配置文件进行评级的总费率数。 而raters_id 是对该个人资料进行评分的所有评分者的ID。
现在我想检查配置文件 ID 是否已使用 php 对配置文件进行评级。我听说过逗号分隔的 id 列表,但这是个好主意。如果我使用逗号分隔列表,如果 id 已被评为配置文件,我如何检查 php。
感谢您的帮助。
【问题讨论】:
【参考方案1】:您只需要 3 列:
user_id | rated_value | rater_id
您必须在此处存储每个评分,这样您甚至可以告知用户他过去评分了多少星。
要获得user_id = 1
的总评分,请在 MySQL 中使用聚合函数和分组:
SELECT
AVG(rated_value) as average_rating,
COUNT(*) AS number_of_votes
FROM
user_rating
WHERE
user_id = 1
GROUP BY
user_id
要检查rater_id = 3
是否评价user_id = 1
使用简单查询
SELECT rated_value FROM user_rating WHERE user_id = 1 AND rater_id = 3
并检查它是否返回任何结果
【讨论】:
但我仍然可以将 rater_id 存储在数据库中,因为会有很多 id 会对配置文件进行评分 在我的解决方案中,user_rating
中的每一行都代表每次投票,因此如果两个用户对user_id=1
进行评分,那么将有两行带有user_id=1
并且它们都将具有不同的rater_id
。
好的,但是您能否提供一个关于仅存储rater_id 的不同表的想法。有可能吗?
是的,这是可能的,你应该能够从我的回答中弄清楚。以上是关于如何存储评级系统的 ID?的主要内容,如果未能解决你的问题,请参考以下文章
在不使用表连接的情况下计算按 ID 分组的匹配评级?可能吗? MYSQL?