数据库
首页 > 数据库> > php – 在MySQL数据库中存储投票数据的最有效方法(如StackOverflow)

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