0

如何创建分数上下的数据库关系,如stackoverflow之一?

就像没有同一个用户可以为自己的问题投票,而其他人只能投票给一个问题,无论是否定的还是肯定的。

假设我添加的问题是有question_id = 25和我的user_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

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

4

1 回答 1

2

不要在字段使用逗号分隔值。

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

此架构将防止多个question_id,user_id条目。

当用户创建问题时,您可以创建一个Votes条目,其NULL值将阻止另一个条目,但也意味着没有投票。对于其他人,1可能0是“赞成”和“反对”票。

如果您应该从我的回答中删除一件事,那就是避免在 fields 中使用逗号分隔的值

于 2013-10-10T20:28:58.250 回答