赞
踩
在对网上考试系统数据库部分进行设计的过程中,通过对系统功能进行需求分析得到系统的基本信息表,绘制系统业务流程图和系统数据流程图,分析得到数据字典;在概率结构设计阶段通过对需求阶段得到的用户需求抽象得到数据库关系模型的E-R图;在逻辑结构设计阶段得到数据库的关系模式并绘制信息表。详细设计过程如下介绍。
需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。
综合以上分析,要实现上面的所有功能模块,数据库共要设计十一个表,它们分别是:科目表、考卷表、考卷考题表、考题答案表、考题表、选项表、考题类型表、考生作答表,成绩表,序列表,用户表。
3.1.1.2系统层次图
系统总体的层次图如下图3-1所示:
图3-1系
统层次图
系统数据流程图如下图3-2所示:
图3-2数据流程图
概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键,包括概念模型设计和新系统流程两个阶段。在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,才能更好地、更准确地用某一DBMS实现这些需求。
概念数据模型独立于具体的数据处理的细节和数据库管理系统。这次设计仍采用传统的实体联系图作为概念设计的工具。再进行优化后,尽量满足结构清晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余。系统E-R图如下图3-3所示:
图3-3 系统E-R图
对于关系型数据库,数据库的概念结构设计完毕后,要把E-R图描述的概念数据模型转换为等价的关系模式极其约束。逻辑设计的基本工作主要包括如下的3个步骤。
该设计以概念结构设计中的E-R图为主要依据,这几出相关的整体逻辑结构。该系统的关系模式如下图3-4所示:
图3-4 概念关系模型图
完整性要求用于描述各种信息之间的制约关系,以及关联关系,各个数据项的取值范围以及各个数据项是否可以取值。根据实际需要,采取一定的手段来满足用户的完整性需求。域完整性约束要求属性值必须在域中。实体完整性约束要求主键必须唯一且不能为空。如用户信息表中的用户名设置为主键,并且要求唯一且不能为空。
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 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。