需求分析进行完成后,开始进行数据库设计,具体设计如下:
在线考试系统数据库设计
- ER图
approval
classes
exam
exam_classes
exam_topic
subjects
topic
user
user_classes
user_grade
user_password
user_topic
- 数据字典
approval[g1]
classes[g2]
exam[g3]
exam_classes[g4]
exam_topic[g5]
subjects
topic[g6]
user[g7]
user_classes[g8]
user_grade
user_password
user_topic[g9]
- 索引
无
- 安全机制
系统安全、数据安全
2.1数据安全:
程序启动需要经过登陆认证,登陆ID 和密码正确才能启动程序。
程序内部的任何会引起数据库改动的操作(增删改)均经过了严密的审查判定,以确保数据库的准确性和一致性。
2.2系统安全:
登陆需经过身份认证,即身份口令密码一致才可登录。
不同的用户角色有不同的权限,用户只能使用分配给他的权限,无法越权操作。
这个表什么意思?老师与学生的关系?是否需要绑定科目字段
年级与班级的关系,是否在此表体现
还是年级有单独的表,
针对题库、试卷,同年级同科目老师可相互查看修改,当前表结构是否能走通
- 考试是否有年级概念,如何控制同年级同科目的其他老师可查,改
- 每个题目的分数?
- 自动组卷的选项没有体现,此选项可以不存,将前端选择的规则直接发给后端,从题库中按传入的参数自动组卷后呈现在页面中,供后续进行人工增删操作
- subject_name是否有必要存在,
否则,如果原始表subject中name修改后,该表中的subject_name需要联动修改
其他表也有类似情况
- 选择题会包含多个选项,该表中选项字段怎么存储,
如果是选择题,单选与多选,正确答案字段怎样关联选项字段
如果是填空题,单个空和多个空,要怎么存储
- 是否需要分数字段,在每张试卷中同一试题分数可能不同
- 是否增加年级字段
- 需求中题目分类怎样体现,需求书中的多级分类又怎么表示
Password为什么单独拆分出一个表来
user_status、User_position都包含什么内容
是否增加账号是否有效字段
- Position都包含什么内容?与user表中的user_position是一样意思吗
学生、班级是一对一关系,老师与班级、所教科目是一对多关系,在这个表或其他表是否能表示
- 学生由二年级到三年级怎么处理,有转班、留级情况怎么处理
- 老师一直任教初三或高三怎么处理,老师随着学生由二年级到三年级怎么处理
此处classes_id是否有必要存在,其他表中已有user_id与classes_id关联