考勤系统数据库实践报告Word文档格式.docx
《考勤系统数据库实践报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《考勤系统数据库实践报告Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
![考勤系统数据库实践报告Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/24/991679b7-aefc-4b76-b404-056dd6461883/991679b7-aefc-4b76-b404-056dd64618831.gif)
考勤系统的设计
(1)按专业统计各年度按时上课的学生名单
(2)统计各个学期某门课程的出勤记录
(3)按课程统计各个学期旷课次数超过一定次数的学生名单
(4)统计本学期某专业学生某门课程的出勤情况
●为每个实体表和关系表创建合适的索引(聚簇索引、复合索引)、主码、外码;
●创建学生所属学院取值范围为计算机科学与技术学院、管理与经济学院、信息科学技术学院、机械与车辆工程学院、化工与材料学院、航空学院、文法学院、外国语学院、设计与艺术学院、国际学院的规则,并与相应的列绑定;
●在学生实体中创建性别默认值为女的默认,并与相应的列绑定;
●创建一个可以通过所属学院类别和班级类别查询学生的存储过程;
●通过触发器定义旷课的学生不能从学生实体中删除;
●建立包括学生的学号,姓名,所属学院,旷课次数的视图;
四、数据库实践课进度表
时间
完成内容
提交文档
备注
十九周周三上午(理论)
理论课:
(1)概念结构设计:
E-R图
(2)关系数据表
所有和数据库有关的操作全部在查询分析器中完成。
二十周周一上午
实验课:
(1)针对具体题目设计ER图,并转换成关系数据表
(2)按照转换后的关系数据表创建数据库、表、主键、外键
(3)每个表至少有10条数据(并且符合主外码关联关系)
Visio图
Word文档
二十周周四、周五全天
Sql
二十周周三上午(理论)
(1)主外码、索引、视图、规则、默认、触发器、存储过程
(2)用Sql语言实现统计分析功能
二十一周周一全天、
数据库物理结构设计
(1)上机操作,学会数据库主外码、索引、视图、规则、默认、存储过程的建立等
(2)用Sql语言实现具体题目中的统计分析报表
二十一周周三上午
考核检查
数据库实践课报告书
(visio+word+sql)
五.实验过程
1.建立E-R图
2.关系模式
学生(学号,姓名,性别,所属学院,专业,班级,旷课次数)
课程(课程号,课程名,开课时间,年度,学期,)
考勤表(考勤表编号,学号,课程号,出勤情况)
选修(学号,课程号,成绩)
出勤(学号,考勤表编号)
3.建库
createdatabase学生考勤库
onprimary(name=学生考勤库,
filename='
E:
\msSQL\data\学生考勤.mdf'
size=4MB,
maxsize=6MB)
4.建立表
CREATETABLE学生(学号CHAR(10)notnullPRIMARYKEY,
姓名CHAR(10),
性别char
(2),
学院CHAR(20),
专业CHAR(20),
班级char(20),
旷课次数CHAR(10),
CONSTRAINTC1CHECK(性别IN('
男'
'
女'
)),
CONSTRAINTC2CHECK(学院IN('
计算机科学与技术学院'
管理与经济学院'
信息科学技术学院'
机械与车辆工程学院'
化工与材料学院'
航空学院'
文法学院'
外国语学院'
设计与艺术学院'
国际学院'
)));
CREATETABLE课程(课程号CHAR(10)PRIMARYKEY,
课程名CHAR(30),
开课时间datetime,
年度char(10),
学期char(10));
CREATETABLE考勤表(考勤表编号CHAR(10)PRIMARYKEY,
学号CHAR(12),
课程号CHAR(5),
出勤情况char(10));
CREATETABLE选修(学号CHAR(10),
课程号CHAR(10),
成绩SMALLINT,
CONSTRAINTC3PRIMARYKEY(学号,课程号),
CONSTRAINTC4FOREIGNKEY(学号)REFERENCES学生(学号),
CONSTRAINTC5FOREIGNKEY(课程号)REFERENCES课程(课程号));
createtable出勤(学号char(10)notnull,
考勤表编号char(10),
CONSTRAINTC6PRIMARYKEY(学号,考勤表编号),
CONSTRAINTC7FOREIGNKEY(学号)REFERENCES学生(学号),
CONSTRAINTC8FOREIGNKEY(考勤表编号)REFERENCES考勤表(考勤表编号));
5.输入数据
(1).学生表数据输入
insert
into学生
values('
00001'
季节'
信息管理与信息系统'
4班'
0'
);
00002'
穆子墨'
法学'
3班'
00003'
叶童'
视觉传达'
1班'
6'
00004'
季晨'
环境工程'
2班'
5'
00005'
苏嘉'
计算机科学与技术'
4'
00006'
王朔'
英语'
16'
00007'
李飞扬'
自动化'
9'
00008'
孙超'
机械'
00009'
时飞燕'
航空'
00010'
段洪波'
会计'
00011'
洛英'
国贸'
(2).课程表数据输入
into课程
A'
大学英语'
2008-09-10'
大一'
二'
B'
电子商务概论'
2010-03-03'
大三'
一'
C'
数据结构'
2009-09-10'
大二'
D'
计算机网络技术'
2007-09-10'
E'
管理信息系统'
F'
经济法'
2008-03-04'
G'
概率论与数理统计'
2008-09-11'
H'
网络营销'
I'
国际贸易理论与实务'
2009-03-03'
J'
运筹学'
2009-09-09'
K'
财务管理'
(3).考勤表数据输入
into考勤表
20001'
已到'
20002'
迟到'
20003'
旷课'
20004'
20005'
20006'
20007'
20008'
20009'
20010'
20011'
(4).选修数据输入
into选修
VALUES('
92'
90'
85'
88'
83'
89'
78'
70'
77'
(5).出勤数据输入
insert
into出勤
6.建立索引
(1)、聚簇索引
A、学生.学号
createuniqueclusteredindex学号on学生(学号)
B、课程.课程号
createuniqueclusteredindex课程号on课程(课程号)
C、考勤表.考勤表编号
createuniqueclusteredindex考勤表编号on考勤表(考勤表编号)
(2)、复合索引
A、学号_课程号
create
index学号_课程号on选修(学号,课程号)
B、学号_考勤表编号
index学号_考勤表编号on出勤(学号,考勤表编号)
7.创建学生所属学院取值范围为计算机科学与技术学院、管理与经济学院、信息科学技术学院、机械与车辆工程学院、化工与材料学院、航空学院、文法学院、外国语学院、设计与艺术学院、国际学院的规则,并与相应的列绑定;
createrule学院取值范围as@学院in('
)
go
execsp_bindrule'
学院取值范围'
学生.学院'
8.在学生实体中创建性别默认值为女的默认,并与相应的列绑定;
createdefault性别as'
go
execsp_bindefault'
性别'
学生.性别'
9.创建一个可以通过所属学院类别和班级类别查询学生的存储过程;
A、学院类别
CREATEPROCEDURE学院类别
ASSELECT*
FROM学生
GO
EXEC学院类别
B、班级类别
CREATEPROCEDURE班级类别
EXEC班级类别
10.通过触发器定义旷课的学生不能从学生实体中删除;
createtrigger学生_deleteon学生
fordelete
asif(selectcount(*)
from考勤,deleted
where考勤.学号=deleted.学号and出勤情况='
)>
rollbacktransaction
11.建立包括学生的学号,姓名,所属学院,旷课次数的视图;
CREATEVIEW学生视图
ASSELECT学号,姓名,学院,旷课次数
FROM学生
12.查询工作
(1)、按专业统计各年度按时上课的学生名单
A、查询语句
select学生.学号,姓名,专业,出勤情况
from学生,考勤表,课程
where学生.学号=考勤表.学号and课程.课程号=考勤表.课程号and年度='
and出勤情况='
;
查询结果
B、查询语句
C、查询语句
and出勤查询结果
(2)、统计各个学期某门课程的出勤记录
select课程.课程号,课程名,出勤情况
from课程,考勤表
where课程.课程号=考勤表.课程号and学期='
and考勤表.课程号='
E'
(3)、按课程统计各个学期旷课次数超过一定次数的学生名单
A、查询语句
select学生.学号,姓名,旷课次数,课程.课程号,课程名,考勤表.课程号
from学生,选修,课程,考勤表
where学生.学号=选修.学号and课程.课程号=考勤表.课程号and学生.学号=考勤表.学号and学期='
and旷课次数>
3;
(4)、统计本学期某专业学生某门课程的出勤情况
查询语句
select学生.学号,姓名,考勤表.出勤情况
from学生,课程,考勤表
where学生.学号=考勤表.学号and课程.课程号=考勤表.课程号and学期='
and考勤表.课程号='
and专业='
六、实验心得
在上实践课之前,我们专业已经学了一个学期的数据库原理这门课程了,这为我们这学期的实践课打下了扎实的基础。
但是在实践课之前,我们的水平仅限于理论层面,对于如何真正的使用数据库的相关知识还处于朦胧的阶段,而这次的实践课正好给了我们这样一个机会。
前面几天的任务是设计E-R图。
显然,E-R图是整个数据库最坚实的基础,也是最难的一部分工作。
不同的人有不同的设计理念,不过在经过与同学们的多方讨论以后,大家的E-R图都趋于相似,但是这也更有利于我们发现自己设计理念的不足,做出更好的E-R图。
设计好E-R图后,剩下的工作就轻松多了,虽然在SQL语句的执行过程中频频出错,让我有了很大的挫败,但是我也因此受益匪浅。
在此次的数据库实践中,我更加了解查询分析器和企业分析器的用法,在SQL语句的运行方面也更加的纯熟。
这对于我以后的工作以及学习都必将有重大的作用。