数据库分数上下的关系,就像堆栈溢出的一样


database relation of score up and down, Like the stackoverflow one?

如何创建分数上下的数据库关系,就像堆栈溢出一样?

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

假设我添加的问题是拥有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

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

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

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条目。

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

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