1、数据库设计文档 成员:曹丽琼 冯继伟 刘维毅 班级08软工三班 指导老师:郭东恩 日 期:2011-5-22 目录 数据库设计文档 1 目录 2 数据库设计文档 3 1 引言 3 1.1 编写目的 3 1.2 项目来源 3 1.3 文档约定 3 1.4 预期读者和阅读建议 3 1.5 参考资料 3 2 数据库命名规则 4 3 数据库设计说明 5 3.1 数据库逻辑设计 5 数据词典 5 实体关系 6 E_R图 10
2、 SR关系: 10 3.2 数据库物理设计 11 3.3 数据库分布 11 3.4 基表设计 11 3.4.1. tb_user: 考生信息表 12 3.4.2. tb_invigilate: 监考人员信息表 13 3.4.3. tb_admin: 管理员信息表 13 3.4.4. tb_page:考试试卷信息表 14 3.4.5. tb_select:选择题信息表 15 3.4.6. tb_boolean:判断题信息表 16 3.4.7. tb_answer:简答题信息表 17 3.4.8. tb_subject:考试科目信息表 18 3.5 视图设计 19 3.6
3、 索引设计 19 3.7 序列设计 19 3.8 完整性设计 20 3.9 授权设计 20 3.10 触发器设计 20 3.11 存储过程设计 24 3.11.1 CRUD中的CUD三个操作 24 3.12 数据复制设计 26 4 查询记录语句 26 5 词汇表 27 6 历史数据处理 27 数据库设计文档 1 引言 1.1 编写目的 本文档是本项目开发中至关重要的一部分,通过本档编写,对本项目中相关数据存储信息进行明确定位,对数据结构等相关信息进行明确说明。本文档尽可能的详细说明各个实体的属性及相互联系,使开发人员的开发效率尽可能增加。 1.2 项目来源
4、Ø 实训要求 Ø 开发人员:全体成员 Ø 文档使用者:oracle 开发人员、 程序设计人员 1.3 文档约定 1.4 预期读者和阅读建议 Ø 开发人员: 对oracle和java熟悉 Ø 测试人员: 对java及oracle有一定的了解 1.5 参考资料 1 《在线考试系统可行性分析》 2 《在线考试系统需求分析》 3 《项目(bbs)数据库设计文档—刘维毅》 4 2 数据库命名规则 Ø db_examonline: 在线考试系统数据库 Ø tb_invigilate: 监考人员 Ø tb_user: 学生或用户信息表 Ø tb_select:选择题相关
5、信息表 Ø tb_answer:简答题相关信息 Ø tb_boolean:判断题相关信息 Ø tb_admin: 管理员信息表 Ø tb_page:数据库测试试题 3 数据库设计说明 3.1 数据库逻辑设计 数据字典 l 考生属性:编号tid,姓名uname,登录密码upassword,学号uno,班级uclass,考试状态ustate l 监考人员属性:编号tid,姓名name,登录密码password l 管理员属性:编号aid,姓名name,登录密码password l 试卷属性:编号pid,科目subject, 选择题数量snum, 判断题数量bnum, 问
6、答题数量anum,考试时间pageDate l 选择题属性:编号id,题目name,选项A optionA,选项B optionB,选项C option C,选项D optionD,所属科目subject l 判断题属性:编号id,题目name,对选项yes,错选项no ,所属科目subject l 简答题属性:编号id,题目name, 所属科目subject l 科目属性:编号sid,科目subject 实体关系 编号 姓名 学号 考试状态 登录密码 班级 考生 监考人员 编号 姓名 登录密码 管理员 姓名 登录密码 编号 考试试卷 选择
7、题数目 判断题数目 科目名称 简答题数目 编号 编号 题目 选项A 科目名称 选项D 选项B 选项C 选择题 判断题 题目 科目名称 编号 考试时间 简答题 题目 科目名称 编号 科目 科目名称 编号 E_R图 考生 监考人员 管理员 选择题 简答题 判断题 科目 考试试卷 组成 监考 管理 做 组成 S—R关系: 学生关系表:Stb_user(usid,uname,upassword,uno,uclass,ustate) 监考人员关系表:Stb_invigilate(tid,name,passwor
8、d) 管理员信息关系: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
9、) 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 number 10 否 学号 uclass Varchar2 5
10、0 否 班级 ustate number 1 否 考试状态 Create table tb_user( Tid number(10) primary key, Uname varchar2(50), Upassword char(16), Uno number(10), Uclass varchar2(50), Ustate number(1) ); 3.4.2. tb_invigilate: 监考人员信息表 属性:编号tid,姓名name,登录密码password 字段名称 数据类型 长度 主键 描述 tid
11、 number 10 是 主键标识 name Varchar2 50 否 姓名 password char 16 否 登录密码 Create table tb_invigilate( Tid number(10) primary key, Name varchar2 (50), Password char(16) ); 3.4.3. tb_admin: 管理员信息表 属性:编号aid,姓名name,登录密码password 字段名称 数据类型 长度 主键 描述 aid number 10 是 主键标识 n
12、ame Varchar2 50 否 姓名 password char 16 否 登录密码 Create table tb_admin( Aid number(10) primary key, Name varchar2(50), Password char(16) ); 3.4.4. tb_page:考试试卷信息表 属性:编号pid,科目subject, 选择题数量snum, 判断题数量bnum, 问答题数量anum,考试时间pageDate 字段名称 数据类型 长度 主键 描述 pid nu
13、mber 10 是 主键标识 subject Varchar2 50 否 科目(外键) snum number 2 否 选择题数量 bnum number 2 否 判断题数量 anum number 2 否 问答题数量 pageDate date / 否 考试时间 tid number 10 是 学生编号(外键) Create table tb_page( Pid number(10) primary key, Subject varchar2(50), Snu
14、m number(2), Bnum number(2), Anum number(2), pageDate date, tid number(10), constraint page_FK foreign key (subject) references tb_subject(subject), constraint page_FK2 foreign key(tid) references tb_user(tid)
15、 ); 3.4.5. tb_select:选择题信息表 属性:编号id,题目name,选项A optionA,选项B optionB,选项C option C,选项D optionD,所属科目subject 字段名称 数据类型 长度 主键 描述 id number 10 是 主键标识 name Varchar2 50 否 题目 optionA Varchar2 100 否 选项A optionB Varchar2 100 否 选项B optionC Varchar2 100 否 选项C optionD
16、Varchar2 100 否 选项D subject Varchar2 50 否 科目(外键) pid number 10 是 试卷编号(外键) Create table tb_select( Id number(10) primary key, Name varchar2(50), optionA varchar2(100), optionB varchar2(100), optionC varchar2(100), optionD varchar2(100),
17、 subject varchar2(50), pid number(10), constraint select_FK foreign key(subject) references tb_subject(subject), constraint select_FK2 foreign key(pid) references tb_page(pid) ); 3.4.6. tb_boolean:判断题信息表 属性:编号id,题目name,对选项yes,错选项no ,所属科
18、目subject 字段名称 数据类型 长度 主键 描述 id number 10 是 主键标识 name Varchar2 50 否 题目 subject Varchar2 50 否 科目(外键) pid number 10 否 试卷编号(外键) Create table tb_boolean( id number(10) primary key, Name varchar2(50), Subject varchar2(50), Pid number(10)
19、 constraint boolean_FK foreign key(subject) references tb_subject(subject), constraint boolean_FK2 foreign key(pid) references tb_page(pid) ); 3.4.7. tb_answer:简答题信息表 属性:编号id,题目name, 所属科目subject 字段名称 数据类型 长度 主键 描述 id number 5 是 主键标识 name Varchar2
20、 50 否 题目 subject Varchar2 50 否 科目(外键) pid number 10 否 试卷编号(外键) Create table tb_answer( Id number(5) primary key, Name varchar2(50), Subject varchar2(50), Pid number(10), constraint answer_FK foreign key(subject) references tb_subject(subject), constrain
21、t answer_FK2 foreign key(pid) references tb_page(pid) ); 3.4.8. tb_subject:考试科目信息表 属性:编号sid,科目subject 字段名称 数据类型 长度 主键 描述 sid number 10 否 科目自增编号 subject Varchar2 50 是 主键标识 Create table tb_subject( Sid number(10) , Subject varchar2(50) prim
22、ary key ); //备注uid是关键字已被系统占用 3.5 视图设计 3.6 索引设计 3.7 序列设计 Ø 设计目的:通过序列的设计,可以使得编号可以进行自增,从而达到设计目的。 l Tb_sq 序列自动进行递增 初值为:1 递增为:1 最大值:无 Create sequence tb_sq Increment by 1 Start with 1 Nomaxvalue Nocycle Cache 10; l Tb_invigilate_sq 监考人员的 tid 自动进行递增 Create sequence tb_i
23、nvigilate_sq Increment by 10 Start with 10 Nomaxvalue Nocycle Cache 10; 3.8 完整性设计 请参阅本文档的基表设计的外键设置 3.9 授权设计 3.10 触发器设计 l Tb_user_trigger Create or replace trigger tb_user_trigger Before insert on tb_user For each row Declare Next_no number; Begin Select tb_sq.nextval Into next_
24、no From dual; :new.tid:=next_no; End; / --insert into tb_user (uname, upassword,uno, uclass, ustate) --values(…); l Tb_invigilate_trigger Create or replace trigger tb_invigilate_trigger Before insert on tb_invigilate For each row Declare Next_no number; Begin Select tb_sq.nextval Into
25、 next_no From dual; :new.tid:=next_no; End; l Tb_admin_trigger Create or replace trigger tb_admin_trigger Before insert on tb_admin For each row Declare Next_no number; Begin Select tb_sq.nextval Into next_no From dual; :new.aid:=next_no; End; l Tb_page_trigger Create or replace tr
26、igger tb_page_trigger Before insert on tb_page For each row Declare Next_no number; Begin Select tb_sq.nextval Into next_no From dual; :new.pid:=next_no; End; l Tb_select_trigger Create or replace trigger tb_select_trigger Before insert on tb_select For each row Declare Next_no numb
27、er; Begin Select tb_sq.nextval Into next_no From dual; :new.id:=next_no; End; l Tb_boolean_trigger Create or replace trigger tb_boolean_trigger Before insert on tb_boolean For each row Declare Next_no number; Begin Select tb_sq.nextval Into next_no From dual; :new.id:=next_no; End;
28、 l Tb_answer_trigger Create or replace trigger tb_answer_trigger Before insert on tb_answer For each row Declare Next_no number; Begin Select tb_sq.nextval Into next_no From dual; :new.id:=next_no; End; l Tb_subject_trigger Create or replace trigger tb_subject_trigger Before insert o
29、n tb_subject For each row Declare Next_no number; Begin Select tb_sq.nextval Into next_no From dual; :new.sid:=next_no; End; 3.11 存储过程设计 3.11.1 CRUD中的CUD三个操作 --向试卷表中插入信息(create操作) Create or replace procedure insert_tb_page( p_subject in tb_page.subject%type, p_snum in tb_page.snum%t
30、ype, p_bnum in tb_page.bnum%type, p_anum in tb_page.anum%type, p_pageDate in tb_page.pageDate%type, --插入系统时间sysdate p_tid in tb_page.tid%type )as Begin Insert into tb_page(subject,snum,bnum,anum,pageDate,tid) values (p_subject,p_snum,p_bnum,p_anum,p_pageDate,p_tid); Exception When DUP_
31、VAL_ON_INDEX then Dbms_output.put_line('subject primary key error!'); When others then Dbms_output.put_line('异常'); End insert_tb_page;--//执行过程: execute insert_tb_page(‘’,’’,…); --向判断题表中插入信息(create操作) Create or replace procedure insert_tb_boolean( b_name in tb_boolean.name%type, b_subject in
32、tb_boolean.subject%type, b_pid in tb_boolean.pid%type) as begin Insert into tb_boolean(name, subject,pid) values (b_name,b_subject,b_pid); End insert_tb_boolean; --//执行过程: execute insert_tb_boolean(‘’,’’,…); --向简答题表中插入信息 Create or replace procedure insert_tb_answer( a_name in tb_answer.na
33、me%type, a_subject in tb_answer.subject%type, a_pid in tb_answer.pid%type ) as Begin Insert into tb_answer(name,subject,pid) values (a_name,a_subject,a_pid); End insert_tb_answer; --向科目表中插入信息 Create or replace procedure insert_tb_subject( s_subject in tb_subject.subject%type )as Begin
34、 Insert into tb_subject(subject) values (s_subject); Exception When DUP_VAL_ON_INDEX then Dbms_output.put_line('subject primary key error!'); When others then Dbms_output.put_line('异常'); End insert_tb_subject; --向选择题表中插入信息 Create or replace procedure insert_tb_select( s_name tb_select.na
35、me%type, s_optionA tb_select.optionA%type, s_optionB tb_select.optionB%type, s_optionC tb_select.optionC%type, s_optionD tb_select.optionD%type, s_subject tb_select.subject%type, s_pid tb_select.pid%type )as Begin Insert into tb_select(name, optionA, optionB, optionC, optionD, subject, pi
36、d) values(s_name,s_optionA,s_optionB,s_optionC,s_optionD,s_subject,s_pid); End insert_tb_select; --管理员信息插入 Create or replace procedure insert_tb_admin( a_name in tb_admin.name%type, a_password in tb_admin.password%type )as Begin Insert into tb_admin(name, password) values (a_name,a_passwo
37、rd); End insert_tb_admin; 3.12 数据复制设计 暂无 4 查询记录语句 --随机函数 Select randnum from(select distinct round(dbms_random.value(1,60)) as randnum from dual Connect by rownum<=100 Order by randnum )where rownum<=20; --随机查询20条选择题 Select * from tb_select where id in( Select * from (select rownum rn
38、 from dual Connect by rownum<=100 order by Dbms_random.value) where Rownum<=20 ); --随机查询10条判断题记录 Select * from tb_boolean where id in( Select * from (select rownum rn from dual Connect by rownum<=100 order by Dbms_random.value) where Rownum<=10 ); --随机查询5条简答题记录 Select * from tb_answer
39、where id in( Select * from (select rownum rn from dual Connect by rownum<=100 order by Dbms_random.value) where Rownum<=5 ); 5 词汇表 Primary key: 主键 foreign key:外键 6 历史数据处理 导出数据库:exp 用户名/密码 导入数据库:imp 用户名/密码 Ms-dos THANKS !!! 致力为企业和个人提供合同协议,策划案计划书,学习课件等等 打造全网一站式需求 欢迎您的下载,资料仅供参考






