考勤系统数据库实践报告.docx
- 文档编号:3585831
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:16
- 大小:208.74KB
考勤系统数据库实践报告.docx
《考勤系统数据库实践报告.docx》由会员分享,可在线阅读,更多相关《考勤系统数据库实践报告.docx(16页珍藏版)》请在冰豆网上搜索。
考勤系统数据库实践报告
数据库(考勤系统)实验报告
学院:
管理与经济学院
专业:
信息管理与信息系统
班级:
姓名:
学号:
时间:
2010年1月26号
一、数据库实践性质、目的和任务
1.性质:
专业必修课
2.目的和任务:
数据库原理是一门应用性很强的专业课,在学习时必须注意理论与实践相结合。
本实践课的目的是通过实践使学生经历一个数据库系统的数据库设计的全过程和受到一次综合的训练,以便能较全面地理解、掌握和综合运用所学的知识。
3.先修课程:
数据库原理及应用
4.学时数:
48学时
5.学分数:
2.5分
二、数据库实践课总体要求
按照实践课题的具体要求进行详细的系统设计,要包括以下内容。
1.数据库概念结构设计(E-R图)
2.数据库逻辑结构设计(关系模型,关系模式的设计至少要满足第三范式;数据库的设计要考虑安全性和完整性的要求)
3.数据库物理结构设计(建库、建表、索引、视图)
4.输入初始数据,要求每个表的记录数不得少于10条,并且满足实际业务场景。
三、数据库实践课的内容和要求
考勤系统的设计
(1)按专业统计各年度按时上课的学生名单
(2)统计各个学期某门课程的出勤记录
(3)按课程统计各个学期旷课次数超过一定次数的学生名单
(4)统计本学期某专业学生某门课程的出勤情况
●为每个实体表和关系表创建合适的索引(聚簇索引、复合索引)、主码、外码;
●创建学生所属学院取值范围为计算机科学与技术学院、管理与经济学院、信息科学技术学院、机械与车辆工程学院、化工与材料学院、航空学院、文法学院、外国语学院、设计与艺术学院、国际学院的规则,并与相应的列绑定;
●在学生实体中创建性别默认值为女的默认,并与相应的列绑定;
●创建一个可以通过所属学院类别和班级类别查询学生的存储过程;
●通过触发器定义旷课的学生不能从学生实体中删除;
●建立包括学生的学号,姓名,所属学院,旷课次数的视图;
四、数据库实践课进度表
时间
完成内容
提交文档
备注
十九周周三上午(理论)
理论课:
(1)概念结构设计:
E-R图
(2)关系数据表
所有和数据库有关的操作全部在查询分析器中完成。
二十周周一上午
实验课:
(1)针对具体题目设计ER图,并转换成关系数据表
(2)按照转换后的关系数据表创建数据库、表、主键、外键
(3)每个表至少有10条数据(并且符合主外码关联关系)
Visio图
Word文档
二十周周四、周五全天
Sql
二十周周三上午(理论)
理论课:
(1)主外码、索引、视图、规则、默认、触发器、存储过程
(2)用Sql语言实现统计分析功能
二十一周周一全天、
实验课:
数据库物理结构设计
(1)上机操作,学会数据库主外码、索引、视图、规则、默认、存储过程的建立等
(2)用Sql语言实现具体题目中的统计分析报表
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');
insert
into学生
values('00002','穆子墨','女','文法学院','法学','3班','0');
insert
into学生
values('00003','叶童','男','设计与艺术学院','视觉传达','1班','6');
insert
into学生
values('00004','季晨','男','化工与材料学院','环境工程','2班','5');
insert
into学生
values('00005','苏嘉','女','计算机科学与技术学院','计算机科学与技术','1班','4');
insert
into学生
values('00006','王朔','男','外国语学院','英语','1班','16');
insert
into学生
values('00007','李飞扬','男','信息科学技术学院','自动化','2班','9');
insert
into学生
values('00008','孙超','男','机械与车辆工程学院','机械','2班','4');
insert
into学生
values('00009','时飞燕','女','航空学院','航空','4班','5');
insert
into学生
values('00010','段洪波','男','管理与经济学院','会计','4班','0');
insert
into学生
values('00011','洛英','女','管理与经济学院','国贸','3班','0');
(2).课程表数据输入
insert
into课程
values('A','大学英语','2008-09-10','大一','二');
insert
into课程
values('B','电子商务概论','2010-03-03','大三','一');
insert
into课程
values('C','数据结构','2009-09-10','大二','一');
insert
into课程
values('D','计算机网络技术','2007-09-10','大一','一');
insert
into课程
values('E','管理信息系统','2009-09-10','大二','二');
insert
into课程
values('F','经济法','2008-03-04','大一','二');
insert
into课程
values('G','概率论与数理统计','2008-09-11','大二','一');
insert
into课程
values('H','网络营销','2007-09-10','大一','一');
insert
into课程
values('I','国际贸易理论与实务','2009-03-03','大二','二');
insert
into课程
values('J','运筹学','2009-09-09','大三','一');
insert
into课程
values('K','财务管理','2010-03-03','大三','二');
(3).考勤表数据输入
insert
into考勤表
values('20001','00001','A','已到');
insert
into考勤表
values('20002','00002','B','迟到');
insert
into考勤表
values('20003','00003','C','旷课');
insert
into考勤表
values('20004','00004','D','已到');
insert
into考勤表
values('20005','00005','E','已到');
insert
into考勤表
values('20006','00006','F','迟到');
insert
into考勤表
values('20007','00007','G','旷课');
insert
into考勤表
values('20008','00008','H','迟到');
insert
into考勤表
values('20009','00009','I','旷课');
insert
into考勤表
values('20010','00010','J','已到');
insert
into考勤表
values('20011','00011','K','已到');
(4).选修数据输入
insert
into选修
VALUES('00001','A','92');
insert
into选修
VALUES('00002','B','90');
insert
into选修
VALUES('00003','C','85');
insert
into选修
VALUES('00004','A','88');
insert
into选修
VALUES('00005','D','83');
insert
into选修
VALUES('00006','E','89');
insert
into选修
VALUES('00007','F','90');
insert
into选修
VALUES('00008','G','78');
insert
into选修
VALUES('00009','H','70');
insert
into选修
VALUES('00010','I','77');
insert
into选修
VALUES('00011','J','88');
(5).出勤数据输入
insert
into出勤
values('00001','20001');
insert
into出勤
values('00002','20002');
insert
into出勤
values('00003','20003');
insert
into出勤
values('00004','20004');
insert
into出勤
values('00005','20005');
insert
into出勤
values('00006','20006');
insert
into出勤
values('00007','20007');
insert
into出勤
values('00008','20008');
insert
into出勤
values('00009','20009');
insert
into出勤
values('00010','20010');
insert
into出勤
values('00011','20011');
6.建立索引
(1)、聚簇索引
A、学生.学号
createuniqueclusteredindex学号on学生(学号)
B、课程.课程号
createuniqueclusteredindex课程号on课程(课程号)
C、考勤表.考勤表编号
createuniqueclusteredindex考勤表编号on考勤表(考勤表编号)
(2)、复合索引
A、学号_课程号
create
index学号_课程号on选修(学号,课程号)
B、学号_考勤表编号
create
index学号_考勤表编号on出勤(学号,考勤表编号)
7.创建学生所属学院取值范围为计算机科学与技术学院、管理与经济学院、信息科学技术学院、机械与车辆工程学院、化工与材料学院、航空学院、文法学院、外国语学院、设计与艺术学院、国际学院的规则,并与相应的列绑定;
createrule学院取值范围as@学院in('计算机科学与技术学院','管理与经济学院','信息科学技术学院','机械与车辆工程学院','化工与材料学院','航空学院','文法学院','外国语学院','设计与艺术学院','国际学院')
go
execsp_bindrule'学院取值范围','学生.学院'
8.在学生实体中创建性别默认值为女的默认,并与相应的列绑定;
createdefault性别as'女'
go
execsp_bindefault'性别','学生.性别'
9.创建一个可以通过所属学院类别和班级类别查询学生的存储过程;
A、学院类别
CREATEPROCEDURE学院类别
ASSELECT*
FROM学生
GO
EXEC学院类别
B、班级类别
CREATEPROCEDURE班级类别
ASSELECT*
FROM学生
GO
EXEC班级类别
10.通过触发器定义旷课的学生不能从学生实体中删除;
createtrigger学生_deleteon学生
fordelete
asif(selectcount(*)
from考勤,deleted
where考勤.学号=deleted.学号and出勤情况='旷课')>0
rollbacktransaction
11.建立包括学生的学号,姓名,所属学院,旷课次数的视图;
CREATEVIEW学生视图
ASSELECT学号,姓名,学院,旷课次数
FROM学生
12.查询工作
(1)、按专业统计各年度按时上课的学生名单
A、查询语句
select学生.学号,姓名,专业,出勤情况
from学生,考勤表,课程
where学生.学号=考勤表.学号and课程.课程号=考勤表.课程号and年度='大一'and出勤情况='已到';
查询结果
B、查询语句
select学生.学号,姓名,专业,出勤情况
from学生,考勤表,课程
where学生.学号=考勤表.学号and课程.课程号=考勤表.课程号and年度='大二'and出勤情况='已到';
查询结果
C、查询语句
select学生.学号,姓名,专业,出勤情况
from学生,考勤表,课程
where学生.学号=考勤表.学号and课程.课程号=考勤表.课程号and年度='大三'and出勤查询结果
(2)、统计各个学期某门课程的出勤记录
A、查询语句
select课程.课程号,课程名,出勤情况
from课程,考勤表
where课程.课程号=考勤表.课程号and学期='一'and考勤表.课程号='C';
查询结果
B、查询语句
select课程.课程号,课程名,出勤情况
from课程,考勤表
where课程.课程号=考勤表.课程号and学期='二'and考勤表.课程号='E';
查询结果
(3)、按课程统计各个学期旷课次数超过一定次数的学生名单
A、查询语句
select学生.学号,姓名,旷课次数,课程.课程号,课程名,考勤表.课程号
from学生,选修,课程,考勤表
where学生.学号=选修.学号and课程.课程号=考勤表.课程号and学生.学号=考勤表.学号and学期='二'and旷课次数>3;
查询结果
B、查询语句
select学生.学号,姓名,旷课次数,课程.课程号,课程名,考勤表.课程号
from学生,选修,课程,考勤表
where学生.学号=选修.学号and课程.课程号=考勤表.课程号and学生.学号=考勤表.学号and学期='一'and旷课次数>3;
查询结果
(4)、统计本学期某专业学生某门课程的出勤情况
查询语句
select学生.学号,姓名,考勤表.出勤情况
from学生,课程,考勤表
where学生.学号=考勤表.学号and课程.课程号=考勤表.课程号and学期='二'and考勤表.课程号='A'and专业='信息管理与信息系统';
查询结果
六、实验心得
在上实践课之前,我们专业已经学了一个学期的数据库原理这门课程了,这为我们这学期的实践课打下了扎实的基础。
但是在实践课之前,我们的水平仅限于理论层面,对于如何真正的使用数据库的相关知识还处于朦胧的阶段,而这次的实践课正好给了我们这样一个机会。
前面几天的任务是设计E-R图。
显然,E-R图是整个数据库最坚实的基础,也是最难的一部分工作。
不同的人有不同的设计理念,不过在经过与同学们的多方讨论以后,大家的E-R图都趋于相似,但是这也更有利于我们发现自己设计理念的不足,做出更好的E-R图。
设计好E-R图后,剩下的工作就轻松多了,虽然在SQL语句的执行过程中频频出错,让我有了很大的挫败,但是我也因此受益匪浅。
在此次的数据库实践中,我更加了解查询分析器和企业分析器的用法,在SQL语句的运行方面也更加的纯熟。
这对于我以后的工作以及学习都必将有重大的作用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 考勤 系统 数据库 实践 报告