如何创建分数上下的数据库关系,就像堆栈溢出一样?
就像没有同一个用户可以为自己的问题投票,而其他人只能投票给一个,无论是负面的还是正面的。
假设我添加的问题是拥有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_id
、user_id
条目。
当用户创建问题时,您可以创建一个具有NULL
值的Votes
条目,该条目将阻止另一个条目,但也意味着没有投票。 对于其他人来说,1
和0
可能是"赞成"和"反对"的投票。
如果你应该从我的答案中得到一件事,那就是避免在字段中使用逗号分隔的值。