>  기사  >  데이터 베이스  >  온라인 시험 시스템을 지원하기 위해 MySQL 테이블 구조를 설계하는 방법은 무엇입니까?

온라인 시험 시스템을 지원하기 위해 MySQL 테이블 구조를 설계하는 방법은 무엇입니까?

王林
王林원래의
2023-10-31 09:30:221412검색

온라인 시험 시스템을 지원하기 위해 MySQL 테이블 구조를 설계하는 방법은 무엇입니까?

온라인 시험 시스템을 지원하기 위해 MySQL 테이블 구조를 설계하는 방법은 무엇입니까?

인터넷의 급속한 발전으로 점점 더 많은 교육 기관과 회사에서 시험을 실시하기 위해 온라인 시험 시스템을 채택하기 시작했습니다. 효율적이고 신뢰할 수 있는 온라인 시험 시스템은 합리적인 데이터베이스 설계와 불가분의 관계입니다. 이 기사에서는 온라인 시험 시스템을 지원하기 위해 MySQL 테이블 구조를 설계하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.

온라인 시험 시스템의 기능을 지원하려면 사용자 테이블, 시험 테이블, 문제 테이블, 답안 기록 테이블, 점수 테이블 등의 테이블을 디자인해야 합니다. 각 테이블의 디자인은 아래에서 소개하겠습니다.

  1. 사용자 테이블
    사용자 테이블은 주로 사용자 이름, 비밀번호, 이름, 이메일 등을 포함한 시험 시스템의 사용자 정보를 저장하는 데 사용됩니다. 사용자는 학생, 교사 등 다양한 역할로 구분될 수 있습니다. 테이블 구조는 다음과 같습니다:
CREATE TABLE `user` (
  `user_id` INT(11) NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(255) NOT NULL,
  `password` VARCHAR(255) NOT NULL,
  `name` VARCHAR(255) NOT NULL,
  `email` VARCHAR(255) NOT NULL,
  `role` ENUM('student', 'teacher') NOT NULL,
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `username_UNIQUE` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  1. Exam table
    시험 테이블은 시험 이름, 시험 시간, 시험 기간 등을 포함한 시험 정보를 저장하는 데 사용됩니다. 각 시험에는 여러 질문이 포함될 수 있습니다. 테이블 구조는 다음과 같습니다.
CREATE TABLE `exam` (
  `exam_id` INT(11) NOT NULL AUTO_INCREMENT,
  `exam_name` VARCHAR(255) NOT NULL,
  `exam_time` DATETIME NOT NULL,
  `duration` INT(11) NOT NULL,
  PRIMARY KEY (`exam_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  1. 문제 테이블
    문제 테이블은 문제 내용, 보기 옵션, 정답 등 각 시험에 대한 문제 정보를 저장하는 데 사용됩니다. 테이블 구조는 다음과 같습니다.
CREATE TABLE `question` (
  `question_id` INT(11) NOT NULL AUTO_INCREMENT,
  `exam_id` INT(11) NOT NULL,
  `content` TEXT NOT NULL,
  `options` TEXT NOT NULL,
  `answer` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`question_id`),
  FOREIGN KEY (`exam_id`) REFERENCES `exam`(`exam_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  1. 답변 기록 테이블
    답안 기록 테이블은 사용자 ID, 질문 ID, 사용자가 선택한 답변, 답변 시간 등을 포함한 사용자의 답변 기록을 저장하는 데 사용됩니다. 테이블 구조는 다음과 같습니다.
CREATE TABLE `answer_record` (
  `record_id` INT(11) NOT NULL AUTO_INCREMENT,
  `user_id` INT(11) NOT NULL,
  `question_id` INT(11) NOT NULL,
  `selected_answer` VARCHAR(255) NOT NULL,
  `answer_time` DATETIME NOT NULL,
  PRIMARY KEY (`record_id`),
  FOREIGN KEY (`user_id`) REFERENCES `user`(`user_id`),
  FOREIGN KEY (`question_id`) REFERENCES `question`(`question_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  1. score table
    score 테이블은 사용자 ID, 테스트 ID, 점수 등을 포함한 사용자의 테스트 점수를 저장하는 데 사용됩니다. 테이블 구조는 다음과 같습니다.
CREATE TABLE `score` (
  `score_id` INT(11) NOT NULL AUTO_INCREMENT,
  `user_id` INT(11) NOT NULL,
  `exam_id` INT(11) NOT NULL,
  `score` INT(11) NOT NULL,
  PRIMARY KEY (`score_id`),
  FOREIGN KEY (`user_id`) REFERENCES `user`(`user_id`),
  FOREIGN KEY (`exam_id`) REFERENCES `exam`(`exam_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

위는 온라인 시험 시스템을 지원하기 위한 MySQL 테이블 구조를 설계하기 위한 기본 아이디어와 코드 예시입니다. 데이터베이스 테이블 구조를 합리적으로 설계함으로써 시스템의 성능과 유지 관리 가능성을 향상시켜 온라인 시험 시스템을 더욱 효율적이고 안전하며 안정적으로 만들 수 있습니다. 이 기사가 온라인 시험 시스템의 데이터베이스 구조를 설계하는 데 도움이 되기를 바랍니다.

위 내용은 온라인 시험 시스템을 지원하기 위해 MySQL 테이블 구조를 설계하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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