>  기사  >  데이터 베이스  >  설문 조사 기능을 구현하기 위해 유연한 MySQL 테이블 구조를 설계하는 방법은 무엇입니까?

설문 조사 기능을 구현하기 위해 유연한 MySQL 테이블 구조를 설계하는 방법은 무엇입니까?

王林
王林원래의
2023-10-31 08:44:361188검색

설문 조사 기능을 구현하기 위해 유연한 MySQL 테이블 구조를 설계하는 방법은 무엇입니까?

설문 조사 기능을 구현하기 위해 유연한 MySQL 테이블 구조를 설계하는 방법은 무엇입니까?

1. 소개
설문조사는 현대 사회의 데이터 수집 및 연구에 널리 사용됩니다. 다양한 설문조사 요구에 유연하게 적응하려면 합리적인 MySQL 테이블 구조를 설계해야 합니다. 이 기사에서는 설문지 기능을 구현하기 위해 유연한 MySQL 테이블 구조를 설계하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.

2. 요구 분석

  1. 설문지에는 여러 질문이 포함되어 있으며 각 질문에는 여러 옵션이 있을 수 있습니다.
  2. 사용자는 설문지를 작성하고 각 질문에 대한 옵션을 선택할 수 있습니다.
  3. 설문지 결과는 후속 통계 및 분석을 위해 데이터베이스에 저장되어야 합니다.

3. 테이블 디자인
위 요구 사항에 따라 다음 테이블을 디자인해야 합니다.

  1. 설문 테이블(설문조사)
    필드: id(기본 키), 제목(설문지 제목),created_at(생성 시간)
  2. 질문 테이블(질문)
    필드: id(기본 키), Survey_id(설문지 ID, 외래 키), content(질문 내용), type(단일 선택, 객관식 등 질문 유형)
  3. 옵션 table(옵션)
    Fields: id(기본 키), Question_id(질문 ID, 외래 키), content(옵션 내용)
  4. Answer 테이블(답변)
    Fields: id(기본 키), Survey_id(질문 ID, 외래 키) ), Question_id (질문 ID, 외래 키) ), option_id (옵션 ID, 외래 키), user_id (사용자 ID), Create_at (입력 시간)

4. 구체적인 구현
다음은 MySQL 문을 사용하여 위의 표를 확인하고 몇 가지 샘플 코드를 제공하세요.

--CREATE TABLE 설문조사(
ID INT PRIMARY KEY AUTO_INCREMENT,
제목 VARCHAR(255) NOT NULL,
create_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);

--CREATE TABLE(질문

ID INT PRIMARY KEY AUTO_INCRE 멘트,
Survey_id INT NOT NULL,
콘텐츠 TEXT NOT NULL,
유형 TINYINT NOT NULL, -- 1은 단일 선택, 2는 다중 선택을 의미
FOREIGN KEY (survey_id) REFERENCES Surveys(id)
)

--CREATE TABLE 옵션(

id INT PRIMARY KEY AUTO_INCREMENT,

Question_id INT NOT NULL,
content TEXT NOT NULL,
FOREIGN KEY (question_id) REFERENCES questions(id)
);

-- 답변 테이블 만들기
CREATE TABLE 답변 (

id INT PRIMARY KEY AUTO_INCREMENT,

조사_ID INT NOT NULL,
질문_ID INT NOT NULL,
option_id INT NOT NULL,
user_id INT NOT NULL,
create_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN K EY(조사_ID) REFERENCES 설문조사(id),
FOREIGN KEY (question_id) REFERENCES 질문(id),
FOREIGN KEY (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="提交">

양식 제출을 처리하기 위한 PHP 파일(submit.php)을 만듭니다.

  1. // 获取用户提交的答案
    $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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.