1. 本章任務
根據上一節的讨論,本章來實作真實的MySQL資料庫結構。
貓哥習慣于使用Navicat進行MySQL操作,對于MySQL和Navicat的使用在前面的教程已經介紹過了,此處不再贅述,感興趣的童鞋可以翻看之前的部落格。
2. 使用者表 user
首先得有一個表存儲使用者的資訊,姓名name是必須要存儲的,另外為了防止重名,還需要給他為一個唯一編号id,另外使用者登入需要密碼password,最後由于使用者還要區分角色role,是以使用者表設計如下。

需要注意幾點:
user_id是自動增長的,也就是說資料庫會從1、2、3、4依次給記錄配置設定user_id。
user_role的取值為master、teacher、student,分别代表校長、教師、學生。
3. 課程表 course
課程需要唯一辨別id,課程名稱name,還有課程所屬的教師id(使用者id)。是以設計如下:
4. 學生選課表 selection
需要記錄唯一辨別id,學生id和選擇的課程id。
5. 作業題目表 title
需要記錄唯一辨別id,作業題目所屬的課程,作業題目釋出時間,作業題目内容。
6. 學生送出作業内容表 job
需要記錄唯一辨別id,作業内容content,對應的題目title,對應的學生user,送出時間time,得分情況score。
7. 總結
此時總體結構如下,Navicat可直接檢視整體結構圖:
同時也提供下生成該資料庫的sql語句:
-- ----------------------------
-- Table structure for course
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
`course_id` int(11) NOT NULL AUTO_INCREMENT,
`course_user` int(255) DEFAULT NULL COMMENT '所屬教師id',
`course_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
PRIMARY KEY (`course_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for job
-- ----------------------------
DROP TABLE IF EXISTS `job`;
CREATE TABLE `job` (
`job_id` int(11) NOT NULL AUTO_INCREMENT,
`job_title` int(255) DEFAULT NULL COMMENT '對應題目',
`job_user` int(255) DEFAULT NULL COMMENT '對應學生',
`job_time` datetime(0) DEFAULT NULL COMMENT '時間',
`job_content` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '内容',
`job_score` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '得分',
PRIMARY KEY (`job_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for selection
-- ----------------------------
DROP TABLE IF EXISTS `selection`;
CREATE TABLE `selection` (
`selection_id` int(11) NOT NULL AUTO_INCREMENT,
`selection_user` int(255) DEFAULT NULL COMMENT '選課學生id',
`selection_course` int(255) DEFAULT NULL COMMENT '選課課程id',
PRIMARY KEY (`selection_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for title
-- ----------------------------
DROP TABLE IF EXISTS `title`;
CREATE TABLE `title` (
`title_id` int(11) NOT NULL AUTO_INCREMENT,
`title_content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '題目内容',
`title_course` int(255) DEFAULT NULL COMMENT '對應課程id',
`title_time` datetime(0) DEFAULT NULL COMMENT '釋出時間',
PRIMARY KEY (`title_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_role` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`user_password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;