数据库第九章参考答案
数据库系统原理课后答案 第九章

9.1 名词解释(1)OODBS:是指面向对象数据库系统,它既具数据库管理的基本功能,又能支持面向对象的数据模型。
(2)ORDBS:基于对象关系数据模型的DBS称为对象关系数据库系统(ORDBS)。
(3)平面关系模型:传统的关系模型称为“平面关系模型”,它要求关系模式具有第一范式(1NF)性质,关系具有规范化的结构。
也就是规定属性值是不可分解的,即不允许属性值具有复合结构(元组或关系)。
(4)嵌套关系模型:是从平面关系模型发展而成的。
它允许关系的属性值又可以是一个关系,而且可以出现多次嵌套。
嵌套关系突破了1NF的定义框架,是“非1NF关系”。
(5)复合对象模型:在嵌套关系模型上进一步放宽要求。
在关系定义上,集合与元组不再有交替出现的严格限制,此时的关系中,属性类型可以是基本数据类型、结构类型(元组类型)或集体类型(即关系类型)。
(6)数据的泛化/细化:是对概念之间联系进行抽象的一种方法。
当在较低层上的抽象表达了与之联系的较高层上抽象的特殊情况时,就称较高层上抽象是较低层上抽象的"泛化",而较低层上抽象是较高层上抽象的"细化"。
(7)对象关系模型:在传统关系数据基础上,提供元组、数组、集合等更为丰富的数据类型及处理新数据类型操作的能力而形成的数据模型。
(注:传统关系模型只支持字符、数值、字串,布尔值等等基本数据类型及其处理功能)(8)类型级继承性:当继承性发生在类型级时,子类型继承了超类型的属性。
也就是说,超类型所具有的属性,在子类上也具有。
(9)表级继承性:继承性也可发生在表级,(就是元组集合上发生继承),子表继承超表全部属性,超表中每个元组最多可以与子表中一个元组对应,而子表中的每个元组在超表中恰有一个元组对应,并在继承的属性值上具有相同的值。
(10)引用类型:数据类型可以嵌套定义,在嵌套引用时,不是引用对象本身,而是个用对象标识符(即指针),这种指针被称为引用类型。
第9章习题参考答案

第8章习题1.简述数据库的特点。
答:数据库是长期储存在计算机内的、有组织的、可共享的数据集合。
数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余性、较高的数据独立性和易扩展性,并可为各种用户共享。
2.文件管理系统和数据库管理系统的区别是什么?相同点呢?3.有哪几种数据模型?哪种是目前流行的模型?答:数据模型:层次模型、网状模型、关系模型。
关系模型是目前流行的模型,关系模型中,数据组织采用二维表,Oracle、SQL Server都采用这种模型。
4.关系数据库管理系统中的关系是什么?在一个关系中,什么称为元组?什么称为属性?答:关系模型中数据的逻辑结构是一张二维表,它由行和列组成。
一个关系对应一张表。
表中的一行为元组。
表中的一列称为一个属性。
5.插入和删除操作有何区别?更新和选择操作有何区别?投影操作有何作用?答:插入操作在表中插入一个新的元组;删除操作根据要求删去表中相应的元组。
更新操作应用于一个关系,用来更新元组中的部分属性值;选择操作根据操作要求从原关系中选择部分元组,组成一个新的关系,其属性保持不变。
投影操作也是一种一元操作,它用于由一个关系产生另外一个新关系。
新关系中的属性(列)是原关系中属性的子集。
投影操作所得到的新关系中的元组属性减少,在这个操作中元组(行)的数量保持不变。
6.什么叫结构化查询语言(SQL)?答:结构化查询语言(SQL)是美国国家标准协会(ANSI)和国际标准组织(ISO)用于关系数据库的标准化语言。
它包含4个部分:数据查询语言DQL,数据操纵语言DQL,数据定义语言DQL,数据控制语言。
7.有如图9.17所示的关系A 、B 、C 。
写出下列SQL 语句的结果。
select * from A where A2=16 答:8.有如图9.17所示的关系A 、B 、C。
写出下列SQL 语句的结果。
select Al, A2 from a where A2=16 答:9.有如图9.17所示的关系A 、B 、C 。
万常选版数据库系统原理与设计第9章课后习题答案

USE ScoreDBGO--9.6 在学生成绩管理数据库ScoreDB中完成。
--(1) 在班级表Class中,分别使用列级和元组级约束保证班级人数classNum属性的取值在(0,50)之间。
--为避免误删Class表的数据,另建两表演示,演示后删除--列级约束CREATE TABLE Class1(classNo char(6) PRIMARY KEY, /*班级编号*/className varchar(30) NOT NULL, /*班级名称*/institute varchar(30) NOT NULL, /*所属学院*/grade smallint NOT NULL /*年级*/DEFAULT 0,classNum tinyint NULL /*班级人数*/CHECK(classNum >=0 AND classNum <= 50))--元组级约束CREATE TABLE Class2(classNo char(6) PRIMARY KEY, /*班级编号*/className varchar(30) NOT NULL, /*班级名称*/institute varchar(30) NOT NULL, /*所属学院*/grade smallint NOT NULL /*年级*/DEFAULT 0,classNum tinyint NULL, /*班级人数*/CONSTRAINT CK_Class_classNum CHECK(classNum >=0 AND classNum <= 50))--删除演示表DROP TABLE Class1DROP TABLE Class2GO--(2) 在学生表Student中,限制籍贯为上海或北京的学生的年龄必须在17岁以上。
--需要使用触发器CREATE TRIGGER Student_birthdayON StudentFOR INSERT,UPDATEASIF EXISTS(SELECT * FROM inserted WHERE YEAR(GETDATE())-YEAR(birthday)<17) ROLLBACKGO--(3) 对于某门课程,保证如果没有选修其先修课程,则不能选修该课程。
《MySQL数据库原理、设计与应用》第9章课后习题答案

第九章一、填空题1.数据库2.原子3.START TRANSACTION4.AUTOCOMMIT5.READ UNCOMMITTED二、判断题对1.对2.对3.错4.对5.对三、选择题1. C2.B、C、D3. B4. B5. D四、简单题1.请简述什么是事务。
答:在MySQL中,事务就是针对数据库的一组操作,它可以由一条或多条SQL语句组成,且每个SQL语句是相互依赖的。
只要在程序执行过程中有一条SQL语句执行失败或发生错误,则其他语句都不会执行。
也就是说,事务的执行要么成功,要么就返回到事务开始前的状态,这就保证了同一事务操作的同步性和数据的完整性。
2.请简述什么是事务的ACID特性。
答:①原子性是指一个事务必须被视为一个不可分割的最小工作单元。
②一致性是指在事务处理时,无论执行成功还是失败,都要保证数据库系统处于一致的状态,保证数据库系统从不返回到一个未处理的事务中。
③隔离性是指当一个事务在执行时,不会受到其他事务的影响。
④持久性是指事务一旦提交,其对数据库的修改就是永久性的。
五、实训题1.请利用事务实现在用户下订单时,检查商品库存是否充足。
START TRANSACTION;1# 查询id为1的商品的库存SELECT stock FROM sh_goods WHERE id = 1;# 根据结果回滚或提交COMMIT;2.请利用事务在用户下订单前,检测当前用户是否已被激活,若未激活,则需激活此用户后,才能再次下订单。
START TRANSACTION;# 查询id为1的用户是否激活SELECT is_active FROM sh_user WHERE id = 1;# 根据结果回滚或提交COMMIT;2。
第9章课后习题答案

第9章习题答案1.简要说明数据库设计的步骤。
答:Access中数据库设计一般要经过五个步骤:(1)分析建立数据库的目的(2)确定数据库中需要的表(3)确定表中的字段(4)确定主关键字(5)确定表之间的关系2.Access数据表中主键的作用是什么?(P230- P231)答:Access中主键是由表中的一个或多个字段组成,用来唯一标识表中的某一条记录。
指定主键后,Access将阻止在主键中输入重复值或NULL值。
在一个数据库中多表间建立关系时,必须通过表的主键和外键建立。
3. Access支持的查询类型有什么?(P234)答:Access支持的查询类型有5类:(1)选择查询选择查询是最常见的查询类型,它从一个或多个表中检索数据,在一定的限制条件下,还可以通过选择查询来更改相关表中的记录。
使用选择查询也可以对记录进行分组,并且可对记录进行总计、计数以及求平均值等其他类型的计算。
(2)交叉表查询交叉表查询能够汇总数据字段的内容,汇总计算的结果显示在行与列交叉的单元格中。
交叉表查询可以计算平均值、总计、最大值、最小值等。
(3)参数查询参数查询会在执行时弹出对话框,提示用户输入必要的信息(参数),然后按照这些信息进行查询。
(4)操作查询操作查询是在一个操作中更改许多记录的查询,操作查询又可分为四种类型:删除查询、更新查询、追加查询和生成表查询。
(5)SQL查询SQL查询是使用SQL语句创建的查询,包括联合查询、传递查询、数据定义查询和子查询。
4.简述数据库中视图、查询与SQL语言的区别。
答:视图..是一种虚拟的表,为了简化复杂查询语句的书写,另外也提高了数据库一定的安全性。
查询..是利用SQL语句或创建查询的方式根据一定的条件进行检索,筛选出符合条件的记录,构成一个新的数据集合,方便对数据库进行查看和分析。
SQL..是一种结构化的查询语言,利用SQL语言可以对数据库...语言中数据进行定义、查询、更新等操作。
数据库系统原理教程课后习题及答案(第九章)

第9章数据库恢复技术1.试述事务的概念及事务的4 个特性。
答:事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
事务具有4 个特性:原子性(Atomicity )、一致性(consistency )、隔离性( Isolation )和持续性(Durability )。
这4 个特性也简称为ACID 特性。
原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
隔离性:一个事务的执行不能被其他事务干扰。
即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
持续性:持续性也称永久性(Perfnanence ) ,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
接下来的其他操作或故障不应该对其执行结果有任何影响。
2 .为什么事务非正常结束时会影响数据库数据的正确性,请列举一例说明之。
答:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。
例如某工厂的库存管理系统中,要把数量为Q 的某种零件从仓库1 移到仓库2 存放。
则可以定义一个事务T , T 包括两个操作;Ql = Ql 一Q , Q2= Q2 + Q。
如果T 非正常终止时只做了第一个操作,则数据库就处于不一致性状态,库存量无缘无故少了Q 。
3 .数据库中为什么要有恢复子系统?它的功能是什么?答:因为计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失,因此必须要有恢复子系统。
《数据库技术与应用》第9章 并发控制 习题答案

第9章并发控制1. 试述DBMS中采用并发控制的目的。
解:并发控制是以事务为单位进行的。
DBMS中的并发控制的目的是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。
2. 试述共享锁和排他锁的含义。
解:排它锁又称为写锁。
排他锁是最严格的一类封锁,当需要对表进行插入、删除或更新操作时,应该使用排他锁。
当一个事务对某数据加上排他锁后,其他事务不得对该数据对象施加任何封锁。
共享锁又称为读锁。
当一个事务队某数据对象加上共享锁后,其他事务可以读取该数据,不能对该数据对象做任何修改。
共享锁可以保证最大的并发性,任何数量的用户可以同时对相同的数据施加共享锁。
3. 试述死锁是如何产生的,列举一些常见的预防死锁的方法。
解:产生死锁的原因是两个或多个事务都锁定了一些数据库对象,然后又都需要锁定对方的数据库对象失败而需要等待所造成的。
预防死锁通常有两种方法:一次封锁法和顺序封锁法。
一次封锁法要求每个事务一次就将要操作的数据库对象全部锁定,否则就不继续执行。
该方法会降低系统的并发度。
顺序封锁法要求预先对数据库对象规定一个封锁顺序,所有事务都按这个顺序来实行封锁。
该方法算法复杂,成本高。
4. 简述数据库系统中经常用到检测和解除死锁的方法。
解:数据库系统中检测死锁一般使用超时法或事务等待图法。
数据库管理系统一般采用如下方法来解除死锁:在循环等待的事务中,选择一个事务作为牺牲者,给其他事务“让路”。
回滚牺牲的事务,释放其获得的锁及其他资源。
将释放的锁让给等待它的事务。
5. 简述多粒度封锁的含义以及优点。
解:同时支持多种锁定粒度供事务选择的封锁方法叫做多粒度封锁。
其中,封锁对象可以是数据库、表、记录、列、索引等的逻辑单元,也可以是数据页或索引页、块等的物理单元。
采用多种粒度封锁能够提高并发度和减少锁的数量。
6. 试述意向锁的含义,简要介绍几种常见的意向锁。
解:意向锁的含义是,如果对一个节点加某种意向锁,则会对该节点的各级下级节点加这种锁;如果对一个节点加某种锁,则必须先对该节点的各级上级节点加这种意向锁。
数据库原理课后习题及解答(常用版)

数据库原理课后习题及解答(常用版)(可以直接使用,可编辑完整版资料,欢迎下载)《数据库原理》课后习题及解答课后习题:第一章第二章第三章第四章第五章第六章第七章第八章第九章习题答案:第一章第二章第三章第四章第五章第六章第七章第八章第九章第一章概论1.试解释下列术语:数据库;数据库管理系统;数据库系统2.试述数据库管理系统的组成内容。
3.试比较文件系统与数据库系统的异同。
4.什么叫数据的物理独立性与逻辑独立性?并说明它的重要性。
5.试述数据库系统的优点。
6.什么叫数据的冗余与数据的不一致性?7.什么叫数据库管理员?他的主要工作是什么?8.试述数据库系统发展的几个阶段。
返回第一章答案第二章数据模型1.什么叫数据库模型,它分哪几种类型?2.试区别数据模型与数据模式。
3.什么叫数据模式,它分哪三级?4.试述数据模型四个世界的基本内容。
5.试介绍E-R模型,EE-R模型及面向对象模型、谓词模型,并各举一例说明之。
6.层次网状模型有什么特点?并各举一例说明之。
7.试比较层次、网状、关系模型之优缺点。
8.试说明关系模型的基本结构与操作。
9.目前流行的关系型数据库管理系统,有哪些你比较熟悉,试介绍其特点。
10.你认为“数据模型”在整个数据库领域中是否有重要作用和地位,试详细说明之。
11.一图书馆借阅书刊,请你画出书刊、读者及借阅三者间的E-R模型。
12.一人事档案中,有干部、职工,干部又有高级干部与一般干部,请用EE-R模型画出他们之间关系。
13.试述物理模型的主要内容。
14.试叙述四个世界的转化关系。
15.请你比较四种数据模型的异同。
返回第二章答案第三章关系数据库系统1.试述关系数据库系统的优点。
2.试述关系型的12条标准,并说明FOXBASE为何是半关系型的。
3.关系代数与关系演算的表示能力是否相同?试证明之。
4.从关系模型的数学表示中,你是否认为网状与层次模型也可以用数学方法表示?试说明理由。
5.设有如图3-1所示的医院组织。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第九章T-SQL基础
P164
1.从功能上划分,SQL分为哪4类?[难度↓]
【解】SQL语句通常分成以下4类:
数据查询语言
数据操作语言
数据定义语言
数据控制语言
2.NULL代表什么含义?将其与其他值进行比较会产生什么结果?如果数值型列中存在NULL,会产生什么结果?[难度↓]
【解】在数据库中,NULL是一个特殊值,表示数值未知。
NULL不同于空字符或数字0,也不同于零长度字符串。
比较两个空值或将空值与任何其他数值相比均返回未知,这是因为每个空值均为未知。
空值通常表示未知、不可用或以后添加数据。
如果某个列上的空值属性为NULL,表示接受空值;空值属性为NOT NULL,表示拒绝空值。
如果数值型列中存在NULL,则在进行数据统计时就会产生不正确的结果。
3.使用T-SQL语句向表中插入数据应注意什么?[难度↓]
【解】在使用T-SQL语句向表中插入数据时要注意以下几点:
当向表中所有列都插入新数据时,可以省略列表名,但是必须保证VALUES 后的各数据项位置同表定义时的顺序一致。
要保证表定义时的非空列必须有值,即使这个非空列没有出现在插入语句中,也必须如此。
插入字符型和日期型值时,要加入单引号。
没有列出的数据类型应该具有以下属性之一:identity属性、timestamp 数据类型、具有NULL属性或者有一个默认值。
对于具有identity属性
的列,其值由系统给出,用户不必往表中插入数据。
4.在SELECT语句中DISTINCT、ORDER BY、GROUP BY和HA VING子句的功能各是什么?[难度↓]
【解】各子句的功能如下。
DISTINCT:查询唯一结果。
ORDER BY:使查询结果有序显示。
GROUP BY:对查询结果进行分组。
HA VING:筛选分组结果。
5.在一个SELECT语句中,当WHERE子句、GROUP BY子句和HA VING子句同时出现在一个查询中时,SQL的执行顺序如何?[难度↓↓]
【解】其执行顺序如下:
(1)执行WHERE子句,从表中选取行。
(2)由GROUP BY对选取的行进行分组。
(3)执行聚合函数。
(4)执行HA VING子句选取满足条件的分组。
8.内连接、外连接有什么区别?[难度↓]
【解】内连接是从结果中删除与其他被连接表中没有匹配行的所有行,因此内连接可能会丢失信息。
外连接会把内连接中删除原表中的一些行保留下来,保留哪些行由外连接的类型决定。
9.外连接分为左外连接、右外连接和全外连接,它们有什么区别?[难度↓]【解】左外连接从结果中保留第一个表的所有行,但只包含第二个表中与第一个表匹配的行,第二个表相应的空行被放入NULL值。
右外连接从结果中保留第二个表的所有行,但只包含第一个表中与第二个表匹配的行,第一个表相应的空行被放入NULL值。
全外连接会把两个表所有行都显示在结果中,并尽可能多地匹配数据和连接条件。
12.给出以下T-SQL语句的输出结果[难度↓↓]
SELECT student.姓名,course.课程号,score.分数
FROM student,course,score
WHERE student.学号=score.学号AND course.课程号=score.课程号
ORDER BY student.学号,course.课程号
【解】先按照学号,学号相同时再按照课程号从小到大的顺序显示学生的姓名,考试的课程号及分数。
14.给出以下T-SQL语句的输出结果[难度↓↓]
USE school
SELECT course.课程名,A VG(score.分数) AS '平均分'
FROM course,score
WHERE course.课程号=score.课程号AND score.分数IS NOT NULL
GROUP BY course.课程名
HA VING A VG(score.分数)>80
【解】查询平均分高于80分的课程名和该门课程的平均分
16.给出以下T-SQL语句的输出结果[难度↓↓]
USE school
SELECT a.班号,a.姓名,score.课程号,score.分数
FROM student a,score
WHERE a.学号=score.学号AND score.分数=
(SELECT MAX(score.分数)
FROM student b,score
WHERE b.学号=score.学号AND b.班号=a.班号)
【解】查询各班课程考试最高分的学生的姓名,所在班号,课程号及分数22.编写一个程序,输出所有学生的学号和平均分,并以平均分递增排序。
[难度↓↓]
【解】对应的程序如下:
USE school
GO
SELECT 学号,A VG(分数) AS '平均分'
FROM score
GROUP BY 学号
ORDER BY A VG(分数)
GO
程序运行结果如下:
24.编写一个程序,输出所有同学参加考试的课程的信息。
[难度↓↓]
【解】对应的程序如下:
USE school
GO
SELECT *
FROM course
WHERE EXISTS
(SELECT 课程号FROM score
WHERE course.课程号=score.课程号AND 分数IS NOT NULL)
GO
程序运行结果如下:
26.编写一个程序,查询所有成绩高于该课程平均分的记录,且按课程号有序排列。
[难度↓↓↓]
【解】对应的程序如下:
USE school
GO
SELECT *
FROM score a
WHERE 分数> (SELECT A VG(分数) FROM score b WHERE a.课程号=b.课程号)
ORDER BY 课程号
GO
程序执行结果如下:。