在线考试系统数据库设计.docx

上传人:b****6 文档编号:6982660 上传时间:2023-01-14 格式:DOCX 页数:19 大小:109.61KB
下载 相关 举报
在线考试系统数据库设计.docx_第1页
第1页 / 共19页
在线考试系统数据库设计.docx_第2页
第2页 / 共19页
在线考试系统数据库设计.docx_第3页
第3页 / 共19页
在线考试系统数据库设计.docx_第4页
第4页 / 共19页
在线考试系统数据库设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

在线考试系统数据库设计.docx

《在线考试系统数据库设计.docx》由会员分享,可在线阅读,更多相关《在线考试系统数据库设计.docx(19页珍藏版)》请在冰豆网上搜索。

在线考试系统数据库设计.docx

在线考试系统数据库设计

数据库设计文档

成员:

曹丽琼冯继伟刘维毅

班级08软工三班

指导老师:

郭东恩

日期:

2011-5-22

数据库设计文档

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数据库逻辑设计

数据字典

●考生属性:

编号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

实体关系

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

考试状态

Createtabletb_user(

Tidnumber(10)primarykey,

Unamevarchar2(50),

Upasswordchar(16),

Unonumber(10),

Uclassvarchar2(50),

Ustatenumber

(1)

);

3.4.2.tb_invigilate:

监考人员信息表

属性:

编号tid,姓名name,登录密码password

字段名称

数据类型

长度

主键

描述

tid

number

10

主键标识

name

Varchar2

50

姓名

password

char

16

登录密码

Createtabletb_invigilate(

Tidnumber(10)primarykey,

Namevarchar2(50),

Passwordchar(16)

);

3.4.3.tb_admin:

管理员信息表

属性:

编号aid,姓名name,登录密码password

字段名称

数据类型

长度

主键

描述

aid

number

10

主键标识

name

Varchar2

50

姓名

password

char

16

登录密码

Createtabletb_admin(

Aidnumber(10)primarykey,

Namevarchar2(50),

Passwordchar(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

学生编号(外键)

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,题目name,选项AoptionA,选项BoptionB,选项CoptionC,选项DoptionD,所属科目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

试卷编号(外键)

Createtabletb_select(

Idnumber(10)primarykey,

Namevarchar2(50),

optionAvarchar2(100),

optionBvarchar2(100),

optionCvarchar2(100),

optionDvarchar2(100),

subjectvarchar2(50),

pidnumber(10),

constraintselect_FKforeignkey(subject)references

tb_subject(subject),

constraintselect_FK2foreignkey(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

试卷编号(外键)

Createtabletb_boolean(

idnumber(10)primarykey,

Namevarchar2(50),

Subjectvarchar2(50),

Pidnumber(10),

constraintboolean_FKforeignkey(subject)referencestb_subject(subject),

constraintboolean_FK2foreignkey(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

试卷编号(外键)

Createtabletb_answer(

Idnumber(5)primarykey,

Namevarchar2(50),

Subjectvarchar2(50),

Pidnumber(10),

constraintanswer_FKforeignkey(subject)referencestb_subject(subject),

constraintanswer_FK2foreignkey(pid)references

tb_page(pid)

);

3.4.8.tb_subject:

考试科目信息表

属性:

编号sid,科目subject

字段名称

数据类型

长度

主键

描述

sid

number

10

科目自增编号

subject

Varchar2

50

主键标识

Createtabletb_subject(

Sidnumber(10),

Subjectvarchar2(50)primarykey

);

//备注uid是关键字已被系统占用

3.5视图设计

3.6索引设计

3.7序列设计

设计目的:

通过序列的设计,可以使得编号可以进行自增,从而达到设计目的。

●Tb_sq

序列自动进行递增

初值为:

1

递增为:

1

最大值:

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

Select

Intonext_no

Fromdual;

:

:

=next_no;

End;

/

--insertintotb_user(uname,upassword,uno,uclass,ustate)

--values(…);

●Tb_invigilate_trigger

Createorreplacetriggertb_invigilate_trigger

Beforeinsertontb_invigilate

Foreachrow

Declare

Next_nonumber;

Begin

Select

Intonext_no

Fromdual;

:

:

=next_no;

End;

●Tb_admin_trigger

Createorreplacetriggertb_admin_trigger

Beforeinsertontb_admin

Foreachrow

Declare

Next_nonumber;

Begin

Select

Intonext_no

Fromdual;

:

:

=next_no;

End;

●Tb_page_trigger

Createorreplacetriggertb_page_trigger

Beforeinsertontb_page

Foreachrow

Declare

Next_nonumber;

Begin

Select

Intonext_no

Fromdual;

:

:

=next_no;

End;

●Tb_select_trigger

Createorreplacetriggertb_select_trigger

Beforeinsertontb_select

Foreachrow

Declare

Next_nonumber;

Begin

Select

Intonext_no

Fromdual;

:

:

=next_no;

End;

●Tb_boolean_trigger

Createorreplacetriggertb_boolean_trigger

Beforeinsertontb_boolean

Foreachrow

Declare

Next_nonumber;

Begin

Select

Intonext_no

Fromdual;

:

:

=next_no;

End;

●Tb_answer_trigger

Createorreplacetriggertb_answer_trigger

Beforeinsertontb_answer

Foreachrow

Declare

Next_nonumber;

Begin

Select

Intonext_no

Fromdual;

:

:

=next_no;

End;

●Tb_subject_trigger

Createorreplacetriggertb_subject_trigger

Beforeinsertontb_subject

Foreachrow

Declare

Next_nonumber;

Begin

Select

Intonext_no

Fromdual;

:

:

=next_no;

End;

3.11存储过程设计

3.11.1CRUD中的CUD三个操作

--向试卷表中插入信息(create操作)

Createorreplaceprocedureinsert_tb_page(

p_subjectin%type,

p_snumin%type,

p_bnumin%type,

p_anumin%type,

p_pageDatein%type,

--插入系统时间sysdate

p_tidin%type

)as

Begin

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

('subjectprimarykeyerror!

');

Whenothersthen

('异常');

Endinsert_tb_page;--//执行过程:

executeinsert_tb_page(‘’,’’,…);

--向判断题表中插入信息(create操作)

Createorreplaceprocedureinsert_tb_boolean(

b_namein%type,

b_subjectin%type,

b_pidin%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_namein%type,

a_subjectin%type,

a_pidin%type

as

Begin

Insertintotb_answer(name,subject,pid)values

(a_name,a_subject,a_pid);

Endinsert_tb_answer;

--向科目表中插入信息

Createorreplaceprocedureinsert_tb_subject(

s_subjectin%type

)as

Begin

Insertintotb_subject(subject)values

(s_subject);

Exception

WhenDUP_VAL_ON_INDEXthen

('subjectprimarykeyerror!

');

Whenothersthen

('异常');

Endinsert_tb_subject;

--向选择题表中插入信息

Createorreplaceprocedureinsert_tb_select(

s_name%type,

s_optionA%type,

s_optionB%type,

s_optionC%type,

s_optionD%type,

s_subject%type,

s_pid%type

)as

Begin

Insertintotb_select(name,optionA,optionB,optionC,optionD,subject,pid)

values(s_name,s_optionA,s_optionB,s_optionC,s_optionD,s_subject,s_pid);

Endinsert_tb_select;

--管理员信息插入

Createorreplaceprocedureinsert_tb_admin(

a_namein%type,

a_passwordin%type

)as

Begin

Insertintotb_admin(name,password)values

(a_name,a_password);

Endinsert_tb_admin;

3.12数据复制设计

暂无

4查询记录语句

--随机函数

Selectrandnumfrom(selectdistinctround(1,60))asrandnumfromdual

Connectbyrownum<=100

Orderbyrandnum

)whererownum<=20;

--随机查询20条选择题

Select*fromtb_selectwhereidin(

Select*from(selectrownumrnfromdual

Connectbyrownum<=100orderby

where

Rownum<=20

);

--随机查询10条判断题记录

Select*fromtb_booleanwhereidin(

Select*from(selectrownumrnfromdual

Connectbyrownum<=100orderby

where

Rownum<=10

);

--随机查询5条简答题记录

Select*fromtb_answerwhereidin(

Select*from(selectrownumrnfromdual

Connectbyrownum<=100orderby

where

Rownum<=5

);

5词汇表

Primarykey:

主键

foreignkey:

外键

6历史数据处理

导出数据库:

exp用户名/密码

导入数据库:

imp用户名/密码

Ms-dos

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1