SQLSERVER数据库系统设计与实现实验报告1文档格式.docx
《SQLSERVER数据库系统设计与实现实验报告1文档格式.docx》由会员分享,可在线阅读,更多相关《SQLSERVER数据库系统设计与实现实验报告1文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
![SQLSERVER数据库系统设计与实现实验报告1文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/1/479824be-405e-403f-8fe2-651b31afd9a1/479824be-405e-403f-8fe2-651b31afd9a11.gif)
2)在创建好的数据库YGGL中创建数据表。
考虑到数据库YGGL要求包含员工的信息、部门信息以及员工的薪水信息,所以数据库YGGL应包含下列3个表:
Employees(员工信息)表、Departments(部门信息)表、Salary(员工薪水情况)表。
各表的结构分别为表T2.1、T2.2和表T2.3所示。
表T2.1Employees表结构
列名
数据类型
长度
是否为空
说明
Employeeid
Char
6
×
员工编号,主键
Name
10
姓名
Education
4
学历
Birthday
Datetime
出生日期
Sex
Bit
性别,默认为1
Workyear
Tinyint
√
工作时间
Address
Varchar
40
地址
Phonenumber
12
电话号码
Departmentid
char
3
员工部门号
表T2.2Departments表结构
部门编号,主键
Departmentname
20
部门名
Note
varChar
100
备注
表T2.3Salary表结构
Income
Float
收入
Outcome
支出
要求分别使用“对象资源管理器”和T-SQL语句完成数据表的创建工作。
基本要求:
1.写出实验步骤
2.写出实验中遇到的问题及解决的方法
实验总结:
实验评价(教师):
数据查询指导教师:
掌握SELECT语句的基本语法;
掌握子查询的表示;
掌握连接查询的表示;
掌握SELECT语句的GROUPBY子句的作用和使用方法;
掌握SELECT语句的ORDERBY子句的作用和使用方法;
在企业管理器中向数据库YGGL表加入数据
在企业管理器中向表Employees中加入如表1所示的记录。
表1Employees表记录
编号
邮编
电话
电子邮件
部门号
性别
王林
中山路
NULL
2
1956-1-23
1
伍容华
北京东路l00-2
1966-3-28
王向客
四牌楼10-10-108
1972-12-9
李丽
中山东路102.2
1950-7-30
刘明
虎距路100-2
5
1962-10-18
朱俊
牌楼巷5.3-1806
1955-09-28
钟敏
中山路108-3-105
1969-08-10
张石兵
解放路34-9-1.203
1964-10-01
林涛
中山北路247.2.305
1967-04-2
李玉艰
热和路209.3
1958-09-20
叶见
北京西路3-7-502
1968-11-18
陈林琳
汉中路120-4-102
1959-09-03
在企业管理器中向表Departments插入如表2所示的记录。
表2Departments表记录
部门名称
财务部
人力资源部
经理办公室
研发部
市场部
在企业管理器中向表Salary插入如表3所示的记录。
表3Departments表记录
2100.8
123.09
1582.62
88.03
2569.88
185.65
1987.01
79.58
2066.15
108.0
2980.7
210.2
3259.98
281.52
2860.0
198.0
2347.68
180.0
2531.98
199.08
2240.0
121.0
1980.0
100.0
参照以上数据完成以下操作:
1)SELECT语句的基本使用。
查询每个雇员的所有数据;
查询Employees表中每个雇员的地址和电话;
查询Employees为的雇员的地址和电话;
查询Employees中男雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址、电话;
查询Employees中员工姓名和性别,要求SEX值为1时显示为“男”,为0时显示为“女”;
计算每个雇员的实际收入;
查询员工总数;
找出所有姓王的雇员的部门号;
找出所有收入在2000-3000之间的员工号码;
使用INTO子句,由表Salary创建“收入在1500以上的员工”表,包括编号和收入。
2)子查询的使用。
用子查询的方法查询所有收入在2500以下的雇员的情况;
用子查询的方法查询研发部比所有财务部雇员收入都高的雇员姓名;
用子查询的方法查询所有年龄比研发部雇员年龄都大的雇员的姓名。
3)连接查询的使用。
查询每个雇员的情况及其工作部门的情况;
使用外连接方法查询所有员工的月收入;
查询研发部在1976年以前出生的雇员姓名及其薪水详情。
4)使用聚合查询。
查询财务部雇员的最高和最低收入;
查询财务部雇员的最高和最低实际收入;
统计财务部收入在2500以上雇员的人数。
5)GROUPBY、ORDERBY子句的使用。
按员工的学历分组,排列出格科、大专和硕士的人数;
按员工的工作年份分组,统计各个工作年份的人数;
将员工作信息按出生时间从小到大排列。
6)视图使用。
创建视图,包含员工号码、姓名、所在部门名称和实际收入这几列;
创建YGGL数据库上的视图DS_view,视图包含Departments表的全部列;
向视图DS_view中插入一行数据“6,广告部,广告业务”;
修改视图DS_view,将部门号为4的部门名称修改为“生产车间”。
实验总结及意见:
T-SQL编程指导教师:
掌握用户自定义类型的使用;
掌握变量的分类及其使用;
掌握各种运算符的使用;
掌握各种控制语句的使用;
掌握系统函数及用户自定义函数的使用。
1)自定义数据类型的使用。
自定义一数据类型ID_type,用于描述员工编号。
在YGGL数据库中创建Employees3表,表结构与Employees类似,只是EmployeeID列使用的数据类型为用户自定义数据类型ID_type。
2)变量的使用。
创建一个名为female的用户变量,并在SELECT语句中使用该局部变理查找表在所有女员工的编号、姓名。
定义一个变量,用于描述YGGL的数据库中SALARY表员工的实际收入,然后查询该项变量。
3)运算符的使用。
使用算数运算符“-”查询员工的实际收入;
使用比较运算符“>
”查询Employees表在工作时间大于5年的员工信息。
4)流程控制语句。
判断姓名为“王林”的员工实验收入是否高于3000,如果是则显示其收入,否则显示“收入不高于3000”;
使用循环输出一个用“*”组成的三角形;
使用CASE语句对Employees表按部门进行分类。
5)自定义函数的使用。
定义一个函数实现如下功能:
对于一个给定的DepartmentID值,查询该址在Departments表中是否存在,若存在返回“YES”,否则返加“NO”,并定一段T-SQL程序调用上述函数。
设计一个函数用于判断一个整数是否为素数。
存储过程与触发器指导教师:
掌握存储过程的使用方法。
掌握触发器的使用方法。
1)存储过程
创建存储过程,比较两个员工的实际收入,若前者收入比后者高就输出0,否则输出1;
创建添加职员记录的存储过程EmployeeAdd;
创建删除职员记录的存储过程EmployeeDel;
创建一个带有OUTPUT游标参数的存储过程,在Employees表中声明并打开一个游标。
然后编写T-SQL程序通过该游标变量读取记录;
创建存储过程,使用游标计算本科及以上学历的员工在总员工数中所占的比例。
2)触发器
对于YGGL数据库,表Employees的DepallmentID列与表Department的DepartmentID列应满足参照完整性规则,即:
.向Employees表添加一记录时,该记录的DepartmentID值在Departments表中应存在;
.修改Departments表的DepartmntID字段值时,该字段在Employees表中的对应值也应修改;
.删除Departments表中一记录时,该记录DepartmentID字段值在Employees表中对应的记录也应删除。
上述参照完整性规则,在此通过触发器实现。
并在查询分析器编辑窗口输入各触发器的代码并执行。
创建INSTEADOF触发器,当向SALARY表中插入记录时,先检查Employeeid列上的值在Employees中是否存在,如果存在则执行插入操作,否则提示“员工号不存在”。
创建DDL触发器,当删除数据库里,提示“无法删除”并回滚删除操作。
数据库备份和恢复指导教师:
掌握在“对象资源管理器”中创建命名备份设备的方法;
掌握在“对象资源管理器”中进行备份操作的步骤;
掌握使用T-SQL语句对数据库时行完全备份的方法;
掌握在“对象资源管理器”中进行数据恢复的步骤;
掌握使用T-SQL语句进行数据库恢复的方法。
1)数据库备份。
在“对象资源管理器”中对数据库YGGL通过行备份设备进行完全备份、差异备份、日志备份;
使用T-SQL对数据库YGGL通过行备份设备进行完全备份、差异备份、日志备份;
2)数据库恢复。
在“对象资源管理器”中对数据库YGGL进行完全恢复、差异恢复、日志恢复;
使用T-SQL对数据库YGGL进行完全恢复、差异恢复、日志恢复;
管理系统数据库设计指导教师:
配合《数据库系统概论》理论课程的教学,使学生能巩固和加深对数据库基础理论和基本知识的理解;
掌握使用数据库进行软件设计的基本思想和方法;
提高学生运用数据库理论解决实际问题的能力;
培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。
实验内容:
以SQLServer2000/2005作为后台数据库,以VB6.0、VC6.0、.NET或其它开发工具作为前台开发工具,完成一个小型数据库应用系统的设计开发。
从以下课题中选择一个,完成系统的分析、设计和开发。
具体实验内容:
例如:
图书销售管理系统的设计与实现
调查一个书店的图书销售业务,设计的图书销售系统主要包括进货、退货、统计、销售、查询功能。
①进货:
根据某种书籍的库存量及销售情况确定进货数量,根据供应商报价选择供应商。
输出一份进货单并自动修改库存量,把本次进货的信息添加到进货库中。
②退货:
顾客把已买的书籍退还给书店。
输出一份退货单并自动修改库存量,把本次退货的信息添加到退货库中。
③统计:
根据销售情况输出统计的报表。
一般内容为每月的销售总额、销售总量及排行榜等信息。
④销售:
输入顾客要买书籍的信息,自动显示此书的库存量,如果可以销售,打印销售单并修改库存,同时把此次销售的有关信息添加到日销售库中。
⑤查询:
允许用户设置条件进行进货、退货、统计、销售和库存书籍的信息查询。
⑥系统维护:
如数据安全管理(含备份与恢复)、操作员管理、权限设置等;
(1)针对给定的系统进行需求分析,设计系统结构图和系统功能模块图;
(2)针对需求分析,画出E-R图表示的概念模型,并将其转换为至少满足3NF的关系模式,设计较为合理的数据库模式;
(3)系统中应能体现对数据库的保护(数据恢复、并发控制、安全性和完整性);
(4)系统部分功能实现应该有较为友好的用户界面;
1、选好题目:
每个题目最多允许5人选做,必须确保每题有人员选做,各班学习委员将本班同学的选题情况汇总后交上来。
2、独立思考,独立完成:
课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝,否则不管是抄袭还是被抄袭,直接评定为不及格。
3、本报告为本期课程主作业,具体完成方式不限,请自行安排时间搜集资料,准备好有关的文件。
4、根据功能实现要求,按课程设计报告的撰写规范完成数据库系统课程设计报告(需求分析、概念设计、逻辑结构设计、物理设计及数据库的实施、运行和维护过程);
课程设计报告的具体要求如下:
①课设报告按照规定用16K纸张进行排版打印,要求装订平整,否则要求返工;
②课设报告的装订格式参见酒店数据库设计;
③正文不少于3000字,正文部分至少包含以下内容,并可大致作如下安排(以“企业人事管理系统的设计与实现”为例,可在此基础上扩充内容):
“企业人事管理系统的数据库设计报告”
具体格式参见范文:
酒店数据库设计报告
5、每组实现的结果必须进行检查和演示;
数据库(含部分功能实现程序源代码和可执行程序)必须上交,作为考核内容的一部分;
(上交时每组交一份即可,文件夹的取名规则为:
“课设题目(***_***)”,***为完成人,如“企业人事管理系统的数据库设计报告(张三_李四_王五)”。
该文件夹下包括四个目录:
“源代码”、“可执行文件”、“张三_课程设计报告”、“李四_课程设计报告”、“王五_课程设计报告”。
上交方式另行安排(或暂时存至本人的FTP该课程的目录下))。