当前位置:   article > 正文

网上考试系统数据库设计_考试系统表设计

考试系统表设计

数据库设计

在对网上考试系统数据库部分进行设计的过程中,通过对系统功能进行需求分析得到系统的基本信息表,绘制系统业务流程图和系统数据流程图,分析得到数据字典;在概率结构设计阶段通过对需求阶段得到的用户需求抽象得到数据库关系模型的E-R图;在逻辑结构设计阶段得到数据库的关系模式并绘制信息表。详细设计过程如下介绍。

3.1.1数据库需求分析

需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。

3.1.1.1系统基本信息

综合以上分析,要实现上面的所有功能模块,数据库共要设计十一个表,它们分别是:科目表、考卷表、考卷考题表、考题答案表、考题表、选项表、考题类型表、考生作答表,成绩表,序列表,用户表。

3.1.1.2系统层次图

系统总体的层次图如下图3-1所示:

图3-1系

统层次图

1.1.3系统数据流程图

系统数据流程图如下图3-2所示

图3-2数据流程图

3.1.2数据库概念结构设计

概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键,包括概念模型设计和新系统流程两个阶段。在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,才能更好地、更准确地用某一DBMS实现这些需求。

概念数据模型独立于具体的数据处理的细节和数据库管理系统。这次设计仍采用传统的实体联系图作为概念设计的工具。再进行优化后,尽量满足结构清晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余。系统E-R图如下图3-3所示:

图3-3 系统E-R图

3.1.3数据库逻辑结构设计

对于关系型数据库,数据库的概念结构设计完毕后,要把E-R图描述的概念数据模型转换为等价的关系模式极其约束。逻辑设计的基本工作主要包括如下的3个步骤。

3.1.3.1关系模式设计

该设计以概念结构设计中的E-R图为主要依据,这几出相关的整体逻辑结构。该系统的关系模式如下图3-4所示:

图3-4 概念关系模型图

3.1.3.2完整性设计

完整性要求用于描述各种信息之间的制约关系,以及关联关系,各个数据项的取值范围以及各个数据项是否可以取值。根据实际需要,采取一定的手段来满足用户的完整性需求。域完整性约束要求属性值必须在域中。实体完整性约束要求主键必须唯一且不能为空。如用户信息表中的用户名设置为主键,并且要求唯一且不能为空。
3.1.4数据字典

数据字典如下表所示,将数据库中每个表中的字段进行了详细的描述。

表1  用户基本信息表 t_user

表名

t_user

字段名

数据类型(精度范围)

字段含义

其他

  user_id

Integer

用户 编号

PK

  user_no

VARCHAR(15)

用户登陆账号

not  null

user_pwd

VARCHAR(20)

用户登陆的口令

not  null

user_name

VARCHAR(20)

用户的姓名

 not  null

user_role

VARCHAR(4)

用户的角色

 not  null

user_is_login

VARCHAR(4)

用户是否登陆

not  null

user_sex

VARCHAR(4)

用户的性别

not  null

user_identification

VARCHAR(20)

用户的身份证号码

not  null

user_hometown

VARCHAR(50)

用户的籍贯

not  null

user_policyFace

VARCHAR(10)

用户政治面貌

null

user_isable

VARCHAR(4)

用户是否有效

not  null

user_email

VARCHAR(20)

用户邮箱

null

user_telephone

VARCHAR(20)

用户的联系方式

null

补充说明

用户是否登陆:Y 已经登陆,  N 还未登陆

用户的性别: F 表示男,  M 表示女

用户的角色: M, 管理员, S: 考生  T:教师

用户是否有效:删除用户的时候会置此字段为F,  默认为Y

表2  试题类型表 t_question_type

表名

t_question_type

字段名

数据类型(精度范围)

字段含义

其他

  type _id

Integer

试题类型的编号

PK

  type_name

VARCHAR(20)

  试题类型的名字

not  null

补充说明

试题类型为: 单选题, 多选题, 填空题, 判断题, 简答题, 论述题

表3  课程表 t_course

表名

t_course

字段名

数据类型(精度范围)

字段含义

其他

  course_id

Integer

课程序列号

PK

  course_no

VARCHAR(20)

课程编号

not  null

  course_name

VARCHAR(20)

课程名字

not  null

  course_isable

VARCHAR(4)

课程是否可用

not  null

补充说明

课程编号可作为用户查询的接口

当课程被删除的时候置isable为N, 默认为Y

表4  试题库 t_question_base

表名

t_question_base

字段名

数据类型(精度范围)

字段含义

其他

question_id

Integer

试题序列号

PK

question_type

Integer

试题对应的类型

not  null  FK1

question_course

Integer

试题对应的课程

not  null  FK2

question_isable

VARCHAR(4)

试题是否可用

not  null

question_text

VARCHAR(500)

试题题干

not  null

补充说明

Eg: 试题  为  地理课程  下面的  单选题

当删除试题的时候置question_isable为N, 默认的为Y


表5  试题选项 t_question_option

表名

t_question_option

字段名

数据类型(精度范围)

字段含义

其他

option_id

Integer

选项序列号

PK

option_question_id

Integer

选项对应的试题

not  null  FK1

option_value

VARCHAR(200)

选项的内容

not  null

补充说明

表6  试题答案 t_question_answer

表名

t_question_answer

字段名

数据类型(精度范围)

字段含义

其他

answer_id

Integer

答案序列号

PK

answer_question_id

Integer

答案对应的试题

not  null  FK1

answer_value

VARCHAR(300)

答案的内容

not  null

补充说明

单选内容: A

多选内容: ABC

填空题,简答题和论述题都为文本文字

判断题内容为. T或F

表7  试卷库 t_paper

表名

t_paper

字段名

数据类型(精度范围)

字段含义

其他

paper_id

Integer

试卷序列号

PK

paper_course_id

Integer

试卷对应的课程

not  null  FK1

paper_isavailable

VARCHAR(4)

试卷是否可用

not  null  

paper_statue

VARCHAR(4)

试卷状态

not  null

paper_isable

VARCHAR(4)

试卷是否有效

not  null

补充说明

如果试卷中的题目总分为100则试卷可用, 可用为Y 不可用为N, 默认为N

试卷状态O表示打开,C表示关闭,默认为C

paper_isable默认为Y, 当删除试卷的时候为N

表8 试卷试题表  t_paper_question

表名

t_paper_question

字段名

数据类型(精度范围)

字段含义

其他

pap_que_id

Integer

试卷试题序列号

PK

paper_id

Integer

试卷序列号

not  null  FK1

question_id

Integer

试题序列号

not  null  FK

补充说明

此表为  试卷和试题 之间的关系表

表9 考生作答表  t_response

表名

t_response

字段名

数据类型(精度范围)

字段含义

其他

response_id

Integer

考生作答序列号

PK

 user_id

Integer

考生序列号

not  null  FK1

pap_que_id

Integer

试卷试题序列号

not  null  FK

response_value

VARCHAR(1000)

考生作答

not  null

补充说明

表10考生成绩表  t_score

表名

t_score

字段名

数据类型(精度范围)

字段含义

其他

score_id

Integer

考生成绩序列号

PK

 user_id

Integer

考生序列号

not  null  FK1

teacher_id

Integer

阅卷人序列号

not  null  FK

course_id

Integer

课程序列号

not  null  FK

score_value

Float

考生 成绩

not  null

补充说明

表11    序列表t_sequence

表名

t_sequence

字段名

数据类型(精度范围)

字段含义

其他

seq_name

VARCHAR(20)

序列名字

PK

 current_value

Integer

序列当前值

not  null

Increment_value

Integer

序列的增加值

not  null

补充说明

 序列培训函数使用, 用来生成各种主键

CREATE  FUNCTION  nextval(seq_name VARCHAR(50))

 RETURNS int(11)

BEGIN

      UPDATE sequence

                SET          current_value = current_value + increment

            WHERE name = seq_name;

            RETURN currval(seq_name);

   END

CREATE  FUNCTION  currentval(seq_name VARCHAR(50))

 RETURNS  int(11)

BEGIN

        DECLARE value INTEGER;

       SET value = 0;

       SELECT current_value INTO value

       FROM sequence

       WHERE name = seq_name;

  RETURN value;

END

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号