php – 在MySQL数据库中存储投票数据的最有效方法(如StackOverflow)
作者:互联网
我正在尝试复制SE的投票系统.我的网站上的用户应该只能对帖子进行一次投票,然后他们就会被锁定.我目前有两个表,用户和帖子.
我应该如何存储用户投票的帖子的信息?我想在帖子中有一个专栏,可以存储投票的用户.另一个想法是在用户中有一个专栏,其中包含他/她投票的帖子的ID.
我该怎么做?我想考虑可扩展性,并且很容易确定投票是否有效.
解决方法:
创建另一个表来存储来自用户和帖子表的信息:
CREATE TABLE votes (
user_id INT
, post_id INT
, PRIMARY KEY (user_id, post_id)
);
用这种方法:
I was thinking of having a column in posts which would store the uids of users which have voted on it. Another idea would have a column in users with the ids of the posts he/she has voted on.
除非您将值存储为分隔值(以适合一个单元格)或JSON,否则您最终只能为一个帖子添加许多行.但那时,开始时这是一个糟糕的方法.
坚持创建一个新表,其中包含确定“投票”的关系.该表非常简单,可以检查:
SELECT COUNT(t1.post_id) AS vote_count FROM votes AS t1 WHERE t1.user_id = SOME_INTEGER AND t1.post_id = SOME_INTEGER
标签:php,mysql,voting-system 来源: https://codeday.me/bug/20190610/1208875.html