资源描述
数据库设计文档
成员:曹丽琼 冯继伟 刘维毅
班级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
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 索引设计 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 项目来源
Ø 实训要求
Ø 开发人员:全体成员
Ø 文档使用者: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:选择题相关信息表
Ø 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, 问答题数量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
实体关系
编号
姓名
学号
考试状态
登录密码
班级
考生
监考人员
编号
姓名
登录密码
管理员
姓名
登录密码
编号
考试试卷
选择题数目
判断题数目
科目名称
简答题数目
编号
编号
题目
选项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
number
10
否
学号
uclass
Varchar2
50
否
班级
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
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
是
主键标识
name
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
number
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),
Snum 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)
);
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
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),
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 ,所属科目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),
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
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),
constraint 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) primary 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_invigilate_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_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 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 trigger 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 number;
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;
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 on 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%type,
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_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 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.name%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
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.name%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, pid)
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_password);
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 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 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 !!!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考
展开阅读全文