现在我想做一个题库搜索系统,练习练习。请大家帮忙看看我设计的数据库,当然,个人的思考存在很多漏洞,也考虑不周全的,所以,请大家帮忙看看,指出问题所在。谢谢大家。
题库搜索系统数据库设计(版本1.0)
1表名:前台用户信息表UserInfo
| 
 列名  | 
 数据类型  | 
 空/非空  | 
 约束条件  | 
 备注  | 
| 
 User_Id  | 
 int  | 
 非空  | 
 
  | 
 用户id主键  | 
| 
 User_SchoolId  | 
 int  | 
 非空  | 
 
  | 
 用户所属学校,外键  | 
| 
 User_Name  | 
 Varchar(50)  | 
 非空  | 
 
  | 
 用户名  | 
| 
 User_Pswd  | 
 Varchar(50)  | 
 非空  | 
 
  | 
 用户登录密码  | 
| 
 User_Tel  | 
 Varchar(30)  | 
 
  | 
 
  | 
 用户电话  | 
| 
 User_Email  | 
 Varchar(30)  | 
 
  | 
 
  | 
 用户邮箱  | 
| 
 User_QQ  | 
 Varchar(25)  | 
 
  | 
 
  | 
 用户qq  | 
| 
 User_Address  | 
 Varchar(200)  | 
 
  | 
 
  | 
 用户地址  | 
| 
 User_State  | 
 bit  | 
 非空  | 
 
  | 
 用户状态0是无效 1是有效  | 
2,表名:后台用户类型表:SysUserType
| 
 列名  | 
 数据类型  | 
 空/非空  | 
 约束条件  | 
 备注  | 
| 
 SysUserType_Id  | 
 int  | 
 非空  | 
 
  | 
 后台用户类型id主键  | 
| 
 SysUserType_Name  | 
 Varchar(25)  | 
 非空  | 
 
  | 
 后台用户类型名(管理员,超级管理员)  | 
| 
 SysUserType _State  | 
 bit  | 
 非空  | 
 
  | 
 后台用户类型名状态0无效 1有效  | 
3表名:后台管理员信息表SysUserInfo
| 
 列名  | 
 数据类型  | 
 空/非空  | 
 约束条件  | 
 备注  | 
| 
 SysUser_Id  | 
 int  | 
 非空  | 
 
  | 
 后台管理用户id主键  | 
| 
 SysUser_TypeId  | 
 Int  | 
 非空  | 
 
  | 
 后台管理员分类  | 
| 
 SysUser_SchoolId  | 
 int  | 
 非空  | 
 
  | 
 后台管理用户所属学校,外键  | 
| 
 SysUser_Name  | 
 Varchar(50)  | 
 非空  | 
 
  | 
 后台管理用户名  | 
| 
 SysUser_Pswd  | 
 Varchar(50)  | 
 非空  | 
 
  | 
 后台管理用户登录密码  | 
| 
 SysUser_Tel  | 
 Varchar(30)  | 
 
  | 
 
  | 
 后台管理用户电话  | 
| 
 SysUser_Email  | 
 Varchar(30)  | 
 
  | 
 
  | 
 后台管理用户邮箱  | 
| 
 SysUser_QQ  | 
 Varchar(25)  | 
 
  | 
 
  | 
 后台管理用户qq  | 
| 
 SysUser_Address  | 
 Varchar(200)  | 
 
  | 
 
  | 
 后台管理用户地址  | 
| 
 SysUser_State  | 
 bit  | 
 非空  | 
 
  | 
 后台管理用户状态0是无效 1是有效  | 
4表名:广告信息表AdvertisementInfo
| 
 列名  | 
 数据类型  | 
 空/非空  | 
 约束条件  | 
 备注  | 
| 
 Ad_Id  | 
 int  | 
 非空  | 
 
  | 
 广告id主键  | 
| 
 Ad_SysUserID  | 
 Int  | 
 非空  | 
 
  | 
 广告的作者(管理员,超级管理员)  | 
| 
 Ad _Name  | 
 Varchar(25)  | 
 非空  | 
 
  | 
 广告名  | 
| 
 Ad_Url  | 
 Varchar(50)  | 
 
  | 
 
  | 
 广告超连接  | 
| 
 Ad_Display  | 
 Varchar(25)  | 
 非空  | 
 
  | 
 广告排序  | 
| 
 Ad _State  | 
 bit  | 
 非空  | 
 
  | 
 广告的状态0无效 1有效  | 
5表名:学校信息表SchoolInfo
| 
 列名  | 
 数据类型  | 
 空/非空  | 
 约束条件  | 
 备注  | 
| 
 School_Id  | 
 int  | 
 非空  | 
 
  | 
 学校的id主键  | 
| 
 School_Name  | 
 Varchar(50)  | 
 非空  | 
 
  | 
 学校名字  | 
| 
 School_Tel  | 
 Varchar(50)  | 
 
  | 
 
  | 
 学校联系电话  | 
| 
 School_Email  | 
 Varchar(50)  | 
 
  | 
 
  | 
 学校邮箱  | 
| 
 School_Address  | 
 Varchar(250)  | 
 
  | 
 
  | 
 学校地址  | 
| 
 School_Desc  | 
 Varchar(250)  | 
 
  | 
 
  | 
 学校介绍  | 
| 
 School_State  | 
 Bit  | 
 非空  | 
 
  | 
 学校状态0是无效1正常  | 
6表名:题目学科分类信息表SubjectInfo
| 
 列名  | 
 数据类型  | 
 空/非空  | 
 约束条件  | 
 备注  | 
| 
 Subject_Id  | 
 int  | 
 非空  | 
 
  | 
 学科的id主键  | 
| 
 ParentId  | 
 Int  | 
 非空  | 
 
  | 
 学科的父分类id  | 
| 
 Subject_Name  | 
 Varchar(50)  | 
 非空  | 
 
  | 
 学科名字(英语,计算机,会计等)  | 
| 
 SubjectDisplay  | 
 Varchar(25)  | 
 非空  | 
 
  | 
 学科排序  | 
| 
 Subject_State  | 
 Bit  | 
 非空  | 
 
  | 
 学科状态0是无效1正常  | 
7表名:题目信息表QuestionsInfo
| 
 列名  | 
 数据类型  | 
 空/非空  | 
 约束条件  | 
 备注  | 
| 
 Question_Id  | 
 int  | 
 非空  | 
 
  | 
 试题的id主键  | 
| 
 QuestionPaperId  | 
 Int  | 
 非空  | 
 
  | 
 所属那套试卷,外键。(默认为0,不属于如何试卷)  | 
| 
 SubjectInfoId  | 
 int  | 
 非空  | 
 
  | 
 试题所属学科,外键  | 
| 
 Question_Score  | 
 int  | 
 非空  | 
 
  | 
 试题的分数  | 
| 
 Question_Author  | 
 Varchar(50)  | 
 非空  | 
 
  | 
 试题的作者,外键  | 
| 
 AnswerTime  | 
 Date  | 
 
  | 
 
  | 
 答题时间  | 
| 
 Question_Name  | 
 Varchar(50)  | 
 非空  | 
 
  | 
 试题名字  | 
| 
 SelectAnswer  | 
 Varchar(250)  | 
 
  | 
 
  | 
 试题供选择答案  | 
| 
 Question_Answer  | 
 Varchar(200)  | 
 
  | 
 
  | 
 试题答案  | 
| 
 Answer_ Explain  | 
 Varchar(250)  | 
 
  | 
 
  | 
 答案的解析  | 
| 
 WriteQuestionTime  | 
 Date  | 
 非空  | 
 
  | 
 出题时间  | 
| 
 Click  | 
 Int  | 
 
  | 
 
  | 
 题目点击量  | 
| 
 Question_State  | 
 Bit  | 
 非空  | 
 
  | 
 试题状态0是无效1正常  | 
8表名:试卷信息表QuestionPaper
| 
 列名  | 
 数据类型  | 
 空/非空  | 
 约束条件  | 
 备注  | 
| 
 QuestionPaper _Id  | 
 int  | 
 非空  | 
 
  | 
 试卷的id主键  | 
| 
 SubjectId  | 
 Int  | 
 非空  | 
 
  | 
 试卷所属的学科,外键  | 
| 
 QuestionPaper_Author  | 
 Varchar(50)  | 
 非空  | 
 
  | 
 试卷的作者,外键  | 
| 
 AnswerTime  | 
 Date  | 
 
  | 
 
  | 
 答题时间  | 
| 
 QuestionPaper_Name  | 
 Varchar(50)  | 
 非空  | 
 
  | 
 试卷的名字(如英语B级,计算机一级等)  | 
| 
 Write QuestionPaperTime  | 
 Date  | 
 非空  | 
 
  | 
 出试卷的时间  | 
| 
 Question_State  | 
 Bit  | 
 非空  | 
 
  | 
 试题状态0是无效1正常  | 
9表名:用户模拟考试信息表:PracticeInfo
| 
 列名  | 
 数据类型  | 
 空/非空  | 
 约束条件  | 
 备注  | 
| 
 Score_Id  | 
 int  | 
 非空  | 
 
  | 
 分数的id主键  | 
| 
 UserId  | 
 Int  | 
 非空  | 
 
  | 
 用户的id,外键  | 
| 
 QuestionId  | 
 Int  | 
 非空  | 
 
  | 
 试题的id,外键  | 
| 
 PracticeName  | 
 Varchar(50)  | 
 
  | 
 
  | 
 标题  | 
| 
 Score  | 
 Int  | 
 非空  | 
 
  | 
 分数  | 
| 
 ExamTime  | 
 Date  | 
 非空  | 
 
  | 
 考试时间  | 
一、 用户与老师要分开,老师是有后台操作的界面,实际上老师也就是算是管理员,所有老师用户应该分类成管理员,不同的是它与系统管理员的权限不一样罢了
二、 先对后台管理会有两种类型的用户角色,即老师和超级管理员,老师这个用户由网友提出在前台申请即可以,超级管理员进行审核,为了简单起见,角色呀权限呀这些就不要了,直接固定死,简单方便
三、 学科表其实就是题目的分类,所以这张表应该是可以由管理员在后台无限制管理
四、 我把所要用到的表名写在下面,你补充表的相关字段信息
1、 用户信息表,此表主要是前台访问者
2、 后台管理员信息表,此要主要是超级管理员与老师信息,用一个字段来区分
3、 学校信息表,此表必须有一条默认的记录,即用于添加系统管理员的,因为系统管理不属于哪个学校,所以这条记录可以任意写,SQL语句插入固定
4、 广告信息表,此表主要保存管理员或老师发布的广告,目前只考虑文字广告即可
5、 题目学科分类信息表,此表主要保存题目所属的分类,管理员在后台管理,可以无限级添加,字段:编号,名称,父编号,状态,排序序号等
6、 试卷信息表,此表主要是针对那些仿真的整套题目使用,默认SQL插入一条记录,也就是不分试卷,即公共的题目,
7、 题目信息表,此表为主要数据存储表,为了简单起见目前先只考虑选择题即可,主要字段会有:编号,题目,所属学科分类,发布者编号,所属试卷,发布时间,点击数量,供选择答案,正确答案,答案解析等更多你自己思考补充
8、 用户模拟考试信息表,为了简单起见,目前就考虑登录用户模拟考试后可以保存它所做的这一次考试题目,不过他所得的分数及答题情况,即字段:编号,用户编号,标题(系统按一定规则自动产生),题目编号(把本次模拟的题目编号连接成字符串保存于此字段即可),考试时间等
备注:(我按照以上的需求设计的数据库,请帮我看看,那些地方不满足需求,帮指出来,帮我修改下哦!谢谢大家)