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クエリを次のように構成します(推奨ではなく、明確な代替手段です)。

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]

私の唯一の考えは、ニーズとこのシステムの監査可能性に応じて、OptionsテーブルとPollsテーブルのタイムスタンプなどの追加フィールドが必要になる場合があるということです。(「date_edited」と「date_created」の違いは?ローステークスのコンテキストでは、これは必要ない場合があります。)

于 2012-10-15T20:48:57.843 に答える