数据库应用与设计-(清华大学出版社)参考答案.doc
《数据库应用与设计-(清华大学出版社)参考答案.doc》由会员分享,可在线阅读,更多相关《数据库应用与设计-(清华大学出版社)参考答案.doc(13页珍藏版)》请在冰点文库上搜索。
![数据库应用与设计-(清华大学出版社)参考答案.doc](https://file1.bingdoc.com/fileroot1/2023-6/27/c424dde5-2291-4ebe-8ebc-76435bdb38bc/c424dde5-2291-4ebe-8ebc-76435bdb38bc1.gif)
《数据库应用与设计》习题参考答案
第1章习题参考答案
1、答案:
数据库是长期储存在计算机设备上、相互关联的、可以被用户共享的数据集合。
2、答案:
数据库中的数据共享带来如下好处:
低冗余,保证数据的一致性,易于扩充。
但是数据库中的数据共享可能会引起并发访问的冲突,这就需要采用并发控制来避免。
3、答案:
因为概念数据模型可以真实地反映现实世界,被人们所理解。
它是创建数据模型的第一个阶段。
4、答案:
5、答案:
因为多对多联系是一类比较复杂的联系,一般数据库管理系统也不直接支持多对多联系(需要付出更大的代价),所以多对多联系通常需要转换成一对多联系的。
6、答案:
存储数据独立性指当改变存储文件的组织方式或存储结构时,应用程序无需修改。
概念数据独立性指当概念文件的结构发生变化时,应用程序无需修改。
这两种数据独立性是通过三层结构获得的。
在三层结构的方案中,CONCEPTUAL-ROUTINE保证了概念数据的独立性,而STORAGE-ROUTINE则保证了存储数据独立性。
7、答案:
数据库模式是用数据描述语言对数据库结构的每一层的框架及结构进行的精确定义。
数据库模式分为存储模式(内模式)、概念模式(模式)、外部模式(子模式)。
存储模式(内模式)定义了存储数据库结构,概念模式(模式)定义了概念数据库结构,外部模式(子模式)定义了外部数据库结构。
8、答案:
用户程序通过DBMS修改一条记录时所发生的一系列事件如下:
(1)用户程序A向DBMS发出修改一条记录的指令,这时,用户程序要给出外部文件名、记录的关键字值和要修改的信息。
(2)DBCS分析所接到的指令,访问对应的外部模式。
(3)DBCS完成外部模式到概念模式的转换,决定访问哪个(些)概念文件。
(4)由DBSS完成概念模式到存储模式的转换,并决定访问哪个(些)存储文件。
(5)DBSS调用修改方法,通过操作系统修改相应的存储文件。
(6)用户程序从系统缓冲区中获得DBMS返回的状态信息。
第2章习题参考答案
1、答案:
(1)学生关系(学号、姓名、性别、年龄、所在学院)
其中,主关键字为“学号”。
“学号”的值域为含2个英文字符的字符串;“姓名”的值域为最多含4个中文字符的字符串;“性别”的值域为含1个中文字符的字符串,只能取“男”或“女”;“年龄”的值域为0-100之间的整数;“所在学院”的值域为最多含10个中文字符的字符串。
课程关系(课程号,课程名,类别,学分)
其中,主关键字为“课程号”。
“课程号”的值域为含2个英文字符的字符串;“课程名”的值域为最多含10个中文字符的字符串;“类别”的值域为含2个中文字符的字符串,只能取“必修”或“选修”;“学分”的值域为1-9之间的整数。
选课关系(学号,课程号,成绩)
其中,主关键字为(学号、课程号)。
“学号”的值域为含2个英文字符的字符串;“课程号”的值域为含2个英文字符的字符串;“成绩”的值域为0-100之间的整数。
(2)3个关系之间有参照和被参照关系。
学生关系和课程关系属于被参照关系,选课关系属于参照关系。
选课关系中的学号参照了学生关系中的学号,选课关系中的课程号参照了课程关系中的课程号。
实现参照的方法如下:
在选课关系中定义学号为参照了学生关系中的学号的外部关键字,在选课关系中定义课程号为参照了课程关系中的课程号的外部关键字。
2、答案:
(1)σ职称=”教授”(教师)
(2)π名称,学时(课程)
(3)π姓名(σ名称=”操作系统”(课程)教师)
(4)π责任教师,类型(课程)÷(“必修”,”选修”)
3、答案:
“CREATEDATABASEdatabase_name”后面的“ON”短语指定用来存储数据库的操作系统文件(存储在磁盘上的数据文件),该关键字后跟以逗号分隔的项列表。
“Log”后面的“ON”指定用来存储数据库日志的操作系统文件(日志文件),该关键字后跟以逗号分隔的项列表。
第3章习题参考答案
1、答案:
SQL是一种一体化、高度非过程化、简洁的语言,它可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。
2、答案:
模式(SCHEMA)是根据应用的需要,将数据库中的一组各种对象逻辑组织在一起的逻辑结构。
模式的使用可以使数据库管理更加方便。
3、答案:
列级约束的定义语法格式为:
CREATETABLE<表名>
(<列名><数据类型>[CONSTRAINT约束名]PRIMARYKEY
...)
表级约束的定义语法格式为:
CREATETABLE<表名>
(<列名><数据类型>,
...
[CONSTRAINT约束名]PRIMARYKEY(<列名>[,...n])
当主关键字由一个列组成时,既可以使用列级约束的定义,也可以使用表级约束的定义;当主关键字由两个及两个以上列组成时,则必须用表级约束定义。
4、答案:
在关系数据库中可以通过外部关键字使两个关系关联,这种联系通常是一对多(1:
n)的,其中主(父)关系(1方)称为被参照关系(被参照表),从(子)关系(n方)称为参照关系(参照表)。
如果定义的是参照表,则定义参照完整性约束的方法如下:
(1)列级约束的定义语法格式
CREATETABLE<表名>
(...
<列名><数据类型>[CONSTRAINT约束名][FOREIGNKEY]REFERENCES被参照表表名(<列名>)
[ONDELETE{NOACTION|CASCADE|SETNULL|SETDEFAULT}]
[ONUPDATE{NOACTION|CASCADE|SETNULL|SETDEFAULT}]
...
)
(2)表级约束的定义语法格式为
CREATETABLE<表名>
(<列名><数据类型>,
...
[CONSTRAINT约束名]FOREIGNKEY(<列名>)REFERENCES被参照表表名(<列名>)
[ONDELETE{NOACTION|CASCADE|SETNULL|SETDEFAULT}]
[ONUPDATE{NOACTION|CASCADE|SETNULL|SETDEFAULT}]
)
5、答案:
CHECK约束即域完整性约束,用来说明该列的取值范围。
6、答案:
略。
分别参见3.4.1、3.4.2、3.4.3。
7、答案:
作用是说明在被参照表的被参照记录上发生删除(DELETE)和更新(UPDATE)操作时的处理方法。
NOACTION说明禁止删除或更新被参照记录,CASCADE说明进行级联处理(删除或更新),SETNULL说明将参照记录的对应字段设置为空值,SETDEFAULT说明参照记录的对应字段设置为默认值。
8、答案:
略。
参见3.5.1。
9、答案:
GROUPBY分组查询只能显示分组后的计算结果。
COMPUTEBY分组查询不仅能显示分组后的计算结果,还能显示明细信息;可以计算子组的汇总值,也可以同时计算整个结果集的汇总值。
10、答案:
为了保证分组查询的正确性,GROUPBY不需要ORDERBY的配合,因为GROUPBY只显示分组后的计算结果。
而COMPUTEBY则需要ORDERBY的配合,这样的语法规定是为了使明细信息能够和分组汇总信息对应起来。
11、答案:
基本表是指独立存在的表,即用CREATETABLE命令建立的表。
视图是虚拟表,本身并不真正存在数据,视图的内容是由SQLSELECT查询定义的。
二者区别如下:
基本表是独立存在的,里面包含数据。
视图是虚拟表,里面不包含数据,只有其定义。
视图可以源自一个表或多个表。
二者的相同之处和联系:
二者都包含一系列命名的列和行,对视图的查询和对基本表的查询基本相同,通过视图查询到的数据与基本表的数据同步更新。
第4章习题参考答案
1、答案:
嵌入识别问题、宿主语言与SQL语言的数据交互问题、宿主语言的单记录与SQL的多记录的问题。
2、答案:
游标的作用是能够每次处理查询结果集中的一条或一部分记录。
相关语句及用途如下:
定义游标的语句(DECLARECURSOR)、打开游标的语句(OPEN)、从游标中读取记录的语句(FETCH)、关闭游标的语句(Close)、释放游标的语句(DEALLOCATE)。
3、答案:
存储过程是指以数据库对象的形式存储在数据库中的程序。
使用存储过程可以避免在客户端和服务器端传送无用的数据,提高系统性能;使用存储过程还可以实现一些安全控制功能。
4、答案:
触发器是一类特殊的存储过程,它在满足某个特定条件时自动触发执行。
使用触发器可以实现强制业务规则、数据完整性和一些提示服务。
第5章习题参考答案
1、答案:
数据管理和数据库管理的工作主要由数据库管理员负责,分为2个阶段。
第1个阶段是数据库实施前,即数据库规划和设计阶段的管理问题;第2个阶段是数据库实施后,即数据库实施、运行和维护阶段的管理问题。
2、答案:
一般数据库访问认证分为3个级别:
系统登录、数据库访问和数据操作。
3、答案:
系统管理员负责整个系统的管理,一般数据库管理系统在安装时都有一个默认的系统管理员用户。
数据库管理员负责某个具体数据库的管理,数据库管理员用户由系统管理员授权。
4、答案:
角色管理主要是对相同权限或相似权限的用户进行便捷、清晰的权限管理。
系统管理员和数据库管理员可以根据需要创建角色,然后为角色赋予相应的权限,并对角色进行动态管理。
5、答案:
登录用户管理指管理登录或注册到正在运行的数据库管理系统实例上的用户,登录用户管理由系统管理员管理。
登录用户管理包括创建登录用户、修改登录用户和删除登录用户。
6、答案:
数据库用户管理指对某个具体数据库用户的管理,数据库用户的管理通常是由数据库管理员负责,也可以由系统管理员代行数据库管理员的职责。
数据库用户管理包括建立新的数据库用户、修改已有数据库用户和删除数据库用户。
7、答案:
系统管理员通常用如下两种方式指定数据库管理员:
(1)用户被授权可以执行CREATEDATABASE命令或被指定为Dbcreator角色的成员。
(2)用户可以被指定为已有数据库的DB_owner角色的成员。
8、答案:
授权命令GRANT分为:
授予创建对象的权限和授予在对象上的操作权限。
创建对象的权限包括:
备份数据库、日志的权限,创建数据库、默认值、函数、存储过程、规则、视图、表的权限。
在对象上的操作权限包括:
查询、插入、更新、引用表,执行存储过程的权限。
9、答案:
WITHGRANTOPTION短语的作用是说明被授予权限的用户或角色也可以行使同样的GRANT权限。
AS短语的作用是当使用GRANT授权时是作为某个用户或某个角色在行使职权。
10、答案:
DENY命令的作用是拒绝授予用户权限。
防止用户通过其组或角色成员身份继承权限。
11.ACID性质是指事务具有原子性、一致性、隔离性和持久性。
其中,事务的原子性强调了一个事务是一个逻辑工作单元,是一个整体,不可分割,即一个事务所包含的操作要么全部做,要么全部不做;事务的一致性是指一个事务执行一项数据库操作时,将使数据库从一种一致性的状态变换成另一种一致性状态;事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及存取修改的数据对其它并发事务是隔离的(事务不会查看其他并发事务的中间状态的数据);事务的持久性是指一旦事务成功完成,该事务对数据库所施加的所有更新都是永久的。
12.不是,因为存在隐含事务和自动事务。
当数据库设置为隐含事务模式时,可以不用BEGINTRANSACTION命令开始一个事务,而是当首次执行某个相关操作命令时都会自动启动一个事务;当数据库设置为非隐含事务模式,此时如果没有用BEGINTRANSACTION命令开始事务,则每条成功执行的命令都作为事务自动提交。
13.在数据库应用中,当一个事务成功结束时就需要提交事务。
当一个事务在执行过程中出现异常,不能正常执行到事务结束点时就需要撤销事务。
14.保存事务是指在长事务中可设置一些事务断点,这样在事务出现故障并可修复时,可以不撤销整个事务,而是将事务回退到指定的事务断点,然后继续完成事务。
当希望事务出现故障时能回退到指定的事务断点时需要保存事务。
15.根据磁盘介质是否损坏来划分数据库的软故障和硬故障。
软故障影响事务的原子性、一致性。
硬故障影响事务的持久性。
16.日志是对备份的补充。
由于日志实时地记录了所有对数据库的更新操作,因此当出现故障时就可以首先利用备份恢复数据库,然后再运行数据库日志将数据库完全恢复。
17.关键词RECOVERY是用来说明恢复结束,如果有未完成事务则予以撤销;NORECOVERY说明恢复未结束,还有后续的备份需要继续恢复。
18.在SQLServer数据库中,当遇到灾难后,需要利用以前所做的备份和日志文件进行恢复工作。
基本步骤如下:
l如果日志文件没有损坏,可先备份日志文件;
l恢复最近的全备份;
l恢复最近的差异备份(如有);
l恢复自差异备份以后的所有日志备份(按备份的先后顺序)
19.并发执行的数据库事务如果缺少并发控制通常会产生丢失更新、读“脏”数据、不可重复读和幻像读问题。
20.通过并发控制技术来解决并发事务之间的干扰问题。
并发控制的主要技术是封锁,即事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁。
加锁成功后,事务T就对该数据对象有了一定的控制权,在事务T释放它的锁之前,其他的事务不能使用此数据对象。
第6章习题参考答案
1.参考答案如下:
(1)共设计4个关系模式,分别是:
学生(学号,姓名,性别,出生日期,电话,家庭地址,邮政编码,所在专业)
课程(课程编号,课程名称,课程性质,学分,学时,开课学期)
选课(学号,课程编号,最终成绩)
补考(学号,课程编号,补考次数,补考成绩)
(2)学生关系中的函数依赖有:
学号→姓名,学号→性别,学号→出生日期,学号→电话,学号→家庭地址,学号→邮政编码,学号→所在专业
课程关系中的函数依赖有:
课程编号→课程名称,课程编号→课程性质,课程编号→学分,课程编号→学时,课程编号→开课学期
选课关系中的函数依赖有:
(学号,课程编号)→最终成绩
补考关系中的函数依赖有:
(学号,课程编号,补考次数)→补考成绩
(3)以上关系是BCNF,因为每个关系都满足BCNF定义的要求。
2.
(1)关键字是(职工,工程)
(2)(职工,工程)→时数,职工→工资,(职工,工程)→工资
(3)(职工,工程)→工资会带来操作异常。
因为职工→工资,所以工资部分函数依赖于(职工,工程)。
这种部分依赖会带来数据冗余,使得在插入数据、删除数据和更新数据时会出现异常。
(4)1NF
(5)分解结果为:
职工工资(职工,工资)BCNF
参加工程(职工,工程,时数)BCNF
3.
(1)BCNF
(2)2NF
(3)1NF
(4)3NF
第7章习题参考答案
1.重要性:
数据库概念结构设计是整个数据库设计的关键,它通过对用户的需求进行综合、抽象和归纳,形成一个独立于具体DBMS的概念模型。
该模型描述了系统中的各个实体以及相关实体之间的关系,可以很方便地转换成各种所需要的数据模型,是逻辑模型设计的基础。
数据库概念结构设计的方法有多种,通常的设计步骤是:
(1)先建立整个系统的总体框架;
(2)根据部门或功能划分成局部应用;
(3)根据划分后的局部应用完成局部E-R图的设计;
(4)将局部E-R图合并、转换成全局E-R图,完成概念模型的设计。
2.局部E-R图在合并为全局E-R图时主要存在属性冲突、命名冲突和结构冲突等。
属性冲突主要包括属性的值域冲突和属性取值单位冲突两种情况。
命名冲突主要包括同名异义和异名同义两种情况。
属性冲突和命名冲突通常可以通过讨论、协商来进行统一。
结构冲突主要包括:
l同一对象在不同应用中具有不同的抽象。
解决的方法是进行统一,使同样的对象具有相同的抽象。
l同一实体在不同局部E-R图中所包含的属性不完全相同。
解决的方法是在合并时同一实体的属性为各局部E-R图中的属性的并集。
l实体之间在不同的应用中可能存在着不同的联系。
解决的方法是在合并E-R图时不要丢失联系,可根据应用的语义对实体联系的类型进行综合或调整。
3.
E-R图如下:
学院
班级
属于
学生
包含
学院编号
学院名称
办公地点
班号
班长
专业名
人数
学号
姓名
出生年月
宿舍号
n
1
n
1
入会年份
社团
m
n
参加
社团名称
成立年份
地点
将E-R图转换成如下关系模式:
学院(学院编号,学院名称,办公地点)
班级(班号,学院编号,班长,专业名,人数)
学生(学号,班号,姓名,出生年月,宿舍号)
社团(社团名称,成立年份,地点)
参加(学号,社团名称,入会年份)
说明:
加下划线的属性为主关键字,加点的为外部关键字。
4.
E-R图如下:
主机
职工
销售
客户单位
维护
主机序号
操作系统
生产厂商
状态
备注
职工号
姓名
性别
出生年月
职称
密码
工种
单位名称
联系人姓名
联系电话
1
n
1
n
租用
m
管理
n
n
1
m
将E-R图转换成如下关系模式:
主机(主机序号,操作系统,生产厂商,状态,备注)
职工(职工号,姓名,性别,出生年月,职称,密码,工种)
客户单位(单位名称,联系人姓名,联系电话)
维护(主机序号,职工号)
租用(主机序号,单位名称,职工号)
说明:
加下划线的属性为主关键字,加点的为外部关键字。
第8章习题参考答案
1.主要包括5个步骤:
系统规划、系统分析、系统设计、系统实施和系统的运行与维护。
l在系统规划阶段,对组织的环境、目标、现行系统的状况进行初步调查,研究建立新系统的必要性和可行性,给出拟建系统的备选方案。
对这些方案进行可行性分析,写出可行性分析报告。
l在系统分析阶段,分析用户的各种需求,确定新系统的目标和功能,收集用户的数据需求和处理需求,形成系统分析说明书。
l在系统设计阶段,确定系统的总体设计方案、划分子系统功能、确定共享数据的组织,然后进行详细设计,如处理模块的设计、数据库系统的设计、输入输出界面的设计和编码的设计等,形成系统设计说明书。
l在系统实施阶段,开发可以实际运行的数据库应用系统,交付用户使用。
这个阶段的任务主要包括程序的编写和调试,人员培训,数据文件的准备和转换,计算机等设备的购置、安装和调试,系统调试与转换,编写相关文档等。
l在系统的运行与维护阶段,需要对系统的日常运行进行管理,评价系统的运行效率。
监控、维护整个应用系统,如出现问题则对系统进行修改和调整。
2.面向对象开发方法的基本思想是:
将客观世界抽象地看成是若干相互联系的对象,然后根据对象和方法的特性研制出一套软件工具,使之能够映射为计算机软件系统结构模型和进程,从而实现数据库应用系统的开发。
面向对象开发方法的基本步骤:
l系统调查和需求分析:
对系统面临的问题和用户的开发需求进行调查研究。
l面向对象分析:
采用面向对象方法,把问题域分解成一些类或对象,找出这些对象的属性和操作,以及对象间的关系(一般/特殊,整体/部分关系),并由此建立一个能够直接反映系统任务的OOA模型及其详细说明。
l面向对象设计:
对分析的结果作进一步的抽象、归类、整理,最终以范式的形式确定下来。
l面向对象的开发:
使用面向对象的软件开发工具完成应用系统的开发。
3.客户/服务器(Client/Server,简称CS)模式是在客户端和服务器端都需要部署程序的一种应用架构,这种结构允许应用程序分别放在客户工作站和服务器上执行,可以合理划分应用逻辑,充分发挥客户工作站和服务器两方面的性能。
浏览器/服务器(Browser/Server,简称BS)模式是随着Internet技术的兴起,起源于WWW服务的一种实现形式。
在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,服务器端可以编写代码从而于数据库相连接,当然浏览器端也是可以编写连接数据库代码的。
4.可以。
5.应用程序通过ODBC访问数据库的基本流程是:
l建立ODBC数据源
l应用程序利用标准的ODBC函数,建立到数据库的连接,执行SQL语句
l应用程序获取SQL语句执行的结果并处理结果
l断开与数据库的连接