数据库课程设计.docx
《数据库课程设计.docx》由会员分享,可在线阅读,更多相关《数据库课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
![数据库课程设计.docx](https://file1.bdocx.com/fileroot1/2022-12/7/88a24b09-d61c-431a-a907-47e7bccd8454/88a24b09-d61c-431a-a907-47e7bccd84541.gif)
数据库课程设计
班级考勤管理数据库系统的设计报告
一、需求分析:
1、系统的功能模块图
2、系统的功能描述
班级考勤管理系统涉及到班级人事管理的多个方面,如:
奖学金的评定,打课程分数,班干部的评选等。
学生考勤信息处理完成学生考勤情况的查询、输入等操作,可对某个学生的考勤情况进行统计,生成统计报表。
可建立三张表:
考勤管理表格、选课信息表格、学生信息表格。
每张表设置了一定的属性,设定了一些主键关系,可以让教师查询资料和评奖评优。
3、系统的数据流程图
二、数据库设计
1、概念结构设计
(1)学生基本信息实体E-R图
(2)考勤信息实体E-R图
(3)选课信息实体E-R图
(4)综合E-R图(无需再标注实体属性,但联系属性需标注)
2、逻辑结构设计
(1)E-R模型转换成关系模型
学生基本信息表
学号
姓名
性别
院系
20040001
赵毅
男
土木
20040002
钱二
男
机械
20040003
孙三
女
电气
20040004
李斯
男
土木
20040005
周武
男
计算机
选课信息表
课程号
课程名称
学号
0001
高等数学
20040004
0003
线性代数
20040001
0003
线性代数
20040003
0004
工程制图
20040002
0004
工程制图
20040003
0004
工程制图
20040004
0005
大学英语
20040005
0006
铁道概论
20040003
0007
军事理论
20040005
考勤信息表
课程号
学号
姓名
日期
出勤情况
0001
20040004
李斯
20120101
出勤
0001
20040004
李斯
20120102
出勤
0001
20040004
李斯
20120104
病假
0003
20040001
赵毅
20120105
出勤
0003
20040001
赵毅
20120107
事假
0003
20040001
赵毅
20120110
病假
0003
20040003
孙三
20120105
出勤
0003
20040003
孙三
20120107
旷到
0003
20040003
孙三
20120110
出勤
0004
20040002
钱二
20120113
出勤
0004
20040002
钱二
20120116
病假
0004
20040002
钱二
20120120
出勤
0004
20040003
孙三
20120113
出勤
0004
20040003
孙三
20120116
出勤
0004
20040003
孙三
20120120
事假
0004
20040004
李斯
20120113
病假
0004
20040004
李斯
20120116
旷到
0004
20040004
李斯
20120120
出勤
0005
20040005
周武
20120104
病假
0005
20040005
周武
20120113
出勤
0005
20040005
周武
20120120
出勤
0005
20040005
周武
20120128
事假
0006
20040003
孙三
20120105
出勤
0006
20040003
孙三
20120106
出勤
0006
20040003
孙三
20120113
出勤
0007
20040005
周武
20120120
事假
0007
20040005
周武
20120123
出勤
0007
20040005
周武
20120127
出勤
3、数据库结构的详细设计(包括部分物理结构设计)
(1)填写二维表,表头如下:
表名
属性名
数据类型
长度
允许空
主码或索引
约束条件
学生基本信息表
学号
char
8
Notnull
PRIMARYKEY
Check(学号like'2004[0-9][0-9][0-9][0-9]')
姓名
varchar
10
Notnull
性别
char
2
Notnull
check(性别in('男','女'))
院系
varchar
10
Notnull
check(院系in('土木','机械','电气','计算机','交运'))
选课信息表
课程号
char
4
Notnull
PRIMARYKEY
Check(课程号like'[0-9][0-9][0-9][0-9]')
课程名称
varchar
10
Notnull
学号
char
8
PRIMARYKEY
Check(学号like'2004[0-9][0-9][0-9][0-9]')
考勤信息表
课程号
char
4
Notnull
PRIMARYKEY
Check(课程号like'[0-9][0-9][0-9][0-9]')
学号
char
8
Notnull
PRIMARYKEY
Check(学号like'2004[0-9][0-9][0-9][0-9]')
姓名
varchar
10
Notnull
日期
datatime
8
Notnull
PRIMARYKEY
出勤情况
varchar
10
Notnull
check(出勤情况in('出勤','病假','事假','旷到'))
4、数据库的实施
(1)用可视化的方法定义数据库(将数据库文件定义在D盘根目录下)
数据库创建的SQL语句为:
createdatabase班级考勤管理
(2)用SQL语言定义表、视图、索引、触发器等。
<1>、定义表
学生基本信息表的创建
CREATETABLE学生基本信息表
(学号char(8)NOTNULLPRIMARYKEYCLUSTEREDCheck(学号like'2004[0-9][0-9][0-9][0-9]')
姓名varchar(10)NOTNULL
性别char
(2)check(性别in('男','女'))notnull
院系varchar(10)NOTNULLcheck(院系in('土木','机械','电气','计算机','交运'))
)
选课信息表的创建
CREATETABLE选课信息表
(课程号char(4)NOTNULLCheck(课程号like'[0-9][0-9][0-9][0-9]')
课程名称varchar(10)NOTNULL
学号char(8)NOTNULLCheck(学号like'2004[0-9][0-9][0-9][0-9]'))PRIMARYKEY(课程号,学号)
)
考勤信息表的创建
CREATETABLE考勤信息表
(课程号char(4)NOTNULLCheck(课程号like'[0-9][0-9][0-9][0-9]')
学号char(8)NOTNULLCheck(学号like'2004[0-9][0-9][0-9][0-9]'))
姓名varchar(10)NOTNULL
日期datatime(8)NOTNULL
出勤情况varchar(10)NOTNULLcheck(出勤情况in('出勤','病假','事假',
'旷到'))PRIMARYKEY(课程号,学号,日期)
)
<2>创建视图
A创建高等数学考勤的视图
Createview高等数学
asselect选课信息表.学号,姓名,日期,出勤状况
From选课信息表join考勤信息表on选课信息表.学号=考勤信息表.学号
where课程名称like'高等数学'
运行结果:
B创建线性代数考勤的视图
Createview线性代数
asselect选课信息表.学号,姓名,日期,出勤状况
From选课信息表join考勤信息表on选课信息表.学号=考勤信息表.学号
where课程名称like'线性代数'
运行结果:
C创建工程制图考勤的视图
Createview工程制图
asselect选课信息表.学号,姓名,日期,出勤状况
From选课信息表join考勤信息表on选课信息表.学号=考勤信息表.学号
where课程名称like'工程制图'
运行结果:
D创建大学英语考勤的视图
Createview大学英语
asselect选课信息表.学号,姓名,日期,出勤状况
From选课信息表join考勤信息表on选课信息表.学号=考勤信息表.学号
where课程名称like'大学英语'
运行结果:
E创建铁道概论考勤的视图
Createview铁道概论
asselect选课信息表.学号,姓名,日期,出勤状况
From选课信息表join考勤信息表on选课信息表.学号=考勤信息表.学号
where课程名称like'铁道概论'
运行结果:
F创建军事理论考勤的视图
Createview军事理论
asselect选课信息表.学号,姓名,日期,出勤状况
From选课信息表join考勤信息表on选课信息表.学号=考勤信息表.学号
where课程名称like'军事理论'
运行结果:
<3>创建索引
在考勤信息表的“日期”列上创建一个非聚集索引,要求索引键值按“日期”降序排列
createindex日期on考勤信息表(日期desc)
(3)录入数据(用可视化的方法,每张表至少3条数据)
三、设计心得
这是我初次接触数据库设计,设计的时候一点都不懂,虽然上课讲过设计的相关内容,但是做起来的时候发现并不知如何让下手。
于是我想到从网上找一些相关数据库的设计报告作参考,还有课本的帮助,才慢慢开始懂到底要怎么做。
同时,同学之间相互讨论。
通过本次课程设计,我对数据库的基础知识多了层熟练,对数据库的基本操作也得到一定程度的熟悉。
例如,学会了视图的使用。
数据库的课程设计是一项比较复杂的作业工作,在此,我要感谢老师及同学们给予我的很大的帮助,是你们帮助我解疑排难,成功完成数据库的设计。
数据库的设计是一项具有实用性的工作,此次课程设计意义重大,也是我受益匪浅,多谢各位老师和同学。
课程名称:
数据库原理及应用
设计题目:
班级考勤管理数据库系统
院系:
计算机与通信工程系
专业:
铁道信号
年级:
2009
姓名:
朱奇
学号:
20098691
指导教师:
陈大玲
西南交通大学峨眉校区
2011年12月19日