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