数据库系统原理教程课后习题及答案(第八章)
数据库原理及应用第八章课后习题答案
![数据库原理及应用第八章课后习题答案](https://img.taocdn.com/s3/m/0b14e299680203d8cf2f2406.png)
习题81、什么是数据库的安全性?数据库的安全性是指数据库的任何数据都不允许受到恶意的侵害或未经授权的存取或修改。
主要内涵包括三个方面:①保密性:不允许未经授权的用户存取数据。
②完整性:只允许被授权的用户修改数据。
③可用性:不应拒绝已授权的用户对数据进行存取。
2、什么是数据库的完整性?数据库的完整性是指数据库中数据的正确性和一致性。
数据库的完整性对数据库应用系统非常重要。
3、什么是数据库的完整性约束条件?为了保证数据库中的数据完整性,SQL Server设计了很多数据完整性约束:实体完整性、域完整性、参照完整性、用户定义完整性。
4、DBMS的完整性控制机制应具有哪些功能?1)数据库的完整性约束能够防止合法用户向数据库中添加不合语义的数据。
2)完整性控制机制易于理解,可以降低应用程序的复杂性,提高运行效率。
3)合理的数据完整性设计,能够兼顾数据库的完整性和系统的性能。
完善的数据库完整性,有助于尽早发现应用程序的错误。
5、DBMS在实现参照完整性时需要考虑哪些方面?强制参照完整性时,SQL Server将防止用户执行下列操作:1)在主表中没有关联的记录时,将记录添加或更改到相关表中。
2)更改主表中的值,导致相关表中生成孤立记录。
3)从主表中删除记录,但仍存在于该记录匹配的相关记录。
6、在关系系统中,当操作违反实体完整性、参照完整性和用户定义完整性约束条件时,一般是如何处理的?系统可以采用以下的策略加以处理:1)拒绝(NO ACTION)执行:不允许该操作执行,该策略一般为默认策略。
2)级联(CASCADE)操作:当删除或修改被参照表的一个元组造成了与参照表不一致,则删除或修改参照表中的所有造成不一致的元组。
3)设置为空值(SET-NULL):当删除或修改被参照表的一个元组造成了与参照表不一致,则将参照表中的所有造成不一致的元组的对应属性设置为空值。
7、数据库安全性和计算机系统的安全性有什么关系?计算机系统中,安全措施是一级一级层层设置。
数据库原理课后习题答案
![数据库原理课后习题答案](https://img.taocdn.com/s3/m/691eb302590216fc700abb68a98271fe910eaf89.png)
数据库原理课后习题答案码:工程号+材料号操作异常:数据冗余,插入异常,删除异常,修改异常分析原因:(工程号,材料号)?开工日期工程号?开工日期存在部分函数依赖,不满足2NF(工程号,材料号)?单价材料号?单价存在部分函数依赖,不满足2NF分解为:R1(工程号,材料号,数量)R2(材料号,单价)R3(工程号,开工日期,完工日期)第七章一、试说明事务的概念及四个特征。
答:事务是用户定义的数据操作系列,这些操作可作为一个完整的工作单元一个事务内的所有语句被作为一个整体,要么全部执行,要么全部不执行。
四个特征:原子性、一致性、隔离性和持续性三、在数据库中为什么要有并发控制机制?答:数据库系统一个明显的特点是多个用户共享数据库资源,尤其是多个用户可以同时存取相同数据。
在这样的系统中,在同一时刻同时运行的事务可达数百个。
若对多用户的并发操作不加控制,就会造成数据库存、取的错误,破坏数据的一致性和完整性。
所以数据库中要有并发控制机制。
四、并发控制的措施是什么?答:在数据库环境下,进行并发控制的主要方式是使用封锁机制,即加锁。
具体的控制由锁的类型决定。
基本的锁类型有两种:排它锁(X锁)和共享锁(S锁)。
共享锁:若事务T给数据对象A加了S锁,则事务T可以读A,但不能修改A,其他事务只能再给A加S锁,而不能加X锁,直到T释放了A上的S锁为止。
排他锁:若事务T给数据对象A加了X锁,则允许T读取和修改A,但不允许其他事务再给A加任何类型的锁和进行任何操作。
五、设有3个事务:T1、T2和T3,其所包含的动作为:T1:A=A+2T2:A=A某2T3:A=A某某2设A的初值为1,若这三个事务运行并行执行,则可能的调度策略有几种?A最终的结果分别是什么?答:6种策略。
分别是T1T2T3,T1T3T2,T2T1T3,T2T3T1,T3T1T2,T3T2T1结果分别是六、当一些事务对段数据加了S锁之后,在此事务释放锁之前,其他事物还可以对此段数据添加什么锁?答:S锁七、什么是死锁?如何预防死锁?答:如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁数据R2,由于T2已经封锁了数据R2,因此T1等待T2释放R2上的锁,然后T2又请求封锁数据R1,由于T1封锁了数据R1,因此T2也只能等待T1释放R1上的锁.这样就会出现T1等待T2先释放R2上的锁,而T2又等待T1先释放R1上的锁的局面,此时T1和T2都在等待对方先释放锁,因而形成死锁。
数据库系统原理课后习题参考答案
![数据库系统原理课后习题参考答案](https://img.taocdn.com/s3/m/62a5ead276c66137ef061936.png)
答案仅供参考第一章数据库系统概述选择题B、B、A简答题1、请简述数据,数据库,数据库管理系统,数据库系统得概念。
P27数据就是描述事物得记录符号,就是指用物理符号记录下来得,可以鉴别得信息。
数据库即存储数据得仓库,严格意义上就是指长期存储在计算机中得有组织得、可共享得数据集合。
数据库管理系统就是专门用于建立与管理数据库得一套软件,介于应用程序与操作系统之间。
数据库系统就是指在计算机中引入数据库技术之后得系统,包括数据库、数据库管理系统及相关实用工具、应用程序、数据库管理员与用户。
2、请简述早数据库管理技术中,与人工管理、文件系统相比,数据库系统得优点。
数据共享性高数据冗余小易于保证数据一致性数据独立性高可以实施统一管理与控制减少了应用程序开发与维护得工作量3、请简述数据库系统得三级模式与两层映像得含义。
P31答:数据库得三级模式就是指数据库系统就是由模式、外模式与内模式三级工程得,对应了数据得三级抽象。
两层映像就是指三级模式之间得映像关系,即外模式/模式映像与模式/内模式映像。
4、请简述关系模型与网状模型、层次模型得区别。
P35使用二维表结构表示实体及实体间得联系建立在严格得数学概念得基础上概念单一,统一用关系表示实体与实体之间得联系,数据结构简单清晰,用户易懂易用存取路径对用户透明,具有更高得数据独立性、更好得安全保密性。
第二章关系数据库选择题C、C、D简答题1、请简述关系数据库得基本特征。
P48答:关系数据库得基本特征就是使用关系数据模型组织数据。
2、请简述什么就是参照完整性约束。
P55答:参照完整性约束就是指:若属性或属性组F就是基本关系R得外码,与基本关系S得主码K相对应,则对于R中每个元组在F上得取值只允许有两种可能,要么就是空值,要么与S中某个元组得主码值对应。
3、请简述关系规范化过程。
答:对于存在数据冗余、插入异常、删除异常问题得关系模式,应采取将一个关系模式分解为多个关系模式得方法进行处理。
数据库系统原理04735课后习题参考答案
![数据库系统原理04735课后习题参考答案](https://img.taocdn.com/s3/m/08516356be1e650e52ea996c.png)
数据库系统原理课后习题第一章. 数据库系统基本概念1.1.名词解释DB——DB是长期存储在计算机内、有组织的、统一管理的相关数据的集合。
DB能为各种用户共享,具有较小冗余度、数据间联系紧密而又有较高的数据独立性等特点。
DBMS——是位于用户与操作系统之间的一层数据管理软件,它为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。
DBS——是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统,即它是采用数据库技术的计算机系统。
联系——是实体间的相互关系。
联系的元数——与一个联系有关的实体集个数。
1:1联系——如果实体集E1中每个实体至多和实体集E2中一个实体有联系,反之亦然,那么实体集E1和E2的联系称为“一对一联系”,记为“1:1”。
1:N联系——如果实体集E1中的每个实体可以与实体集E2中的任意个(0个或多个)实体有联系,而E2中的每个实体至多和E1中的一个实体有联系,那么称E1对E2的联系是一对多联系,记作:“1:N ”。
M:N联系——如果实体集E1中的每个实体可以与实体集E2中的任意个(0个或多个)实体有联系,反之亦然,那么称E1和E2的联系是“多对多联系”,记作“M:N”。
数据模型——在数据库技术中,我们用数据模型的概念描述数据库的结构和语义,对现实世界的数据进行抽象。
根据数据抽象级别定义了四种模型:概念数据模型、逻辑数据模型、外部数据模型和内部数据模型。
概念模型——表达用户需求观点的数据全局逻辑结构的模型。
逻辑模型——表达计算机实现观点的DB全局逻辑结构的模型。
主要有层次、网状、关系模型等三种。
外部模型——表达用户使用观点的DB局部逻辑结构的模型。
内部模型——表达DB物理结构的模型。
层次模型——用树型(层次)结构表示实体类型及实体间联系的数据模型。
网状模型——用有向图结构表示实体类型及实体间联系的数据模型。
关系模型——是由若干个关系模式组成的集合。
数据库系统概论习题集第八章数据库并发控制
![数据库系统概论习题集第八章数据库并发控制](https://img.taocdn.com/s3/m/8f857871dcccda38376baf1ffc4ffe473368fde9.png)
数据库系统概论习题集第⼋章数据库并发控制第⼋章数据库并发控制 ⼀、选择题 1.为了防⽌⼀个⽤户的⼯作不适当地影响另⼀个⽤户,应该采取()。
A. 完整性控制B. 访问控制C. 安全性控制D. 并发控制 2. 解决并发操作带来的数据不⼀致问题普遍采⽤()技术。
A. 封锁B. 存取控制C. 恢复D. 协商 3.下列不属于并发操作带来的问题是()。
A. 丢失修改B. 不可重复读C. 死锁D. 脏读 4. DBMS普遍采⽤()⽅法来保证调度的正确性。
A. 索引B. 授权C. 封锁D. ⽇志 5.事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放,这是()。
A. ⼀级封锁协议B. ⼆级封锁协议C. 三级封锁协议D. 零级封锁协议 6.如果事务T获得了数据项Q上的排他锁,则T对Q()。
A. 只能读不能写B. 只能写不能读C. 既可读⼜可写D. 不能读也不能写 7.设事务T1和T2,对数据库中地数据A进⾏操作,可能有如下⼏种情况,请问哪⼀种不会发⽣冲突操作()。
A. T1正在写A,T2要读A B. T1正在写A,T2也要写A C. T1正在读A,T2要写A D. T1正在读A,T2也要读A 8.如果有两个事务,同时对数据库中同⼀数据进⾏操作,不会引起冲突的操作是()。
A. ⼀个是DELETE,⼀个是SELECT B. ⼀个是SELECT,⼀个是DELETE C. 两个都是UPDATE D. 两个都是SELECT 9.在数据库系统中,死锁属于()。
A. 系统故障B. 事务故障C. 介质故障D. 程序故障 选择题答案: (1) D (2) A (3) C (4) C (5) A (6) C (7) D (8) D (9) B ⼆、简答题 1. 在数据库中为什么要并发控制? 答:数据库是共享资源,通常有许多个事务同时在运⾏。
当多个事务并发地存取数据库时就会产⽣同时读取和/或修改同⼀数据的情况。
若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的⼀致性。
数据库原理与应用教程第四版 第八章答案
![数据库原理与应用教程第四版 第八章答案](https://img.taocdn.com/s3/m/62e6facd767f5acfa0c7cd71.png)
免责声明:私人学习之余整理,如有错漏,概不负责1.简述数据库设计过程。
需求分析、结构设计、行为设计、数据库实施、数据库库运行和维护2.数据库结构设计包含哪几个过程?概念结构、逻辑结构和物理机构3.需求分析中发现事实的方法有哪些?检查文档、面谈、观察业务的运转、研究、问卷调查4.数据库概念结构设计有哪些特点?丰富的语义表达能力、易于交流和理解、易于更改、易于向各种数据模型转换5.什么是数据库的逻辑结构设计?简述其设计步骤。
将概念设计产生的概念模型转换为具体的数据库管理系统支持的组织层数据模型概念结构转换为关系数据模型、对关系数据模型进行优化、设计面向用户的外模式6.把E-R模型转换为关系模式的转换规则有哪些?1)一个实体转换为一个关系模式2)1对1联系可以转换为独立的关系模式,也可以与任意一端对应的关系模式合并3)1对多联系可以转换为独立的关系模式,也可以与多端所对应的关系模式合并4)多对多联系必须转换为独立的关系模式5)三个或三个以上实体间的多元联系可以转换为一个关系模式6)具有相同主码的关系模式可以合并7.数据模型的优化包含哪些方法?1)确定各属性间的函数依赖关系2)对各个关系模式之间的书依赖进行极小化处理,消除冗余联系3)判断每个关系模式的范式,根据实际需要确定最合适的范式4)根据需求分析阶段得到的处理要求,确定是否对某些模式进行分解或合并8.合并为一个E-R图,转为符合第三范式的关系模式,说明主码外码关系模式如下(主码有下划线):职工(职工编号,姓名,性别,年龄,职务,部门)外码:部门部门(部门号,部门名,电话,地点)设备(设备号,名称,规格,价格,部门)外码:部门零件(零件号,零件名,规格,价格)厂商(厂商号,厂商名,电话,地址)生产表(厂商号,零件号,生产日期)外码:厂商号,零件号装备表(设备号,零件号,零件数量)外码:设备号,零件号9.建立描述顾客在商店的购物情况的数据库应用系统,该系统有如下要求:商店和顾客多对多,顾客每次购物有购物金额和购物日期,,每个客户每天在每个商店最多一次购物。
(完整word版)数据库原理与应用教程 何玉洁 五——八章课后习题部分答案
![(完整word版)数据库原理与应用教程 何玉洁 五——八章课后习题部分答案](https://img.taocdn.com/s3/m/d783c057e2bd960590c677ef.png)
第五章一、试说明使用视图的好处。
答:1、简化数据查询语句2、使用户能从多角度看待同一数据3、提高了数据的安全性4、提供了一定程度的逻辑独立性二、使用视图可以加快数据的查询速度,这句话对吗?为什么?答:不对。
因为数据库管理系统在对视图进行查询时,首先检查要查询的视图是否存在,如果存在,则从数据字典中提取视图的定义,把视图的定义语句对视图语句结合起来,转换成等价的对基本表的查询,然后再执行转换后的查询,所以使用视图不可以加快数据的查询速度。
三、利用第3章建立的Student、Course和SC表,写出创建满足下述要求的视图的SQL语句。
(1)查询学生的学号、姓名、所在系、课程号、课程名、课程学分。
答:CREATE VIEW IS_S_CASSELECT Sno,Sname,Sdept,Cno,Cname,CreditFROM Student S JOIN SC ON S.Sno=SC.SnoJOIN Course C ON o=o四、利用第三题建立的视图,完成如下查询:(1)查询考试成绩大于等于90分的学生的姓名、课程号和成绩。
答:SELECT Sname,Cno,GradeFROM IS_SCWHERE Grade>=90五、修改第三题(4)定义的视图,使其查询每个学生的学号,总学分以及总的选课门数。
答:ALTER VIEW IS_CCASSELECT Sno,COUNT(Credit),COUNT(Cno)FROM SC JOIN Course C ON o=oGROUP BY Sno第六章一、关系规范化中的操作异常有哪些?它是由什么引起的?解决的方法是什么?答:操作异常:数据冗余问题、数据更新问题、数据插入问题和数据删除问题。
它是由关系模式中某些属性之间存在的“不良”的函数依赖关系一起的。
解决的方法是进行模式分解,即把一个关系模式分解成两个或多个关系模式,在分解的过程中消除那些“不良”的函数依赖,从而获得良好的关系模式。
(完整版)数据库系统基础教程第八章答案
![(完整版)数据库系统基础教程第八章答案](https://img.taocdn.com/s3/m/1baf29960740be1e640e9a47.png)
Section 1Exercise 8.1.1a)CREATE VIEW RichExec ASSELECT * FROM MovieExec WHERE netWorth >= 10000000;b)CREATE VIEW StudioPres (name, address, cert#) ASSELECT , MovieExec.address, MovieExec.cert# FROM MovieExec, Studio WHERE MovieExec.cert# = Studio.presC#;c)CREATE VIEW ExecutiveStar (name, address, gender, birthdate, cert#, netWorth) AS SELECT , star.address, star.gender, star.birthdate, exec.cert#, WorthFROM MovieStar star, MovieExec exec WHERE = ANDstar.address = exec.address;Exercise 8.1.2a)SELECT name from ExecutiveStar WHERE gender = ‘f’;b)SELECT from RichExec, StudioPres where = ;c)SELECT from ExecutiveStar, StudioPresWHERE Worth >= 50000000 ANDStudioPres.cert# = RichExec.cert#;Section 2Exercise 8.2.1The views RichExec and StudioPres are updatable; however, the StudioPres view needs to be created with a subquery.CREATE VIEW StudioPres (name, address, cert#) ASSELECT , MovieExec.address, MovieExec.cert# FROM MovieExecWHERE MovieExec.cert# IN (SELECT presCt# from Studio);Exercise 8.2.2a) Yes, the view is updatable.b)CREATE TRIGGER DisneyComedyInsertINSTEAD OF INSERT ON DisneyComediesREFERENCING NEW ROW AS NewRowFOR EACH ROWINSERT INTO Movies(title, year, length, studioName, genre)VALUES(NewRow.title, NewRow.year, NewYear.length, ‘Disney’, ‘comedy’);c)CREATE TRIGGER DisneyComedyUpdateINSTEAD OF UPDATE ON DisneyComediesREFERENCING NEW ROW AS NewRowFOR EACH ROWUPDATE Movies SET length NewRow.lengthWHERE title = NewRow.title AND year = NEWROW.year ANDstudionName = ‘Disney’ AND genre = ‘comedy’;Exercise 8.2.3a) No, the view is not updatable since it is constructed from two different relations.b)CREATE TRIGGER NewPCInsertINSTEAD OF INSERT ON NewPCREFERENCING NEW ROW AS NewRowFOR EACH ROW(INSERT INTO Product VALUES(NewRow.maker, NewRow.model, ‘pc’))(INSERT INTO PC VALUES(NewRow.model, NewRow.speed, NewRow.ram, NewRow.hd, NewRow.price));c)CREATE TRIGGER NewPCUpdateINSTEAD OF UPDATE ON NewPCREFERENCING NEW ROW AS NewRowFOR EACH ROWUPDATE PC SET price = NewPC.price where model = NewPC.model;d)CREATE TRIGGER NewPCDeleteINSTEAD OF DELETE ON NeePCREFERENCING OLD ROW AS OldRowFOR EACH ROW(DELETE FROM Product WHERE model = OldRow.model)(DELETE FROM PC where model = OldRow.model);Section 3Exercise 8.3.1a)CREATE INDEX NameIndex on Studio(name);b)CREATE INDEX AddressIndex on MovieExec(address);c)CREATE INDEX GenreIndex on Movies(genre, length);Section 4Exercise 8.4.1Exercise 8.4.2Q1 = SELECT * FROM Ships WHERE name = n;Q2 = SELECT * FROM Ships WHERE class = c;Q3 = SELECT * FROM Ships WHERE launched = y;I = InsertsIndexesNone Name Class Launched Name & Name & Class & ThreeSection 5Exercise 8.5.1Updates to movies that involves title or yearUPDATE MovieProd SET title = ‘newTitle’ where title=’oldTitle’ AND year = oldYear; UPDATE MovieProd SET year = newYear where title=’oldYitle’ AND year = oldYear;Update to MovieExec involving cert#DELETE FROM MovieProdWHERE (title, year) IN (SELECT title, yearFROM Movies, MovieExecWHERE cert# = oldCert# AND cert# = producerC#);INSERT INTO MovieProdSELECT title, year, nameFROM Movies, MovieExecWHERE cert# = newCert# AND cert# = producerC#;Exercise 8.5.2Insertions, deletions, and updates to the base tables Product and PC would require a modification of the materialized view.Insertions into Product with type equal to ‘pc’:INSERT INTO NewPCSELECT maker, model, speed, ram, hd, price FROM Product, PC WHEREProduct.model = newModel and Product.model = PC.model;Insertions into PC:INSERT INTO NewPCSELECT maker, ‘newModel’, ‘newSpeed’, ‘newRam’, ‘newHd’, ‘newPrice’FROM Product WHERE model = ‘newModel’;Deletions from Product with type equal to ‘pc’:DELETE FROM NewPC WHERE maker = ‘deletedMaker’ AND model=’deletedModel’; Deletions from PC:DELETE FROM NewPC WHERE model = ‘deletedModel’;Updates to PC:Update NewPC SET speed=PC.speed, ram=PC.ram, hd=PC.hd, price=PC.price FROM PC where model=pc.model;Update to the attribute ‘model’ needs to be treated as a delete and an insert. Updates to Product:Any changes to a Product tuple whose type is ‘pc’ need to be treated as a delete or an insert, or both.Exercise 8.5.3Modifications to the base tables that would require a modification to the materialized view: inserts and deletes from Ships, deletes from class, updates to a Class’ displacement. Deletions from Ship:UPDATE ShipStats SETdisplacement=((displacement * count) –(SELECT displacementFROM ClasssesWHERE class = ‘DeletedShipClass’)) / (count – 1),count = count – 1WHEREcountry = (SELECT country FROM C lasses WHERE class=’DeletedShipClass’); Insertions into Ship:Update ShipStat SETdisplacement=((displacement*count) +(SELECT displacement FROM ClassesWHERE class=’InsertedShipClass’)) / (count + 1),count = count + 1WHEREcountry = (SELECT country FROM Classes WHERE classes=’InsertedShipClass); Deletes from Classes:NumRowsDeleted = SELECT count(*) FROM ships WHERE class = ‘DeletedClass’; UPDATE ShipStats SETdisplacement = (displacement * count) - (DeletedClassDisplacement *NumRowsDeleted)) / (count – NumRowsDeleted),count = count – NumRowsDeletedWHERE country = ‘DeletedClassCountry’;Update to a Class’ displacement:N = SELECT count(*) FROM Ships where class = ‘UpdatedClass’;UPDATE ShipsStat SETdisplacement = ((displacement * count) + ((oldDisplacement – newDisplacement) * N))/countWHEREc ountry = ‘UpdatedClassCountry’;Exercise 8.5.4Queries that can be rewritten with the materialized view:Names of stars of movies produced by a certain producerSELECT starNameFROM StarsIn, Movies, MovieExecWHERE movieTitle = title AND movieYear = year AND producerC# = cert# AND name = ‘Max Bialystock’;Movies produced by a certain producerSELECT title, yearFROM Movies, MovieExecWhere produce rC# = cert# AND name = ‘George Lucas’;Names of producers that a certain star has worked withSELECT nameFROM Movies, MovieExec, StarsInWhere producerC#=cert# AND title=movieTitle AND year=movieYear AND starName=’Carrie Fisher’;The number of movies produced by given producerSELECT count(*)FROM Movies, MovieExecWHER E producerC#=cert# AND name = ‘George Lucas‘;Names of producers who also starred in their own moviesSELECT nameFROM Movies, StarsIn, MovieExecWHERE producerC#=cert# AND movieTitle = title AND movieYear = year AND = starName;The number of stars that have starred in movies produced by a certain producer SELECT count(DISTINCT starName)FROM Movies, StarsIn, MovieExecWHERE producerC#=cert# AND movieTitle = title AND movieYear = year AND n ame ‘George Lucas’;The number of movies produced by each producerSELECT name, count(*)FROM Movies, MovieExecWHERE producerC#=cert# GROUP BY name。
数据库系统原理教程课后习题及答案(第八章)
![数据库系统原理教程课后习题及答案(第八章)](https://img.taocdn.com/s3/m/1fa90d4f767f5acfa1c7cdc5.png)
第8章关系查询处理和查询优化1 .试述查询优化在关系数据库系统中的重要性和可能性。
答:重要性:关系系统的查询优化既是RDBMS 实现的关键技术又是关系系统的优点所在。
它减轻了用户选择存取路径的负担。
用户只要提出“干什么”,不必指出“怎么干”。
查询优化的优点不仅在于用户不必考虑如何最好地表达查询以获得较好的效率,而且在于系统可以比用户程序的“优化’夕做得更好。
可能性:这是因为:( l )优化器可以从数据字典中获取许多统计信息,例如关系中的元组数、关系中每个属性值的分布情况、这些属性上是否有索引、是什么索引(B +树索引还是HASH 索引或惟一索引或组合索引)等。
优化器可以根据这些信息选择有效的执行计划,而用户程序则难以获得这些信息。
( 2 )如果数据库的物理统计信息改变了,系统可以自动对查询进行重新优化以选择相适应的执行计划。
在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。
( 3 )优化器可以考虑数十甚至数百种不同的执行计划,从中选出较优的一个,而程序员一般只能考虑有限的几种可能性。
( 4 )优化器中包括了很多复杂的优化技术,这些优化技术往往只有最好的程序员才能掌握。
系统的自动优化相当于使得所有人都拥有这些优化技术。
2 .对学生一课程数据库有如下的查询:SEI 王CT Cn 即ne FROM Student , Cou 拐e , SC WHERE Student . Sno = SC . Sno AND SC . Cllo = Coll 拐e . Cllo AND Stu 击nt . Sdept = ! 15 ! ; 此查询要求信息系学生选修了的所有课程名称。
试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标准语法树。
答:3 .试述查询优化的一般准则。
答:下面的优化策略一般能提高查询效率:( l )选择运算应尽可能先做;( 2 )把投影运算和选择运算同时进行;( 3 )把投影同其前或其后的双目运算结合起来执行;( 4 )把某些选择同在它前面要执行的笛卡儿积结合起来成为一个连接运算;( 5 )找出公共子表达式;( 6 )选取合适的连接算法。
数据库系统概论 第七到八章 习题及答案
![数据库系统概论 第七到八章 习题及答案](https://img.taocdn.com/s3/m/98f6c41559eef8c75fbfb39a.png)
第七、八章习题一、选择题:1.下面哪个不是数据库系统必须提供的数据控制功能____。
A.安全性B.可移植性C.完整性D.并发控制答案:B2.保护数据库,防止未经授权的或不合法的使用造成的数据泄漏、更改破坏。
这是指数据的____。
A.安全性B.完整性C.并发控制D.恢复答案:A3.数据库的____是指数据的正确性和相容性。
A.安全性B.完整性C.并发控制D.恢复答案:B4.在数据系统中,对存取权限的定义称为____。
A.命令B.授权C.定义D.审计答案:B5.数据库管理系统通常提供授权功能来控制不同用户访问数据的权限,这主要是为了实现数据库的____。
A.可靠性B.一致性C.完整性D.安全性答案:D6.授权编译系统和合法性检查机制一起组成了____子系统。
A.安全性B.完整性C.并发控制D.恢复答案:A7.____是DBMS的基本单位,它是用户定义的一组逻辑一致的程序序列。
A.程序B.命令C.事务D.文件答案:C8.事务的原子性是指____。
A.事务中包括的所有操作要么都做,要么都不做B.事务一旦提交,对数据库的改变是永久的C.一个事务内部的操作及使用的数据对并发的其他事务是隔离的D.事务必须是使数据库从一个一致性状态变到另一个一致性状态答案:A9.事务是数据库进行的基本工作单位。
如果一个事务执行成功,则全部更新提交;如果一个事务执行失败,则已做过的更新被恢复原状,好像整个事务从未有过这些更新,这样保持了数据库处于____状态。
A.安全性B.一致性C.完整性D.可靠性答案:B10.事务的一致性是指____。
A.事务中包括的所有操作要么都做,要么都不做B.事务一旦提交,对数据库的改变是永久的C.一个事务内部的操作及使用的数据对并发的其他事务是隔离的D.事务必须是使数据库从一个一致性状态变到另一个一致性状态答案:D11.事务的隔离性是指____。
A.事务中包括的所有操作要么都做,要么都不做B.事务一旦提交,对数据库的改变是永久的C.一个事务内部的操作及使用的数据对并发的其他事务是隔离的D.事务必须是使数据库从一个一致性状态变到另一个一致性状态答案:C12.事务的持续性是指____。
数据库系统原理参考答案
![数据库系统原理参考答案](https://img.taocdn.com/s3/m/d3d46f2faaea998fcc220e10.png)
第一章习题参考答案1.名词解释:数据、数据库、数据库管理系统、数据库系统、关系数据库管理系统。
数据:用来记录或者标识事物本质特征的符号。
具体包括文本、图形、图像、音频、视频、动画等数据。
数据库:长期储存在计算机内的有组织的、统一的、共享的、结构化的、通用化的、综合性的数据的集合。
数据库管理系统:位于用户与操作系统之间,提供给用户实现数据库的定义、操纵和运行管理的数据管理软件,从而科学地组织和存储数据、高效地获取和维护数据。
数据库系统:在计算机系统中引入数据库后,由数据库、数据库管理系统、数据库应用系统、数据库设计员、数据库管理员和用户等构成的完整的计算机系统。
DBS的核心是数据库管理系统,DBMS是用户与数据库的接口关系数据库系统:支持关系数据库技术的数据库系统。
2.简述数据库管理系统的功能。
数据定义DDL;数据操纵DML;数据控制DCL(安全性、完整性、并发控制和数据恢复);数据接口;数据组织和存储;事务和运行管理等。
从而确保数据的安全、完整、并发和恢复。
3.简述数据库系统的组成和特点。
组成:DBS硬件(计算机硬件、数据库硬件和网络硬件等)、DBS软件(操作系统、DBMS、程序设计主语言、数据库专用开发工具和数据库应用系统等)和人员(数据库设计员、数据库分析员、数据库管理员、数据库程序员和用户)等组成。
特点:数据结构化组织、永久储存和统一管理;数据共享;冗余度小;独立性高;容易扩展等。
4.常用的数据模型有哪些?简述数据模型的三个要素。
类型:层次模型(最早);网状模型;关系模型(目前流行);面向对象模型(20世纪80年代引入OOP)。
要素:数据结构;数据操作;完整性约束。
5.简述DBA的职责。
决定数据库的信息内容和结构;决定数据库的存储结构和存取策略;定义数据的安全性和完整性;监控数据库的使用和运行;数据库的改进和重组重构。
6.简述数据库技术发展的三个基本阶段。
人工管理;文件系统;数据库系统7.试述文件系统与数据库系统的区别。
数据库系统原理(2018年版)课后习题参考答案解析
![数据库系统原理(2018年版)课后习题参考答案解析](https://img.taocdn.com/s3/m/160c7d23bb68a98270fefa1c.png)
第三代数据库系统必须保持或集成第二代数据库系统技术
第三代数据库系统必须对其他系统开放
2.描述数据仓库粒度的概念P182
粒度是指数据仓库数据单位中保存数据的细化或综合程度
3.描述数据挖掘技术的能P183
概念描述
关联分析
分类与预测
聚类
孤立点检测
趋势和演变分析
视图的内容是由存储在数据库中进行查询操作的SQL语句定义的,它的列数据与行数据均来自于定义视图的查询所引用的基本表。
视图不适宜数据集的形式存储在数据库中的,它所对应的数据实际上是存储在视图所引用的基本表中的。
视图是用来查看存储在别处的数据的一种虚拟表,本身不存储数据。
第五章 数据库编程
简答题
1.请简述存储过程的概念P125
答:参照完整性约束是指:若属性或属性组F是基本关系R的外码,与基本关系S的主码K相对应,则对于R中每个元组在F上的取值只允许有两种可能,要么是空值,要么与S中某个元组的主码值对应。
3.请简述关系规范化过程。
答:对于存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式,这就是所谓的规范化过程。
数据库系统是指在计算机中引入数据库技术之后的系统,包括数据库、数据库管理系统及相关实用工具、应用程序、数据库管理员和用户。
2.请简述早数据库管理技术中,与人工管理、文件系统相比,数据库系统的优点。
数据共享性高
数据冗余小
易于保证数据一致性
数据独立性高
可以实施统一管理与控制
减少了应用程序开发与维护的工作量
数据库原理课后习题及解答(常用版)
![数据库原理课后习题及解答(常用版)](https://img.taocdn.com/s3/m/68597f0bfab069dc5122012d.png)
数据库原理课后习题及解答(常用版)(可以直接使用,可编辑完整版资料,欢迎下载)《数据库原理》课后习题及解答课后习题:第一章第二章第三章第四章第五章第六章第七章第八章第九章习题答案:第一章第二章第三章第四章第五章第六章第七章第八章第九章第一章概论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所示的医院组织。
数据库系统原理教程课后习题答案
![数据库系统原理教程课后习题答案](https://img.taocdn.com/s3/m/b167f8b9e518964bce847c7f.png)
第1章绪论1 .试述数据、数据库、数据库系统、数据库管理系统的概念。
答:( l )数据(Data ) :描述事物的符号记录称为数据。
数据的种类有数字、文字、图形、图像、声音、正文等。
数据与其语义是不可分的。
解析在现代计算机系统中数据的概念是广义的。
早期的计算机系统主要用于科学计算,处理的数据是整数、实数、浮点数等传统数学中的数据。
现代计算机能存储和处理的对象十分广泛,表示这些对象的数据也越来越复杂。
数据与其语义是不可分的。
500 这个数字可以表示一件物品的价格是500 元,也可以表示一个学术会议参加的人数有500 人,还可以表示一袋奶粉重500 克。
( 2 )数据库(DataBase ,简称DB ) :数据库是长期储存在计算机内的、有组织的、可共享的数据集合。
数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
( 3 )数据库系统(DataBas 。
Sytem ,简称DBS ) :数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。
解析数据库系统和数据库是两个概念。
数据库系统是一个人一机系统,数据库是数据库系统的一个组成部分。
但是在日常工作中人们常常把数据库系统简称为数据库。
希望读者能够从人们讲话或文章的上下文中区分“数据库系统”和“数据库”,不要引起混淆。
( 4 )数据库管理系统(DataBase Management sytem ,简称DBMs ) :数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。
DBMS 的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。
解析DBMS 是一个大型的复杂的软件系统,是计算机中的基础软件。
目前,专门研制DBMS 的厂商及其研制的DBMS 产品很多。
课后习题答案第8章
![课后习题答案第8章](https://img.taocdn.com/s3/m/2f546542df80d4d8d15abe23482fb4daa58d1d14.png)
课后习题答案第8章1. 概述第8章是XXX课程的课后习题答案,本文档将为大家提供第8章的课后习题答案,以帮助同学们复习和加深对知识点的理解。
2. 习题答案2.1 问题1问题描述:请列举出几种数据库管理系统(DBMS)的类型,并且给出它们的特点。
答案:•关系型数据库管理系统(RDBMS):以关系模型为基础的数据库管理系统,使用表格的形式来组织数据,支持SQL语言进行数据操作。
具有数据一致性、可靠性高等特点。
•非关系型数据库管理系统(NoSQL):相对于关系型数据库,NoSQL数据库采用非关系型的数据组织方式,更加适用于大规模分布式存储和处理。
具有高可扩展性、灵活性等特点。
•面向对象数据库管理系统(OODBMS):将对象概念引入数据库系统,将对象作为数据库的主要组织单位,支持面向对象的数据库操作和查询。
具有数据隐蔽性、可重用性等特点。
•XML数据库管理系统(XML-DBMS):以XML标准为基础的数据库管理系统,可以存储和管理XML格式的数据。
具有对XML数据的高效操作和查询能力。
2.2 问题2问题描述:请解释什么是数据库索引,它的作用是什么?答案:数据库索引是对数据库表中一列或多列的值进行排序的一种数据结构,它可以快速地定位到具有特定值的数据记录。
索引可以加快数据库的查询速度,减少数据扫描的时间。
具体而言,索引的作用包括:•提高数据库查询的效率:索引可以根据索引键值快速定位到数据记录,加快查询速度。
•减少磁盘I/O的需求:通过使用索引,数据库可以减少需要扫描的数据块数量,从而减少磁盘I/O的次数。
•保证数据的唯一性:索引可以设置为唯一索引,确保某一列的值在表中是唯一的。
•支持表之间的关联:通过使用外键和关联索引,数据库可以实现表之间的关联和连接操作。
2.3 问题3问题描述:请解释什么是数据库事务,它的特点是什么?答案:数据库事务是一组数据库操作的逻辑单元,它被视为一个不可分割的工作单位,要么全部执行成功,要么全部回滚。
(完整版)数据库系统基础教程第八章答案
![(完整版)数据库系统基础教程第八章答案](https://img.taocdn.com/s3/m/1baf29960740be1e640e9a47.png)
Section 1Exercise 8.1.1a)CREATE VIEW RichExec ASSELECT * FROM MovieExec WHERE netWorth >= 10000000;b)CREATE VIEW StudioPres (name, address, cert#) ASSELECT , MovieExec.address, MovieExec.cert# FROM MovieExec, Studio WHERE MovieExec.cert# = Studio.presC#;c)CREATE VIEW ExecutiveStar (name, address, gender, birthdate, cert#, netWorth) AS SELECT , star.address, star.gender, star.birthdate, exec.cert#, WorthFROM MovieStar star, MovieExec exec WHERE = ANDstar.address = exec.address;Exercise 8.1.2a)SELECT name from ExecutiveStar WHERE gender = ‘f’;b)SELECT from RichExec, StudioPres where = ;c)SELECT from ExecutiveStar, StudioPresWHERE Worth >= 50000000 ANDStudioPres.cert# = RichExec.cert#;Section 2Exercise 8.2.1The views RichExec and StudioPres are updatable; however, the StudioPres view needs to be created with a subquery.CREATE VIEW StudioPres (name, address, cert#) ASSELECT , MovieExec.address, MovieExec.cert# FROM MovieExecWHERE MovieExec.cert# IN (SELECT presCt# from Studio);Exercise 8.2.2a) Yes, the view is updatable.b)CREATE TRIGGER DisneyComedyInsertINSTEAD OF INSERT ON DisneyComediesREFERENCING NEW ROW AS NewRowFOR EACH ROWINSERT INTO Movies(title, year, length, studioName, genre)VALUES(NewRow.title, NewRow.year, NewYear.length, ‘Disney’, ‘comedy’);c)CREATE TRIGGER DisneyComedyUpdateINSTEAD OF UPDATE ON DisneyComediesREFERENCING NEW ROW AS NewRowFOR EACH ROWUPDATE Movies SET length NewRow.lengthWHERE title = NewRow.title AND year = NEWROW.year ANDstudionName = ‘Disney’ AND genre = ‘comedy’;Exercise 8.2.3a) No, the view is not updatable since it is constructed from two different relations.b)CREATE TRIGGER NewPCInsertINSTEAD OF INSERT ON NewPCREFERENCING NEW ROW AS NewRowFOR EACH ROW(INSERT INTO Product VALUES(NewRow.maker, NewRow.model, ‘pc’))(INSERT INTO PC VALUES(NewRow.model, NewRow.speed, NewRow.ram, NewRow.hd, NewRow.price));c)CREATE TRIGGER NewPCUpdateINSTEAD OF UPDATE ON NewPCREFERENCING NEW ROW AS NewRowFOR EACH ROWUPDATE PC SET price = NewPC.price where model = NewPC.model;d)CREATE TRIGGER NewPCDeleteINSTEAD OF DELETE ON NeePCREFERENCING OLD ROW AS OldRowFOR EACH ROW(DELETE FROM Product WHERE model = OldRow.model)(DELETE FROM PC where model = OldRow.model);Section 3Exercise 8.3.1a)CREATE INDEX NameIndex on Studio(name);b)CREATE INDEX AddressIndex on MovieExec(address);c)CREATE INDEX GenreIndex on Movies(genre, length);Section 4Exercise 8.4.1Exercise 8.4.2Q1 = SELECT * FROM Ships WHERE name = n;Q2 = SELECT * FROM Ships WHERE class = c;Q3 = SELECT * FROM Ships WHERE launched = y;I = InsertsIndexesNone Name Class Launched Name & Name & Class & ThreeSection 5Exercise 8.5.1Updates to movies that involves title or yearUPDATE MovieProd SET title = ‘newTitle’ where title=’oldTitle’ AND year = oldYear; UPDATE MovieProd SET year = newYear where title=’oldYitle’ AND year = oldYear;Update to MovieExec involving cert#DELETE FROM MovieProdWHERE (title, year) IN (SELECT title, yearFROM Movies, MovieExecWHERE cert# = oldCert# AND cert# = producerC#);INSERT INTO MovieProdSELECT title, year, nameFROM Movies, MovieExecWHERE cert# = newCert# AND cert# = producerC#;Exercise 8.5.2Insertions, deletions, and updates to the base tables Product and PC would require a modification of the materialized view.Insertions into Product with type equal to ‘pc’:INSERT INTO NewPCSELECT maker, model, speed, ram, hd, price FROM Product, PC WHEREProduct.model = newModel and Product.model = PC.model;Insertions into PC:INSERT INTO NewPCSELECT maker, ‘newModel’, ‘newSpeed’, ‘newRam’, ‘newHd’, ‘newPrice’FROM Product WHERE model = ‘newModel’;Deletions from Product with type equal to ‘pc’:DELETE FROM NewPC WHERE maker = ‘deletedMaker’ AND model=’deletedModel’; Deletions from PC:DELETE FROM NewPC WHERE model = ‘deletedModel’;Updates to PC:Update NewPC SET speed=PC.speed, ram=PC.ram, hd=PC.hd, price=PC.price FROM PC where model=pc.model;Update to the attribute ‘model’ needs to be treated as a delete and an insert. Updates to Product:Any changes to a Product tuple whose type is ‘pc’ need to be treated as a delete or an insert, or both.Exercise 8.5.3Modifications to the base tables that would require a modification to the materialized view: inserts and deletes from Ships, deletes from class, updates to a Class’ displacement. Deletions from Ship:UPDATE ShipStats SETdisplacement=((displacement * count) –(SELECT displacementFROM ClasssesWHERE class = ‘DeletedShipClass’)) / (count – 1),count = count – 1WHEREcountry = (SELECT country FROM C lasses WHERE class=’DeletedShipClass’); Insertions into Ship:Update ShipStat SETdisplacement=((displacement*count) +(SELECT displacement FROM ClassesWHERE class=’InsertedShipClass’)) / (count + 1),count = count + 1WHEREcountry = (SELECT country FROM Classes WHERE classes=’InsertedShipClass); Deletes from Classes:NumRowsDeleted = SELECT count(*) FROM ships WHERE class = ‘DeletedClass’; UPDATE ShipStats SETdisplacement = (displacement * count) - (DeletedClassDisplacement *NumRowsDeleted)) / (count – NumRowsDeleted),count = count – NumRowsDeletedWHERE country = ‘DeletedClassCountry’;Update to a Class’ displacement:N = SELECT count(*) FROM Ships where class = ‘UpdatedClass’;UPDATE ShipsStat SETdisplacement = ((displacement * count) + ((oldDisplacement – newDisplacement) * N))/countWHEREc ountry = ‘UpdatedClassCountry’;Exercise 8.5.4Queries that can be rewritten with the materialized view:Names of stars of movies produced by a certain producerSELECT starNameFROM StarsIn, Movies, MovieExecWHERE movieTitle = title AND movieYear = year AND producerC# = cert# AND name = ‘Max Bialystock’;Movies produced by a certain producerSELECT title, yearFROM Movies, MovieExecWhere produce rC# = cert# AND name = ‘George Lucas’;Names of producers that a certain star has worked withSELECT nameFROM Movies, MovieExec, StarsInWhere producerC#=cert# AND title=movieTitle AND year=movieYear AND starName=’Carrie Fisher’;The number of movies produced by given producerSELECT count(*)FROM Movies, MovieExecWHER E producerC#=cert# AND name = ‘George Lucas‘;Names of producers who also starred in their own moviesSELECT nameFROM Movies, StarsIn, MovieExecWHERE producerC#=cert# AND movieTitle = title AND movieYear = year AND = starName;The number of stars that have starred in movies produced by a certain producer SELECT count(DISTINCT starName)FROM Movies, StarsIn, MovieExecWHERE producerC#=cert# AND movieTitle = title AND movieYear = year AND n ame ‘George Lucas’;The number of movies produced by each producerSELECT name, count(*)FROM Movies, MovieExecWHERE producerC#=cert# GROUP BY name。
(完整版)数据库系统基础教程第八章答案
![(完整版)数据库系统基础教程第八章答案](https://img.taocdn.com/s3/m/a06c0eaea21614791611280b.png)
Section 1Exercise 8.1.1a)CREATE VIEW RichExec ASSELECT * FROM MovieExec WHERE netWorth >= 10000000;b)CREATE VIEW StudioPres (name, address, cert#) ASSELECT , MovieExec.address, MovieExec.cert# FROM MovieExec, Studio WHERE MovieExec.cert# = Studio.presC#;c)CREATE VIEW ExecutiveStar (name, address, gender, birthdate, cert#, netWorth) AS SELECT , star.address, star.gender, star.birthdate, exec.cert#, WorthFROM MovieStar star, MovieExec exec WHERE = ANDstar.address = exec.address;Exercise 8.1.2a)SELECT name from ExecutiveStar WHERE gender = ‘f’;b)SELECT from RichExec, StudioPres where = ; c)SELECT from ExecutiveStar, StudioPresWHERE Worth >= 50000000 ANDStudioPres.cert# = RichExec.cert#;Section 2Exercise 8.2.1The views RichExec and StudioPres are updatable; however, the StudioPres view needs to be created with a subquery.CREATE VIEW StudioPres (name, address, cert#) ASSELECT , MovieExec.address, MovieExec.cert# FROM MovieExec WHERE MovieExec.cert# IN (SELECT presCt# from Studio);Exercise 8.2.2a) Yes, the view is updatable.b)CREATE TRIGGER DisneyComedyInsertINSTEAD OF INSERT ON DisneyComediesREFERENCING NEW ROW AS NewRowFOR EACH ROWINSERT INTO Movies(title, year, length, studioName, genre)VALUES(NewRow.title, NewRow.year, NewYear.length, ‘Disney’, ‘comedy’);c)CREATE TRIGGER DisneyComedyUpdateINSTEAD OF UPDATE ON DisneyComediesREFERENCING NEW ROW AS NewRowFOR EACH ROWUPDATE Movies SET length NewRow.lengthWHERE title = NewRow.title AND year = NEWROW.year ANDstudionName = ‘Disney’ AND genre = ‘comedy’;Exercise 8.2.3a) No, the view is not updatable since it is constructed from two different relations.b)CREATE TRIGGER NewPCInsertINSTEAD OF INSERT ON NewPCREFERENCING NEW ROW AS NewRowFOR EACH ROW(INSERT INTO Product VALUES(NewRow.maker, NewRow.model, ‘pc’))(INSERT INTO PC VALUES(NewRow.model, NewRow.speed, NewRow.ram, NewRow.hd, NewRow.price));c)CREATE TRIGGER NewPCUpdateINSTEAD OF UPDATE ON NewPCREFERENCING NEW ROW AS NewRowFOR EACH ROWUPDATE PC SET price = NewPC.price where model = NewPC.model;d)CREATE TRIGGER NewPCDeleteINSTEAD OF DELETE ON NeePCREFERENCING OLD ROW AS OldRowFOR EACH ROW(DELETE FROM Product WHERE model = OldRow.model)(DELETE FROM PC where model = OldRow.model);Section 3Exercise 8.3.1a)CREATE INDEX NameIndex on Studio(name);b)CREATE INDEX AddressIndex on MovieExec(address);c)CREATE INDEX GenreIndex on Movies(genre, length);Section 4Exercise 8.4.1Action No Index Star Index Movie Index Both Indexes Q110041004Q210010044I2446 Average 2 + 98p1 + 98p2 4 + 96 p2 4 + 96 p1 6 – 2 p1 – 2 p2 Exercise 8.4.2Q1 = SELECT * FROM Ships WHERE name = n;Q2 = SELECT * FROM Ships WHERE class = c;Q3 = SELECT * FROM Ships WHERE launched = y;I = InsertsIndexes Actions None Name Class Launched Name &ClassName &LaunchedClass &LaunchedThreeIndexesQ1502505022502 Q21121212 2 Q35050502650262626 I24446668Average 2 +48p1 -p2 +48p34 +46 p3- 2 p1- 3 p24 +46p1 -2p2 +46p34 + 46p1- 3p2 +22p36 - 4p1- 4p2 +44p36 - 4p1 -5p2 + 20p36 - 44p1 -4p2 + 20p38 - 6p1 -6p2 + 18p3The best choice of indexes (name and launched) has an average cost of 6 - 4p1 - 5p2 + 20p3 per operation.Section 5Exercise 8.5.1Updates to movies that involves title or yearUPDATE MovieProd SET title = ‘newTitle’ where title=’oldTitle’ AND year = oldYear; UPDATE MovieProd SET year = newYear where title=’oldYitle’ AND year = oldYear; Update to MovieExec involving cert#DELETE FROM MovieProdWHERE (title, year) IN (SELECT title, yearFROM Movies, MovieExecWHERE cert# = oldCert# AND cert# = producerC#);INSERT INTO MovieProdSELECT title, year, nameFROM Movies, MovieExecWHERE cert# = newCert# AND cert# = producerC#;Exercise 8.5.2Insertions, deletions, and updates to the base tables Product and PC would require a modification of the materialized view.Insertions into Product with type equal to ‘pc’:INSERT INTO NewPCSELECT maker, model, speed, ram, hd, price FROM Product, PC WHEREProduct.model = newModel and Product.model = PC.model;Insertions into PC:INSERT INTO NewPCSELECT maker, ‘newModel’, ‘newSpeed’, ‘newRam’, ‘newHd’, ‘newPrice’FROM Product WHERE model = ‘newModel’;Deletions from Product with type equal to ‘pc’:DELETE FROM NewPC WHERE maker = ‘deletedMaker’ ANDmodel=’deletedModel’;Deletions from PC:DELETE FROM NewPC WHERE model = ‘deletedModel’;Updates to PC:Update NewPC SET speed=PC.speed, ram=PC.ram, hd=PC.hd, price=PC.price FROM PC where model=pc.model;Update to the attribute ‘model’ needs to be treated as a delete and an insert. Updates to Product:Any changes to a Product tuple whose type is ‘pc’ need to be treated as a delete or an insert, or both.Exercise 8.5.3Modifications to the base tables that would require a modification to the materialized view: inserts and deletes from Ships, deletes from class, updates to a Class’ displacement. Deletions from Ship:UPDATE ShipStats SETdisplacement=((displacement * count) –(SELECT displacementFROM ClasssesWHERE class = ‘DeletedShipClass’)) / (count – 1),count = count – 1WHEREcountry = (SELECT country FROM Classes WHERE class=’DeletedShipClass’); Insertions into Ship:Update ShipStat SETdisplacement=((displacement*count) +(SELECT displacement FROM ClassesWHERE class=’InsertedShipClass’)) / (count + 1),count = count + 1WHEREcountry = (SELECT country FROM Classes WHERE classes=’InsertedShipClass); Deletes from Classes:NumRowsDeleted = SELECT count(*) FROM ships WHERE class = ‘DeletedClass’; UPDATE ShipStats SETdisplacement = (displacement * count) - (DeletedClassDisplacement *NumRowsDeleted)) / (count – NumRowsDeleted),count = count – NumRowsDeletedWHERE country = ‘DeletedClassCountry’;Update to a Class’ displacement:N = SELECT count(*) FROM Ships where class = ‘UpdatedClass’;UPDATE ShipsStat SETdisplacement = ((displacement * count) + ((oldDisplacement – newDisplacement) * N))/countWHEREcountry = ‘UpdatedClassCountry’;Exercise 8.5.4Queries that can be rewritten with the materialized view:Names of stars of movies produced by a certain producerSELECT starNameFROM StarsIn, Movies, MovieExecWHERE movieTitle = title AND movieYear = year AND producerC# = cert# AND name = ‘Max Bialystock’;Movies produced by a certain producerSELECT title, yearFROM Movies, MovieExecWhere producerC# = cert# AND name = ‘George Lucas’;Names of producers that a certain star has worked withSELECT nameFROM Movies, MovieExec, StarsInWhere producerC#=cert# AND title=movieTitle AND year=movieYear AND starName=’Carrie Fisher’;The number of movies produced by given producerSELECT count(*)FROM Movies, MovieExecWHERE producerC#=cert# AND name = ‘George Lucas‘;Names of producers who also starred in their own moviesSELECT nameFROM Movies, StarsIn, MovieExecWHERE producerC#=cert# AND movieTitle = title AND movieYear = year AND = starName;The number of stars that have starred in movies produced by a certain producer SELECT count(DISTINCT starName)FROM Movies, StarsIn, MovieExecWHERE producerC#=cert# AND movieTitle = title AND movieYear = year AND name ‘George Lucas’;The number of movies produced by each producerSELECT name, count(*)FROM Movies, MovieExecWHERE producerC#=cert# GROUP BY name。
数据库原理与应用系列第八章习题(含答案)
![数据库原理与应用系列第八章习题(含答案)](https://img.taocdn.com/s3/m/39b4f72b82c4bb4cf7ec4afe04a1b0717fd5b362.png)
第八章习题(答案)班级:学号: 姓名:1.填空题(1)SQL Server 有两种安全认证模式,即___WINDOWS_______________安全认证模式和______混合______安全认证模式。
(2)SQL SERVER安装好以后,只有2个已经创建的用户:___SA_______和BULTIN/administrators,它们都是超级用户,对数据库拥有一切权限。
(3)数据库的完整性是指数据的___正确性___和___相容性____。
(4)按数据库状态,数据转储分为动态转储和静态转储。
(5)按数据转储方式,数据转储分为海量转储和增量转储。
2.单选题(1)日志文件用于记录( D )。
A、程序运行过程B、数据操作C、程序运行结果D、对数据的更新操作(2)SQL的COMMIT语句的主要作用是( C )。
A、终止程序B、中断程序C、事务提交D、事务回退(3)SQL的ROLLBACK语句的主要作用是( D )。
A、终止程序B、中断程序C、事务提交D、事务回退(4)在数据库系统中,对存取权限的定义称为(B)。
A、命令B、授权C、定义D、审计(5)设有两个事务T1,T2,其并发操作如下表所示,下面评价正确的是(C )。
A、该操作不存在问题B、该操作丢失修改C、该操作不能重复读D、该操作读“脏”数据(6)设有两个事务T1,T2,其并发操作如下表所示,下面评价正确的是(B )。
A、该操作不存在问题B、该操作丢失修改C、该操作不能重复读D、该操作读“脏”数据(7)A、该操作不存在问题B、该操作丢失修改C、该操作不能重复读D、该操作读“脏”数据(8)若事务T对数据对象A加上S锁,则( C )A、事务T可以读A和修改A,其他事务只能再对A加S锁,而不能加X锁B、事务T可以读A但不能修改A,其他事务能对A加S锁和X锁C、事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁D、事务T可以读A和修改A,其他事务能对A加S锁和X锁(9)若事务T对数据对象A加上X锁,则( C )A、事务T可以读A和修改A,其他事务不能对A加X锁B、事务T可以修改A,其他事务不能对A加X锁C、事务T可以读A和修改A,其他事务都不能再对A加任何类型的锁D、事务T修改A,其他事务都不能再对A加任何类型的锁(10)数据库中的封锁机制是( C )的主要方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第8章关系查询处理和查询优化
1 .试述查询优化在关系数据库系统中的重要性和可能性。
答:重要性:关系系统的查询优化既是RDBMS 实现的关键技术又是关系系统的优点所在。
它减轻了用户选择存取路径的负担。
用户只要提出“干什么”,不必指出“怎么干”。
查询优化的优点不仅在于用户不必考虑如何最好地表达查询以获得较好的效率,而且在于系统可以比用户程序的“优化’夕做得更好。
可能性:这是因为:( l )优化器可以从数据字典中获取许多统计信息,例如关系中的元组数、关系中每个属性值的分布情况、这些属性上是否有索引、是什么索引(B +树索引还是HASH 索引或惟一索引或组合索引)等。
优化器可以根据这些信息选择有效的执行计划,而用户程序则难以获得这些信息。
( 2 )如果数据库的物理统计信息改变了,系统可以自动对查询进行重新优化以选择相适应的执行计划。
在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。
( 3 )优化器可以考虑数十甚至数百种不同的执行计划,从中选出较优的一个,而程序员一般只能考虑有限的几种可能性。
( 4 )优化器中包括了很多复杂的优化技术,这些优化技术往往只有最好的程序员才能掌握。
系统的自动优化相当于使得所有人都拥有这些优化技术。
2 .对学生一课程数据库有如下的查询:SEI 王CT Cn 即ne FROM Student , Cou 拐e , SC WHERE Student . Sno = SC . Sno AND SC . Cllo = Coll 拐e . Cllo AND Stu 击nt . Sdept = ! 15 ! ; 此查询要求信息系学生选修了的所有课程名称。
试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标准语法树。
答:
3 .试述查询优化的一般准则。
答:下面的优化策略一般能提高查询效率:( l )选择运算应尽可能先做;( 2 )把投影运算和选择运算同时进行;( 3 )把投影同其前或其后的双目运算结合起来执行;( 4 )把某些选择同在它前面要执行的笛卡儿积结合起来成为一个连接运算;( 5 )找出公共子表达式;( 6 )选取合适的连接算法。
4 .试述查询优化的一般步骤。
答:各个关系系统的优化方法不尽相同,大致的步骤可以归纳如下:( l )把查询转换成某种内部表示,通常用的内部表示是语法树。
( 2 )把语法树转换成标准(优化)形式。
即利用优化算法,把原始的语法树转换成优化的形式。
( 3 )选择低层的存取路径。
( 4 )生成查询计划,选择代价最小的。