我的数据库知识是合理的,我会说,我正在使用MySQL(InnoDb),并做了一些Postgres工作。总之...
我目前存储此数据的计划:
显然用户数据在另一个表格中。
要添加他们的选择,我必须查询他们之前是否已投票并插入,否则,更新。 如果我想查看民意调查结果,每次有人想要查看民意调查时,我都需要遍历所有决策(尽管是索引部分)。
我的问题是
答案 0 :(得分:1)
设计听起来不错,有些想法:
民意调查表:民意调查,问题。
选择表:选择ID,文本。
将民意调查与选择联系起来的表格:民意调查id->选择ID。
用户表:用户详细信息,用户ID。
投票表:(用户ID,投票ID),选择ID,时间戳。 (括号是唯一的一对)
单个用户的插入/更新将正常工作,因为您可以检查是否存在用户ID和投票ID的条目。
通过使用COUNT,您可以更轻松地查看结果。
e.g.: SELECT COUNT(*) FROM votes WHERE pollid = id AND decision = choiceid
这会告诉你有多少人在民意调查中投了“choiceid”投票。
晚编辑:
如果它不存在,这是一种插入方式,如果存在则更新:
IF EXISTS (SELECT * FROM TableName WHERE UserId='Uid' AND PollId = 'pollid')
UPDATE TableName SET (set values here) WHERE UserId='Uid' AND PollId = 'pollid'
ELSE
INSERT INTO TableName VALUES (insert values here)