[解決済み] アンケートのためのデータベース設計【終了しました
質問内容
回答がデータベースに保存されるようなアンケートを作成する必要があります。データベースでこれを実装する最善の方法は何か、具体的には必要なテーブルについて考えています。アンケートはさまざまなタイプの質問を含んでいます。たとえば、コメント用のテキストフィールド、複数選択式の質問、複数の回答を含む質問 (該当するものにチェックを入れるなど) などです。
2つの解決策を思いつきました。
-
巨大なテーブルを作成し、その中に 各アンケートの回答 の提出が必要です。各カラムは の答えに対応する。 例えば、SurveyID、Answer1、Answer2、Answer3、Answer4、Answer5、Answer6。 回答2, 回答3
この方法がベストだとは思いませんが 質問数が多いので このアンケートでは アンケートが変更された場合、柔軟に対応できる。
-
もう一つ思いついたのは 質問テーブルと回答テーブルを作成する テーブルがあります。質問テーブルには のすべての質問が含まれています。 アンケート 回答テーブルには アンケートの個々の回答。 各行が質問にリンクしている。
簡単な例です。
tblSurvey : サーベイID
tblQuestion : QuestionID。 アンケートID QuestionType, Question
tblAnswer : AnswerID。 ユーザーID , 質問ID 回答
tblUser : ユーザーID、ユーザー名
この場合の問題点は 回答が大量にある可能性があり、その場合 は、Answerテーブルをかなり巨大化させます。 そのため、このテーブルが巨大化します。 を使用します。
アイデアや提案があれば、ぜひお願いします。
どのように解決するのですか?
2 のモデルで問題ないと思いますが、質問とあらかじめ用意された回答(オファー回答)を保存し、別のアンケートで再利用できるようにする、より複雑なモデルを見てみましょう。
- 1つのアンケートで多くの質問をすることができ、1つの質問を多くのアンケートで(再)使用することができます。
- 1つの(あらかじめ用意された)回答が、多くの質問に対して提供されることがあります。1つの質問に対して、多くの回答を提供することができます。1つの質問に対して、異なるアンケートで異なる回答を提供することができます。異なるアンケートで、異なる質問に対して回答を提供することができます。デフォルトでその他を選択した場合、その人の回答は Answer.OtherText に記録されます。
- 1人が多くのアンケートに参加することができますが、1人が1つのアンケートの特定の質問に回答できるのは1回だけです。
関連
-
SQLラーニングノート--オペランドには1つのカラムが必要です。
-
SQL-初心者のためのベスト入門SQLクエリ I
-
[解決済み] 1つのPostgreSQLクエリで複数のWITHステートメントを使用するには?
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み] "ON UPDATE CASCADE "を使用する場合について
-
[解決済み] SQLクエリは、複数のテーブルからデータを返す
-
[解決済み] Selectステートメントで特定のフィールドの重複を検索する
-
[解決済み] 別のテーブルに一致する項目がない行を選択するにはどうすればよいですか?
-
[解決済み】多言語データベースのためのスキーマ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
SQLラーニングノート--オペランドには1つのカラムが必要です。
-
MySQL - ストアドプロシージャ (データ型、関数)
-
[解決済み] PostgreSQLのCREATE DATABASE IF NOT EXISTSをシミュレートしてみませんか?
-
[解決済み] SQLのSELECTでIF...THENを実行するにはどうすればよいですか?
-
[解決済み] テーブルネーミングのジレンマ:単数形と複数形の名前【非公開
-
[解決済み] PostgreSQLからのPL/pgSQL出力をCSVファイルに保存する
-
[解決済み] SQL Serverにおける関数とストアドプロシージャの比較
-
[解決済み] NOT IN vs NOT EXISTS
-
[解決済み] SQLサーバーで行を列に効率的に変換する
-
[解決済み] Selectステートメントで特定のフィールドの重複を検索する