SQLServer数据库实验培训课程.docx
- 文档编号:10044706
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:23
- 大小:27.20KB
SQLServer数据库实验培训课程.docx
《SQLServer数据库实验培训课程.docx》由会员分享,可在线阅读,更多相关《SQLServer数据库实验培训课程.docx(23页珍藏版)》请在冰点文库上搜索。
SQLServer数据库实验培训课程
实验报告
《SQLServer数据库》
课程号:
B0990070
实验项目:
数据库设计、创建、管理,数据库操作
学 号
姓 名
专业班级
实验
地点
指导
教师
时间
评语(要求):
按时完成实验;实验内容和过程记录完整;回答问题完整、正确;实验报告的撰写认真、格式符合要求。
成绩
教师签字
一、实验目的
1.理解并掌握数据库设计的概念、方法和步骤。
2.初步应用数据库设计方法。
了解需求分析的内容。
3.重点运用ER模型进行概念设计,然后将ER模型转换为关系模型。
4.深入理解SQLServer2008数据库的存储结构。
5.深入理解SQLServer2008的数据类型、表对象设计与定义。
6.掌握SQLServer2008Managementstudio的应用。
运用交互方式和命令方式建立数据库和表。
7.认识和掌握Transact-SQL的数据库操作。
8.深入理解视图意义。
掌握SQLServer中创建、管理与应用视图的方法。
9.深入理解数据库安全的概念。
10.深入理解SQLServer2008的安全体系框架。
11.掌握登录与服务器角色的概念、操作与应用。
掌握数据库用户、固定角色、自定义角色、架构的概念、操作与应用。
掌握数据库权限的概念、操作与应用。
12.理解事务的概念。
13.深入理解并掌握服务器编程的意义及方法。
14.能够编写各种自定义函数和存储过程。
。
15.理解触发器,并能够编写、应用触发器。
16.理解备份与恢复的意义及基本操作。
二、实验设备(环境)及要求
PC、WindowsXP、SQLSERVER2008
三、实验内容及要求
实验项目:
小型药店销售管理系统
通过调查、收集信息、分析,写出分析与设计报告。
1.简要的系统需求分析
包括业务分析、功能需求分析、信息需求分析。
试分析该系统的基本业务,计算机信息系统需要完成的基本功能、信息系统需要处理的信息。
2.概念设计
设计系统的概念模型,采用ER模型。
3.逻辑设计
将ER模型为关系模型,指出每个关系的主键、外键和必要的约束。
4.写出数据库的物理设计
包括存储组织结构、表的结构设计等。
5.T-SQL命令方式创建数据库的操作
利用SQL命令创建数据库文件、表、索引、联系和主键、外键等约束。
(实验报告应写出实验的过程,包括必要的截图。
)
6.利用T-SQL命令增加、删除、修改数据。
7.利用T-SQL命令进行数据的检索和统计
根据自己设计的数据库和输入的数据,写出至少10个查询要求及对应的SQL查询命令,应该包含如下功能:
投影和选择;
多表连接;
分组统计与HAVING;
子查询;
查询结果保存。
8.利用SQL命令创建视图对象
根据开发的系统的需要,至少设计三个视图:
基于单表的、包含多表连接的、包含统计运算的。
利用SQL对视图进行查询。
9.对视图进行插入、删除、修改数据操作。
体会视图与表的异同。
10.编写自定义函数。
(1)编写一个自定义函数,将一个字符串作为自变量,返回颠倒顺序的字符串。
写出源代码。
(2)编写一个自定义函数,能够实现参数化查询的功能。
自己设定函数的具体要求,然后编写出来。
11.编写利用游标进行数据处理的存储过程。
并在存储过程中应用事务的概念。
自己确定过程的具体要求,然后编写出来。
12.编写一个实现修改表的触发器,实现完整性控制。
13.设置服务器身份验证模式。
用命令创建若干不同验证模式的登录账户。
14.将部分登录赋予服务器角色。
然后撤消。
15.将部分登录映射到你的数据库中成为用户。
16.创建自定义角色、架构。
17.通过角色给用户授权。
18.直接给用户授权,验证其获得权限前后的操作差别。
19.删除用户和自定义的角色。
四、回答问题
1.你如何认识需求分析在系统开发中的地位和重要性?
答:
需求分析是系统开发的重要环节,其目的是通过调查分析,把用户的信息和功能描述转化为开发员所能理解的功能描述,并在用户需求的基础上去除不合理的地方,补充系统缺失的地方,最后为系统的概要设计,详细设计提供准确,有效的数据基础。
在需求分析中要把系统所要处理的业务理解透彻,并把其中的信息整理归类。
然后还需要把整个系统所要实现的功能的逻辑思路理清楚,这些工作都是系统开发能够继续做下去的基础。
如果需求分析没有做好,或者说对整个系统的总体框架不明晰,最终的系统就不能达到开发目标。
2.设计ER图、关系模型分别属于数据库设计的哪一阶段?
答:
ER图属于概念设计阶段;关系模型处于逻辑设计阶段
3.主键、外键对于关系数据库的意义何在?
答:
主键是关系中能唯一区分、确定不同元组的单个属性或者属性组合。
外键能够保证数据库的数据的完整性和唯一性,通过外键,那个将相互关联的表连接起来。
4.在数据库存储结构设计时要考虑哪些因素?
答:
首先要考虑数据的存放位置和存储结构,包括:
确定关系、索引、聚簇、日志、备份等的存储安排,确定系统配置。
同时要综合考虑存取时间、存储空间利用率和维护代价3个方面的因素。
5.在表设计时对于数据类型的选择和使用如何考虑?
答:
首先要清楚理解数据库中各种数据类型的用法和范围,然后应该根据字段的实际类型来考虑数据类型,还要估计表中数据的大小范围,来确定数据类型的大小,避免空间不足或者浪费。
6.交互式如何实现表之间的联系?
SQL命令如何实现表之间的联系?
答:
(1)交互式:
单击工具栏上的“关系”按钮,打开“外键关系”对话框,在其中设置各表间关系。
(2)SQL命令:
ALTERTABLE
ADDCONSTRAINTconstraint_name
PRIMARY KEY[CLUSTERED|NONCLUSTERED]
[FOREIGNKEY]
REFERENCESreferenced_table
7.如果在定义表时进行了主键、外键以及约束等完整性设置,对于数据的输入有何影响?
试举例说明。
答:
定义主键:
定义主键来强制不允许空值的指定列中输入值的唯一性。
如果在数据库中为表定义了主键,则可将该表与其它表相关,从而减少冗余数据。
表只能有一个主键。
定义外键:
外键引用完整性表示得到正常维护的表之间的关系。
表中的数据只应指向另一个表中的现有行,不应指向不存在的行。
主键约束:
使用单列或者多列组合,表示每一条记录的唯一性,值不能为空;
外键约束:
是为了加强数据表之间的关键的表中的单列或者多列值,必须依赖另外的表存在;
唯一约束:
不允许数据库中的某一列数据有重复,但是允许有空值存在。
主键和外键一般不允许为空,如果没有输入值的话会报错,比如“性别”这一字段,如果开发人员已经约束了其值只能为“男”或“女”,当使用者输入除以上两个值外的任何值都会报错。
8.用INSERTINTO命令输入,如果数据与字段数量和要求不一致有什么问题?
当表定义中有默认值的时候,插入记录是否可以省略该字段的数据?
答:
如果数据与字段数量和要求不一致,只有在少于并且没有写出的那个已定义了默认值或者可为空的情况下才正确,其他情况都是错误的。
当表定义中有默认值的时候,插入记录旅游省略该字段的数据。
9.HAVING子句有什么作用?
答:
HAVING字句与WHERE子句一样都是实现查询功能中条件的控制和数据的筛选,WHERE子句不能包含聚集函数,而HAVING子句一般包含聚集函数。
HAVING子句还可以用来对分组结果进行筛选。
10.当通配字符作为普通字符参与匹配查询时,如何解决这样的问题?
答:
a.通过在ESCAPE字句中指定转义符、在查询条件下使用转义符指定某个通配字符是正常字符;
b.将通配符用[]括起来,指定一个字符、字符串或范围,要求所匹配对象为它们中任意一个。
11.可否利用视图进行数据的插入、删除、修改?
答:
视图是一张表,所以对表的插入、删除、更新和查询操作原则上都可以在视图上进行。
但是,视图是基于表的,对视图的操作要转化为对表的操作,这样,视图在使用上有诸多规定和限制。
对由多表连接成的视图修改数据时,不能同时影响一个以上的基表,也不能删除视图中的数据。
对视图上的某些列不能修改,如计算列,内置函数列和行集合函数列,对具有NOTNULL的列进行修改时可能会出错。
通过视图修改或者插入数据时,必须保证未显示的具有NOTNULL属性的列有值,可以是默认值等,否则不能向视图中插入数据行。
如果某些列因为规则或者约束的限制不能接受从视图插入的数据时,则插入数据可能会失败。
12.根据自己的体会,谈谈视图在数据库体系中的作用。
答:
视图是一个虚表,其内容由查询定义。
利用视图可以简化用户操作数据的方式。
可将经常使用的连接、投影、联合查询和选择查询定义为视图,这样每次对特定的数据执行进一步操作时,不必指定所有条件和限定。
除此之外还可以定制数据,导出数据。
还可以用GRANT和REVOKE命令为各种用户授予在视图上的操作权限,这样通过视图,用户只能查询或修改他们各自所能见到的数据,数据库中的其他数据对他们来说是不可见的或不可修改的。
保证了数据库的安全性。
13.视图是如何保存的?
视图中的数据是否真的存储在文件中?
答:
视图是一个虚表,是以脚本的形式存在数据库中,其中的数据仍然是原来表的数据。
视图中的数据仍然是表中的数据,并不真的存储在文件中。
14.SQLSERVER有几种身份验证模式?
区别是什么?
不同验证模式的登录账户有何区别?
答:
SQLSERVER提供了两种对数据库资源的访问进行身份验证的模式:
Windows身份验证模式和混合的验证模式。
Windows身份验证模式:
是默认的验证模式,使用windows操作系统的安全机制验证用户身份,只要用户能够通过windows用户账号验证,并且是SQLServer的登录账户,即可连接到SQLServer而不用进行身份验证,只适用于能够提供有效身份验证的windows操作系统。
混合的验证模式:
在混合的验证模式下,Windows用户和SQL用户都可以访问数据库实例。
需要为非Windows用户提供访问权限时就使用混合的验证模式。
若用户需要使用SQLServer验证模式,则需要将服务器设置为混合验证模式。
15.Sa账户有何特点?
答:
“Sa”账户是采用SQLServer验证模式的SQLServer系统管理员登录账户,该账户拥有最高的管理权限,可以执行服务器范围内的所有操作。
它是以SQLServer身份验证的,所以必须设置一个密码。
同时,Sa账户的属性不可以更改,密码可以修改。
Sa登录时无法删除的。
16.共有几种服务器角色?
最高权限的角色是什么?
能够创建数据库的角色是哪个?
答:
共有8种固定服务器角色,分别是:
sysadmin,serveradmin,setupadmin,securityadmin,processadmin,dbcreator,diskadmin,bulkadmin;同时每一个登录用户都属于public服务器角色。
最高权限的角色是sysadmin;能够创建数据库的角色是:
sysadmin,dbcreator。
17.数据库用户和登录账户有什么关系?
guest是什么用户?
有何作用?
答:
这是两种不同级别的安全机制,登录账户是SQLServer级的安全性设置,而数据库用户则是数据库级的安全性设置。
登录账户用于登录服务器,但是当某一用户要访问某个数据库时,除了可以成为服务器的一个登录以外,还必须成为这个数据库的用户账户,即获得一定的授权。
数据库用户账号在一般情况下是从某个登录账户中映射过来的。
guest是来宾用户,是用来共享文件的。
任何一个登录都可以以此身份访问数据库。
guest自动本身只具有public权限。
也可以由其他用户授权。
18.数据库角色有哪两类?
PUBLIC角色有何特点?
答:
数据库角色分为固定数据库角色和用户定义的数据库角色。
每个数据库都有一系列固定数据库角色。
虽然每个数据库中都存在名称相同的角色,但各个角色的作用域只是在特定的数据库内。
用户定义数据库角色是用户根据工作的职能定义一系列角色,并给每个角色指派了适合这项工作的权限。
从而在数据库中管理这些权限。
public角色有两大特点:
第一,数据库创建时自动生成,初始时没有权限,但可以为pbulic角色授予权限;第二,所有的数据库用户自动都是它的成员。
由于所有用户都是public角色成员,因此数据库中所有用户都会自动继承角色的权限。
当为public角色授予权限时,实际上就是为所有数据库用户授权。
不能删除public角色,也无法再将用户或组指派给该角色,它们默认属于该角色。
19.用户与架构有什么关系?
系统默认架构是什么?
怎样为用户指定架构?
答:
用户并不直接拥有数据库对象,架构拥有数据库对象。
用户通过架构来使用数据库对象。
这种机制使得删除用户时不必修改数据库对象的所有者,提高了数据库对象的可管理性。
用户不直接拥有数据库对象,数据库对象的直接所有者是架构,用户通过架构拥有数据库对象.而在SQLServer2005中构架和用户是不同的实体。
一个对象只能属于一个架构,就像一个文件只能存放于一个文件夹中一样。
与文件夹不同的是,架构是不能嵌套的。
系统默认架构是dbo架构;通过使用CREATEUSER和ALTERUSER语句,可以分配一个默认架构;或者通过SSMS在该用户的属性下面分配一个默认架构。
20.什么是安全对象?
怎样为数据库用户指定查询表的权限?
答:
安全对象是SQLServer数据库引擎授权系统控制对其进行访问的资源。
安全对象范围有服务器、端点和架构。
为指定数据库用户授予table的权利,然后在下面的权限中选择select。
〖语法〗GRANT{ALL[PRIVILEGES]}|权限名[(列名[,…n])][,…n]}
[ON[class:
:
]安全对象]TO安全主体[,…n]
TO安全主体[,…n]
[WITHGRANTOPTION][AS安全主体]
21.简述自定义函数、存储过程和触发器的异同。
答:
自定义函数、存储过程、和触发器都是模块化设计的类型。
自定义函数:
最后是返回一个值,就像普通函数一样,可以直接在表达式中调用,定义函数时要定义函数的函数名、参数、函数值类型和函数体。
存储过程:
是一个可重用的代码模块,可以高效率的完成指定的操作。
存储过程可以没有返回值,也可以有任意个输出参数,必须单独调用。
触发器:
实质是一种特殊类型的存储过程,它在插入、修改或删除时触发执行。
能够实现由主键和外键所不能保证的参照完整性和数据的一致性。
22.什么是游标?
应用游标的步骤是什么?
答:
游标是一种处理数据的方法,它可以对结果集进行逐行处理,也可以指向结果集中的任意位置,并对该位置的数据进行处理。
应用游标的步骤:
(1)声明游标
(2)打开游标,即把外存上的数据调入内存,运行查询(3)提取数据(4)关闭游标(5)释放游标
23.有哪几种恢复模式和几种备份类型?
答:
恢复模式有3种:
简单恢复模式、完整恢复模式和大容量日志恢复模式。
备份类型也有3种:
完整备份、差异备份和事务日志备份。
五、分析讨论
这次实验我觉得最重要的是系统分析,逻辑设计和物理设计时一定要认真想清楚每张表的属性和它们之间的相互联系,这样在后面使用查询的时候才不会出错,如果前面没做好,后面做查询的时候就会出现各种错误,如数据结构定义不统一,外键冲突等问题。
除此之外要做好一个数据库系统,要掌握好学习中的每一步,平时上课学习很有用,认真学了,做的时候就会比较轻松。
然后,我觉得函数和触发器那部分比较难,只会实现简单的查询、删除、修改控制。
感觉自己在验证授权、存储过程等方面的基础及学习较为薄弱。
相信经过一步一步的学习,我们能力也会进一步提高。
以下为本次实验的过程记录报告:
(可包括截图)
小型药店销售管理系统
1.简要的系统需求分析
药店管理系统是非常常用的信息管理系统,随着规模的扩大,传统的药店管理模式已经不能适应发展的需要。
一个药店要有一个健全的管理系统,来管理药品的信息,包括药品编号、药品名、有效期、库存量、供应商等。
除此之外,系统还提供查询药品的进货和销售信息以及顾客信息等,大大提高了药店对于药品管理的效率。
1.1包括业务分析
柜台信息管理:
把药店分成各个小模块,各司其事,既分工有合作,使药店高效运行。
药品信息管理:
对药品进行编号,将每一种药品录入到药品信息表中,对新购进的药品,将其信息加入到药品信息表中。
对于缺乏的药品,要及时的补进。
对于快过期的药品,也要及时的进行处理。
进销药品信息管理:
同样的为其进行编号,可以让管理者清楚的了解药品的进销情况。
供应商信息管理:
可以适时的与供应商取得联系,增加药品库存量,方便药店管理。
顾客信息管理:
可以管理药品的销路,与顾客取得联系。
员工信息管理:
可以对药店员工信息进行查询等,知道每个员工的职责以及柜台号。
1.2功能需求分析
a.药店的一般柜台人员可以查看药品信息。
b.药库管理人员可以对所以药品信息进行添加、修改、删除操作。
2.概念设计
设计系统的概念模型,ER模型。
基本实体及其属性的ER模型如图1—9:
柜台
柜台编号
柜台名
图1
员工
工号
姓名
性别
生日
电话
基本工资
职务
柜台号
图2
供应商
供应商号
联系方式
供应商名
地址
联系人
图3
药品
药品编号
供应商号
药品名
有效期
库存量
图4
顾客
顾客姓名
顾客编号
顾客地址
图5
进货单
进货日期
进货单号
进货员工号
图6
进货明细
进货单号
药品编号
金额
数量
进价
序号
图7
销售单
销售日期
销售单号
顾客编号
收款员工号
图8
销售明细
销售单号
药品编号
金额
数量
售价
序号
图9
员工
顾客
供应商
药品
销售
进货
管理
工作
柜台
联系
柜台编号
柜台名
顾客编号
顾客姓名
顾客地址
工号
姓名
性别
柜台号
职务
…
药品编号
药品名
供应商号
…
销售单号
供应商号
...
整体E-R图
3.逻辑设计
将ER模型为关系模型,指出每个关系的主键、外键和必要的约束。
1.柜台(柜台编号,柜台名),其中柜台编号是主键;
2.员工信息(工号,姓名,性别,生日,柜台号,职务,基本工资,电话),其中工号是主键,柜台号是外键,性别IN(’男’,’女’)、基本工资>=1000是约束条件;
3.供应商(供应商号,供应商名,地址,联系人,联系方式),其中供应商号是主键;
4.药品(药品编号,药品名,供应商号,有效期,库存量),其中药品编号是主键,供应商号是外键,库存量>=0是约束条件;
5.顾客信息(顾客编号,顾客姓名,顾客地址),其中顾客编号是主键;
6.进货单信息(进货单号,进货日期,进货员工号),其中进货单号是主键,进货员工号是外键;
7.进货明细(进货单号,序号,药品编号,进价,数量,金额),其中进货单号,药品编号是外键,进价>=0,数量>=0是约束条件;
8.销售单信息(销售单号,销售日期,顾客编号,收款员工号),其中销售单号是主键,顾客编号收款员工号是外键;
9.销售明细(销售单号,序号,药品编号,售价,数量,金额),其中销售单号,药品编号是外键,
进价>=0,数量>=0是约束条件;
4.写出数据库的物理设计
1.具体表的结构设计如表1-9所示:
表1柜台表
字段名
类型
长度
键或索引
Null值
检验
参照表
说明
柜台编号
CHAR
4
主键
柜台名
CAHR
16
表2员工表
字段名
类型
长度
键或索引
Null值
检验
参照表
说明
工号
CHAR
6
主键
姓名
CAHR
10
性别
CHAR
2
男或女
生日
DATE
柜台号
CHAR
4
外键
柜台
职务
CHAR
10
基本工资
MONEY
>=1000
电话
VARCHAR
16
表3供应商表
字段名
类型
长度
键或索引
Null值
检验
参照表
说明
供应商号
CHAR
10
主键
供应商名
VARCAHR
16
地址
VARCHAR
50
√
联系人
CHAR
10
联系方式
VARCHAR
16
表4药品表
字段名
类型
长度
键或索引
Null值
检验
参照表
说明
药品编号
CHAR
8
主键
药品名
VARCAHR
20
供应商号
CHAR
10
外键
供应商
有效期
DATE
库存量
INT
>=0
表5顾客表
字段名
类型
长度
键或索引
Null值
检验
参照表
说明
顾客编号
CHAR
8
主键
顾客姓名
CAHR
10
顾客电话
VARCHAR
16
顾客地址
VARCHAR
50
表6进货单表
字段名
类型
长度
键或索引
Null值
检验
参照表
说明
进货单号
CHAR
10
主键
进货日期
DATE
进货员工号
CHAR
6
外键
员工
表7进货明细表
字段名
类型
长度
键或索引
Null值
检验
参照表
说明
进货单号
CHAR
10
外键
进货单
序号
SMALLINT
药品编号
CHAR
8
外键
药品
进价
MONEY
>=0
数量
SMALLINT
>=0
金额
计算列
进价*数量
表8销售单表
字段名
类型
长度
键或索引
Null值
检验
参照表
说明
销售单号
CHAR
10
主键
销售日期
DATE
顾客编号
CAHR
8
外键
顾客
销售员工号
CHAR
6
外键
员工
表9销售明细表
字段名
类型
长度
键或索引
Null值
检验
参照表
说明
进货单号
CHAR
10
外键
进货单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQLServer 数据库 实验 培训 课程
![提示](https://static.bingdoc.com/images/bang_tan.gif)