在线考试系统数据库设计Word文档格式.docx
《在线考试系统数据库设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《在线考试系统数据库设计Word文档格式.docx(23页珍藏版)》请在冰点文库上搜索。
tb_answer:
简答题信息表17
tb_subject:
考试科目信息表18
3.5视图设计19
3.6索引设计19
3.7序列设计19
3.8完整性设计20
3.9授权设计20
3.10触发器设计20
3.11存储过程设计24
3.11.1CRUD中的CUD三个操作24
3.12数据复制设计26
4查询记录语句26
5词汇表27
6历史数据处理27
1引言
1.1编写目的
本文档是本项目开发中至关重要的一部分,通过本档编写,对本项目中相关数据存储信息进行明确定位,对数据结构等相关信息进行明确说明。
本文档尽可能的详细说明各个实体的属性及相互联系,使开发人员的开发效率尽可能增加。
1.2项目来源
Ø
实训要求
开发人员:
全体成员
文档使用者:
oracle开发人员、程序设计人员
1.3文档约定
1.4预期读者和阅读建议
对oracle和java熟悉
测试人员:
对java及oracle有一定的了解
1.5参考资料
1《在线考试系统可行性分析》
2《在线考试系统需求分析》
3《项目(bbs)数据库设计文档—刘维毅》
4
2数据库命名规则
db_examonline:
在线考试系统数据库
监考人员
学生或用户信息表
选择题相关信息表
简答题相关信息
判断题相关信息
管理员信息表
数据库测试试题
3数据库设计说明
3.1数据库逻辑设计
数据字典
●考生属性:
编号tid,姓名uname,登录密码upassword,学号uno,班级uclass,考试状态ustate
●监考人员属性:
编号tid,姓名name,登录密码password
●管理员属性:
编号aid,姓名name,登录密码password
●试卷属性:
编号pid,科目subject,选择题数量snum,判断题数量bnum,问答题数量anum,考试时间pageDate
●选择题属性:
编号id,题目name,选项AoptionA,选项BoptionB,选项CoptionC,选项DoptionD,所属科目subject
●判断题属性:
编号id,题目name,对选项yes,错选项no,所属科目subject
●简答题属性:
编号id,题目name,所属科目subject
●科目属性:
编号sid,科目subject
实体关系
编号
姓名
学号
考试状态
登录密码
班级
考生
监考人员
管理员
考试试卷
选择题数目
判断题数目
科目名称
简答题数目
题目
选项A
选项D
选项B
选项C
选择题
判断题
考试时间
简答题
科目
E_R图
组成
监考
管理
做
S—R关系:
学生关系表:
Stb_user(usid,uname,upassword,uno,uclass,ustate)
监考人员关系表:
Stb_invigilate(tid,name,password)
管理员信息关系:
Stb_admin(aid,name,password)
考试试卷信息关系:
Stb_page(usid,pid,subject,snum,bnum,anum,pageDate)
选择题信息关系:
Stb_select(id,pid,subject,name,
optionA,optionB,optionC,optionD)
判断题信息关系:
Stb_boolean(id,pid,subject,name,yes,no)
简答题信息关系:
Stb_answer(id,pid,subject,name)
科目信息关系:
Stb_subject(sid,subject)
3.2数据库物理设计
暂无
3.3数据库分布
3.4基表设计
在线考试系统数据库:
3.4.1.tb_user:
考生信息表
属性:
编号Tid,姓名name,登录密码password,学号number,班级class,考试状态state
字段名称
数据类型
长度
主键
描述
Tid
number
10
是
主键标识
uname
Varchar2
50
否
学生姓名
upassword
char
16
uno
uclass
ustate
1
Createtabletb_user(
Tidnumber(10)primarykey,
Unamevarchar2(50),
Upasswordchar(16),
Unonumber(10),
Uclassvarchar2(50),
Ustatenumber
(1)
);
3.4.2.tb_invigilate:
监考人员信息表
tid
name
password
Createtabletb_invigilate(
Namevarchar2(50),
Passwordchar(16)
3.4.3.tb_admin:
aid
Createtabletb_admin(
Aidnumber(10)primarykey,
Namevarchar2(50),
3.4.4.tb_page:
考试试卷信息表
属性:
pid
subject
科目(外键)
snum
2
选择题数量
bnum
判断题数量
anum
问答题数量
pageDate
date
/
学生编号(外键)
Createtabletb_page(
Pidnumber(10)primarykey,
Subjectvarchar2(50),
Snumnumber
(2),
Bnumnumber
(2),
Anumnumber
(2),
pageDatedate,
tidnumber(10),
constraintpage_FKforeignkey(subject)references
tb_subject(subject),
constraintpage_FK2foreignkey(tid)references
tb_user(tid)
3.4.5.tb_select:
选择题信息表
id
optionA
100
optionB
optionC
optionD
试卷编号(外键)
Createtabletb_select(
Idnumber(10)primarykey,
optionAvarchar2(100),
optionBvarchar2(100),
optionCvarchar2(100),
optionDvarchar2(100),
subjectvarchar2(50),
pidnumber(10),
constraintselect_FKforeignkey(subject)references
constraintselect_FK2foreignkey(pid)references
tb_page(pid)
3.4.6.tb_boolean:
判断题信息表
Createtabletb_boolean(
idnumber(10)primarykey,
Pidnumber(10),
constraintboolean_FKforeignkey(subject)referencestb_subject(subject),
constraintboolean_FK2foreignkey(pid)references
3.4.7.tb_answer:
简答题信息表
5
Createtabletb_answer(
Idnumber(5)primarykey,
constraintanswer_FKforeignkey(subject)referencestb_subject(subject),
constraintanswer_FK2foreignkey(pid)references
3.4.8.tb_subject:
考试科目信息表
sid
科目自增编号
是
Createtabletb_subject(
Sidnumber(10),
Subjectvarchar2(50)primarykey
//备注uid是关键字已被系统占用
3.5视图设计
3.6索引设计
3.7序列设计
设计目的:
通过序列的设计,可以使得编号可以进行自增,从而达到设计目的。
●Tb_sq
序列自动进行递增
初值为:
递增为:
最大值:
无
Createsequencetb_sq
Incrementby1
Startwith1
Nomaxvalue
Nocycle
Cache10;
●Tb_invigilate_sq
监考人员的tid自动进行递增
Createsequencetb_invigilate_sq
Incrementby10
Startwith10
Nomaxvalue
Nocycle
Cache10;
3.8完整性设计
请参阅本文档的基表设计的外键设置
3.9授权设计
3.10触发器设计
●Tb_user_trigger
Createorreplacetriggertb_user_trigger
Beforeinsertontb_user
Foreachrow
Declare
Next_nonumber;
Begin
Selecttb_sq.nextval
Intonext_no
Fromdual;
:
new.tid:
=next_no;
End;
--insertintotb_user(uname,upassword,uno,uclass,ustate)
--values(…);
●Tb_invigilate_trigger
Createorreplacetriggertb_invigilate_trigger
Beforeinsertontb_invigilate
●Tb_admin_trigger
Createorreplacetriggertb_admin_trigger
Beforeinsertontb_admin
Begin
new.aid:
●Tb_page_trigger
Createorreplacetriggertb_page_trigger
Beforeinsertontb_page
new.pid:
●Tb_select_trigger
Createorreplacetriggertb_select_trigger
Beforeinsertontb_select
new.id:
●Tb_boolean_trigger
Createorreplacetriggertb_boolean_trigger
Beforeinsertontb_boolean
●Tb_answer_trigger
Createorreplacetriggertb_answer_trigger
Beforeinsertontb_answer
●Tb_subject_trigger
Createorreplacetriggertb_subject_trigger
Beforeinsertontb_subject
Declare
new.sid:
3.11存储过程设计
3.11.1CRUD中的CUD三个操作
--向试卷表中插入信息(create操作)
Createorreplaceprocedureinsert_tb_page(
p_subjectintb_page.subject%type,
p_snumintb_page.snum%type,
p_bnumintb_page.bnum%type,
p_anumintb_page.anum%type,
p_pageDateintb_page.pageDate%type,
--插入系统时间sysdate
p_tidintb_page.tid%type
)as
Insertintotb_page(subject,snum,bnum,anum,pageDate,tid)values
(p_subject,p_snum,p_bnum,p_anum,p_pageDate,p_tid);
Exception
WhenDUP_VAL_ON_INDEXthen
Dbms_output.put_line('
subjectprimarykeyerror!
'
);
Whenothersthen
异常'
Endinsert_tb_page;
--//执行过程:
executeinsert_tb_page(‘’,’’,…);
--向判断题表中插入信息(create操作)
Createorreplaceprocedureinsert_tb_boolean(
b_nameintb_boolean.name%type,
b_subjectintb_boolean.subject%type,
b_pidintb_boolean.pid%type)as
begin
Insertintotb_boolean(name,subject,pid)values
(b_name,b_subject,b_pid);
Endinsert_tb_boolean;
executeinsert_tb_boolean(‘’,’’,…);
--向简答题表中插入信息
Createorreplaceprocedureinsert_tb_answer(
a_nameintb_answer.name%type,
a_subjectintb_answer.subject%type,
a_pidintb_answer.pid%type
)
as
Insertintotb_answer(name,subject,pid)values
(a_name,a_subject,a_pid);
Endinsert_tb_answer;
--向科目表中插入信息
Createorreplaceprocedureinsert_tb_subject(
s_subjectintb_subject.subject%type
)as
Insertintotb_subject(subject)values
(s_subject);
Endinsert_tb_subject;
--向选择题表中插入信息
Createorreplaceprocedureinsert_tb_select(
s_nametb_select.name%type,
s_optionAtb_select.optionA%type,
s_optionBtb_select.optionB%type,
s_optionCtb_select.optionC%type,
s_optionDtb_select.optionD%type,
s_subjecttb_select.subject%type,
s_pidtb_select.pid%type