数据库系统原理参考答案(7)

2019-03-27 19:34

第七章 习题参考答案

1.解释外模式设计的含义,简述外模式设计的基本内容。

外模式设计:在系统整体逻辑结构的基础上,根据用户的不同需求,利用外模式 / 模式映像把整体逻辑结构映像成不同的局部逻辑结构,同时结合具体DBMS的特点,设计适合用户不同局部应用的局部逻辑结构的过程。即:外模式是局部逻辑结构的集合。

基本内容:(1)局部逻辑结构设计、(2)数据类型转换、(3)数据格式转换、(4)数据名称转换、(5)局部图形用户界面LGUI设计。

2.什么是视图?简述视图与表的关系。

视图:利用查询语句定义的,从一个或者多个数据表中导出的虚表。即视图不存放具体数据;是数据库逻辑模式的局部数据的临时体现。

关系:(1)视图与表的区别

1)概念不同。表是使用DBMS的DDL定义的,拥有真实数据的,以独立文件的形式存储在计算机外存上的具有固定模式结构和相应元组数据的实表。视图则是利用带有查询语句的视图定义,从表或视图中导出的虚表。

2)数据有效期不同。表示拥有真实数据的实表,而视图是没有数据,只有视图定义的虚表。 3)数据存储不同。表是永久存储在外存,而视图是执行时创建临时表,用后释放。 4)更新方式不同。表一般可以任意更新,而视图一般不能任意更新,会受到一定限制。 (2)视图与表的联系

1)视图最终是定义在表之上,其数据最终来自表。表是创建视图的基础,并为视图提供数据。如果表发生了改变(或者被删除),则必须修改(删除、或者重新建立)相应的视图。

2)对于最终用户,视图与表基本相同,即:视图和表在用户看来都是表,用户可以按照表的使用方法来使用视图,同时可以在视图上再定义视图。

3.简述视图的作用。

简化用户操作;清晰表达查询;同一数据以不同形式提供给不同用户;一定程度上提高DB的保密和保护性;提供一定程度的DB模式结构的逻辑独立性。

4.简述CREATE VIEW的用法,并为数据库StudentDB设计一个外模式,然后利用该语句实现该外模式。

用法:CREATE VIEW <视图名> [(<列名> [,<列名>]… )] AS SELECT 语句 [WITH CHECK OPTION]

例如:利用数据库StudentDB,建立“数学学院”学生的全部详细信息的视图SMathInfo。 实现:CREATE VIEW SMathInfo AS

SELECT S.SNo, SName, SSex, SAge, Coll, C.CNo, CName, CPNo, Credit, Grade

FROM Student S, StudentCourse SC, Course C

WHERE S.SNo=SC.SNo AND SC.CNo=C.CNo AND Coll='数学学院' 5.简述视图的查询方法。并举例说明。

查询:由于视图本身就是虚表,因此可以使用SELECT语句对视图实施同样的查询,具体查询方法与表的查询完全一样,同时还可以对表和视图进行混合查询。

例如:利用表Student和视图SMaxMinAvgGrade查询学生的学号、姓名、性别、年龄、学院、最低分、最高分和平均成绩。

实现:SELECT S.*, MaxGrade, MinGrade, AvgGrade

FROM Student S, SMaxMinAvgGrade G WHERE S.SNo=G.SNo

6.简述视图的更新方法及其与WITH CHECK OPTION的关系。每一个视图是否均可以任意更新?问什么?

更新方法:与表的更新方法相同。但是由于视图本身是不能存储数据的虚表,因此对视图的更新,最终需要转换为对表的更新。即:表面上是视图更新,本质上是表更新。

二者关系:WITH CHECK OPTION强制针对视图执行的所有数据修改语句都必须符合在SELECT语句中设置的条件。在定义视图时加上WITH CHECK OPTION子句之后,如果在对视图进行插入、修改或者删除时,RDBMS会自动监测视图定义中的条件,若不满足条件,则拒绝执行该操作,因此防止了用户通过视图对数据进行更新操作,在一定程度上保护了数据库。

更新条件:视图不能任意更新,视图的更新是有条件的,并不是所有的视图都可以更新。因为视图与表的更新转换,有时是不可逆的,只有满足规定的条件,才可以更新。

7.简述视图的修改方法。并举例说明。

用法:ALTER VIEW <视图名> [(<列名> [,<列名>]… )] AS SECLECT 语句 [WITH CHECK OPTION]

例如:利用数据库AdventureWorks,创建一个包含所有雇员及其雇佣日期的视图EmployeeHireDate,并为该视图授予了权限。但是创建视图后,发现必须将视图更改为只包括在2000年之前雇佣的雇员。则需要使用ALTER VIEW进行修改。即:

实现:CREATE VIEW EmployeeeHireDate AS SELECT c.FirstName, c.LastName, e.HireDate

FROM HumanResources.Employee e JOIN Person.Contact c ON e.ContactID = c.ContactID ALTER VIEW EmployeeeHireDate AS

SELECT c.FirstName, c.LastName, e.HireDate

2

FROM HumanResources.Employee e JOIN Person.Contact c ON E.ContactID = C.ContactID WHERE HireDate < '1/1/2000' 8.简述视图的删除方法。并举例说明。 用法:DROP VIEW <视图名> [,<视图名>… ] 例如:删除视图EmployeeeHireDate。 实现:DROP VIEW EmployeeeHireDate

9.解释物理结构和物理结构设计。简述物理结构设计的主要内容。 物理结构:数据库在存储介质上的存储结构和存放位置。

物理结构设计:设计逻辑结构的最佳存取方法、存储结构和存放位置以及合理选择存储介质等,从而设计适合逻辑结构的最佳物理环境(内模式)的过程。

内容:选取存取方法、设计存储结构、确定存放位置和选择存储介质等。 10.简述物理结构设计的方法步骤。

选择存取方法、设计存储结构、确定存放位置、选取存储介质和评价物理结构。 11.什么是索引机制、索引表和索引文件?简述索引机制的作用。

索引机制:对于数据库的表,按照查询数据所对应的关键属性,建立相应的索引文件,在执行查询时,先在索引文件中找到查询的元组在表中的位置(即:记录号),然后再根据记录号,去表中取出数据。把先查询索引文件,再从表中取数据的检索机制称为索引机制。

索引表:把索引属性值,按照升序或者降序排序后,再与其对应元组在表中的记录号组成的对照表。即:索引表是索引属性与其元组记录号的对照表。

索引文件:用于存储索引的文件。 作用:实现数据的快速访问。 12.什么是聚簇索引,简述聚簇索引与非聚簇索引的区别。

聚簇索引:在按照关键属性对表建立索引时,同时按照索引顺序对表的相应元组的物理存储位置进行排序,使索引顺序与表中相应元组的物理顺序始终保持一致的索引过程。

区别:

(1)聚簇索引顺序与元组存储顺序始终一致;非聚簇索引顺序与元组存储顺序无关。 (2)聚簇索引B+树的叶节点就是数据节点;非聚簇索引则仍然是索引节点。 (3)一个表只能有一个聚簇索引;一个表则可以有多个非聚簇索引。

(4)建立和维护聚簇索引的开销很大,灵活性差;非聚簇索引则相对很小,比较灵活。 (5)聚簇索引适合更新较少或者不更新的应用;非聚簇索引则适合更新较多的应用。 13.简述聚簇索引的作用及其应用范围。

作用:实现对数据库的快速访问。其维护费用很大。 范围:

1)经常进行连接操作的数据表建议使用聚簇索引。

2)对于属性组的利用率很高或者重复率很高的关系建议使用聚簇索引。

3

3)需要经常进行插入、删除或者修改等更新操作的关系不建议使用聚簇索引。 4)对于更新操作远多于连接操作的关系不建议使用聚簇索引。 14.什么是散列函数?简述散列索引机制。

散列函数:实现索引属性值到桶地址之间映射关系的函数。即:把索引属性值映射到桶地址的函数。散列函数的构造是散列索引的核心内容。

索引机制:一种基于散列函数和桶(Bucket)的检索模式,即:利用散列函数计算出存储数据的桶地址,然后再按照桶地址访问桶中的数据。桶是数据的基本存储单位。

15.简述常用的存取方法。

平衡树索引、聚簇索引和散列索引等。 16.简述存储位置设计的基本原则。

(1)相关联同属性的文件存放在同一个目录。 (2)易变部分与稳定部分应该分开存放。

(3)存取高频部分和存取低频部分应该分别存放到快速介质和慢速介质。 17.简述常用的存储介质。

磁盘、磁带、光盘、磁盘阵列RAID、磁带库、光盘塔、光盘库、SAN网络存储、NAS网络存储和IP SAN网络存储等。

18.简述选取存储介质的主要性能指标和基本原则。

(1)存储容量。以够用为基本准则,过大不但影响访问速度,而且造成浪费。 (2)存取速度。在预定费用下,越快越好。

(3)接口类型。选择流行的标准接口,速度越快越好。 (4)介质费用。购置费用和维护费用控制在系统预算之内。

(5)介质类型。确定磁盘、磁带和光盘等设备,还是RAID、SAN和NAS等组合设备。 19.简述物理结构的评价方法。

根据物理结构的存取方法的正确性、存储结构的合理性、存放位置的规范性和存储介质的标准性等评价内容、以及存储空间利用率、存取数据速度和维护费用等评价指标,通过对比各项指标,选择适合应用的最佳物理结构。

20.在SQL Server 2005环境下,简述建立索引和修改索引的用法,并举例说明。 建立:CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]?)

例如:在数据库AdventureWorks中,对表Sales.SalesPerson按照SalesQuota和SalesYTD列创建非聚集组合索引。

CREATE NONCLUSTERED INDEX SalesPersonQuotaYTDIndex ON Sales.SalesPerson (SalesQuota, SalesYTD) 修改:ALTER INDEX { <索引名> | ALL }

ON <表名> { REBUILD | DISABLE| REORGANIZE }

例如:在数据库AdventureWorks中,重新生成Employee的索引PK_Employee_EmployeeID。 ALTER INDEX PK_Employee_EmployeeID ON HumanResources.Employee REBUILD

4

21.利用数据库StudentDB,分别对三个数据表建立默认索引、唯一索引和聚簇索引。 例如:在数据库StudentTestDB中,对Student按姓名分别建立聚簇和非聚簇索引。对Course按课程名以降序建立唯一索引。对StudentCourse按学号升序和课程号降序建立唯一索引。

CREATE INDEX SSNameIndex ON Student(SName)

CREATE CLUSTERED INDEX SSNameCIndex ON Student(SName) CREATE UNIQUE INDEX CCNameUIndex ON Course(CName)

CREATE UNIQUE INDEX SCSNoCNoUIndex ON StudentCourse(SNo ASC, CNo DESC) 22.利用数据库StudentDB,分别对第21题建立的索引进行修改、禁用和启用操作。 答:(1)通过修改重新生成索引。 ALTER INDEX StudentSNo ON Student(SNo) REBUILD (2)禁用Student的索引StudentSNo:

ALTER INDEX SCSNoCNo ON Student(SNo) DISABLE (3)启用Student的索引StudentSNo:

ALTER INDEX StudentSNo ON Student(SNo) REBUILD 23.简述删除索引的用法,并举例说明。 删除:DROP INDEX <表名>. <索引名>

例如:在数据库StudentDB中,同时删除表Student的索引SSNameIndex和表StudentCourse的索引SCSNoCNoUIndex。

DROP INDEX Student.SSNameIndex, StudentCourse.SCSNoCNoUIndex

24.利用数据库StudentDB,建立每一门课程的课程号、课程名、最高分、最低分和平均成绩等对应的视图。

CREATE VIEW CourseGrade(课程号,课程名,最高分,最低分,平均成绩) AS SELECT CNo,CName, MAX(Grade), MIN(Grade), AVG(Grade) FROM StudentDbtInfo GROUP BY CName

25.如果关系R(R1,…,R6,R7,…,R20),包含60万个元组,但是前6万个元组的利用率非常高,而其它元组的利用率非常低,则应该如何设计存储结构。

按照利用率,把R水平分割成两个相同结构的数据表,并把利用率非常高的数据表存入高速设备(例如:SCSI高速硬盘),把利用率非常低的数据表存入低速设备(例如:光盘或者磁带)。

26.对于任意表,使用索引机制进行检索与不使用索引机制而直接对表进行检索相比,是否前者一定比后者快?为什么?在什么情况下,前者一定比后者快?

不一定;因为需要根据数据库的结构和记录多少、以及利用效率来综合考虑;数据库中记录非常多,而且访问次数较多时。

5


数据库系统原理参考答案(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新课程高中政治知识结构全图

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: