如何設計MySQL表結構來支持在線考試系統?
隨著互聯網的快速發展,越來越多的教育機構和企業開始采用在線考試系統來進行考試。而一個高效可靠的在線考試系統離不開一個合理的數據庫設計。本文將介紹如何設計MySQL表結構來支持在線考試系統,并提供具體的代碼示例。
為了支持在線考試系統的功能,我們需要設計以下幾個表:用戶表、考試表、試題表、答題記錄表和成績表。下面將分別介紹每個表的設計。
- 用戶表
用戶表主要用于存儲考試系統的用戶信息,包括用戶名、密碼、姓名、郵箱等。用戶可以分為不同的角色,比如學生和教師。表結構如下:
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;
登錄后復制
- 考試表
考試表用于存儲考試的信息,包括考試名稱、考試時間、考試時長等。每個考試可以包含多個試題。表結構如下:
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;
登錄后復制
- 試題表
試題表用于存儲各個考試的試題信息,包括試題內容、答案選項和正確答案等。表結構如下:
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;
登錄后復制
- 答題記錄表
答題記錄表用于存儲用戶的答題記錄,包括用戶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;
登錄后復制
- 成績表
成績表用于存儲用戶的考試成績,包括用戶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;
登錄后復制