《数据库与SQL Server》教学实习报告.docx
《《数据库与SQL Server》教学实习报告.docx》由会员分享,可在线阅读,更多相关《《数据库与SQL Server》教学实习报告.docx(16页珍藏版)》请在冰豆网上搜索。
《数据库与SQLServer》教学实习报告
天津农学院
计算机科学与信息工程系
《数据库与SQLServer》
教学实习报告
目录
1内容简介1
2需求分析1
2.1组织结构分析1
2.2业务流程分析2
2.3数据处理分析3
2.4其他各种限制和要求分析5
3概念模型设计5
3.1学生表局部E-R图5
3.2教师表局部E-R图5
3.3课程表局部E-R图5
3.4成绩表局部E-R图6
3.5全局E-R图7
4逻辑设计7
4.1表结构7
4.2表联系8
4.3约束8
4.4视图8
4.5存储过程8
5物理实现8
5.1SQL语句9
5.2调试过程13
1内容简介
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学生信息进行管理,具有手工管理所无法比拟的优点。
例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学生信息管理的效率。
设计学生信息管理的数据库,要使我熟悉数据库的设计、开发过程,掌握数据库设计、开发各阶段的方法,能够根据所给条件和要求,使用SQLServer实现所设计的数据库。
2需求分析
2.1组织结构分析
学生基本信息一般包括学生的学号、姓名、性别、生日、出生地、政治面目、毕业院校、原籍住址、联系方式、所在系、所在专业、所在的班、学习成绩等。
学生的学习成绩主要包括学习的课程以及各个课程的成绩。
学习的课程一般包括课程的课程号、课程名、所教授这门课程的老师。
老师的信息一般包括老师的工号、姓名、年龄、性别、所在的院系。
2.2业务流程分析
图1业务流程分析图
2.3数据处理分析
表1学生表的数据字典
字段
数据类型
宽度
是否空值
备注
学号
Char
20
否
主键
姓名
Nvarchar
50
否
性别
Nvarchar
10
否
男或女
出生年月
Datetime
否
出生地
Nvarchar
50
否
政治面目
Nvarchar
10
否
毕业院校
Nvarchar
50
否
原籍住址
Nvarchar
50
否
系别
Nvarchar
50
否
专业
Nvarchar
50
否
班级
Nvarchar
50
否
宿舍
Nvarchar
50
否
联系方式
Char
20
否
是否有处分奖励
Nvarchar
10
否
是否担任过班委
Nvarchar
10
否
备注
Text
是
表2教师表的数据字典
字段
数据类型
宽度
是否空值
备注
教师号
Char
10
否
主键
教师名
Nvarchar
50
否
年龄
Char
5
否
性别
Nvarchar
10
否
男或女
所在院系
Nvarchar
50
否
备注
Text
是
表3课程表的数据字典
字段
数据类型
宽度
是否空值
备注
课程号
Char
10
否
主键
课程名
Nvarchar
50
否
学分
Char
5
否
教师号
Char
10
否
外键
备注
Text
是
表4成绩表的数据字典
字段
数据类型
宽度
是否空值
备注
学号
Char
20
否
外键当主键
课程号
Char
10
否
外键当主键
成绩
Char
10
否
数值0-100
备注
Text
是
2.4其他各种限制和要求分析
如果删除学生表中记录的话,同时删除成绩表中相应的记录。
3概念模型设计
3.1学生表局部E-R图
图3学生表局部E-R图
3.2教师表局部E-R图
图4教师表局部E-R图
3.3课程表局部E-R图
图5课程表局部E-R图
3.4成绩表局部E-R图
图6成绩表局部E-R图
3.5全局E-R图
图7全局E-R图
4逻辑设计
4.1表结构
学生(学号,姓名,性别,出生年月,出生地,政治面目,毕业院校,原籍住址,系别,班级,宿舍,联系方式,是否有过处分奖励,是否担任过班委,备注)主键:
学号
教师(教师号,教师名,年龄,性别,所在院系,备注)主键:
教师号
课程(课程号,课程名,学分,教师号,备注)主键:
课程号外键:
教师号
成绩(学号,课程号,成绩,备注)主键:
学号,课程号外键:
学号,课程号
4.2表联系
课程表依赖于教师表。
成绩表依赖于课程表。
成绩表依赖于学生表。
4.3约束
对于性别需要check约束。
对于成绩的数值范围的用触发器约束。
4.4视图
创建视图方便用户查询,视图的列包括学号,姓名,课程,成绩
4.5存储过程
为了方便各个表的输入数据,为各个表建立存储过程。
又建立一个删除数据的存储过程,删除学生表中的记录会同时删除成绩表中对应的记录。
5物理实现
物理实现(SQL语句),调试过程(出现了什么问题,如何改正,如何改进系统性能)。
必须有开发设计过程的截图。
5.1SQL语句
建立数据库
图8创建数据库的SQL语句截图
建立学生表
图9创建学生表的SQL语句截图
建立教师表
图10创建教师表的SQL语句截图
建立课程表
图11创建课程表的SQL语句截图
建立成绩表
图12创建成绩表的SQL语句截图
约束
对于性别的check约束。
constraint性别_checheck(性别in('男','女'))。
对于成绩的触发器约束
图13创建成绩的触发器约束的SQL语句截图
视图
图14创建查询成绩的视图的SQL语句截图
存储过程
学生表存储过程
图15创建学生表添加数据的存储过程的SQL语句的截图
教师表存储过程
图16创建教师表添加数据的存储过程的SQL语句截图
课程表存储过程
图17创建课程表添加数据的存储过程的SQL语句的截图
成绩表存储过程
图18创建成绩表添加数据的存储过程的SQL语句的截图
图19创建学生表删除数据的存储过程的SQL语句的截图
5.2调试过程
输入数据
图20使用各表的存储过程添加数据的SQL语句的截图
对成绩的数值约束进行测试
图21成绩的触发器约束成功实现的截图
查看视图是否满足要求
select*from成绩_视图
显示如下:
图22视图成功实现的截图
在调试学生的触发器时出现问题
图23学生表删除数据触发器的SQL语句的截图
出现如图所示的问题:
图24测试触发器时发生的问题的截图
成绩表引用学生表主键,那么就无法先删除学生表中的内容,除非成绩表中没有外键的引用,否则会出现外键约束错误!
也就是说:
要删除,必须要先删除成绩表中的内容,才可以删除学生表中的内容。
所以这个问题无法用触发器实现。
因为不能直接先删除A表中的内容。
我想了这样一种方法:
用存储过程,传入要删除的学生表中的ID,然后删除成绩表和学生表中的对应的数据。
SQL语句为:
createprocedure学生_proc@学号int
as
deletefrom成绩where学号=@学号
deletefrom学生where学号=@学号
测试的时候如下显示:
图25测试存储过程成功的截图
图26测试存储过程成功实现发的截图
完成了删除。
参考文献
[1]张龙祥黄正端龙军.《数据库原理与设计(第二版)》,北京:
人民邮电出版社,2007
[2]张莉.《SQLServer数据库原理及应用(第二版)》,北京:
清华大学出版社,2009
[3]李昆.《SQLServer2000课程设计案例精编》,中国水利水电出版社,2006