如何创建得分上下的数据库关系,就像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
可行吗?如果你有更好的方法,请回复
答案 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_id
,user_id
条目。
当用户创建问题时,您可以创建一个Votes
条目,其NULL
值将阻止另一个条目,但也意味着不投票。对于其他人,1
和0
可以是“向上”和“向下”投票。
如果你应该从我的答案中删除一件事,那就是在字段中避免以逗号分隔的值。