考試作業(yè)系統(tǒng) ER 圖
create_table.sql
-- 1 Department 部門(mén)
CREATE TABLE tbl_exam_department (
ID NUMBER(20) PRIMARY KEY,
Title VARCHAR2(255) NULL
);
-- 2 User 用戶(hù)
-- 外鍵 2.1 多個(gè)用戶(hù)屬于一個(gè)部門(mén) User 添加 Depart_ID 作為外鍵
CREATE TABLE tbl_exam_user (
ID NUMBER(20) PRIMARY KEY,
Name VARCHAR2(255) NULL,
Password VARCHAR2(255) NULL,
Telephone VARCHAR2(255) NULL,
Gender VARCHAR2(255) NULL,
Age NUMBER(11) NULL,
Department_ID NUMBER(20) REFERENCES tbl_exam_department (ID)
-- 設(shè)置外鍵較好的方式
-- 這樣可以自定義外鍵的名字
-- Department_id NUMBER(20),
-- CONSTRAINT fk_user_department FOREIGN KEY (Department_id) REFERENCES tbl_exam_department (ID)
);
-- 3 Paper 試卷
-- 外鍵 3.1 多個(gè)試卷屬于一個(gè)部門(mén)出的 Paper 添加 Depart_ID 作為外鍵
-- 外鍵 3.2 多個(gè)試卷屬于一個(gè)用戶(hù)出的 Paper 添加 User_ID 作為外鍵
CREATE TABLE tbl_exam_paper (
ID NUMBER(20) PRIMARY KEY,
Type VARCHAR2(255) NULL,
Title VARCHAR2(255) NULL,
Description VARCHAR2(255) NULL,
TotalPoints NUMBER(11) NULL,
CreateTime DATE NULL,
AnswerQuestionTime DOUBLE PRECISION NULL,
Department_ID NUMBER(20) REFERENCES tbl_exam_department (ID),
User_ID NUMBER(20) REFERENCES tbl_exam_user (ID)
);
-- 4 Topic 知識(shí)點(diǎn)
-- 外鍵 4.1
-- 多個(gè)知識(shí)點(diǎn)屬于一個(gè)部門(mén)出的
-- Topic 添加 Depart_ID 作為外鍵
CREATE TABLE tbl_exam_topic (
ID NUMBER(20) PRIMARY KEY,
Title VARCHAR2(255) NULL,
Department_ID NUMBER(20) REFERENCES tbl_exam_department (ID)
);
-- 5 SubjectType 題目類(lèi)型
CREATE TABLE tbl_exam_subjecttype (
ID NUMBER(20) PRIMARY KEY,
Name VARCHAR2(255) NULL,
RealName VARCHAR2(255) NULL
);
-- 6 SubjectLevel 題目難度
CREATE TABLE tbl_exam_subjectlevel (
ID NUMBER(20) PRIMARY KEY,
Name VARCHAR2(255) NULL,
RealName VARCHAR2(255) NULL
);
-- 7 Subject 題目
-- 外鍵 7.1 多個(gè)題目屬于一個(gè)用戶(hù)出的 Subject 添加 User_ID 作為外鍵
-- 外鍵 7.2 多個(gè)題目屬于一個(gè)部門(mén)出的 Subject 添加 Depart_ID 作為外鍵
-- 外鍵 7.3 多個(gè)題目屬于一個(gè)的知識(shí)點(diǎn) Subject 添加 Topic_ID 作為外鍵
-- 外鍵 7.4 多個(gè)題目屬于一個(gè)題目類(lèi)型 Subject 添加 SubjectType_ID 作為外鍵
-- 外鍵 7.5 多個(gè)題目屬于一個(gè)題目難度 Subject 添加 SubjectLevel_ID 作為外鍵
CREATE TABLE tbl_exam_subject (
ID NUMBER(20) PRIMARY KEY,
Stem VARCHAR2(255) NULL,
UploadTime DATE NULL,
Answer VARCHAR2(255) NULL,
Analysis VARCHAR2(255) NULL,
CheckState VARCHAR2(255) NULL,
User_ID NUMBER(20) REFERENCES tbl_exam_user (ID),
Department_ID NUMBER(20) REFERENCES tbl_exam_department (ID),
Topic_ID NUMBER(20) REFERENCES tbl_exam_topic (ID),
SubjectType_ID NUMBER(20) REFERENCES tbl_exam_subjecttype (ID),
SubjectLevel_ID NUMBER(20) REFERENCES tbl_exam_subjectlevel (ID)
);
-- 8 Choice 選項(xiàng)
-- 外鍵 8.1 多個(gè)選項(xiàng)屬于一個(gè)題目 Choice 添加 Subject_ID 作為外鍵
CREATE TABLE tbl_exam_choice (
ID NUMBER(20) PRIMARY KEY,
Content VARCHAR2(255) NULL,
Correct NUMBER(1) NULL,
Subject_ID NUMBER(20) REFERENCES tbl_exam_subject (ID)
);
-- 9 PaperSubject 橋表
-- 外鍵 9.1 橋表添加 Paper_ID 作為外鍵
-- 外鍵 9.2 橋表添加 Subject_ID 作為外鍵
CREATE TABLE tbl_exam_papersubject (
ID NUMBER(20) PRIMARY KEY,
Score NUMBER(11),
Paper_ID NUMBER(20) REFERENCES tbl_exam_paper (ID),
Subject_ID NUMBER(20) REFERENCES tbl_exam_subject (ID)
);
注意:如果只建立外鍵約束逮刨,而不在表中建立外鍵列,會(huì)使得不方便查詢(xún)昌渤。
比如 User 表湿镀,如果不建立 Depart_ID 外鍵列,就不好查詢(xún) user 屬于哪個(gè) Department姿染。
insert_table.sql
-- 部門(mén)
INSERT INTO tbl_exam_department VALUES (1, 'WebUI');
INSERT INTO tbl_exam_department VALUES (2, 'JavaEE');
INSERT INTO tbl_exam_department VALUES (3, '大數(shù)據(jù)');
INSERT INTO tbl_exam_department VALUES (4, 'Android');
INSERT INTO tbl_exam_department VALUES (5, 'PHP');
INSERT INTO tbl_exam_department VALUES (6, 'IOS');
-- 用戶(hù)
INSERT INTO TBL_EXAM_USER VALUES (1, 'shuai', 'shuai', '12345', 'male', 21, 1);
INSERT INTO TBL_EXAM_USER VALUES (2, 'stark', 'stark', '12345', 'male', 21, 2);
INSERT INTO TBL_EXAM_USER VALUES (3, 'snow', 'snow', '12345', 'male', 21, 3);
-- 知識(shí)點(diǎn)
INSERT INTO tbl_exam_topic VALUES (1, 'HTML', 1);
INSERT INTO tbl_exam_topic VALUES (2, 'JavaScript', 1);
INSERT INTO tbl_exam_topic VALUES (3, 'CSS', 1);
INSERT INTO tbl_exam_topic VALUES (4, 'jQuery', 1);
INSERT INTO tbl_exam_topic VALUES (5, 'Bootstrap', 1);
INSERT INTO tbl_exam_topic VALUES (6, 'CoreJava', 2);
INSERT INTO tbl_exam_topic VALUES (7, 'XML', 2);
INSERT INTO tbl_exam_topic VALUES (8, 'Servlet/JSP', 2);
-- 題目類(lèi)型
INSERT INTO tbl_exam_subjecttype VALUES (1, 'radio', '單選題');
INSERT INTO tbl_exam_subjecttype VALUES (2, 'check', '復(fù)選題');
INSERT INTO tbl_exam_subjecttype VALUES (3, 'question', '簡(jiǎn)答題');
-- 題目難度
INSERT INTO tbl_exam_subjectlevel VALUES (1, 'easy', '簡(jiǎn)單');
INSERT INTO tbl_exam_subjectlevel VALUES (2, 'medium', '中等');
INSERT INTO tbl_exam_subjectlevel VALUES (3, 'difficult', '難');
-- 題目
INSERT INTO tbl_exam_subject VALUES
(1, 'Java中的基本數(shù)據(jù)類(lèi)型有哪些', '', '8種基本數(shù)據(jù)類(lèi)型', 'byte,short,int,long,float,double,char,boolean', '未審核', 1, 2, 6, 3,
1);
INSERT INTO tbl_exam_subject VALUES (2, '下面哪種數(shù)據(jù)類(lèi)型占8個(gè)字節(jié)', '', '長(zhǎng)整型', '長(zhǎng)整型占8個(gè)字節(jié)', '未審核', 2, 2, 6, 3, 1);
-- 題目選項(xiàng)
INSERT INTO tbl_exam_choice VALUES (1, 'byte', 0, 2);
INSERT INTO tbl_exam_choice VALUES (2, 'short', 0, 2);
INSERT INTO tbl_exam_choice VALUES (3, 'int', 0, 2);
INSERT INTO tbl_exam_choice VALUES (4, 'long', 1, 2);
注意外鍵約束和插入表的順序背亥。