第15章 实现视图.docx

上传人:b****8 文档编号:29725522 上传时间:2023-07-26 格式:DOCX 页数:12 大小:54.64KB
下载 相关 举报
第15章 实现视图.docx_第1页
第1页 / 共12页
第15章 实现视图.docx_第2页
第2页 / 共12页
第15章 实现视图.docx_第3页
第3页 / 共12页
第15章 实现视图.docx_第4页
第4页 / 共12页
第15章 实现视图.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

第15章 实现视图.docx

《第15章 实现视图.docx》由会员分享,可在线阅读,更多相关《第15章 实现视图.docx(12页珍藏版)》请在冰豆网上搜索。

第15章 实现视图.docx

第15章实现视图

第15章实现视图

本章概述

视图讲预定义的查询作为对象存储在数据库中,提高了性能也使得整体架构更加清晰。

数据库程序员可以利用视图作为高性能接口向应用程序和用户提供数据。

本章介绍了视图的优点,描述了其创建过程。

本章仍然建议以实践为主,多练习加深学生印象。

教学目标

●掌握视图的概念,视图也是企业数据库解决方案中经常使用的数据接口和提高性能的方法

●掌握视图的优点

●掌握使用CREATEVIEW语句定义视图

●掌握使用视图修改数据

●掌握使用视图优化性能

教学重点

●掌握视图的定义和创建方法

●掌握使用视图修改数据的方法

●掌握使用视图优化性能的方法

教学难点

●使用视图修改数据

●使用视图优化性能

教学资源

课本

知识点

15.1视图介绍

15.2视图的优点

15.3定义视图

15.4通过视图修改数据

15.5使用视图优化性能

15.6推荐操作

实验

实验15-1:

创建和测试视图

实验15-2:

加密视图的定义

实验15-3:

通过视图修改数据

实验15-4:

查找视图定义

习题

习题1-对应15.3定义视图

习题2-对应15.3定义视图

习题3-对应15.3定义视图

习题4-对应本章综合知识

习题5-对应15.2视图的优点

习题6-对应本章综合知识

习题7-对应15.4使用视图修改数据

习题8-对应本章综合知识

教师光盘

实验文件

Labfiles\allfiles.exe

习题解答

tPrep\answer.doc

教学指导手册包

幻灯片

Powerpnt\PPT_2071_2073_15.ppt

先修知识

在正式开始学习本章内容以前,学生须具备下列知识基础。

知识基础

推荐补充

熟悉关系数据库基本概念

《数据库基础》

本书前三章内容

建议学时

课堂教学(3课时)+实验教学(3课时)

教学过程

15.1视图介绍

教学提示:

本节主要达到一个目的。

●了解视图的概念,视图也是企业数据库解决方案中经常使用的数据接口和提高性能的方法。

(略讲)

内容

教学方法

提示

讲授:

视图可以被看成是虚拟表或存储查询。

可通过视图访问的数据不作为独特的对象存储在数据库内。

数据库内存储的是SELECT语句。

SELECT语句的结果集构成视图所返回的虚拟表。

用户可以用引用表时所使用的方法,在Transact-SQL语句中通过引用视图名称来使用虚拟表。

使用视图可以实现下列任一或所有功能:

-将用户限定在表中的特定行上。

例如,只允许雇员看见工作跟踪表内记录其工作的行。

-将用户限定在特定列上。

例如,对于那些不负责处理工资单的雇员,只允许他们看见雇员表中的姓名列、办公室列、工作电话列和部门列,而不能看见任何包含工资信息或个人信息的列。

-将多个表中的列联接起来,使它们看起来象一个表。

-聚合信息而非提供详细信息。

例如,显示一个列的和,或列的最大值和最小值。

阅书:

15.1

幻灯:

第3页

●建议补充联机帮助中的内容。

15.2视图的优点

教学提示:

本节主要达到一个目的。

●了解视图的优点。

(略讲)

内容

教学方法

提示

讲授课本

提问:

视图的优点是什么?

阅书:

15.2

幻灯:

第5-6页

●答案请参考P371

15.3定义视图

教学提示:

本节主要达到两个目的。

●掌握创建、修改和删除视图的方法。

(精讲+演示)

●掌握查找视图信息的方法。

(略讲+演示)

内容

教学方法

提示

讲述:

我们了解了视图的概念和优点后,让我们来看一下如何创建、删除和修改视图,以及获得视图信息的相关内容。

讲授课本。

演示:

创建、修改、删除视图(书上的例子)

讲述:

我们还记得第一章中介绍过SQLServer数据库中所有对象都对应对其有权限的安全对象。

视图也不例外,视图的所有权同它的父对象(表或者视图)形成了所有权链,我们应该避免破坏它从而保持数据库权限控制的完整。

演示:

避免破坏所有权链(书上的例子)

讲述:

我们需要通过查找视图相关信息来进行视图的维护工作。

演示:

查找视图定义信息(书上的例子)

讲述:

有的时候我们可能不希望用户通过企业管理器等查看我们定义的视图。

我们看一下它的隐藏方法。

演示:

隐藏视图定义(书上的例子)

阅书:

15.3

幻灯:

第8-18页

15.4通过视图修改数据

教学提示:

本节主要达到一个目的。

●了解通过视图修改数据的方法。

(略讲)

内容

教学方法

提示

讲授课本

有人可能会搞不清楚视图的概念,把它当成数据的备份,但事实上视图存储的并不是物理数据,而只是从基表中抽取的数据,因此对视图数据的修改实际上是对基表的修改;

阅书:

15.4

幻灯:

第20-21页

●由于本内容和触发器有关,因此略讲。

●需要补充联机帮助中的内容

15.5使用视图优化性能

教学提示:

本节主要达到一个目的。

●掌握使用视图优化性能的方法。

(略讲+演示)

内容

教学方法

提示

讲述:

使用视图的时候,我们需要考虑到不要设计太复杂的视图结构从而导致性能的下降。

讲授课本

演示:

书上的例子

阅书:

15.5

幻灯:

第23-30页

●建议补充联机帮助中的内容

15.6推荐操作

教学提示:

本节主要达到一个目的。

●了解经验做法。

(略讲)

内容

教学方法

提示

讲授课本

阅书:

15.6

幻灯:

第32页

总结

经过本章的学习,我们了解了下列的知识和内容。

●视图的概念

●视图的优点

●使用CREATEVIEW语句定义视图

●使用视图修改数据

●使用视图优化性能

本章我们学习了SQLServer中的重要对象——视图——的概念。

学习了视图的使用方法和应用场景。

下面一章,我们将学习另外一个更加重要的概念,存储过程。

随堂练习

1.在某个使用SQLServer2000创建的客户信息数据库中,保存有全国各个省的客户信息,通常查询时,都只是针对一个省的数据信息,所有记录使用DepartmentID作为唯一标识。

应采用什么方法来提高数据库的性能?

A.将经常查询的数据列转移到一张新表中,使用外键约束保证新表中DepartmentID的有效性

B.将经常查询的数据列转移到一张新表中,再在新表上创建视图,使用CHECK约束保证新表中DepartmentID的有效性

C.给每个省的客户创建一个表,在新表上使用CHECK约束保证新表中DepartmentID的有效性,在所有新建表上创建一个视图

D.给每个省的客户创建一个表,在新表上使用CHECK约束保证新表中DepartmentID的有效性

正确答案:

C

2.在一个医院管理数据库中存有医护人员的个人信息,例如员工号码,职称,工作电话等。

同时还包含有家庭住址,家庭电话等私人信息。

现在一个外部程序需要读取该表中的公共信息,并转化成为需要的XML格式,如果想要保护私人信息数据不被外部程序读取到,请问应当使用何种方法?

A.使用存储过程返回XML格式的公共信息

B.使用用户自定义函数返回XML格式的公共信息

C.创建视图包含公共数据,给外部程序查询该视图的权限

D.设置列权限,禁止访问私有数据列,给外部程序查询数据表的权限

正确答案:

C

解析:

外部程序需要的XML格式的数据,使用XDR架构可以创建一个关系数据的XML视图。

使用XPath可以查询视图。

外部程序可以定义XML数据的格式。

这与使用SQL查询CREATEVIEW语句创建的视图是一样的。

3.在一个汽车出租的网站的后台,使用SQLServer2000作为数据库系统。

所有预定信息保存在数据表Reservations中。

当客户更新预定时,预定信息保存到History表中。

有时客户只是保存信息,而不修改数据,则不用保存到History中。

下列选项中哪个实现该功能?

A.在Reservations表上创建触发器来向History表中添加数据

B.在Reservations表上创建参考完整性约束向History表中添加数据

C.在Reservations表上创建视图。

在视图定时使用WITHSCHEMABBINDING选项

D.在Reservations表上创建视图。

在视图定时使用WITHCHECKOPTION选项

正确答案:

A

4.在数据库中有一个属于Sales组的用户Peter创建了一个触发器Sale_Profit在数据表上。

一个属于db_owner组的用户John想要删除这个触发器,他执行SQL语句:

DROPTRIGGERSale_Profit。

但是执行失败,系统提示该触发器不在系统目录中。

请问应当如何删除该触发器?

A.将John加入到Sales组

B.在SQL语句的触发器名字前添加触发器的拥有者的名字

C.使用DROPTRIGGER命令

D.在DROPTRIGGER中指定触发器号

正确答案:

B

分析:

一般只有触发器所在表的拥有者才能删除触发器。

当db_owner和db_ddladmin固定数据库角色的成员或sysadmin固定数据库角色可以直接执行DROPTRIGGER语句。

当你是db_owner固定数据库角色的成员,你可以在DROPTRIGGER指定拥有者。

5.在一个数据库系统中,有一张数据表Employee记录所有的员工信息,其中有EmpType列表示员工是决策层人员,管理人员还是顾问,现在要求每个管理人员能修改所有非决策层人员的员工信息,应当如何实现?

A.使用包含WITHENCRYPTION选项的视图

B.使用包含WITHCHECKOPTION选项的视图

C.使用包含SCHEMABINDING选项的视图

D.使用用户自定义函数返回非决策层人员的员工信息

正确答案:

A

6.

在一个数据库系统中,有一张数据表Employee记录所有的员工信息,其中列SQLLogin记录员工登陆名。

另一张数据表Department记录所有的部门的信息。

两表的结构如下:

 

所有的部门经理都被添加到角色Managers中。

现在要求每个经理可以查看Department中所

有部门的信息,但只能修改自己部门的信息。

角色Managers已经被授权Department表的

SELECT权限,下一步应该做什么?

A.在Department表上创建触发器检查进行修改操作的数据库登陆用户是否属于该部门

B.使用包含WITHCHECKOPTION选项的视图

C.创建包括Department中所有列和Employee表的SQLLogin列的视图

D.授权Department表的INSERT和UPDATE权限

正确答案:

C

分析:

Managers数据库角色的所有成员在department表上有SELECT权限。

我们要允许他们能插入和更新自己部门的记录。

我们要实现行级别的安全性。

这可以通过使用WITHCHECKOPTION选项创建视图实现。

7.在一个SQLServer2000数据库中,设计人员A具有CREATETABLE的权限,设计人员B具有CREATEVIEW的权限。

A和B都不是数据库拥有者,也不属于任何服务器角色,A创建表T1,B需要控制所有角色R1的成员只能访问表T1的Col1和Col2。

应当如何做?

(选择三个选项)

A.授权角色R1表T1的SELECT权限

B.让A授权角色R1表T1的SELECT权限

C.让A授权B表T1上Col1和Col2的REFERENCES权限

D.让A创建视图V1显示T1中的Col1和Col2

E.让B创建视图V1显示T1中的Col1和Col2

F.让B授权R1访问V1的SELECT权限

正确答案:

C,E,F

分析:

设计人员A具有CREATETABLE的权限,设计人员B具有CREATEVIEW的权限。

为了避免打破拥有权链,我们要保证B有对视图与数据表的许可。

C:

让A授权B表T1上Col1和Col2的REFERENCES权限,这样B就能创建视图

E:

B就能创建视图,因为A没有权限

F:

B作为视图的拥有者,给R1授权V1的SELECT权限

 

布置作业

1.完成书后习题1-8

2.预习书中所有实验,并填写操作步骤。

在实验课上准备操作

案例教学

本章介绍了视图的概念。

学生可以重新考虑案例设计中的数据接口部分,使用视图替换部分常用的查询。

注意,这一任务可能同下一章的存储过程功能重复,因此需要考虑到视图和存储过程的优缺点以及各自的使用场景。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1