帮忙检查、建议下我的数据库模型

空心兜兜 2008-11-02 03:00:06
小弟准备给教研室做一个“基于B/S的考试报名系统”
计划用ASP.NET 2.0 +SQL Server 2000开发



对系统分析如下:
=============================================================
涉及到的用户分3类:学生、教务员、系统管理员。他们要做如下功能:学生填写和更新个人信息,考试报名;教务员发布和修改考试信息,截止(锁定)报名;系统管理员对用户信息修改和管理,对整个系统管理。

用户组
注册用户(包括本校学生,本校教师,校外人员),教务员(包括院级和校级、科室级),系统管理员。
注册用户的真实身份不影响任何报名,只是在注册时应做身份选择,以便统计报名信息。注册时先选择本校学生,本校教师,校外人员,这些影响到是否可以报一些考试以及个人信息中有些不必填写(比如学生不必填写工作单位、现有职称和工号,本校教师需要填写教师工号和所在单位而不必填写学号、专业、学号,校外人员需要填写现有职称、工作单位以及联系方式;本校学生不得在职称考试中报名,而本校教师和校外人员不得在大学英语等级考试这样的考试中报名),这些都是需要在界面设计中需要考虑到的。
教务员分组,是对发布特定考试类型的权限认证。比如,院级考试,院级教务员即可发布,但只能由管理该考试的学院管理员发布(如计算机等级考试由信息工程学院教务员发布);校级考试由校级教务员发布(如英语等级考试);职称考试由学校人事处发布。


=============================================================




现在我只想到3个表,但总觉得有问题,所以请各位帮忙看看

用户信息表
===============
注册序列号
用户名(建议学生用学号)
考生类型(学生、校外人员、本校人员)
用户权限(学生、教务员、系统管理员)
学号(选填)
身份证号
姓名
专业(选填)
班级(选填)
照片
联系电话
备注
=================



考试表
=================
考试序列号
考试类型
考试名称
针对考生类型
报名有效时间
考试时间
考试地点
备注
=================




报名表(该表主要引用用户信息表和考试表的,不知道是否可以)
=================
考试序列号
注册序列号
考生类型(学生、校外人员、本校人员)
学号(选填)
身份证号
姓名
专业(选填)
班级(选填)
照片
联系电话
=================




用户说用到的查询主要是查询某个考试信息和统计某个考试的报名情况



问题:
这个报名表,是否需要每个考试一个表呢?
我的模型是否能够满足系统功能要求,有哪些需要修改的地方?
...全文
147 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
空心兜兜 2008-11-04
  • 打赏
  • 举报
回复
…………
这么做确实够复杂.....


Andy-W 2008-11-04
  • 打赏
  • 举报
回复
想做多复杂就可以多复杂。
如:
考生类型(学生、校外人员、本校人员)
用户权限(学生、教务员、系统管理员)
专业
班级

考试类型
针对考生类型

都可以提取出来建立独立的表,再使用外键即可。
等不到来世 2008-11-04
  • 打赏
  • 举报
回复
有很多冗余字段,不过也无所谓,总共也才这几个表。。
空心兜兜 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 weixy 的回复:]
不符合第二范式。
学号(选填)
身份证号
专业(选填)
班级(选填)
需要另外建立考生表,记录考生信息。考生和用户是不同的,用户包括教务人员等。

考试需要发布,要有发布信息(即一次考试对应一套或多套试题)。
发布的考试对应的考生信息。(某考试报考的考生)

试题需要试题库,应包括一系列表。
考试完需要成绩表。
[/Quote]



恩,这个....
只是做报名系统和成绩查询
主要是实现报名,因为针对是的有自由选择性的考试,手工统计麻烦,就采用这个
假如是那些专业课考试,谁都要参加的,也就不存在谁是否报名了

根据最早那位朋友的意见,确实要把用户表按照用户组分开了

空心兜兜 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 qianjin036a 的回复:]
引用 7 楼 ccs02287 的回复:
和老师商量了下
可以这么做了

老师会管你怎么做?
最好还是有自己的主意!
[/Quote]

会.....
还真别说,那些人不做自己的事,就爱管别人的事


空心兜兜 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 szx1999 的回复:]
有很多冗余字段,不过也无所谓,总共也才这几个表。。
[/Quote]

呵呵,是的
今天又仔细分析了下
确实有位朋友说的,没遵循第二范式

weixy 2008-11-03
  • 打赏
  • 举报
回复
不符合第二范式。
学号(选填)
身份证号
专业(选填)
班级(选填)
需要另外建立考生表,记录考生信息。考生和用户是不同的,用户包括教务人员等。

考试需要发布,要有发布信息(即一次考试对应一套或多套试题)。
发布的考试对应的考生信息。(某考试报考的考生)

试题需要试题库,应包括一系列表。
考试完需要成绩表。
hunterdoing1 2008-11-03
  • 打赏
  • 举报
回复
老师?他才不靠谱呢,不过你这个也不是什么复杂的,他会细想么?
-晴天 2008-11-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ccs02287 的回复:]
和老师商量了下
可以这么做了
[/Quote]
老师会管你怎么做?
最好还是有自己的主意!
空心兜兜 2008-11-03
  • 打赏
  • 举报
回复
和老师商量了下
可以这么做了
Longgreenlee 2008-11-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 HEROWANG 的回复:]
对于第三点,我觉得你这么做还是比较麻烦。学生使用学号。对于其他的人可以统一管理,就把哪个所谓的注册号作为学号就可以了。例如培训的那些人,可以给他们分配一个学号,用这个作为表的主键不是很方便吗?至于验证的时候,如果要把成绩作为一个隐私来对待的时候,那么为每个学生还有其他的培训人员设置一个密码,每个人只能看到自己的数据,也只能报考自己相应的考试。

如果要实现这个功能,这几张表就不够用了,还需要每个…
[/Quote]
up
空心兜兜 2008-11-02
  • 打赏
  • 举报
回复
恩,谢谢提醒

去找负责老师商量下
  • 打赏
  • 举报
回复
你还在读master?
  • 打赏
  • 举报
回复
对于第三点,我觉得你这么做还是比较麻烦。学生使用学号。对于其他的人可以统一管理,就把哪个所谓的注册号作为学号就可以了。例如培训的那些人,可以给他们分配一个学号,用这个作为表的主键不是很方便吗?至于验证的时候,如果要把成绩作为一个隐私来对待的时候,那么为每个学生还有其他的培训人员设置一个密码,每个人只能看到自己的数据,也只能报考自己相应的考试。

如果要实现这个功能,这几张表就不够用了,还需要每个专业的课程等等
空心兜兜 2008-11-02
  • 打赏
  • 举报
回复
谢谢提示

这样的话

1.原本打算根据权限做登录后的页面跳转,现在把三种用户组在表中就分离,可以在登录时做单选,然后指定查询某张表的信息进行验证了,谢谢

3.前面我也想的简单了,只想到这个系统为学生服务,但是教研室的老师说,我们院承接的外部培训、考试也比较多,老师、城镇干部、公务员等等都经常有考试,所以依据学号来,就不合理了; 我这么想,登录时,考生可以选择用学生证号还是姓名做ID,身份证做验证码(看过一些成绩查询系统,大概都这样)
不过上学期带我们数据库的老师曾经这么说,每个表弄一个序列号字段,查询起来比较方便,也可以备不时之需






  • 打赏
  • 举报
回复
提供一些个人看法:
1、用户权限这块还是不要放在表里面,和上面的考生从理解上会造成一定的困难。对于用户表,觉得还是分开,学生做一个表。
然后给每个学生设置密码,保证信息的安全。为教务员和管理员设置为系统账号,并且分配相应的权限来管理数据库。
2、报名表不用每个考试做一个表,这样的话就会很麻烦的。可以把所有的考试放在一张表里面,里面设置上一个时间字段来区分每一次考试。
3、对于用户信息表,按照1来修改的话,注册序列号之类的都可以去掉,直接使用学号就可以了。否则学生就需要记两个号,比较麻烦的。

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧