分数上下的数据库关系,就像stackoverflow一样?

时间:2013-10-10 20:22:41

标签: php mysql

如何创建得分上下的数据库关系,就像stackoverflow一样?

同样的方式,没有相同的用户可以投票给自己的问题而其他人只能投票给一个,无论是消极还是积极。

我想添加的问题是question_id = 25user_id=04。 还有3个其他用户分别有user_id =01, 02, 03

现在user_id = 04无法使用question_id = 25投票。(很好)

我希望用户使用user_id = 01,02,03进行投票。

是否就像为数据库中的每个投票创建每一行一样?

question_id     user_id
  25               01
  25               02
  25               03

要检查用户是否投了某个问题?

或者有没有办法在同一个字段中容纳选民user_id?

question_id      user_id
    25          01, 02, 03

可行吗?如果你有更好的方法,请回复

1 个答案:

答案 0 :(得分:2)

在字段中使用逗号分隔值。

CREATE TABLE Votes (
    question_id int unsigned,
    user_id int unsigned,
    vote boolean null default null,
    unique key (question_id, user_id)
);

此架构将阻止多个question_iduser_id条目。

当用户创建问题时,您可以创建一个Votes条目,其NULL值将阻止另一个条目,但也意味着不投票。对于其他人,10可以是“向上”和“向下”投票。

如果你应该从我的答案中删除一件事,那就是在字段中避免以逗号分隔的值

相关问题