分享

计算机四级数据库工程师(高教出版社)课后习题参考答案

 honeydbbs 2010-12-24
计算机四级数据库工程师课后习题参考答案
第1章习题参考答案
1.1  答案
(1)信息是现实世界事物的存在方式和运动状态的反映,是对事物之间相互联系、相互作用的描述。
(2)数据是描述现实世界事物的符号记录,是用物理符号记录下来的可以识别的信息。
(3)数据处理是指对数据进行分类、收集、组织、存储,进而从已有数据出发,抽取或推导出表示新的信息的数据。
(4)数据管理是指对数据的分类、收集、组织、编码、存储、检索和维护过程,是数据处理业务的重要环节。
(5)数据模型是数据库系统的形式框架,是用来描述数据的一组概念和定义,包括描述数据、数据联系、数据操作、数据语义以及数据一致性的概念工具。
(6)概念数据模型是按用户的观点对现实世界数据和信息进行建模的工具,常用的概念数据模型是实体-联系模型。
(7)数据结构模型是机器世界中与具体DBMS相关的数据模型,其典型代表是关系模型。
(8)物理数据模型描述数据在数据库系统中的实际存储组织方式。
(9)模式是对数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,也称为逻辑模式或概念模式。
(10)外模式是对数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示,也称为子模式、用户模式或用户视图。
(12)内模式是对数据库中数据的物理结构和存储方式的描述,也称为物理模式或存储模式。
(13)外模式/模式映像是对数据库中不同用户的外模式与数据库逻辑模式之间对应关系的描述。
(14)模式/内模式映像是对数据库中数据全局逻辑结构与数据的物理存储组织结构之间对应关系的描述。
1.2  答案
数据库是存储在计算机内的共享数据集合,数据库管理系统是一种数据管理系统软件。数据库系统则是在计算机系统中引入数据库后的软硬件系统构成,包括了数据库和数据库管理系统。
1.3  答案
数据模型的组成要素有数据结构、数据操作和完整性约束。
1.4  答案
当数据库模式发生变化时,通过调整外模式/模式间的映像关系,使得应用程序不必随之修改,从而保证数据与应用程序间的逻辑独立性,简称数据的逻辑独立性。
当数据库数据的物理存储结构改变时,通过调整模式/内模式映像关系,保持数据库模式不变,使数据库系统的外模式和应用程序不随之改变,保证数据与应用程序间的物理独立性,简称数据的物理独立性。
1.5  答案
DBMS的主要功能有数据定义、数据操纵、数据库运行管理与控制、数据库建立与维护。
1.6  答案
DBMS包括查询处理器和存储管理器两部分。查询处理器实现面向用户的查询分析处理和优化功能。存储管理器为用户和应用程序提供了访问存储在数据库文件中的应用数据的接口。
1.7  答案
近年来出现的数据库新技术有工程数据库、演绎数据库、知识数据库、模糊数据库、时态数据库、统计数据库、空间数据库、多媒体数据库、对象数据库、并行数据库、移动数据库、基于网格的数据管理技术等。
第2章习题参考答案
2.1  答案
(1)软件生命周期是指软件产品从考虑其概念开始,到该产品不再使用的整个时期。一般包括概念阶段、需求阶段、设计阶段、实现阶段、测试阶段、安装部署及交付阶段、运行阶段与维护阶段。
(2)数据库应用系统需求是指用户对数据库应用系统在功能、性能、行为、设计约束等方面的期望和要求。
2.2  答案
数据库应用系统中的软件包括操作系统、数据库管理系统、中间件和开发工具、与数据访问与处理有关的应用软件、与数据访问与处理无关的应用软件。
2.3  答案
(1)参照软件开发瀑布模型原理,DBAS的生命周期由项目规划、需求分析、系统设计、实现与部署、运行管理与维护等5个基本活动组成。
(2)将快速原型模型和增量模型的开发思路引入DBAS生命周期模型,允许渐进、迭代地开发DBAS。
(3)根据DBAS的软件组成和各自功能,细化DBAS需求分析和设计阶段,引入了数据组织与存储设计、数据访问与处理设计、应用设计三条设计主线,分别用于设计DBAS中的数据库、数据库事务和应用程序。
(4)将DBAS设计阶段细分为概念设计、逻辑设计、物理设计三个步骤,每一步的设计内容又涵盖了三条设计主线。
2.4  答案
DBAS规划与分析的主要工作内容分为系统规划与定义、可行性分析、项目规划三个方面。
其中,系统规划与定义是通过了解用户实际需求,明确数据库应用系统需要实现的目标和任务,并从数据管理和数据处理的角度,确定系统中数据库软件的功能、性能范围;可行性分析则包括项目的技术可行性分析、经济可行性分析、操作可行性分析和开发方案选择;项目规划则是对项目资源、成本和进度做出合理估算,并据此制定DBAS项目开发计划。
2.5  答案
DBAS需求分析包括数据需求分析、数据处理需求分析、业务需求分析等方面,此外还包括对系统在性能、存储、安全、备份与恢复等方面的要求进行分析。
2.6  答案
数据库应用系统的概念设计包括数据库概念模型设计和系统总体设计。数据库概念模型设计是依据数据需求分析结果,分析需要存储在数据库中的各类数据对象的特征及其相互间关联关系,并表示为概念数据模型;系统总体设计则是依据系统规划与分析结果和系统需求分析结果,确定系统软硬件总体框架。
2.7  答案
数据库应用系统的逻辑设计包括数据库逻辑结构设计、数据库事务概要设计、应用程序概要设计三方面。
数据库逻辑结构设计的主要步骤为:将E-R图转换为初始关系模式、对初始关系模式进行优化、检查关系表对数据库事务的支持性、确定关系模式完整性约束、设计基于关系模式的用户视图。
2.8  答案
数据库应用系统物理设计包括数据库物理结构设计、数据库事务详细设计和应用程序详细设计。
数据库事务详细设计是根据事务处理流程,面向具体DBMS平台和开发环境,利用SQL语句、数据库访问接口,采用高级程序设计语言或DBMS提供的事务实现机制,设计数据库事务。
2.9  答案
数据库应用系统的系统实现和部署包括建立数据库结构、数据加载、事务和应用程序的编码及测试、系统集成测试与试运行、系统部署等工作内容。
2.10  答案
数据库应用系统的运行与维护包括日常维护、系统监控与分析、系统性能优化调整、系统升级进化。
第3章习题参考答案
3.1  答案
需求分析阶段的主要任务是通过需求分析的工作把用户对应用系统的非形式化需求不断揭示和挖掘出来,其目的在于明确应用系统的目标、功能、性能、数据范围和相关约束,形成需求说明书,作为系统开发后续各阶段的工作基础。完成需求分析的基本方法是调查分析,即面谈、实地观察、问卷调查及查阅资料。
3.2  答案
例如,可采用下列过程和步骤完成学校选课系统的需求分析:
(1)标识问题
标识问题从现行教务系统的业务流程做起,采用面谈、观察等方式理解现行教务系统的业务流程,包括现行教务流程存在的问题及需要改进的方面,通过对系统各类问题的识别和标识获得对待建选课系统功能、性能及运行环境等的全面理解。
(2)建立需求模型
使用DFD等建模方法建立选课系统需求模型,借助模型及抽象方法把选课系统中的各类活动,如学籍管理、课程管理及选课、补退选等功能描述清楚,使得各类人员便于认识、理解系统所实现的功能。
(3)描述需求
按照需求说明书规格全面地、完整地描述及说明选课系统的功能性需求和非功能性需求。
(4)确认需求
由相关专家及人员确认和进一步检查选课系统需求的合理性、正确性和有效性,以确保需求分析的结果是全面的、准确的和一致的。
3.3  答案
(1)不过早陷入具体的细节。
(2)从整体或宏观入手分析问题,如业务系统的总体结构,系统及子系统的关系。
(3)通过图形化的模型对象直观地表示系统要做什么,完成什么功能。
(4)图形化建模方法方便系统分析员理解和描述系统。
(5)模型对象不涉及太多技术术语,便于用户理解模型。
3.4  答案
功能需求主要描述应用信息系统的处理要求。例如,本书应用案例"商场经营管理系统"用了两层数据流图较全面的描述了商场经营管理系统将要完成的功能。图3.3第一层数据流图从总体描述了系统的主要功能及完成商场经营管理涉及的信息及信息范围以及目标系统与外部的数据交换关系。图3.4第二层数据流图描述了实现商场业务活动需要的基本功能,如库存管理、销售管理、会员管理及查询统计以及完成以上各处理要求需要的输入、输出数据及信息。
信息需求主要描述目标系统需要存储和管理哪些数据,这些数据具有什么属性特征和组成格式。商场经营管理系统的数据需求见2.7.2所列的数据对象。
性能需求描述应用系统对性能的要求。例如,商场经营管理系统对响应时间,存储容量,系统的适应性,数据的安全性、数据的完整性、一致性和可靠性等方面的要求。
3.6  答案
(1)商场经营管理系统A-0图
 
 
 
 

(2)  商场经营管理系统A0图
 
 
 
 
 
 

3.7  答案
(1)电子产品租借管理系统第一层数据流图
 
 
 

(2)电子产品租借管理系统第二层数据流图
 
 
 
 
 
 
 
 
第4章习题参考答案
4.1  答案
数据库概念设计包括如下基本步骤:
(1)确定实体集
(2)确定联系和联系类型
(3)建立由信息模型表示的企业模型
(4)确定实体集属性
(5)对信息模型优化
4.2  答案
(1)实体集与实体集实例
如,李明读了两本书,丁一读了3本书。
根据这个事实可以抽象出一个数据模型"学生读书"。其中"学生"是一个实体集,因为实体集描述具有相同属性特征和性质的事物集合(如学生对象集合);
而其中的"李明"、"丁一"是学生实体集中的实例,因为他们都是学生集合中的一个具体对象,实体集实例描述一个集合中客观存在并可以相互区分的事物。
(2)属性与属性实例
如"学生读书"数据模型中的姓名是学生实体集的一个属性,属性描述实体所具有的某一特征或性质,一个实体通常由多个属性来刻画;
而"李明"、"丁一"是姓名属性的实例也是姓名属性的取值。
(3)联系与联系基数
学生和图书两个实体集之间的关系叫做"联系",联系描述实体集之间的一种连接或关系;
如果实体集学生的一个实例与实体集图书的2个、3个或N个实例相联系, 就说明在联系的学生端有基数1,而在联系的图书端有基数2、3、或N, 联系的基数刻画两个实体集之间联系的类型:1:1或1:N或M:N。
4.3  答案
(1)分类联系
在现实世界中,有些事物是其它事物的类。例如,实体集 "电冰箱"、"洗衣机"、"彩电"是实体集"电器"的分类实体集。"分类联系"描述两个或多个实体集之间的联系,在这些实体集中,存在一个一般实体集如电器,它的每一个实例都恰好与一个且仅一个分类实体集如"电冰箱"或"洗衣机"或"彩电"的一个实例相联系。通常,一般实体集的每一个实例和与之相关的一个分类实体集实例描述的是现实世界的同一事物,它们具有相同的唯一标识符。
(2)不确定联系
例如,商场允许一位客户购买多种商品,而同一种商品允许多名客户购买。在实体集"客户"和"商品"之间就存在着不确定的联系。不确定联系又称为"多对多联系"或M:N的联系。这种联系关联的两个实体集之间的任一实体集的一个实例都将对应另一个实体集的1个或多个实例。
4.4  答案
(1)教务管理系统ER图
 
 
 
 
 
 
 
 
 
ER图实体集属性列表:
系实体集属性:系号,系名,系主任,系办公室电话
班级实体集:班级名,学生人数
学生实体集属性:学号,姓名,性别,出生日期
教师实体集属性:教师号,教师名,职称,性别,出生日期,工资
课程实体集属性:课程号,课程名,学分,上课时间,课容量
教材实体集属性:教材号,教材名,出版社,第一作者
(2)教务管理系统Idef1x图
 
 
 
 
 
 
 
 
 

Idef1x图实体集属性列表:
系/10, 属性:系号,系名,系主任,系办公室电话
班级/20,属性:班级名,学生人数,系号,教师号
教师/30,属性:教师号,教师名,职称,性别,出生日期,工资,系号
学生/40,属性:学号,姓名,性别,出生日期,班级名
课程/50,属性:课程号,课程名,学分,上课时间,课容量
教课/55,属性:教师号,课程号,授课评价
教材/60,属性:教材号,教材名,出版社,第一作者,课程号
选课/65,属性:学号,课号,成绩
4.5  答案
电器销售管理系统ER图
 
 
 
 
 
 
 
 
 
 
ER图实体集属性列表:
总公司实体集属性:工商注册号,地点,总裁,总公司电话,总公司职工数
分店实体集属性:分公司注册号,地点,经理,电话,职工数
职工实体集属性:工作证号,姓名,性别,年龄,工资,工种,奖金
电器实体集属性:型号,名称,电器指标,生产商,生产日期,进货价格,售出价格
第5章习题参考答案
5.1  答案
关系模型用二维表格结构表示实体及实体间的联系。现实世界中的每个客观对象对应表中的一行叫做一条记录,表中的每个列(属性)描述对象类的某一特征,列的值(属性的取值)刻画和描述客观对象的某一具体的特征。
关系数据库是按照二维表格组织和存储的相互关联的关系(表)的集合。
关系数据库采用关系模型在计算机中组织、存储、处理和管理数据。
5.2  答案
如学号是学生关系(表)的主码,因为这个属性能够唯一识别学生关系中的每一条记录。
5.3  答案
主码约束定义指定关系的主码列不能取空值,并且取值要唯一。
5.4  答案
如果两个关系R和S,X是R的属性或属性组,且X不是R的码,但X是S的码,则称X是R的外码。
5.5  答案
外码约束也叫引用完整性约束,定义外码与主码之间的引用规则,即若关系R含有另一个关系S的主码Ks所对应的属性或属性组F(该属性或属性组F称为关系R的外码),则关系R中的每一个元组在属性组F上的值必须满足:或者取空值,或者等于S中某个元组的主码Ks的值。
5.7  答案
关系数据库设计理论的基础是函数依赖理论和规范化设计理论。规范化设计理论的主要内容是范式,即关系模式满足的条件,它是数据库逻辑设计的指南。
5.8  答案
(1)商场经营管理系统实体集属性列表:
供应商实体集属性:
供应商编号,名称,地址,邮编,联系人,电话,传真,网址,电子邮箱,开户银行,账户名称,账户账号
商品及库存实体集属性:
商品类别编号,类别名称,类别描述信息,商品编号,品名,生产日期,单价,库存量,
商品描述信息
销售员信息实体集属性:
销售人员编号,姓名,性别,年龄,身份证,地址,邮编,电话,收银台编号,状态,
收银台描述信息
顾客信息实体集属性:
顾客编号,姓名,性别,年龄,身份证号,地址,邮编,电话
会员卡实体集属性:
会员卡号,有效起始日期,有效截止日期,积分,状态
(2)3NF关系模式(注,下划属性为主码属性):
供应商信息(供应商编号(PK),名称,地址,邮编,联系人,电话,传真,网址,电子邮箱,开户银行,账户名称,账户账号)
商品类别(商品类别编号(PK),类别名称,类别描述信息)
商品(商品编号(PK),品名,生产日期,单价,库存量,商品描述信息,商品类别编号(FK))
采购入库单据(入库单据编号(PK),入库日期,经手人,入库单据描述)
采购入库单据明细(入库单据编号(FK),商品编号(FK),进价,数量,供应商编号(FK),购买日期)
销售人员(销售人员编号(PK),姓名,性别,年龄,身份证,地址,邮编,电话)
收银台(收银台编号(PK),状态,收银台描述信息)
会员卡(会员卡号(PK),有效起始日期,有效截止日期,积分,状态)
销售单据(销售单编号(PK),会员卡号(FK),本次积分,付款总金额,销售日期,销售人员编号(FK),收银台编号(FK),销售单据描述)
销售单据明细(销售单据编号FK,商品编号FK,单价,数量,总价,折扣率,折扣总价)
商品价格变动表(商品编号(FK),开始日期,结束日期,销售价格,注释)
顾客信息(顾客编号(PK), 会员卡号(FK),姓名,性别,年龄,身份证号,地址,邮编,电话)
5.9  答案
(1)R的码是(AD)
(2)R是1NF的关系模式
(3)将R分解为3NF的关系模式如下:
R1(D,C,G)
R2(A,B,E)
R3(B,C,F)
5.10  答案
R1(TIME,TERM,ROOM,CNO)
R2(TIME,CNO,TNO)
R3(SNO,CNO,SCORE)
R4(CNO,CNAME,CREDIT)
第6章习题参考答案
6.1  答案
(1)堆文件是一种数据库文件结构形式。在堆文件中,记录随机地存储在文件物理空间中,新插入的记录存储在文件的末尾。
(2)顺序文件是一种数据库文件结构形式。在顺序文件中,记录按照查找码值的升序或降序顺序排列存储。
(3)聚集文件是一种数据库文件结构形式。聚集文件具有多种记录类型,存储了来自多个关系表的记录数据,每个关系表对应文件中的一种记录类型。
(4)索引技术(Indexing)是一种快速文件访问技术,它将文件记录在某个或某些域(或称为属性)上的取值与该记录的物理地址直接联系起来,提供了一种根据记录域的取值快速访问文件记录的机制。
(5)对数据文件和它的一个索引文件,如果数据文件中数据记录的排列顺序与索引文件中索引项的排列顺序相一致,则该索引文件称为聚集索引。否则,该索引文件称为非聚集索引。
(6)在数据文件的包含主码的属性集上建立的索引称为主索引。在数据文件的非主属性上建立的索引称为辅索引。
(7)如果数据文件中的每个查找码值在索引文件中都对应一个索引记录,则该索引称为稠密索引;如果只是一部分查找码的值有对应的索引记录,则该索引称为稀疏索引。
(8)如果一个数据文件按照某个查找码组织为顺序文件,同时又对数据文件建有聚集索引,则该数据文件称为索引顺序文件。
6.2  答案
设3门课程分别为DB、OS和COM,5个学生分别为BAI、DE、GU、HAI和YE。如果用户查询主要是根据课程查找选课的学生,则可建立如下图所示的聚集文件。
 
6.3  答案
有序索引技术利用索引文件实现查找码取值到记录物理地址间的映射关系。索引文件由索引记录组成,每个记录中的索引项记录了某个特定的查找码值和具有该值的数据文件记录的物理地址。
当需要访问数据文件中某个数据记录时,先根据查找码值查阅索引文件,找到对应的索引项,然后从索引项中找出数据记录在数据文件中的物理地址.根据这个地址访问数据记录。
6.4  答案
散列技术是一种快速文件访问技术,它利用散列函数实现文件记录域取值到记录物理地址间的直接映射关系。当需要访问数据文件中查找码值为si的某个或某些文件记录时,将si作为散列函数h的输入,计算得出的散列函数输出值h(si)就是文件记录在数据文件中的物理地址。
6.5  答案
关系DBMS数据字典中的元数据包括:关系模式信息、与视图描述有关的信息、关系的存储结构和存取方法信息、完整性约束、安全性有关的信息、数据库运行统计信息。
DBMS使用数据字典中的元数据完成其相应的存储管理和查询处理功能。DBA利用数据字典监视DBMS使用情况,完成有关系统管理工作。一般用户也可通过数据字典查阅部分数据库结构信息。
6.6  答案
数据库物理设计的主要步骤有数据库逻辑模式调整、文件组织与存取设计、数据分布设计、安全模式设计、确定系统配置、物理模式评估。
第7章习题参考答案
7.1  答案
数据库应用系统功能设计包括数据库事务设计和应用程序设计。与数据库应用系统概念设计、逻辑设计、物理设计相对应,应用程序(软件)设计分为总体设计、概要设计和详细设计,数据库事务设计则由事务概要设计和事务详细设计组成。
7.2  答案
复杂数据库事务的设计与实现既要遵循应用领域特定的业务逻辑,又依赖于具体数据库系统所提供的事务实现机制。复杂事务的设计可以分解为概要设计和详细设计两个步骤。概要设计注重事务本身的处理流程,暂时先不考虑事务中与DBMS平台相关、具体的数据操作方法和事务实现机制,以提高设计结果的适用性。而事务详细设计则从概要设计得出的事务流程出发,设计可在具体DBMS平台下实现的特定事务。
事务概要设计的核心内容是事务处理逻辑设计。事务概要设计包括了事务名称、事务所访问的关系表及关系属性、事务处理逻辑、事务用户等信息。
7.3  答案
软件体系结构是一种可预制、可重构的软件框架结构,它描述了软件系统的总体组织和层次划分、系统元素及其功能分配、全局控制、系统元素间的协调和交互、数据存取等。
第8章习题参考答案
8.1  答案:0~255
8.2  答案:年、月、日中间用"/"或者"-"分隔符,日期和时间间空一个空格,时、分、
秒之间用":"隔离。日期和时间数据用单引号括起来。
8.3  答案:分钟。
8.4  答案:p为数字位个数,q为小数位个数。
8.5  答案:精确到小数点后4位。
8.6  答案
Char(10)代表的是普通编码的字符串,最多存放10个字符,5个汉字,固定的占用10个字节的空间。nchar(10)代表的是统一字符编码的字符串,最多存放10个字符,10个汉字,固定的占用20个字节的空间。
8.7  答案
Char(n)代表的是普通字符编码按定长存储的字符串,"n"的含义是字符的个数,固定占用n个字节的空间。varchar(n) 代表的是普通字符编码按不定长存储的字符串,"n"的含义也是字符的个数,按字符的实际长度占用空间。
8.8 答案
支持两种,一种是系统使用的全局变量,用"@@"前缀标识。一种是用户使用的普遍变量,用"@"前缀标识。
8.9  答案
创建Student表的SQL语句为:
 CREATE TABLE Student (
  Sno char(7) primary key,
  Sname char(10) not null,
  Ssex char(2) check (Ssex In ('男', '女')),
   Sage tinyint check(Sage >= 14),
  Sdept varchar(20)
 )
 创建Course表的SQL语句为:
 CREATE TABLE Course (
  Cno char(10) primary key,
  Cname char(20) not null,
  Periods smallint check (Periods>0),
   Property char(4) check (Property in ('必修', '选修'))
 )
 创建SC表的SQL语句为:
 CREATE TABLE SC (
  Sno char(7) ,
  Cno char(10) ,
  Grade smalldate check(Grade between 0 and 100),
      Primary key(Sno, Cno),
  Foreign key (Sno) references Student(Sno),
  Foreign key(Cno) references Course(Cno)
 )
8.10  答案
(1)Alter Table SC add XKLB char(4)
(2)Alter Table Course Alter Column Periods tinyint
(3)Alter Table Course Drop Column Property
8.11  答案
(1)select sno, sum(grade) 总成绩, avg(grade) 平均成绩, count(*) 选课门数 from sc
   group by sno having count(*) > 2
(2)select sno, sum(grade) 总成绩 from sc
    group by sno having sum(grade) > 200
(3)select sname, sdept from Student join SC on Student.Sno = SC.Sno
     where cno = C02'
(4)select sname, cno, grade
    from student s join sc on s.sno= sc.sno
     where grade > 80
   Order by grade desc
(5)select sname, ssex, grade
   from student s join sc on s.sno = sc.sno
    join course c on c.cno = sc.cno
    where sdept = '计算机系' and ssex =  '男'
    and cname = '数据库基础'
(6)select s.sno, sname, cno, grade from Student s left join SC
  on s.Sno = SC.Sno
(7)select top 3 s.sno, sname, sdept, grade
   from Student s join SC on s.Sno = SC.Sno
 join Course c on c.Cno = SC.Cno
   where cname = '数据库基础'
    order by grade desc
(8)select t1.sno, t2.sno, t1.cno
    from sc as t1 join sc as t2
 on t1.cno = t2.cno
 where t1.sno < t2.sno
(9)select c.cno, cname from course c left join sc
   on c.cno= sc.cno
   where sc.cno is null
(10)select sname,cname, grade
   from student s join sc on s.sno = sc.sno
   join course c on c.cno = sc.cno
 where sdept = '计算机系'
     and grade >( select avg(grade) from sc)
(11)select sname,sdept,grade
   from student s join sc on s.sno = sc.sno
   join course c on c.cno = sc.cno
 where grade = (
       select min(grade) from sc
         where cno in (
           select cno from course where cname = 'vb'))
      and cname = 'vb'
(12)select s.sno 学号,sname 姓名,
     case sdept
    when '计算机系' then 'CS'
        when '信息系' then 'IS'
    when '数学系' then 'MA'
    else 'OTHER'
       end as 所在系,grade 成绩
     from student s join sc on s.sno = sc.sno
  join course c on c.cno = sc.cno
    where cname = 'vb'
(13)select c.cno,
    case
     when count(sc.cno) > 100 then '人多'
       when count(sc.cno) between 40 and 100 then '一般'
     when count(c.cno) < 40 then '较少'
     when count(sc.cno) =0 then '无人选'
     end as 选课人数
   from sc right join course c on sc.cno = c.cno
   group by c.cno
(14)insert into Course values('C100', 'Java', 32, '选修')
(15)delete from sc where grade < 50
(16)(a)用连接查询实现
       delete from sc from sc join student s on s.sno=sc.sno
       where sdept = '信息系' and grade < 50
     (b)用子查询实现
      delete from sc where sno in (
      select sno from student where sdept = '信息系' )
      and grade < 50
(17)update sc set grade = grade + 10
      where cno = 'c01'
(18)(a) 用子查询实现
      update sc set grade = grade + 10
      where sno in (
        select sno from student where sdept = '计算机系' )
      and cno in (
        select cno from course where cname = '计算机文化学' )
    (b)用连接实现
      update sc set grade = grade - 10
      from student s join sc on s.sno = sc.sno
       join course c on c.cno = sc.cno
      where sdept = '计算机系' and cname = '计算机文化学'
8.12  答案:索引的作用是加快数据的查询速度。一般分为聚集索引和非聚集索引两种。
8.13  答案
不对,聚集索引也可以不是唯一性索引。反过来,唯一性索引也不一定是聚集索引。
8.14  答案:对。如果是非聚集索引,则系统不调整数据的物理存放顺序。
8.15  答案
(1)CREATE INDEX NonCluIdx_Sname on Student(Sname)
(2)CREATE UNIQUE CLUSTERED INDEX CluUni_Idx on SC(Sno)
8.16  答案
视图的作用包括:封装了复杂的查询语句,使用户能从多角度看到同一数据,提高了数据的安全性以及提供了一定程度的逻辑独立性。
8.17  答案
(1)CREATE VIEW V1 AS
       select Sno, Sname, Sdept, Cno, Cname, Periods
         from Student s join SC on s.Sno = SC.Sno
         join Course c on c.Cno = SC.Cno
(2)CREATE VIEW V2 AS
   select Sno as 学号, avg(grade) as 平均成绩
        group by Sno
第9章习题参考答案
9.1  答案
(1)事务是构成数据库应用中一个独立逻辑工作单元的操作的集合,也是访问并可能更新数据库中各种数据项的一个程序执行单元。
(2)定义在多个事务上的调度是这些事务的所有操作的一个执行序列,代表了这些操作的执行顺序。
(3)事务Ti 的操作Ii与事务Tj的操作Ij是冲突的,当且仅当Ii 和 Ij访问数据库中同一个数据项Q,并且Ii 和 Ij中至少有一个是写操作write(Q)。
(4)如果一个并发调度冲突等价于某个串行调度,则称该并发调度是冲突可串行的。
(5)死锁是指数据库系统中部分或全部事务由于无法获得对需要访问的数据项的控制权而处于等待状态,并且将一直等待下去的一种系统状态。
9.2  答案
原子性指事务对数据库的所有操作是一个不可分割的工作单元。这些操作要么全部执行,要么一个也不执行。
一致性指当事务独立执行时,其执行结果应维护数据库的一致性,即数据库不会因事务执行而遭受破坏。事务应使数据库从一个一致性状态转到另外一个一致性状态。
隔离性指当多个事务并发执行时,系统应保证一个事务的执行结果不受其它事务的干扰,事务并发执行结果与这些事务串行执行时的结果是一样的。
持久性指一个事务一旦成功完成全部操作,则它对数据库的所有更新就永久地反映在数据库中。即使以后系统发生了故障。
9.3  答案
1级加锁协议要求事务T在修改数据项Q之前必须先对Q加X锁,直到事务结束才释放该锁。事务结束包括正常结束(commit)和非正常结束(rollback)。但事务如果只是读Q而不对其进行修改,是不需要对Q加锁的。
2级加锁协议是在1级加锁协议基础上,要求事务T在读取数据项Q之前必须先对其加S锁,读完Q后可以立即释放S锁。
3级加锁协议则是在1级加锁协议基础上,要求事务T在读取数据项Q之前必须先对其加S锁,但是需要等到事务结束时才释放该S锁。
9.4  答案
2阶段锁协议将每个事务的执行过程分为加锁阶段和解锁阶段。在加锁阶段,事务可以申请获得数据项上的任何类型的锁,但不允许释放任何锁。在解锁阶段,事务可以释放任何数据项上的任何类型的锁,但不能再申请任何锁。每个事务开始执行后就进入了加锁阶段。当第一次释放锁后,即转入解锁阶段。
9.5  答案
解决死锁主要采用死锁预防和死锁检测与恢复两类方法。
死锁预防利用死锁预防协议,通过破坏死锁产生的必要条件来避免系统进入死锁状态,防止死锁发生。
死锁检测与恢复则是允许系统进入死锁状态,并且定期检查系统是否发生死锁。当发现系统发生死锁后,采取相应的恢复机制使系统摆脱死锁状态。
9.6  答案
活锁产生的原因是在系统非死锁状态下,某些事务由于始终无法获得对所需访问的数据项的控制权而长期等待下去,无法继续执行。
9.7  答案
Ti Tj
Lock-X(C)
read(C)
C:=C+1
write(C)
 
 
 
 
Lock-X(A)
unlock(C)
read(A)
A:=A*2
write(A)
unlock(A) 
 
Lock-X(A)
read(A)
A:=A+1
write(A)
Lock-X(B)
read(B)
B:=B+1
write(B)
unlock(A)
 
unlock(B)

9.8  答案
并发调度S9不等价于串行调度< T1; T2; T3; T4>。因为T1中的write(Q)和T2中的read(Q)是冲突操作,操作write(Q)在操作read(Q)后面执行,无法交换这2个操作的执行顺序,使T1和T2依次顺序串行执行。
第10章习题参考答案
10.1  答案
(1)A (2)C   (3)C  (4)BC (5)ABC  (6)D
10.2  答案
(1)数据库的试运行
(2)管理员手动实现的监控
(3)答案有多种组合,可在合理使用索引、避免或简化排序、消除对大型表行数据的顺序存取、避免相关子查询、避免困难的正规表达式、使用临时表加速查询、用排序来取代非顺序磁盘存取、不充分的连接条件、存储过程、不要随意使用游标、事务处理中任选三个作答。
第11章习题参考答案
11.1  答案
(1)C   (2)D   (3)D   (4)C
11.2  答案
(1)事务内部的故障、系统故障、介质故障以及计算机病毒故障
(2)冗余数据
(3)静态转储、动态转储
(4)每个事务的开始标记、每个事务的结束标记
(5)必须先写日志文件,后写数据库
(6)双机互备援模式、双机热备份模式
(7)校验冗余
第12章习题参考答案
12.1  答案
四个服务:SQL Server、SQL Server Agent、Distributed Transaction Coordinator(DTC)和Microsoft Search。SQL Server负责处理所有来自客户端的Transact-SQL语句并管理服务器上构成数据库的所有文件,同时还负责处理存储过程,并将执行结果返回给客户端。SQL Server Agent管理需要定期进行的工作,它能够根据系统管理员预先设定好的计划自动执行相应的功能。同时它还能对系统管理员设定好的错误等特定事件自动报警,而且还能通过电子邮件等方式把系统存在的各种问题发送给指定的用户。DTC是一个事务管理器,它能够保证一个事务中的所有操作在所有的服务器上全部成功,或者,当在某个服务器上不成功时,确保所有服务器上的操作均被撤消,使全部服务器均回到事务开始前的状态。Microsoft Search提供对字符数据进行检索。
12.2  答案
四个版本:企业版、标准版、个人版和开发版。企业版和标准版要求安装在服务器版的Windows操作系统下,个人版和开发版要求只要是Windows操作系统即可。
12.3  答案
"Windows 身份验证模式"只允许Windows用户连接到SQL Server,而"混合模式"允许Windows用户和非Windows用户连接到SQL Server。
12.4  答案:服务管理器。
12.5  答案:启动SQL Server服务。
12.6  答案:分为系统数据库和用户数据库。
12.7 答案
master、model、msdb、tempdb。Master数据库记录了所有的系统级信息。包括登录帐户、系统配置、数据库属性(如数据库文件的位置等)等信息。msdb提供对自动执行任务的支持。model是用户数据库的样板数据库,其中包含所有用户数据库的公共信息。tempdb临时数据库,用于存储用户创建的临时表、用户声明的变量以及用户定义的游标数据等。
12.8  答案
有数据文件和日志文件。主数据文件的推荐扩展名是"mdf",辅助数据文件的推荐扩展名是"ndf",日志文件的推荐扩展名是"ldf"。
12.9  答案:可以包含一个主数据文件和0~n个辅助数据文件,1~n个日志文件。
12.10  答案
包含:逻辑文件名、物理存储位置和文件名、初始大小、增长方式和最大大小限制5个属性。
12.11  答案:按数据页存储,一个数据页大小是8KB。
12.12  答案:按一个数据页能存多少行数据,这些数据需要多少个数据页来估算。160MB。
12.13  答案:不能小于model数据库的大小。
12.14  答案
DECLARE @i int, @res int
SET @i = 1
SET @res = 5000
while @i <= 100
begin
  SET @res = @res - @i
  SET @i = @i + 1
end
print @res
12.15  答案:不必相同。
第13章习题参考答案
13.1  答案
存储过程的作用包括:模块化程序设计,提高数据的操作性能,减少网络流量,可作为安全机制使用。
13.2  答案
(1)create proc p1
  @lb varchar(20)
as
  select CName,Address,GoodsName,SaleDate,Quantity
    from Table_Customer a join Table_SaleBill b on a.CardID = b.CardID
    join Table_SaleBillDetail c on c.SaleBillID = b.SaleBillID
    join Table_Goods d on d.GoodsID = c.GoodsID
    join Table_GoodsClass e on e.GoodsClassID = d.GoodsClassID
    where GoodsClassName = @lb
(2)create proc p2
  @lb varchar(20) = '家用电器',@mon int
as
  select day(SaleDate), sum(PayAmount) from Table_SaleBill a
    join Table_SaleBillDetail b on a.SaleBillID = b.SaleBillID
    join Table_Goods c on c.GoodsID = b.GoodsID
    join Table_GoodsClass d on d.GoodsClassID = c.GoodsClassID
    where GoodsClassName = @lb and month(SaleDate) = @mon
    group by day(SaleDate)
(3)create proc p3
  @lb varchar(20),@sum money output
as
  if exists(select * from able_GoodsClass where GoodsClassName = @lb)
    select @sum = sum(PayAmount) from Table_SaleBill a
      join Table_SaleBillDetail b on a.SaleBillID = b.SaleBillID
      join Table_Goods c on c.GoodsID = b.GoodsID
      join Table_GoodsClass d on d.GoodsClassID = c.GoodsClassID
      where GoodsClassName = @lb
  else
    print '不存在指定类别的商品'
(4)create proc p4
as
  update Table_SaleBillDetail set Discount = case
    when c.Score > 10000 then 0.8
    when c.Score between 5000 and 10000 then 0.9
    when c.Score between 1000 and 4999 then 0.95
    else 1
  end
  from Table_SaleBillDetail a join Table_SaleBill b on a.SaleBillID = b.SaleBillID
  join Table_Card c on c.CardID = b.CardID
13.3  答案
(1)create function dbo.f1(@lb varchar(20), @nf int)
  returns int
as
  begin
  declare @sum int
  select @sum = sum(Quantity) from Table_SaleBillDetail a
    join Table_SaleBill b on a.SaleBillID = b.SaleBillID
    join Table_Goods c on c.GoodsID = a.GoodsID
    join Table_GoodsClass d on d.GoodsClassID = c.GoodsClassID
    where GoodsClassName = @lb and year(SaleDate) = @nf
  return @sum
  end
(2)create function dbo.f2(@addr varchar(20))
  returns int
as
  begin
    declare @count int
    select @count = count(*) from Table_Card a
      join Table_Customer b on a.CardID = b.CardID
      where address = @addr and State = '2'
    return @count
  end
(3)create function f3(@low int, @high int)
  returns table
as
  return ( select CName,Address,GoodsName,SaleDate,Quantity
    from Table_Customer a join Table_SaleBill b on a.CardID = b.CardID
    join Table_SaleBillDetail c on c.SaleBillID = b.SaleBillID
    join Table_Goods d on d.GoodsID = c.GoodsID
    where Age between @low and @high)
(4)create function f4(@lb varchar(20), @nf int)
  returns table
as
  return (select GoodsName,SaleDate,Quantity,dbo.f1(@lb,@nf) as total
    from Table_SaleBill a join Table_SaleBillDetail b on a.SaleBillID = b.SaleBillID
    join Table_Goods c on c.GoodsID = b.GoodsID
    join Table_GoodsClass d on d.GoodsClassID = c.GoodsClassID
    where GoodsClassName = @lb and year(SaleDate) = @nf)
(5)create function f5(@lb varchar(20))
  returns @new_table table (
    商品名称 varchar(30),
    单价 money,
    销售日期 datetime,
    销售数量 int,
    销售总价 money)
as
  begin
  insert into @new_table
    select GoodsName, SaleUnitPrice, SaleDate,Quantity, Amount
      from Table_Goods a join Table_SaleBillDetail b on a.GoodsID = b.GoodsID
      join Table_SaleBill c on c.SaleBillID = b.SaleBillID
      join Table_GoodsClass d on d.GoodsClassID = a.GoodsClassID
      where GoodsClassName = @lb
  return
  end
13.4  答案
触发器的主要作用是:完成比CHECK约束更复杂的数据约束,为保证数据库性能而维护的非规范化数据以及实现复杂的业务规则。
13.5  答案
插入操作产生的临时工作表叫Inserted,它保存新插入的数据;删除操作产生的临时工作表叫Deleted,它保存被删除的数据;修改操作产生两张临时工作表,一个是Inserted,用于保存更新后的新数据,另一个是Deleted,用于保存更新前的数据。
13.6  答案
(1)create trigger tri1
  on Table_SaleBill for insert, update
as
  declare @score int
  select @score = Score from inserted
  update Table_Card set Score = Score + @score
    where CardID in (
      select CardID from inserted )
(2)create trigger tri2
  on Table_SaleBillDetail for insert, update
as
  update Table_SaleBill set PayAmount = (
    select sum(a.DiscountAmount) from Table_SaleBillDetail a
      join inserted b on a.SaleBillID = b.SaleBillID)
    where SaleBillID in (
      select SaleBillID from inserted)
(3)(a) 后触发型触发器:
create trigger tri3_1
  on Table_SaleBillDetail for insert, update
as
  if exists(select * from inserted where Discount < 40)
    rollback
(b) 前触发型触发器:
create trigger tri3_2
  on Table_SaleBillDetail instead of insert, update
as
  if not exists(select * from inserted where Discount < 40)
    insert into Table_SaleBillDetail select * from inserted
第14章习题参考答案
14.1  答案
分为对DBMS进行维护的权限和对数据库中的对象和数据进行操作的权限两大类。
14.2  答案
数据库系统管理员、数据库对象拥有者和普通用户。
14.3  答案
首先必须是服务器的合法用户,然后必须是数据库的合法用户,最后必须具有相应的操作权限。
14.4  答案:有Windows用户和非Windows用户两种。
14.5  答案:有对象权限、语句权限和隐含权限三种类型。
14.6  答案
角色是为了简化安全管理的过程。在SQL Server 2000中,角色分为系统预定义的固定角色和用户根据自己的需要定义的用户角色。系统角色又分为固定的服务器角色和固定的数据库角色两种。
14.7  答案
用户定义的角色主要是为了权限管理的烦琐,有了角色,就不用直接针对每个具体的数据库用户来管理权限,而只需将数据库用户放置到合适的角色中即可。
14.8  答案:SysAdmin。
14.9  答案:db_owner
14.10  答案
public角色是一个特殊的数据库角色,首先,数据库中的每个用户都自动地是public角
色的成员。其次,用户可以对这个角色进行授权。
14.11  答案
如果想让数据库中的全体用户都具有某个特定的权限,这时应将该权限授予public。
14.12  答案:grant insert,delete on course to u1
14.13  答案:revoke delete on course from u1
14.14  答案:deny update on course to u1
第15章习题参考答案
15.1  答案
完全备份是备份数据库中的全部信息,差异备份是备份从最近的完全备份之后对数据所作的修改部分,事务日志备份是备份从上次备份之后的日志记录。
15.2  答案
分为永久备份设备和临时备份设备两种。永久备份设备必须先创建,然后再使用它备份数据库。而临时备份设备是在备份数据库时直接指定的备份文件。
15.3  答案:可以。
15.5  答案:要求不能是简单还原模型。
15.6  答案:完全备份。
15.7  答案:不要求。
15.8  答案:备份过程中允许,但还原的时候不允许。
15.9  答案:会。
15.10  答案
先恢复最近的完全数据库备份,然后恢复完全备份之后的最近的差异数据库备份(如果
有的话),最后再按日志备份的先后顺序恢复自最近的完全或差异数据库备份之后的所有日志备份。
第16章习题参考答案
16.1  答案
面向对象的可视化程序设计工具,事件驱动的编程机制,开放的数据库访问功能以及充分利用Windows资源。
16.2  答案:完全安装147MB,典型安装120MB。
16.3  答案:至少包含两个文件:一个窗体文件和一个工程文件。
16.4  答案:窗体文件的扩展名为.frm。
16.5  答案:工程文件的扩展名为.vbp。
16.6  答案
设计模式是进行用户界面的设计及代码的编写的状态,运行模式是运行应用程序的状态。
16.9  答案
数据绑定控件的作用是将结果集中的数据在界面上显示出来。凡是具有DataSource属性的控件都是数据绑定控件。
16.10  答案:主要通过DataSource属性和DataField属性。
16.11  答案:目前常用的有ODBC、OLE DB和JDBC。
16.12 答案:
ODBC只能访问关系型数据库,而OLE DB可以访问关系和非关系型甚至是无结构的数据。
第17章习题参考答案
17.1  答案
需设置ConnectionString属性、CommandType属性和RecordSource属性。ConnectionString属性用于建立与数据源的连接,CommandType属性用于指明命令的类型,RecordSource属性用于设置ADO结果集的内容。
17.2  答案:Refresh方法。
17.3  答案
BOF用于判断结果集中记录的当前行指针是否移到了第一条记录的前边,EOF用于判断结果集中记录的当前行指针是否移到了最后一条记录的后边。
17.4  答案:RecordCount。
17.5  答案
有MoveFirst、MovePrevious、MoveNext和MoveLast。MoveFirst方法将当前行记录指针移到结果集中的第一行,MovePrevious将当前行记录指针向前移动一行,将当前行记录指针向后移动一行,将当前行记录指针移到结果集中的最后一行。
17.6  答案:AddNew和Update方法。
17.7  答案:不对,这个方法也用于将内存缓冲区中新添加的数据保存到数据库中。
17.8  答案:用于取消新添加的记录或取消对当前记录所做的修改。
17.9  答案:ConnectionString。
17.10  答案
会。能。可以通过Recordset对象名.Filter = adFilterNone使记录集回到原来的Recordset对象的内容。
第18章习题参考答案
18.1  答案:(1)C  (2)D  (3)D  (4)B  (5)B  (6)B  (7)C  (8)A
18.2  答案
(1)元元模型层、元模型层、模型层、用户模型层
(2)私有、保护、公有、实现
(3)组织、依赖、物理数据库、逻辑设计、实现文件
(4)起点、终点、状态、状态转换、引起状态转换的事件
第19章习题参考答案
19.1  答案:(1)B (2)C  (3)A  (4)ABC  (5)AC (6)A  (7)B  (8)C
19.2  答案
(1)全局数据库管理系统、全局数据字典、局部数据库管理系统、通信管理
(2)全局外模式、全局概念模式、分片模式、分配模式、局部概念模式、局部内模式、全局外模式
(3)标识
(4)单继承、多继承
(5)共享内存结构、共享磁盘结构、无共享结构、层次结构
(6)轮转法、散列划分、范围划分、轮转法、范围划分、散列划分
第20章习题参考答案
20.1  答案:(1)C  (2)D   (3)B
20.2  答案
(1)面向主题性、集成性、不可更新性、时间特性
(2)数据量、系统能回答的查询的类型、小、大
(3)实时维护、延时维护、快照维护
(4)基于多维数据库的OLAP、基于关系数据库的OLAP
(5)数据准备、数据挖掘、结果的解释评估
(6)数据抽取、转换、清理(过滤)、装载
(7)即时OLAP、全局型OLTP应用
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多