sql >> データベース >  >> RDS >> Database

オンライン調査のためのデータベースモデル。パート2

    パート1 このシリーズの記事では、オンライン調査の基本的な設計について説明しました。その記事の結論として、パート2では、次のような調査のより高度な機能について説明しました。

    • 多肢選択問題などのさまざまな種類の質問
    • 質問の条件付き順序 調査、つまり、調査を通る条件付きパスの可能性
    • 管理 調査の
    • レポート および分析

    さまざまな種類の質問をサポートするように機能を拡張することから始めましょう。

    質問の種類

    パート1 この一連の記事では、質問と回答で構成される自由形式の質問のみを使用していました。この記事では、極(はい-いいえ)の質問など、さまざまな種類の質問を定義します。 および多肢選択問題 。各質問はタイプに関連付けられます。極地の質問については、答えとしてyes / noのみを許可しますが、将来的にはtrue/falseなどのバリエーションを許可する可能性があります。自由回答式ではない質問には、回答者が選択できる可能な回答があります。

    将来的には、評価された回答が必要な質問を追加する予定です。たとえば、「データベース設計はどのくらい好きですか。 1から100の間のレート(1は非常に好きであることを示し、100は非常に好きであることを示します)?」

    エンティティと関係

    調査のさまざまな種類の質問について、「質問」領域を種類と回答の選択肢で拡張します。

    理想的には、データの整合性を確保するために、実際の応答と多肢選択問題(response_choice)の可能な応答の間に外部キーを作成したいと思います。これは、すべての質問に回答の選択肢があり、自由形式の質問が許可されていない場合に機能します。自由形式の質問をサポートする必要があるため、アプリケーションコードの回答の整合性を確保する必要があります。

    フォーマルデザイン

    パート1で作成したERDを拡張する必要があります このシリーズの記事の。以前と同様に、オンラインデータベースモデラーであるVertabeloを使用します。 Vertabeloアカウントをまだお持ちでない場合は、こちらから無料トライアルに登録できます。

    コメントを1つします。 varcharフィールドの長さを定義するために、私は通常100や1000などのラウンド数を使用していることがわかります。これらが必ずしも適切なサイズであることを示唆しているわけではありませんが、長さを未定義のままにするのではなく、これを省略形として使用します。このモデルを使用する場合は、特定の要件に合わせて長さを調整してください。たとえば、回答者が自由形式の質問に対して非常に長い回答を入力できるようにしますか?それとも、たとえば1000文字に制限しますか?これは、フィールドの長さに制限がある場合があるため、データベースを使用するために構築しているアプリケーションによって異なる場合があります。

    質問にリンクされたquestion_typeテーブルを追加します。これらには、「オープンエンド」、「はい-いいえ」、「複数選択」、そして将来的には「評価」という名前が付けられる可能性があります。多肢選択問題の場合、各質問には、選択可能なresponse_choicesがあります。

    これを使用して極地の質問を実装することもできますが、それはやり過ぎだと思います。もう1つの解決策は、response_choiceをquestion_typeにリンクして、question_typeの行「yes-no」をresponse_choiceの行「Yes」と「No」にリンクすることです。多言語の可能性が必要です。次に、回答者の言語のフィールドをresponse_choiceテーブルに含めるか、ユーザーインターフェースで国際化を管理します。




    パート1で作成したテーブルに色を付けました 黄色で表示され、新しく追加されたテーブルはオレンジ色で表示されるため、追加内容がわかりやすくなっています。

    結論

    これで、パート1で説明した改善の実装を開始しました。 このシリーズの記事の。

    次の記事では、次の機能のサポートを追加します。

    • 調査における質問の条件付き順序
    • 調査の管理
    • レポートと分析

    1. MySQLをSQliteに変換する

    2. Pentaho Data Integration(Kettle)CommunityEditionからOracle12cデータベースに接続する

    3. SQL INSERTクエリに重複レコードを挿入しないようにする方法(5つの簡単な方法)

    4. MySQL-phpの行の総数を数える