5 章    网络数据库管理系统 SQL Server 2012
课后习题参考答案
1、简答题
(1) 简述组成SQL Server 2012 数据库的三种类型的文件。
答:SQL Server 数据库文件根据其作用的不同,可以分为主数据文件、次数据文件、事务日志文件 3 种类型。
①主数据文件(primary  file:主数据文件是数据库的起点,指向数据库文件的其他部分。主数据文件是用来存放数据和数据库的初始化启动信息和部分或全部数据,是 SQL Server 数据库的主体,它是每个数据库不可缺少的部分,每个数据库有且仅有一个主数据文件,用户数据和对象也可以存储在此文件中,主数据文件的文件扩展名为.mdf
②次数据文件secondary  file:用来存储主数据文件没有存储的其他数据和对象。如果数据库中的数据量很大,除了将数据存储在主数据文件中以外,还可以将一部分数据存储在次数
据文件中;如果主数据文件足够大,能够容纳数据库中的所有数据,则该数据库不需要次数据文件。使用次数据文件是因为数据量太过庞大,可以将数据分散存储在多个不同磁盘上以方便进行管理、提高读取速度。次数据文件的扩展名为.ndf
③事务日志文件transaction log file:用来记录数据库更新情况的文件,SQL Server 2012具有事务功能,可以保证数据库操作的一致性和完整性,用事务日志文件来记录所有事务及每个事务对数据库进行的插入、删除和更新操作。事务日志是数据库的重要组件,如果数据库遭到破坏,可以根据事务日志文件分析出错的原因;如果数据丢失,可以使用事务日志恢复数据库内容。每个数据库至少拥有一个事务日志文件,也可以拥有多个日志文件。事务日志文件的文件扩展名为.ldf
(2) SQL sql触发器的使用Server 2012 有哪些系统数据库,它们的作用是什么?
SQL Server 2012 中主要包括mastermodeltempdb msdb 四个系统数据库。
master 数据库。master 数据库由一些系统表组成,这些系统表负责跟踪整个数据库系统安装和随后创建的其他数据库,对其他的数据库实施管理和控制。作为 SQL Server 2012
最重要的系统数据库,是整个数据库服务器的核心功能,同时记录了 SQL Server 中所有系统级的信息,如 SQL Server 的初始化信息、所有的登录账户信息、所有的系统配置设置信息以及用户数据库信息。 
model 数据库。model(模板)数据库包含了用户数据库中应该包含的所有系统表, 即新建的数据库中的所有内容都是从模板数据库中复制过来。利用 model 数据库的模板特性,通过更改 model 数据库的设置,并将经常使用的数据库对象复制到 model 数据库中, 可以简化数据库及其对象的创建、设置工作,为用户节省大量的时间。
tempdb 数据库。tempdb 数据库是一个临时数据库,用于保存所有的临时表、临时数据以及临时创建的存储过程。用户在数据库中修改表的某一行数据时,在修改数据库这一事务没有被提交的情况下,系统内就会有该数据的新、旧版本之分,往往修改后的数据表构成
msdb 数据库。msdb 数据库是代理服务数据库,通常由 SQL Server 代理用来管理警报和作业。当多个用户在使用一个数据库时,经常会出现多个用户对同一个数据的修改而造成数据不一致的现象,或是用户对某些数据和对象的非法操作等。为了防止上述现象的发生,SQL Server 提供了一套代理程序,代理程序能够按照系统管理员的设定监控上述现象的发
生,及时向系统管理员发出警报。当代理程序调度警报作业、记录操作时,系统要用到或实时产生许多相关信息,这些信息一般存储在 msdb 数据库中。
(3) 什么是基本表?什么是视图?二者有什么区别与联系?
答:表TableSQL Server 数据库系统的基本信息存储结构。SQL Server 数据库中的表是一个非常重要的数据库对象,是数据存放的地方,也称基本表。用户所关心的数据都存储在表中,对数据的访问、维护都是通过对表的操作实现的,一个数据库管理员在数据库中打交道最多的也是表。
视图(View)是从一张或多张表中导出的表,是用户查看数据库中数据的一种方式, 其结构和数据内容是建立在对表的查询基础上,由查询语句执行后所得到的查询结果所构成。与表一样,视图包含一系列带有名称的字段和记录数据,只是这些字段和记录来源于其他被引用的表或视图,通过视图看到的数据只是存放在基本表中的数据。所以视图在数据库中并不是真实存在的,数据库中存在的只是视图的定义,视图是一个虚拟的表。
两者区别和联系:都是数据库的基本对象,表是实际存放数据的地方,是实表,而视图是从基本表导出的,数据库中只存在视图的定义,是虚表。
(4) 简述索引和视图的主要作用? 答:索引的作用:
索引可以加快数据的访问,数据库引擎可以通过索引结构来快速到指定记录,能够让
SQL 语言的连接查询、排序操作更加有效。索引的作用主要表现在以下几个方面:
①使用索引可以明显地加快数据查询的速度。对于数据文件大的基本表,如果没有建立索引,在进行数据查询时则需要将数据文件分块,逐个读到内存,进行查询的比较操作。而使用索引后,先将索引文件读入内存,根据索引项到记录的地址,然后根据地址将记录直接读入计算机。由于索引文件小,只包含索引项和记录地址,一般可一次读入内存。并且索引文件的索引项是经过排序的,可以快速地到索引项值和记录地址。因此,使用索引大大减少了磁盘的I/O 次数,从而加快查询速度。
②使用索引可以加快数据库中基本表的连接速度。在进行关系的连接操作时,系统需要在连接关系中对每一个被连接字段进行查询操作,如果没有在连接字段上建立索引,则数据的连接操作速度非常慢,而在连接字段上建立了索引,则可大大提高连接操作。因此,许多系统要求连接文件必须有相应索引,才能执行连接操作。例如,要实现图书和借阅关系的连接操作,就要求在借阅表中必须在图书编号上建立索引,加快连接速度。
③使用索引可保证数据的唯一性。索引的定义包含定义数据唯一性的内容。当定义了数据唯一的功能后,在对相关的索引项进行数据输入或更改时,系统需进行检查,确保满足数据唯一性要求。
视图的作用:
①视图能够简用户的操作,提高数据操作效率。视图大大简化了用户对数据库的操作, 因为定义视图的本身就是一个复杂的查询结果集,这样在每一次执行相同的查询时,不必重写这些复杂的查询语句,只用一条简单的查询视图语句即可,隐藏了表与表之间的复杂连接操作;通过定义视图,使用户着重其感兴趣的数据,可以提高数据的查询效率。
②视图可以使用户以不同的方式看待同一数据。当多个不同用户共享数据库的数据时, 视图能够实现让不同用户以不同的方式看到不同的或相同的数据集合。
③视图在一定程度上保证数据的逻辑独立性。对于视图的操作,例如,查询只依赖于视图的定义,当创建视图的基本表需要修改时,只需要修改视图定义中的子查询部分,而基于视图的查询不用改变,从而使外模式保持不变,原有的应用程序通过视图来重载数据,保证数据的逻辑独立性。
④视图可以对机密的数据提供安全保护 。视图可以作为一种安全机制。在设计数据库
应用系统时,针对不同用户定义不同的视图,使用户只能看到与自己有关的数据,其他数据库或表既不可见也不可访问,视图所引用表的访问权限与视图权限的设置互不影响。
(5) 客户端程序通常使用哪两种方式执行 T-SQL 语句?存储过程的优点是什么?
答:一般来说,客户端程序有两种方式来执行 T-SQL 语句。一种方式是在客户端创建应用程序后,使用ADO.NET 等组件发送 T-SQL 语句到 SQL Server,然后在SQL Server 据库引擎执行T-SQL 语句。另一种方式是 SQL Server 先将欲执行的T-SQL 语句创建为存储过程,客户端程序可以直接执行位于 SQL Server 的存储过程。
存储过程具有以下优点。
①改善系统性能,提高执行效率。存储过程只在创建时编译一次,就可多次执行,减少了编译花费的时间,当重复执行时,因为不需要重新编译,提高了执行T-SQL 语句的效率, 从而改善系统的性能。系统在创建存储过程时会对其进行分析和优化,并在首次执行该存储过程后将其驻留于高速缓冲存储器中,以加速存储过程的后续执行。
②减少了网络流量。创建存储过程后,网络中传送的只是调用存储过程的语句,而不是从客户端发送数百行的 SQL 语句,客户端应用程序只需一条语句就可执行位于 SQL Server 服务器端的存储过程,实现相同的功能,减少了客户端与服务器网络传送过程中的数据流量。很多情况下,数据库应用系统的设计者,将复杂的查询和统计用存储过程来实现,从而免去客户端的大量编程。
③提供了一种安全机制。存储过程作为 SQL Server 的数据库对象,存放在数据库中且在服务器端运行;对于不允许用户直接操作的表或视图,可通过授予存储过程的执行权限来间接地访问这些表或视图,避免非授权用户访问在定义存储过程中被引用对象的数据,达到一定程度的安全性。拥有参数的存储过程还可以保护客户端应用程序的安全性,降低黑客攻SQL Server 服务器的可能性。
④模块化的程序设计。存储过程可实现模块化的程序设计,一个存储过程就是一个模块, 可用来封装并实现特定的功能。可将常常执行的 T-SQL 语句或复杂的业务操作编写为多个存储过程的模块,放在数据库中,用户可多次调用,提供统一的数据库访问接口,改进应用程序的可维护性。而业务操作对用户是不可见的,达到业务操作封装的效果,提高程序的可
植性。并且存储过程与调用该存储过程的应用程序相分离,减少了应用程序和数据库之间的耦合。
(6) 什么是触发器?目前 SQL Server 支持哪几种触发器?触发器有什么作用?
答:触发器(Triggers是针对数据表的特殊存储过程,主要是通过事件进行触发而被自动执行的程序。它是一个功能强大的工具,数据库管理员可以用它在修改数据时自动执行所需操作。
目前,SQL Server 支持的触发器有三种:DML 触发器、DDL 触发器和登录触发器。其主要作用如下:
①触发器可以强制数据完整性。触发器可以实现比约束更为复杂的数据约束。在数据库中要实现数据的完整性约束,可以使用 CHECK 约束或触发器来实现。触发器包含了使用T-SQL 语句的复杂处理逻辑,不仅支持约束的所有功能,还可以实现更为复杂的数据完整性约束,如在 CHECK 约束中不允许引用其他表中的列来完成检查工作,而触发器可以引用其他表中的列来完成数据的完整性的约束。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。