2

我的目标是一个简单的投票系统,用户可以在其中创建投票问题,为投票提供一组选项(答案)并对每个投票进行投票。我将提供一组我需要收集的简单字段。然后,我将提供我的解决方案。你能告诉我我的解决方案是否可以接受吗?

必填字段:questionText、date、(poster)userId、options(answers)、response、(responder)userID、responseDate


我目前的解决方案:

Table: Polls
Fields: questionID, questionText, date, userID

Table: Options
Fields: optionID, optionText, questionID

Table: Respnoses
Fields: responseID, optionID, userID, responseDate


因此,要查找用户是否响应了特定民意调查,我必须这样查询:

SELECT responseID FROM Responses
WHERE userID = [user's id] AND optionID IN(
Select optionID FROM Options
WHERE questionID = [specific questionID])


这个查询也有意义吗?
提前致谢。

4

1 回答 1

0

这个模型对我来说看起来不错,查询也是如此。我是 JOIN 的粉丝,所以我会像这样构建您的选择查询(不是建议,只是一个明确的替代方案):

SELECT p.questionText, o.optionText AS selected_answer, r.responseDate, r.userID
FROM Responses r
    JOIN Options o ON r.optionID = o.optionID
    JOIN Polls p ON o.questionID = p.questionID
WHERE r.userID = [user ID]

我唯一的想法是,根据您的需求以及您希望该系统的可审计性,您可能需要额外的字段,例如选项和投票表上的时间戳。(“date_edited”与“date_created”?在低风险的情况下,这可能不需要。)

于 2012-10-15T20:48:57.843 回答