学生考勤管理系统数据库设计Word格式.docx
《学生考勤管理系统数据库设计Word格式.docx》由会员分享,可在线阅读,更多相关《学生考勤管理系统数据库设计Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
设计这个系统的主要目的就是实现学生的考勤管理的规范化。
数据库的需求分析阶段是整个数据库设计过程中的基础,也是耗时就多,最困难的一步。
需求分析的任务就是通过详细调查现实世界要处理的对象,充分了解原系统工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
这个阶段的工作成果主要以下三个方面的内容:
(1)数据项:
每种具体数据的名称、意义、类型、取值范围以及与其他数据项之间的逻辑关系。
(2)数据集:
若干数据项的有逻辑关联的集合,包括名称、意义和组成数据集的数据项。
(3)数据流:
应用系统运行时,数据是怎么输入、处理和输出。
二.数据库概念结构设计
局部e-r图设计
(1)学生信息表的e-r图
(2)刷卡表的e-r图
刷卡
(3)刷卡记录表的e-r图
全局e-r图如下:
三.数据库逻辑结构设计
数据库逻辑设计主要是将概念结构设计转换为某个dbms所支持的数据模型设计出
刷卡表结构如下:
学生信息表结构如下:
刷卡记录表结构如下:
四.数据库物理结构设计
物理结构设计是为逻辑数据模型选取一个最适合应用环境的物理结构,将逻辑结构设计中的表用sql语句创建出来。
(1)创建表空间
(2)创建新用户
(3)给新用户授权
(4)以新用户的身份登入,创建表
首先创建学生表,实现语句如下:
Createtablestuent
(
Snovarchar2(8)notnullprimarykey,
Snamevarchar2(20)notnull,
Sexvarchar2
(2)notnull,
Sagenumber
(2),
Specialityvarchar2(16),
Banjivarchar2(12)
)
Tablespacezhuzhu;
执行结果如下:
然后,创建刷卡表
实现语句如下:
Createtablesk
(
Skidnumber(4)notnull,
Kidnumber(4)notnullprimarykey,
Zctimedate
接着,再创建刷卡记录表
实现语句如下:
Createtableskrecord
Kidnumber(4)notnull,
Snovarchar2(8)notnullprimarykey,
Sktimetimestamp
最后,建立各个表之间的约束
实现语句:
Altertableskrecord
Add
(constraintsk_kid_fkforeignkey(kid)referencessk(kid)
Constraintskrecord_snoforeignkey(sno)references
stuent(sno)
);
(5)创建一个序列实现刷卡编号的自动增长
Createsequenceseq_in
Incrementby1
Startwith1
Nomaxvalue;
Createsequenceseq_in2
(6)创建触发器
只要学生一刷卡,就会在sk表中插入一条记录,此时查找刷卡记录表看是否存在与之同卡编号的记录,如果存在,则输出’有出勤,没有旷课’,否则,输出‘该学生没有来上课’的信息。
Createorreplacetriggertest
Beforeinsert
Onsk
Declareisexistnumber;
Begin
Selectcount(*)intoisexistfromskrecordwhere
:
new.kid=skrecord.kid;
If(isexist>
0)then
Dbms_output.put_line(‘有出勤,没有旷课’);
Else
Dbms_output.put_line(‘这同学没有来上课’);
Endif;
End;
(7)创建视图
首先,创建学生表的视图
Createviewstudent_view
As
Select*fromstuent;
实现结果如下:
然后创建sk表的视图
Createviewsk_view
Select*fromsk;
同理,创建skrecord的视图
(8)插入演示数据
Insertintostuentvalues(‘’,’tom’,’m’,20,’计算机’,’计071’);
Insertintostuentvalues(‘’,’lucy’,’f’,19,’电子商务’,’电子商务071’);
Insertintostuentvalues(‘’,’lily’,’f’,19,’英语’,’英本072’);
Insertintostuentvalues(‘’,’john’,’m’,21,’网络工程’,’网络072’);
对sk表插入如下演示数据:
Insertintoskvalues(seq_in.nextval,’0010’,’10-1月-2000’);
Insertintoskvalues(seq_in.nextval,’0011’,’8-3月-2008’);
Insertintoskvalues(seq_in.nextval,’0012’,’11-5月-2008’);
Insertintoskvalues(seq_in.nextval,’0013’,’17-9月-2009’);
执行结果如下:
对skrecord表插入如下的演示数据:
Insertintoskrecordvalues(seq_in2.nextval,’0010’,’’,
’7-9月-20098:
30:
20’);
Insertintoskrecordvalues(seq_in2.nextval,’0012’,’’,
‘7-10月-200910:
20:
30’);
(9)数据库性能分析
学校执行刷卡机制可以较好的管理学生的考勤,通过查看刷卡记录表,领导可以比较直观的查看学生的到课情况,这样就可以减少学生考勤的统计工作,但是我觉得刷卡机制也有不足的地方,如果有的学生忘记了刷卡,那么,刷卡记录表中就不存在这条记录,就会认为他没有来上课,从而会产生错误。
要实行刷卡机制的前提,就是学校必须严格执行“一个一卡,学生刷卡进出”的制度。