アンケート調査機能を実装するために柔軟なMySQLテーブル構造を設計するにはどうすればよいでしょうか?

王林
リリース: 2023-10-31 08:44:36
オリジナル
1304 人が閲覧しました

アンケート調査機能を実装するために柔軟なMySQLテーブル構造を設計するにはどうすればよいでしょうか?

アンケート調査機能を実装するために柔軟な MySQL テーブル構造を設計するにはどうすればよいですか?

1. はじめに
現代社会ではアンケート調査がデータ収集や研究に広く使われていますが、さまざまなアンケート調査のニーズに柔軟に対応するには、合理的な MySQL テーブル構造を設計する必要があります。この記事では、アンケート機能を実装するための柔軟な MySQL テーブル構造の設計方法と、具体的なコード例を紹介します。

2. 分析の必要性

  1. アンケートには複数の質問が含まれており、各質問には複数の選択肢を含めることができます。
  2. ユーザーは、アンケートに記入し、各質問のオプションを選択することができます。
  3. アンケート調査の結果は、その後の統計や分析のためにデータベースに保存する必要があります。

3. テーブルの設計
上記の要件に基づいて、次のテーブルを設計する必要があります:

  1. アンケート テーブル (調査)
    フィールド: id (主キー)、title (アンケートのタイトル)、created_at (作成時間)
  2. 質問テーブル (質問)
    フィールド: id (主キー)、survey_id (アンケート ID、外部キー)、content (質問content)、type (単一選択、複数選択などの質問タイプ)
  3. オプション テーブル (オプション)
    フィールド: id (主キー)、question_id (質問 ID、外部キー)、 content (オプションの内容)
  4. 回答テーブル (回答)
    フィールド: id (主キー)、survey_id (アンケート ID、外部キー)、question_id (質問 ID、外部キー)、option_id (オプション ID、外部キー)、user_id (ユーザー ID) 、created_at (時間の記入)

4. 具体的な実装
以下では、MySQL ステートメントを使用して上記のテーブルを作成し、いくつかのサンプル コードを提供します。

-- アンケート テーブルを作成します
CREATE TABLE アンケート (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);

--質問テーブルの作成
CREATE TABLE 質問 (
id INT PRIMARY KEY AUTO_INCREMENT,
Survey_id INT NOT NULL,
content TEXT NOT NULL,
type TINYINT NOT NULL、 -- 1 は単一の選択を表し、2 は複数の選択を表します
外部キー (survey_id) REFERENCES Surveys(id)
);

-- オプション テーブルの作成
CREATE TABLE options (
id INT PRIMARY KEY AUTO_INCREMENT,
question_id INT NOT NULL,
content TEXT NOT NULL,
FOREIGN KEY (question_id) REFERENCES question(id)
);

- - 回答テーブルの作成
CREATE TABLE 回答 (
id INT PRIMARY KEY AUTO_INCREMENT,
Survey_id INT NOT NULL,
question_id INT NOT NULL,
option_id INT NOT NULL,
user_id INT NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
外部キー (survey_id) REFERENCES 調査 (id),
外部キー (question_id) REFERENCES 質問 (id),
外部キー (option_id) REFERENCES オプション(id)
);

アンケートの具体的な実装については、PHP またはその他のプログラミング言語を使用してページの表示とデータ処理を処理できます。以下は簡単なサンプル コードです。

  1. アンケート ページを作成し、フォームを通じてユーザーの回答を送信します。

<input type="hidden" name="survey_id" value="1">
<?php
    // 获取问题列表
    $questions = // 从数据库中查询问题列表的代码

    foreach ($questions as $question) {
        echo '<p>' . $question['content'] . '</p>';
        
        // 获取选项列表
        $options = // 从数据库中查询选项列表的代码

        foreach ($options as $option) {
            echo '<input type="checkbox" name="question_' . $question['id'] . '[]" value="' . $option['id'] . '"> ' . $option['content'] . '<br>';
        }
    }
?>
<input type="submit" value="提交">
ログイン後にコピー

  1. ユーザーを作成するフォーム送信の処理に使用される PHP ファイル (submit.php)。

// 获取用户提交的答案
$surveyId = $_POST['survey_id'];
$answers = $_POST; // 获取所有POST参数

foreach ($answers as $questionId => $optionIds) {
    if (strpos($questionId, 'question_') !== false) {
        $questionId = str_replace('question_', '', $questionId);
        
        // 保存答案到数据库
        foreach ($optionIds as $optionId) {
            // 将答案插入到answers表中的代码
        }
    }
}
ログイン後にコピー

?>

5. まとめ
MySQL のテーブル構造を合理的に設計することで、柔軟にアンケート調査を実施できます機能を提供し、その後の統計と分析を容易にします。特定の実装プロセスでは、データの整合性と正確性を確保するために、データ テーブルの相関関係と論理処理に注意を払う必要があります。

以上がアンケート調査機能を実装するために柔軟なMySQLテーブル構造を設計するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート