数据库第六章习题答案

合集下载

数据库原理课后答案第六章

数据库原理课后答案第六章

第6章数据库设计一、选择题1、下列对数据库应用系统设计的说法中正确的是应用程序员可以不必参与数据库的概念结构设计2、在需求分析阶段,常用数据流图描述用户单位的业务流程。

3、下列对E-R图设计的说法中错误的是集成后所得的E-R图中可能存在冗余数据和冗余联系,应予以全部清除4、下列属于逻辑结构设计阶段任务的是将E-R图转换为一组关系模式5、将一个一对多联系型转换为一个独立关系模式时,应取多端实体型的关键属性为关键字。

6、将一个M对N(M>N)的联系型转换成关系模式时,应转换为一个独立的关系模式7、在从E-R图到关系模式的转化过程中,下列说法错误的是关系模式的规范化程度越高,查询的效率就越高8、对数据库的物理设计优劣评价的重点是时空效率A.B.动态和静态性能C.用户界面的友好性D.成本和效益9、下列不属于数据库物理结构设计阶段任务的是确定选用的DBMS10、确定数据的存储结构和存取方法时,下列策略中将表和索引存储在同一磁盘上不利于提高查询效率。

二、填空题1、在设计分E-R图时,由于各个子系统分别面向不同的应用,所以各个分E-R图之间难免存在冲突,这些冲突主要包括_命名冲突_、_属性冲突_和_结构冲突_三类。

2、数据字典中的_数据项_是不可再分的数据单位。

3、若在两个局部E-R图中都有实体“零件”的“重量”属性,而所用重量单位分别为公斤和克,则称这两个E-R图存在_属性_冲突。

4、设有E-R图如图6.18,其中实体“学生”的关键属性是“学号”,实体“课程”的关键属性是“课程编码”,设将其中联系“选修”转换为关系模式R,则R的关键字应为属性集_学号与课程编码__。

5、确定数据库的物理结构主要包括三方面内容,即:_确定数据存放位置和存储结构_、_确定数据存取方法_和_系统配置_。

6、将关系R中在属性A上具有相同值的元组集中存放在连续的物理块上,称为对关系R基于属性A进行_聚簇_。

7、数据库设计的重要特点之一要把_结构(数据)_设计和__行为(处理)_设计密切结合起来,并以_结构(数据)_为核心而展开。

数据库基础及其应用第六章课后作业

数据库基础及其应用第六章课后作业

第六章Access数据库管理系统的简单应用二、单选题1.Access数据库是(C)。

A.层状数据库 B.网状数据库 C.关系型数据库 D.树状数据库2.Access数据库文件的扩展名是(D)。

A.dbf B.dbt C.mdf D.mdb3.数据库文件中包含有(D)对象。

A.表 B.查询 C.窗体 D.以上都包含4.如果某一字段数据型为文本型,字段大小为8,该字段中最多可输入(B)个汉字。

A.8 B.4 C.16 D.325.如果字段内容为声音文件,可将此字段定义为(C)类型。

A.文本 B.查询向导 C.OLE对象 D.备注6.一般情况下,以下哪个字段可以作为主关键字(D)。

A.基本工资 B.职称 C.姓名 D.身份证号码7.下面有关主键的叙述正确的是(B)。

A.不同的记录可以具有重复的主键值或空值 B.一个表中的主键可以是一个或多个字段C.在一个表中的主键只可以是一个字段D.表中的主键的数据类型必须定义为自动编号或文本8.创建表之间的关系时,正确的操作是(B)。

A.关闭当前打开的表 B.打开要建立关系的表 C.关闭所有打开的表 D.关闭与之无关的表9.Access用户操作界面由(B)部分组成。

A.4 B.5 C.3 D.610.Access中包含有(C)个数据库对象。

A.5 B.6 C.7 D.811.下列(B)图标是Access的标志。

A. B. C. D.12.下列(B)图标是Access中查询对象的标志。

A. B. C. D.13.下列(D)图标是Access中新建查询的标志。

A. B. C. D.14.在设计Access数据表时,“索引”属性有(C)个取值。

A.1 B.2 C.3 D.415.字段说明用于对字段作进一步的描述,该说明显示在(A)上。

A.状态栏 B.工具栏 C.菜单栏 D.标题栏16.在Access数据库中,数据保存在(D)对象中。

A.窗体B.查询C.报表D.表17.Access数据库中的“一对多”指的是(B)。

自考数据库系统原理课后答案

自考数据库系统原理课后答案

第六章课后习题答案6.2事务的COMMIT语句和ROLLBACK语句各做什么事情?p152答:COMMIT语句表示事务执行成功的完毕,此时告诉系统,数据库要进入一个新的正确状态,该事务对数据库的所有更新都已交付施行;ROLLBACK语句操作表示事务不成功的完毕,此时告诉系统,已发生错误,数据库可能处在不正确的状态,该事务对数据库的更新必须撤销,数据库应该恢复该事务到初始状态。

6.3试述事务的四个性质,并说明每一个性质由DBMS的哪个子系统实现?每一个性质对数据库系统有什么好处?答:原子性:一个事务对数据库的所有操作,是一个不可分割的工作单元,这些操作要么全部执行,要么什么也不做〔由DBMS的事务管理子系统来实现〕;一致性:一个事务独立执行的结果,应〔由DBMS的完好性子系统执行测试任务〕;隔离性〔由DBMS的并发控制子系统实现〕;持久性〔由DBMS的恢复管理子系统实现的〕。

6.4典型的数据库恢复策略是什么?答:〔1〕平时做好两件事转储和建立日志。

〔2〕一旦发生故障,分两种情况处理:一是假设数据库遇到灾难性故障,利用数据库备份和日志执库行redo已提交的事务,把数据库恢复到事故前的状态。

二是假设数据库只是破坏了数据的一致性,利用日志库undo不可靠的修改,redo已提交的缓冲区中的事务。

6.5 DBS中有哪些类型的故障?哪些故障破坏了数据库?哪些没有破坏DB,但其中的数据变的不正确?答:有事务故障〔不破坏数据库〕;系统故障〔为破坏数据库,但其中某些数据变得不正确〕;介质故障(破坏数据库)。

6.6 检查点机制的主要思想是什么?答:在DBS运行时,数据库管理系统定时设置检查点。

在检查点时刻才真正做到把对数据库的修改写到磁盘,并在日志文件上写入一条检查点记录〔以便恢复用〕数据库需要恢复时,只有在检查点后面的那些事务需要恢复,一般DBMS产品自动实行检查点操作,无须人为干预。

6.7 什么是undo操作和redo操作?为什么要这样设置?答:undo操作是反向扫描日志文件,撤销对数据库的更新操作,使数据库恢复到更新前的状态;Redo操作正向扫描日志文件,重新做一次更新,使数据库恢复到更新后的状态。

(完整版)数据库第六章答案

(完整版)数据库第六章答案

第六章6.1.1Attributes must be separated by commas. Thus here B is an alias of A.6.1.2a)SELECT address AS Studio_AddressFROM StudioWHERE NAME = 'MGM';b)SELECT birthdate AS Star_BirthdateFROM MovieStarWHERE name = 'Sandra Bullock';c)SELECT starNameFROM StarsInWHERE movieYear = 1980OR movieTitle LIKE '%Love%';However, above query will also return words that have the substring Love e.g. Lover. Below query will only return movies that have title containing the word Love.SELECT starNameFROM StarsInWHERE movieYear = 1980OR movieTitle LIKE 'Love %'OR movieTitle LIKE '% Love %'OR movieTitle LIKE '% Love'OR movieTitle = 'Love';d)SELECT name AS Exec_NameFROM MovieExecWHERE netWorth >= 10000000;e)SELECT name AS Star_NameFROM movieStarWHERE gender = 'M'OR address LIKE '% Malibu %';6.1.3a)SELECT model,speed,hdFROM PCWHERE price < 1000 ;MODEL SPEED HD----- ---------- ------1002 2.10 2501003 1.42 801004 2.80 2501005 3.20 2501007 2.20 2001008 2.20 2501009 2.00 2501010 2.80 3001011 1.86 1601012 2.80 1601013 3.06 8011 record(s) selected.b)SELECT model ,speed AS gigahertz,hd AS gigabytesFROM PCWHERE price < 1000 ;MODEL GIGAHERTZ GIGABYTES ----- ---------- ---------1002 2.10 2501003 1.42 801004 2.80 2501005 3.20 2501007 2.20 2001008 2.20 2501009 2.00 2501010 2.80 3001011 1.86 1601012 2.80 1601013 3.06 8011 record(s) selected.c)SELECT makerFROM ProductWHERE TYPE = 'printer' ; MAKER-----DDEEEHH7 record(s) selected.d)SELECT model,ram ,screenFROM LaptopWHERE price > 1500 ;MODEL RAM SCREEN----- ------ -------2001 2048 20.12005 1024 17.02006 2048 15.42010 2048 15.44 record(s) selected.e)SELECT *FROM PrinterWHERE color ;MODEL CASE TYPE PRICE----- ----- -------- ------3001 TRUE ink-jet 993003 TRUE laser 9993004 TRUE ink-jet 1203006 TRUE ink-jet 1003007 TRUE laser 2005 record(s) selected.Note: Implementation of Boolean type is optional in SQL standard (feature ID T031). PostgreSQL has implementation similar to above example. Other DBMS provide equivalent support. E.g. In DB2 the column type can be declare as SMALLINT with CONSTRAINT that the value can be 0 or 1. The result can be returned as Boolean type CHAR using CASE.CREATE TABLE Printer(model CHAR(4) UNIQUE NOT NULL,color SMALLINT ,type VARCHAR(8) ,price SMALLINT ,CONSTRAINT Printer_ISCOLOR CHECK(color IN(0,1)));SELECT model,CASE colorWHEN 1THEN 'TRUE'WHEN 0THEN 'FALSE'ELSE 'ERROR'END CASE ,type,priceFROM PrinterWHERE color = 1;f)SELECT model,hdFROM PCWHERE speed = 3.2AND price < 2000;MODEL HD----- ------1005 2501006 3202 record(s) selected.6.1.4a)SELECT class,countryFROM ClassesWHERE numGuns >= 10 ;CLASS COUNTRY ------------------ ------------Tennessee USA1 record(s) selected.b)SELECT name AS shipName FROM ShipsWHERE launched < 1918 ;SHIPNAME------------------HarunaHieiKirishimaKongoRamilliesRenownRepulseResolutionRevengeRoyal OakRoyal Sovereign11 record(s) selected.c)SELECT ship AS shipName, battleFROM Outcomes WHERE result = 'sunk' ; SHIPNAME BATTLE ------------------ ------------------Arizona Pearl Harbor Bismark Denmark Strait Fuso Surigao Strait Hood Denmark Strait Kirishima Guadalcanal Scharnhorst North Cape Yamashiro Surigao Strait 7 record(s) selected.d)SELECT name AS shipName FROM ShipsWHERE name = class ;SHIPNAME------------------IowaKongoNorth CarolinaRenownRevengeYamato6 record(s) selected.e)SELECT name AS shipNameFROM ShipsWHERE name LIKE 'R%';SHIPNAME------------------RamilliesRenownRepulseResolutionRevengeRoyal OakRoyal Sovereign7 record(s) selected.Note: As mentioned in exercise 2.4.3, there are some dangling pointers and to retrieve all ships a UNION of Ships and Outcomes is required.Below query returns 8 rows including ship named Rodney.SELECT name AS shipNameFROM ShipsWHERE name LIKE 'R%'UNIONSELECT ship AS shipNameFROM OutcomesWHERE ship LIKE 'R%';f) Only using a filter like '% % %' will incorrectly match name such as ' a b 'since % can match any sequence of 0 or more characters.SELECT name AS shipNameFROM ShipsWHERE name LIKE '_% _% _%' ;SHIPNAME------------------0 record(s) selected.Note: As in (e), UNION with results from Outcomes.SELECT name AS shipNameFROM ShipsWHERE name LIKE '_% _% _%'UNIONSELECT ship AS shipNameFROM OutcomesWHERE ship LIKE '_% _% _%' ;SHIPNAME------------------Duke of YorkKing George VPrince of Wales3 record(s) selected.6.1.5a)The resulting expression is false when neither of (a=10) or (b=20) is TRUE.a = 10b = 20 a = 10 OR b = 20NULL TRUE TRUETRUE NULL TRUEFALSE TRUE TRUETRUE FALSE TRUETRUE TRUE TRUEb)The resulting expression is only TRUE when both (a=10) and (b=20) are TRUE.a = 10b = 20 a = 10 AND b = 20TRUE TRUE TRUEc)The expression is always TRUE unless a is NULL.a < 10 a >= 10 a = 10 ANDb = 20TRUE FALSE TRUEFALSE TRUE TRUEd)The expression is TRUE when a=b except when the values are NULL.a b a = bNOT NULL NOT NULL TRUE when a=b; else FALSEe)Like in (d), the expression is TRUE when a<=b except when the values are NULL.a b a <= bNOT NULL NOT NULL TRUE when a<=b; else FALSE6.1.6SELECT *FROM MoviesWHERE LENGTH IS NOT NULL;6.2.1a)SELECT AS starNameFROM MovieStar M,StarsIn SWHERE = S.starNameAND S.movieTitle = 'Titanic'AND M.gender = 'M';b)SELECT S.starNameFROM Movies M ,StarsIn S,Studios TWHERE ='MGM'AND M.year = 1995AND M.title = S.movieTitleAND M.studioName = ;c)SELECT AS presidentNameFROM MovieExec X,Studio TWHERE X.cert# = T.presC#AND = 'MGM';d)SELECT M1.titleFROM Movies M1,Movies M2WHERE M1.length > M2.lengthAND M2.title ='Gone With the Wind' ;e)SELECT AS execNameFROM MovieExec X1,MovieExec X2WHERE Worth > WorthAND = 'Merv Griffin' ;6.2.2a)SELECT R.maker AS manufacturer, L.speed AS gigahertzFROM Product R,Laptop LWHERE L.hd >= 30AND R.model = L.model ; MANUFACTURER GIGAHERTZ ------------ ----------A 2.00A 2.16A 2.00B 1.83E 2.00E 1.73E 1.80F 1.60F 1.60G 2.0010 record(s) selected.b)SELECT R.model,P.priceFROM Product R,PC PWHERE R.maker = 'B'AND R.model = P.model UNIONSELECT R.model,L.priceFROM Product R,Laptop LWHERE R.maker = 'B'AND R.model = L.model UNIONSELECT R.model,T.priceFROM Product R,Printer TWHERE R.maker = 'B'AND R.model = T.model ;----- ------1004 6491005 6301006 10492007 14294 record(s) selected.c)SELECT R.makerFROM Product R,Laptop LWHERE R.model = L.model EXCEPTSELECT R.makerFROM Product R,PC PWHERE R.model = P.model ; MAKER-----FG2 record(s) selected.d)SELECT DISTINCT P1.hd FROM PC P1,PC P2WHERE P1.hd =P2.hdAND P1.model > P2.model ; Alternate Answer:SELECT DISTINCT P.hdFROM PC PGROUP BY P.hdHAVING COUNT(P.model) >= 2 ; e)SELECT P1.model,P2.modelFROM PC P1,PC P2WHERE P1.speed = P2.speedAND P1.ram = P2.ramAND P1.model < P2.model ; MODEL MODEL----- -----1004 10121 record(s) selected.f)FROM(SELECT maker,R.modelFROM PC P,Product RWHERE SPEED >= 3.0AND P.model=R.modelUNIONSELECT maker,R.modelFROM Laptop L,Product RWHERE speed >= 3.0AND L.model=R.model) MGROUP BY M.makerHAVING COUNT(M.model) >= 2 ; MAKER-----B1 record(s) selected.6.2.3a)SELECT FROM Ships S,Classes CWHERE S.class = C.classAND C.displacement > 35000; NAME------------------IowaMissouriMusashiNew JerseyNorth CarolinaWashingtonWisconsinYamato8 record(s) selected.b)SELECT ,C.displacement,C.numGunsFROM Ships S ,Outcomes O,Classes CWHERE = O.shipAND S.class = C.classAND O.battle = 'Guadalcanal' ;NAME DISPLACEMENT NUMGUNS------------------ ------------ -------Kirishima 32000 8Washington 37000 92 record(s) selected.Note:South Dakota was also engaged in battle of Guadalcanal but not chosen since it is not in Ships table(Hence, no information regarding it's Class is available).c)SELECT name shipNameFROM ShipsUNIONSELECT ship shipNameFROM Outcomes ;SHIPNAME------------------ArizonaBismarkCaliforniaDuke of YorkFusoHarunaHieiHoodIowaKing George VKirishimaKongoMissouriMusashiNew JerseyNorth CarolinaPrince of WalesRamilliesRenownRepulseResolutionRevengeRodneyRoyal OakRoyal SovereignScharnhorstSouth DakotaTenneseeTennesseeWashingtonWest VirginiaWisconsinYamashiroYamato34 record(s) selected.d)SELECT C1.countryFROM Classes C1,Classes C2WHERE C1.country = C2.country AND C1.type = 'bb'AND C2.type = 'bc' ; COUNTRY------------Gt. BritainJapan2 record(s) selected.e)SELECT O1.shipFROM Outcomes O1,Battles B1WHERE O1.battle = AND O1.result = 'damaged'AND EXISTS(SELECT B2.dateFROM Outcomes O2,Battles B2WHERE O2.battle= AND O1.ship = O2.shipAND B1.date < B2.date) ;SHIP------------------0 record(s) selected.f)SELECT O.battleFROM Outcomes O,Ships S ,Classes CWHERE O.ship = AND S.class = C.class GROUP BY C.country,O.battleHAVING COUNT(O.ship) > 3;SELECT O.battleFROM Ships S ,Classes C,Outcomes OWHERE C.Class = S.classAND O.ship = GROUP BY C.country,O.battleHAVING COUNT(O.ship) >= 3;6.2.4Since tuple variables are not guaranteed to be unique, every relation Ri should be renamed using an alias. Every tuple variable should be qualified with the alias. Tuple variables for repeating relations will also be distinctly identified this way.Thus the query will be likeSELECT A1.COLL1,A1.COLL2,A2.COLL1,…FROM R1 A1,R2 A2,…,Rn AnWHERE A1.COLL1=A2.COLC2,…6.2.5Again, create a tuple variable for every Ri, i=1,2,...,nThat is, the FROM clause isFROM R1 A1, R2 A2,...,Rn An.Now, build the WHERE clause from C by replacing every reference to some attribute COL1 of Ri by Ai.COL1. In addition apply Natural Join i.e. add condition to check equality of common attribute names between Ri and Ri+1 for all i from 0 to n-1. Also, build the SELECT clause from list of attributes L by replacing every attribute COLj of Ri by Ai.COLj.6.3.1a)SELECT DISTINCT makerFROM ProductWHERE model IN(SELECT modelFROM PCWHERE speed >= 3.0);SELECT DISTINCT R.makerFROM Product RWHERE EXISTS(SELECT P.modelFROM PC PWHERE P.speed >= 3.0AND P.model =R.model);b)SELECT P1.modelFROM Printer P1WHERE P1.price >= ALL(SELECT P2.priceFROM Printer P2) ;SELECT P1.modelFROM Printer P1WHERE P1.price IN(SELECT MAX(P2.price)FROM Printer P2) ;c)SELECT L.modelFROM Laptop LWHERE L.speed < ANY(SELECT P.speedFROM PC P) ;SELECT L.modelFROM Laptop LWHERE EXISTS(SELECT P.speedFROM PC PWHERE P.speed >= L.speed ) ;d)SELECT modelFROM(SELECT model,priceFROM PCUNIONSELECT model,priceFROM LaptopUNIONSELECT model,priceFROM Printer) M1WHERE M1.price >= ALL (SELECT priceFROM PCUNIONSELECT priceFROM LaptopUNIONSELECT priceFROM Printer) ;(d) – contd --SELECT modelFROM(SELECT model,priceFROM PCUNIONSELECT model,priceFROM LaptopUNIONSELECT model,priceFROM Printer) M1WHERE M1.price IN(SELECT MAX(price)FROM(SELECT priceFROM PCUNIONSELECT priceFROM LaptopUNIONSELECT priceFROM Printer) M2) ;e)SELECT R.makerFROM Product R,Printer TWHERE R.model =T.model AND T.price <= ALL(SELECT MIN(price)FROM Printer);SELECT R.makerFROM Product R,Printer T1WHERE R.model =T1.model AND T1.price IN(SELECT MIN(T2.price) FROM Printer T2);f)SELECT R1.makerFROM Product R1,PC P1WHERE R1.model=P1.model AND P1.ram IN(SELECT MIN(ram)FROM PC)AND P1.speed >= ALL(SELECT P1.speedFROM Product R1,PC P1WHERE R1.model=P1.model AND P1.ram IN(SELECT MIN(ram)FROM PC));SELECT R1.makerFROM Product R1,PC P1WHERE R1.model=P1.modelAND P1.ram =(SELECT MIN(ram)FROM PC)AND P1.speed IN(SELECT MAX(P1.speed)FROM Product R1,PC P1WHERE R1.model=P1.model AND P1.ram IN(SELECT MIN(ram)FROM PC));6.3.2a)SELECT C.countryFROM Classes CWHERE numGuns IN(SELECT MAX(numGuns)FROM Classes);SELECT C.countryFROM Classes CWHERE numGuns >= ALL(SELECT numGunsFROM Classes);b)SELECT DISTINCT C.class FROM Classes C,Ships SWHERE C.class = S.classAND EXISTS(SELECT shipFROM Outcomes OWHERE O.result='sunk'AND O.ship = ) ;SELECT DISTINCT C.class FROM Classes C,Ships SWHERE C.class = S.classAND IN(SELECT shipFROM Outcomes OWHERE O.result='sunk' ) ;c)SELECT FROM Ships SWHERE S.class IN(SELECT classFROM Classes CWHERE bore=16) ;SELECT FROM Ships SWHERE EXISTS(SELECT classFROM Classes CWHERE bore =16AND C.class = S.class );d)SELECT O.battleFROM Outcomes O WHERE O.ship IN(SELECT nameFROM Ships SWHERE S.Class ='Kongo' );SELECT O.battleFROM Outcomes O WHERE EXISTS(SELECT nameFROM Ships SWHERE S.Class ='Kongo' AND = O.ship );e)SELECT FROM Ships S,Classes CWHERE S.Class = C.ClassAND numGuns >= ALL(SELECT numGunsFROM Ships S2,Classes C2WHERE S2.Class = C2.Class AND C2.bore = C.bore) ;SELECT FROM Ships S,Classes CWHERE S.Class = C.ClassAND numGuns IN(SELECT MAX(numGuns)FROM Ships S2,Classes C2WHERE S2.Class = C2.Class AND C2.bore = C.bore) ;Better answer;SELECT FROM Ships S,Classes CWHERE S.Class = C.ClassAND numGuns >= ALL(SELECT numGunsFROM Classes C2WHERE C2.bore = C.bore) ;SELECT FROM Ships S,Classes CWHERE S.Class = C.ClassAND numGuns IN(SELECT MAX(numGuns)FROM Classes C2WHERE C2.bore = C.bore) ;6.3.3SELECT titleFROM MoviesGROUP BY titleHAVING COUNT(title) > 1 ;6.3.4SELECT FROM Ships S,Classes CWHERE S.Class = C.Class ;Assumption: In R1 join R2, the rows of R2 are unique on the joining columns. SELECT COLL12,COLL13,COLL14FROM R1WHERE COLL12 IN(SELECT COL22FROM R2)AND COLL13 IN(SELECT COL33FROM R3)AND COLL14 IN(SELECT COL44FROM R4) ...6.3.5(a)SELECT ,S.addressFROM MovieStar S,MovieExec EWHERE S.gender ='F'AND Worth > 10000000AND = AND S.address = E.address ;Note: As mentioned previously in the book, the names of stars are unique. However no such restriction exists for executives. Thus, both name and address are required as join columns.Alternate solution:SELECT name,addressFROM MovieStarWHERE gender = 'F'AND (name, address) IN(SELECT name,addressFROM MovieExecWHERE netWorth > 10000000) ;(b)SELECT name,addressFROM MovieStarWHERE (name,address) NOT IN(SELECT name addressFROM MovieExec) ;6.3.6By replacing the column in subquery with a constant and using IN subquery for the constant, statement equivalent to EXISTS can be found.i.e. replace "WHERE EXISTS (SELECT C1 FROM R1..)" by "WHERE 1 IN (SELECT 1 FROM R1...)"Example:SELECT DISTINCT R.makerFROM Product RWHERE EXISTS(SELECT P.modelFROM PC PWHERE P.speed >= 3.0AND P.model =R.model) ;Above statement can be transformed to below statement.SELECT DISTINCT R.makerFROM Product RWHERE 1 IN(SELECT 1FROM PC PWHERE P.speed >= 3.0AND P.model =R.model) ;6.3.7(a)n*m tuples are returned where there are n studios and m executives. Each studio will appear m times; once for every exec.(b)There are no common attributes between StarsIn and MovieStar; hence no tuples are returned.(c)There will be at least one tuple corresponding to each star in MovieStar. The unemployed stars will appear once with null values for StarsIn. All employed stars will appear as many times as the number of movies they are working in. In other words, for each tuple in StarsIn(starName), the correspoding tuple from MovieStar(name)) is joined and returned. For tuples in MovieStar that do not have a corresponding entry in StarsIn, the MovieStar tuple is returned with null values for StarsIn columns.6.3.8Since model numbers are unique, a full natural outer join of PC, Laptop and Printer will return one row for each model. We want all information about PCs, Laptops and Printers even if the model does not appear in Product but vice versa is not true. Thus a left natural outer join between Product and result above is required. The type attribute from Product must be renamed since Printer has a type attribute as well and the two attributes are different.(SELECT maker,model,type AS productTypeFROM Product) RIGHT NATURAL OUTER JOIN ((PC FULL NATURAL OUTER JOIN Laptop) FULL NATURAL OUTER JOIN Printer); Alternately, the Product relation can be joined individually with each of PC,Laptop and Printer and the three results can be Unioned together. For attributes that do not exist in one relation, a constant such as 'NA' or 0.0 can be used. Below is an example of this approach using PC and Laptop.SELECT R.MAKER ,R.MODEL ,R.TYPE ,P.SPEED ,P.RAM ,P.HD ,0.0 AS SCREEN,P.PRICEFROM PRODUCT R,PC PWHERE R.MODEL = P.MODELUNIONSELECT R.MAKER ,R.MODEL ,R.TYPE ,L.SPEED ,L.RAM ,L.HD ,L.SCREEN,L.PRICEFROM PRODUCT R,LAPTOP LWHERE R.MODEL = L.MODEL;6.3.9SELECT *FROM Classes RIGHT NATURALOUTER JOIN Ships ;6.3.10SELECT *FROM Classes RIGHT NATURALOUTER JOIN ShipsUNION(SELECT C2.class ,C2.type ,C2.country ,C2.numguns ,C2.bore ,C2.displacement,C2.class NAME ,FROM Classes C2,Ships S2WHERE C2.Class NOT IN(SELECT ClassFROM Ships)) ;6.3.11(a)SELECT *FROM R,S ;(b)Let Attr consist ofAttrR = attributes unique to RAttrS = attributes unique to SAttrU = attributes common to R and SThus in Attr, attributes common to R and S are not repeated. SELECT AttrFROM R,SWHERE R.AttrU1 = S.AttrU1AND R.AttrU2 = S.AttrU2 ...AND R.AttrUi = S.AttrUi ;(c)SELECT *FROM R,SWHERE C ;6.4.1(a)DISTINCT keyword is not required here since each model only occurs once in PC relation. SELECT modelFROM PCWHERE speed >= 3.0 ;(b)SELECT DISTINCT R.makerFROM Product R,Laptop LWHERE R.model = L.modelAND L.hd > 100 ;(c)SELECT R.model,P.priceFROM Product R,PC PWHERE R.model = P.modelAND R.maker = 'B'UNIONSELECT R.model,L.priceFROM Product R,Laptop LWHERE R.model = L.modelAND R.maker = 'B'UNIONSELECT R.model,T.priceFROM Product R,Printer TWHERE R.model = T.modelAND R.maker = 'B' ;(d)SELECT modelFROM PrinterWHERE color=TRUEAND type ='laser' ;(e)SELECT DISTINCT R.makerFROM Product R,Laptop LWHERE R.model = L.modelAND R.maker NOT IN(SELECT R1.makerFROM Product R1,PC PWHERE R1.model = P.model) ;better:SELECT DISTINCT R.makerFROM Product RWHERE R.type = 'laptop'AND R.maker NOT IN(SELECT R.makerFROM Product RWHERE R.type = 'pc') ;(f)With GROUP BY hd, DISTINCT keyword is not required. SELECT hdFROM PCGROUP BY hdHAVING COUNT(hd) > 1 ;(g)SELECT P1.model,P2.modelFROM PC P1,PC P2WHERE P1.speed = P2.speedAND P1.ram = P2.ramAND P1.model < P2.model ;(h)SELECT R.makerFROM Product RWHERE R.model IN(SELECT P.modelFROM PC PWHERE P.speed >= 2.8)OR R.model IN(SELECT L.modelFROM Laptop LWHERE L.speed >= 2.8)GROUP BY R.makerHAVING COUNT(R.model) > 1 ;(i)After finding the maximum speed, an IN subquery can provide the manufacturer name. SELECT MAX(M.speed)FROM(SELECT speedFROM PCUNIONSELECT speedFROM Laptop) M ;SELECT R.makerFROM Product R,PC PWHERE R.model = P.modelAND P.speed IN(SELECT MAX(M.speed)FROM(SELECT speedFROM PCUNIONSELECT speedFROM Laptop) M)UNIONSELECT R2.makerFROM Product R2,Laptop LWHERE R2.model = L.modelAND L.speed IN(SELECT MAX(N.speed)FROM(SELECT speedFROM PCUNIONSELECT speedFROM Laptop) N) ;Alternately,SELECT COALESCE(MAX(P2.speed),MAX(L2.speed),0) SPEEDFROM PC P2FULL OUTER JOIN Laptop L2ON P2.speed = L2.speed ;SELECT R.makerFROM Product R,PC PWHERE R.model = P.modelAND P.speed IN(SELECT COALESCE(MAX(P2.speed),MAX(L2.speed),0) SPEED FROM PC P2FULL OUTER JOIN Laptop L2ON P2.speed = L2.speed)UNIONSELECT R2.makerFROM Product R2,Laptop LWHERE R2.model = L.modelAND L.speed IN(SELECT COALESCE(MAX(P2.speed),MAX(L2.speed),0) SPEED FROM PC P2FULL OUTER JOIN Laptop L2ON P2.speed = L2.speed)(j)SELECT R.makerFROM Product R,PC PWHERE R.model = P.modelGROUP BY R.makerHAVING COUNT(DISTINCT speed) >= 3 ;(k)SELECT R.makerFROM Product R,PC PWHERE R.model = P.modelGROUP BY R.makerHAVING COUNT(R.model) = 3 ;better;SELECT R.makerFROM Product RWHERE R.type='pc'GROUP BY R.makerHAVING COUNT(R.model) = 3 ;6.4.2(a)We can assume that class is unique in Classes and DISTINCT keyword is not required.SELECT class,countryFROM ClassesWHERE bore >= 16 ;(b)Ship names are not unique (In absence of hull codes, year of launch can help distinguish ships).SELECT DISTINCT name AS Ship_NameFROM ShipsWHERE launched < 1921 ;(c)SELECT DISTINCT ship AS Ship_NameFROM OutcomesWHERE battle = 'Denmark Strait'AND result = 'sunk' ;(d)SELECT DISTINCT AS Ship_NameFROM Ships S,Classes CWHERE S.class = C.classAND C.displacement > 35000 ;(e)SELECT DISTINCT O.ship AS Ship_Name,C.displacement ,C.numGunsFROM Classes C ,Outcomes O,Ships SWHERE C.class = S.classAND = O.shipAND O.battle = 'Guadalcanal' ;SHIP_NAME DISPLACEMENT NUMGUNS------------------ ------------ -------Kirishima 32000 8Washington 37000 92 record(s) selected.Note: South Dakota was also in Guadalcanal but its class information is not available. Below query will return name of all ships that were in Guadalcanal even if no other information is available (shown as NULL). The above query is modified from INNER joins to LEFT OUTER joins.SELECT DISTINCT O.ship AS Ship_Name,C.displacement ,C.numGunsFROM Outcomes OLEFT JOIN Ships SON = O.shipLEFT JOIN Classes CON C.class = S.classWHERE O.battle = 'Guadalcanal' ;SHIP_NAME DISPLACEMENT NUMGUNS------------------ ------------ -------Kirishima 32000 8South Dakota - -Washington 37000 93 record(s) selected.(f)The Set opearator UNION guarantees unique results.SELECT ship AS Ship_NameFROM OutcomesUNIONSELECT name AS Ship_NameFROM Ships ;(g)SELECT C.classFROM Classes C,Ships SWHERE C.class = S.classGROUP BY C.classHAVING COUNT() = 1 ;better:SELECT S.classFROM Ships SGROUP BY S.classHAVING COUNT() = 1 ;(h)The Set opearator INTERSECT guarantees unique results.SELECT C.countryFROM Classes CWHERE C.type='bb'INTERSECTSELECT C2.countryFROM Classes C2WHERE C2.type='bc' ;However, above query does not account for classes without any ships belonging to them. SELECT C.countryFROM Classes C,Ships SWHERE C.class = S.classAND C.type ='bb'INTERSECTSELECT C2.countryFROM Classes C2,Ships S2WHERE C2.class = S2.classAND C2.type ='bc' ;(i)SELECT O2.ship AS Ship_Name FROM Outcomes O2,Battles B2WHERE O2.battle = AND B2.date > ANY(SELECT B.dateFROM Outcomes O,Battles BWHERE O.battle = AND O.result ='damaged'AND O.ship = O2.ship);6.4.3a)SELECT DISTINCT R.maker FROM Product R,PC PWHERE R.model = P.modelAND P.speed >= 3.0;b)Models are unique.SELECT P1.modelFROM Printer P1LEFT OUTER JOIN Printer P2 ON (P1.price < P2.price) WHERE P2.model IS NULL ;c)SELECT DISTINCT L.model FROM Laptop L,PC PWHERE L.speed < P.speed ;d)Due to set operator UNION, unique results are returned.It is difficult to completely avoid a subquery here. One option is to use Views. CREATE VIEW AllProduct ASSELECT model,priceFROM PCUNIONSELECT model,priceFROM LaptopUNIONSELECT model,priceFROM Printer ;SELECT A1.modelFROM AllProduct A1LEFT OUTER JOIN AllProduct A2ON (A1.price < A2.price)WHERE A2.model IS NULL ;But if we replace the View, the query contains a FROM subquery. SELECT A1.modelFROM(SELECT model,priceFROM PCUNIONSELECT model,priceFROM LaptopUNIONSELECT model,priceFROM Printer) A1LEFT OUTER JOIN(SELECT model,priceFROM PCUNIONSELECT model,priceFROM LaptopUNIONSELECT model,priceFROM Printer) A2ON (A1.price < A2.price) WHERE A2.model IS NULL ;e)SELECT DISTINCT R.makerFROM Product R,Printer TWHERE R.model =T.modelAND T.price <= ALL(SELECT MIN(price)FROM Printer);f)SELECT DISTINCT R1.maker FROM Product R1,PC P1WHERE R1.model=P1.modelAND P1.ram IN(SELECT MIN(ram)FROM PC)AND P1.speed >= ALL(SELECT P1.speedFROM Product R1,PC P1WHERE R1.model=P1.modelAND P1.ram IN(SELECT MIN(ram)FROM PC));6.4.4a)SELECT DISTINCT C1.country FROM Classes C1LEFT OUTER JOIN Classes C2 ON (C1.numGuns < C2.numGuns) WHERE C2.country IS NULL ;。

数据库系统概论 第六章测试题及答案

数据库系统概论 第六章测试题及答案

第六章习题一、选择题:形框代替形框表示实体的属性。

1.在数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它是数据库设计的____阶段。

A.需求分析B.概念设计C.逻辑设计D.物理设计答案:B2.E-R图是数据库设计的工具之一,它适用于建立数据库的____。

A.概念模型B.逻辑模型C.结构模型D.物理模型答案:A3.在关系数据库设计中,设计关系模式是____的任务。

A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段答案:C4.数据库物理设计完成后,进入数据库实施阶段,下列各项中不属于实施阶段的工作是____。

A.建立库结构B.扩充功能C.加载数据D.系统调试答案:B5.数据库概念设计的E-R方法中,用属性描述实体的特征,属性在E-R图中,用____表示。

A.矩形B.四边形C.菱形D.椭圆形答案:D6.在数据库的概念设计中,最常用的数据模型是____。

A形象模型B.物理模型C.逻辑模型D.实体联系模型答案:D7.在数据库设计中,在概念设计阶段可用E-R方法,其设计出的图称为____。

A.实物示意图B.实用概念图C.实体表示图D.实体联系图答案:D8.从E-R模型关系向关系模型转换时,一个M:N联系转换为关系模式时,该关系模式的关键字是____。

A.M端实体的关键字B.N端实体的关键字C.M端实体关键字与N端实体关键字组合D.重新选取其他属性答案:C9.当局部E-R图合并成全局E-R图时可能出现冲突,不属于合并冲突的是____。

A.属性冲突B.语法冲突C.结构冲突D.命名冲突答案:B10.E-R图中的主要元素是①、②和属性。

A.记录型B.结点C.实体型D.表E.文件F.联系G.有向边答案:①C ②F11.数据库逻辑设计的主要任务是____。

A.建立E-R图和说明书B.创建数据库说明C.建立数据流图D.把数据送入数据库答案:B12.E-R图中的联系可以与____实体有关。

数据库系统概论 第六章测试题及答案范文

数据库系统概论 第六章测试题及答案范文
解:本题对应的E-R图如图6.8所示。
图6.8E-R图
5.某医院病房计算机管理中需要如下信息:
科室:科名,科地址,科电话,医生姓名
病房:病房号,床位号,所属科室名
医生:姓名,职称,所属科室名,年龄,工作证号
病人:病历号,姓名,性别,诊断,主管医生,病房号
其中,一个科室有多个病房、多个医生,一个病房只能属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治,一个病人的主管医生只有一个。
9.E-R图向关系模型转化要解决的问题是如何将实体和实体之间的联系转换成关系模式,如何确定这些关系模式的____。
答案:属性和码
10.在数据库领域里,统称使用数据库的各类系统为____系统。
答案:数据库应用
11.数据库逻辑设计中进行模型转换时,首先将概念模型转换为 ,然后将②转换为 。
答案:①与特定的DBMS无关的,但为一般的关系模型、网状模型或层次模型所表示的一般模型
E.文件F.联系G.有向边
答案:①C②F
11.数据库逻辑设计的主要任务是____。
A.建立E-R图和说明书B.创建数据库说明
C.建立数据流图D.把数据送入数据库
答案:B
12.E-R图中的联系可以与____实体有关。
A.0个B.l个C.l个或多个D.多个
答案:C
13.概念模型独立于____。
A.E-R模型B.硬件设备和DBMS C.操作系统和DBMS D.DBMS
各实体构成如下:
部门:部门号,部门名,电话,地址
职员:职员号,职员名,职务(干部/工人),年龄,性别
设备处:单位号,电话,地址
工人:工人编号,姓名,年龄,性别
设备:设备号,名称,位置,价格
零件:零件号,名称,规格,价格

大数据(单选)第六章

大数据(单选)第六章

大数据(单选)第六章1.SQL的集合处理方式与宿主语言单记录的处理方式之间用什么来协调 [单选题]A、SQLCAB、游标(正确答案)C、存储过程D、触发器2.在关系代数运算中,五种基本运算为 [单选题]A、并、差、选择、投影、连接B、并、交、选择、投影、笛卡尔积C、并、差、选择、投影、笛卡尔积(正确答案)D、并、除、投影、笛卡尔积、选择3.DB、DBMS和DBS三者之间的关系是 [单选题]A、DBS与DB和DBMS无关B、DBMS包括DBS和DBC、DB包括DBMS和DBSD、DBS包括DB和DBMS(正确答案)4.数据库系统的基本特征是 [单选题]A、数据的统一控制B、数据共享性和统一控制C、数据共享性、独立性和冗余度小(正确答案)D、数据共享性和数据独立性5.如果两个实体集之间的联系是m:n,转换为关系时 [单选题]A、联系本身不必单独转换为一个关系B、联系本身必须单独转换为一个关系(正确答案)C、联系本身也可以不单独转换为一个关系D、将两个实体集合并为一个实体集6.逻辑设计的主要任务是 [单选题]A、进行数据库的具体定义,并建立必要的索引文件B、利用自顶向下的方式进行数据库的逻辑模式设计C、逻辑设计要完成数据的描述,数据存储格式的设定D、将概念设计得到的E-R图转换成DBMS支持的数据模型(正确答案)7.数据库设计中的数据流图和数据字典描述是哪个阶段的工作 [单选题]A、需求分析(正确答案)B、概念设计C、逻辑设计D、物理设计8.数据库三级模式体系结构主要的目标是确保数据库的 [单选题]A、数据结构规范化B、存储模式C、数据独立性(正确答案)D、最小冗余9.数据的存储结构与数据逻辑结构之间的独立性称为数据的 [单选题]A、物理独立性(正确答案)B、结构独立性C、逻辑独立性D、分布独立性10.设有关系R和S,关系代数R-(R-S)表示的是 [单选题]A、R∩S(正确答案)B、R―SC、R÷SD、R÷S11.自然连接是构成新关系的有效方法。

visualfoxpro数据库使用教程杨绍先版第六章习题答案

visualfoxpro数据库使用教程杨绍先版第六章习题答案

8.4 答案一、单选题1. ②2. ③3. ④4. ④5. ③6. ②7. ②8. ③9. ① 10.②11.① 12.① 13.② 14.② 15.① 16.① 17.③ 18.③ 19.④ 20.①21.① 22.② 23.④ 24.① 25.① 26.③ 27.② 28.③ 29.② 30.①31.④ 32.① 33.③ 34.③ 35.② 36.④ 37.④ 38.① 39.③ 40.①41.② 42.④ 43.④ 44.③ 45.④ 46.② 47.④ 48.④ 49.④ 50.①51.④ 52.④ 53.④ 54.① 55.③ 56.② 57.④ 58.② 59.③ 60.③61.③二、是非题1. Y2. N3. N4. Y5. N6. Y7. Y8. Y9. N 10.Y 11.Y 12.Y 13.Y 14.Y 15.Y 16.N 17.Y 18.N 19.N 20.N 21.Y 22.Y 23.N 24.Y 25.Y 26.Y 27.Y 28.Y 29.Y 30.N 31.N 32.Y 33.N 34.Y 35.Y 36.Y 37.Y 38.N 39.N 40.Y 41.Y 42.Y 43.N 44.Y 45.Y 46.Y三、多选题1. ②④2. ①②④3. ①②④4. ①②④5. ①②6. ②③7. ①④8. ②③④9. ①③ 10.①③④11.②③④ 12.②③ 13.①② 14.①②③④ 15.①④16.①② 17.①② 18.①②③四、填空题1. 顺序、选择、循环、模块2. MODIFY COMMAND <文件名>3. ?|?? <表达式>、@ 行,列 SAY <表达式>4. (编号,8)=15. zkzh6. 17. 68. &nh.B&dbn9. 100以内自然数的和、Y=***10. p="Y".OR.p="y"(或UPPER(p)= "Y")11. 15.000 4.000 312. >0、j=j+1、LTRIM(STR(n))13. .NOT.EOF()、SKIP14. "B"+STR(n,1)15. REPLACE 等级 WITH "优秀"16. 命令窗口、Windows操作系统17. 018. 3.5 519. 2、120. 2 1 4 5 3321. 6 4 222. Q=***、Q=***23. WITH sfgz,tax、SKIP、PARA a,x24. s<=100.AND.s>10、s<=10.AND.s>1、s<=125. SET PROC TO ABC、DO ZZ26. SET PROC TO <过程文件名>、SET PROC TO、CLOSE PROC27. 过程文件、程序28. 变量作用的范围、全局变量、局部变量、私有变量29. .F.30. 声明式、隐含式31. RETURN、RETURN TO MASTER32. 调用语句、最后执行的那一条33. 嵌套34. 形式参数、变量35. 调用程序、<表达式>36. 837. 10 2010 238. Y=200、Y=10039. 自然数: 奇数40. 041. -22942. S=108943. "同学们"、300五、问答题1. 将需要执行的命令按照一定的要求有序地编排在一起,并以文件的方式存储在磁盘上,这种文件称为命令文件。

数据库系统概论CH6(部分)习题解答

数据库系统概论CH6(部分)习题解答

第六章关系数据理论第六章讲解关系数据理论。

这是关系数据库的又一个重点。

学习本章的目的有两个。

一个是理论方面的,本章用更加形式化的关系数据理论来描述和研究关系模型。

另一个是实践方面的,关系数据理论是我们进行数据库设计的有力工具。

因此,人们也把关系数据理论中的规范化理论称为数据库设计理论,有的书把它放在数据库设计部分介绍以强调它对数据库设计的指导作用。

一、基本知识点本章讲解关系数据理论,内容理论性较强,分为基本要求部分(《概论》6.1~6.3)和高级部分《概论》6.4)。

前者是计算机大学本科学生应该掌握的内容;后者是研究生应该学习掌握的内容。

①需要了解的:什么是一个“不好”的数据库模式;什么是模式的插入异常和删除异常;规范化理论的重要意义。

②需要牢固掌握的:关系的形式化定义;数据依赖的基本概念(函数依赖、平凡函数依赖、非平凡的函数依赖、部分函数依赖、完全函数依赖、传递函数依赖的概念,码、候选码、外码的概念和定义,多值依赖的概念);范式的概念;从lNF 到4NF的定义;规范化的含义和作用。

③需要举一反三的:四个范式的理解与应用,各个级别范式中存在的问题(插入异常、删除异常、数据冗余)和解决方法;能够根据应用语义,完整地写出关系模式的数据依赖集合,并能根据数据依赖分析某一个关系模式属于第几范式。

④难点:各个级别范式的关系及其证明。

二、习题解答和解析1.理解并给出下列术语的定义:函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、主码、外码、全码(All-key)、lNF、2NF、3NF、BCNF、多值依赖、4NF。

解析解答本题不能仅仅把《概论》上的定义写下来。

关键是真正理解和运用这些概念。

答函数依赖:设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。

对于R(U)的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同,而在Y上的属性值不同,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。

数据库应用基础第6章习题参考答案

数据库应用基础第6章习题参考答案

1.选择题(1)(C)允许用户定义一组操作,这些操作通过对指定的表进行删除、插入和更新命令来执行或触发。

A.存储过程B.视图C.触发器D.索引(2)SQL Server为每个触发器创建了两个临时表,它们是( B )。

A.Updated和Deleted B.Inserted和DeletedC.Inserted和Updated D.Seleted和Inserted(3)SQL Server中存储过程由一组预先定义并被(C)的Transact-SQL语句组成。

A.编写B.解释C.编译D.保存(4)下列可以查看表的行数以及表使用的存储空间信息的系统存储过程是( A )。

A.sq_spaceused B.sq_dependsC.sq_help D.sq_rename2.填空题(1)存储过程(stored procedure)是SQL Server服务器中(一组预编译的)Transact-SQL 语句的集合。

(2)SQL Server中的存储过程具有如下(的系统存储过程、用户自定义存储过程、临时存储过程、远程存储过程、扩展存储过程5 )种类型。

(3)创建存储过程实际是对存储过程进行定义的过程,主要包含存储过程名称及其(参数)和存储过程的主体两部分。

(4)触发器主要用于强制复杂的(业务规则)或要求。

(5)当某个表被删除后,该表上的(所有触发器)将自动被删除。

3.问答题(1)使用存储过程的主要优点有哪些?答:存储过程的主要优点有:- 实现模块化编程,一个存储过程可以被多个用户共享和重用。

- 可以加快程序的运行速度。

- 可以减少网络的流量。

- 可以提高数据库的安全性(2)存储过程分哪两类?各有何特点?答:存储过程最常见的主要分为系统存储过程和用户自定义存储过程两类,此外还有临时存储过程、远程存储过程和扩展存储过程:- 系统存储过程由系统自动创建,主要存储在master数据库中,一般以sp_为前缀,系统存储过程完成的功能主要是从系统表中获取信息,通过系统存储过程,SQL Server中的许多管理性或信息性的活动都可以被顺利地完成。

No3.第6章习题及答案

No3.第6章习题及答案
1) 将 F 中依赖右部属性单一化: F1={ E→G,G→E,F→E,F→G,H→E,H→G,FH→E }
2) 对于 FH→E,由于有 F→E,则为多余的:
-4-
第六章习题答案
5
F2={ E→G,G→E,F→E,F→G,H→E,H→G }
3) 在 F2 中的 F→E 和 F→G 以及 H→E 和 H→G 之一是多余的,则为:
R 属于______ NF。
答案:AB,2
-1-
第六章习题答案
2
二、选择题:
1.在二元关系模式 R(U,F)中,X、Y 都是单一属性,如果 X→Y,则 R 一定可以达到( )
A.2NF B. 3NF C. BCNF D. 4NF
答案:D
2.在关系模式 )
F3={ E→G,G→E,F→G, H→G }
F3={ E→G,G→E,F→G, H→E }
F3={ E→G,G→E,F→E, H→E }
F3={ E→G,G→E,F→E, H→G }
3).设有关系模式 R(A,B,C,D),其上的函数依赖集:F={A→C,C→A,B→AC,D→AC},试计算: A)(AD)+; B)F的最小等价依赖集F‘; C)R 的关键字; 答案: 1) 令X={AD},X(0)={AD},X(1)={ACD},X(2)={ACD},故(AD)+={ACD}。 2)
第六章习题答案
1
《数据库系统概论》第 6 章习题答案
题型:
1、填空题: 10 题 2、选择题: 10 题 2、综合题: 3 题
一、填空
1. 与 1NF 相比,2NF 消除了非主属性对候选关键字的_________。
答案:部分函数依赖
2.与 2NF 相比,3NF 消除了非主属性对候选关键字的_________。

visual foxpro 数据库使用教程 杨绍先版 第六章习题答案

visual foxpro 数据库使用教程 杨绍先版 第六章习题答案

8.4 答案一、单选题1. ②2. ③3. ④4. ④5. ③6. ②7. ②8. ③9. ① 10.②11.① 12.① 13.② 14.② 15.① 16.① 17.③ 18.③ 19.④ 20.①21.① 22.② 23.④ 24.① 25.① 26.③ 27.② 28.③ 29.② 30.①31.④ 32.① 33.③ 34.③ 35.② 36.④ 37.④ 38.① 39.③ 40.①41.② 42.④ 43.④ 44.③ 45.④ 46.② 47.④ 48.④ 49.④ 50.①51.④ 52.④ 53.④ 54.① 55.③ 56.② 57.④ 58.② 59.③ 60.③61.③二、是非题1. Y2. N3. N4. Y5. N6. Y7. Y8. Y9. N 10.Y 11.Y 12.Y 13.Y 14.Y 15.Y 16.N 17.Y 18.N 19.N 20.N 21.Y 22.Y 23.N 24.Y 25.Y 26.Y 27.Y 28.Y 29.Y 30.N 31.N 32.Y 33.N 34.Y 35.Y 36.Y 37.Y 38.N 39.N 40.Y 41.Y 42.Y 43.N 44.Y 45.Y 46.Y三、多选题1. ②④2. ①②④3. ①②④4. ①②④5. ①②6. ②③7. ①④8. ②③④9. ①③ 10.①③④11.②③④ 12.②③ 13.①② 14.①②③④ 15.①④16.①② 17.①② 18.①②③四、填空题1. 顺序、选择、循环、模块2. MODIFY COMMAND <文件名>3. ?|?? <表达式>、@ 行,列 SAY <表达式>4. (编号,8)=15. zkzh6. 17. 68. &nh.B&dbn9. 100以内自然数的和、Y=***10. p="Y".OR.p="y"(或UPPER(p)= "Y")11. 15.000 4.000 312. >0、j=j+1、LTRIM(STR(n))13. .NOT.EOF()、SKIP14. "B"+STR(n,1)15. REPLACE 等级 WITH "优秀"16. 命令窗口、Windows操作系统17. 018. 3.5 519. 2、120. 2 1 4 5 3321. 6 4 222. Q=***、Q=***23. WITH sfgz,tax、SKIP、PARA a,x24. s<=100.AND.s>10、s<=10.AND.s>1、s<=125. SET PROC TO ABC、DO ZZ26. SET PROC TO <过程文件名>、SET PROC TO、CLOSE PROC27. 过程文件、程序28. 变量作用的范围、全局变量、局部变量、私有变量29. .F.30. 声明式、隐含式31. RETURN、RETURN TO MASTER32. 调用语句、最后执行的那一条33. 嵌套34. 形式参数、变量35. 调用程序、<表达式>36. 837. 10 2010 238. Y=200、Y=10039. 自然数: 奇数40. 041. -22942. S=108943. "同学们"、300五、问答题1. 将需要执行的命令按照一定的要求有序地编排在一起,并以文件的方式存储在磁盘上,这种文件称为命令文件。

《数据库系统概论》第六章关系数据理论复习题及答案

《数据库系统概论》第六章关系数据理论复习题及答案

《数据库系统概论》第六章关系数据理论复习题及答案一、选择题1、关系规范化中的删除操作异常是指①,插入操作异常是指②。

A.不该删除的数据被删除 B.不该插入的数据被插入 C.应该删除的数据未被删除 D.应该插入的数据未被插入答案:①A ②D2、设计性能较优的关系模式称为规范化,规范化主要的理论依据是。

A.关系规范化理论 B.关系运算理论 C.关系代数理论 D.数理逻辑答案:A3、规范化过程主要为克服数据库逻辑结构中的插入异常,删除异常以及冗余度大的缺陷。

A.数据的不一致性 B.结构不合理 C.冗余度大 D.数据丢失答案:C4、当关系模式R(A,B)已属于3NF,下列说法中是正确的。

A.它一定消除了插入和删除异常 B.仍存在一定的插入和删除异常 C.一定属于BCNF D.A 和C都是答案:B5、关系模型中的关系模式至少是。

A.1NF B.2NF C.3NF D.BCNF 答案:A 6、在关系DB中,任何二元关系模式的最高范式必定是。

A.1NF B.2NF C.3NF D.BCNF 答案:D7、在关系模式R中,若其函数依赖集中所有候选关键字都是决定因素,则R最高范式是。

A.2NF B.3NF C.4NF D.BCNF 答案:C8、候选关键字中的属性称为。

A.非主属性 B.主属性 C.复合属性 D.关键属性答案:B9、消除了部分函数依赖的1NF的关系模式,必定是。

A.1NF B.2NF C.3NF D.4NF 答案:B10、关系模式的候选关键字可以有①,主关键字有②。

A.0个B.1个 C.1个或多个 D.多个答案:①C ②B 11、关系模式的分解不惟一。

A.惟一 B.不惟一答案:B12、根据关系数据库规范化理论,关系数据库中的关系要满足第一范式。

下面“部门”关系中,因哪个属性而使它不满足第一范式? 。

部门(部门号,部门名,部门成员,部门总经理)A.部门总经理 B.部门成员 C.部门名 D.部门号答案:B二、填空题1、在关系A(S,SN,D)和B(D,CN,NM中,A的主键是S,B的主键是D,则D在S中称为。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第六章习题答案一、选择填空1、A2、C3、D4、B5、D6、A7、C8、A9、D 10、A11、C 12、A 13、B 14、C 15、C 16、D 17、B 18、C 19、A 20、D21、C 22、B二、判断下列描述的正确性,对者划√,错者划×。

1、√2、×3、×4、×5、√6、√7、×8、√9、×10、√11、√12、√13、√14、√15、×16、√17、√18、√19、√20、×21、×22、×三、分析下列程序的输出结果。

1、运行该程序输出结果如下所示。

Default constructor calledConstructor calleda=0,b=0a=4,b=82、运行该程序输出结果如下所示。

a=7,b=93、运行该程序输出结果如下所示。

1044、运行该程序输出结果如下所示。

1035,789.5045、运行该程序输出结果如下所示。

1{}{0,1,2,3,4,5,6,7,8}1{11,12,13,14,15,16,17,18,19}{19,18,17,16,15,14,13,12,11}6、运行该程序输出结果如下所示。

Starting1:Default constructor called.Default constructor called.Default constructor called.Eding1:Starting2:Constructor: a=5,b=6Constructor: a=7,b=8Constructor: a=9,b=10Ending2:Destructor called.a=9,b=10Destructor called.a=7,b=8Destructor called.a=5,b=6Destructor called.a=5,b=6Destructor called.a=3,b=4Destructor called.a=1,b=27、运行该程序输出结果如下所示。

Default constructor called.Default constructor called.Default constructor called.Default constructor called.Destructor called.Constructor1 called.Destructor called.Constructor2 called.Destructor called.x=0,y=0x=5,y=0x=2,y=3Destructor called.Destructor called.Destructor called.8、运行该程序输出结果如下所示。

Constructor called.0Constructor called.5Destructor called.55Destructor called.59、运行该程序输出结果如下所示。

Constructor called.55Destructor called.510、运行该程序输出结果如下所示。

Default Constructor called.Constructor:real=6.8,imag=0Constructor:real=5.6,imag=7.90+0I6.8+0I5.6+7.9IConstructor:real=1.2,imag=3.4Constructor:real=5,imag=0Default Constructor called.1.2+3.4I5+0I0+0I11、答:⑴该程序中用string.h中所包含的函数有3种,它们是strcpy( )、strcat( )和strlen( ).⑵该程序中使用了函数重载。

它们是下述两个构造函数重载:String( )和String(const char * str)。

⑶类中成员函数Setc( )的功能是用来设置字符数组中某位置的一个指定字符。

⑷类中成员函数Getc( )的功能是用来从某个字符数组中获取指定位置的字符。

⑸类中成员函数Append( )的功能是在一个字符数组中追加一个指定的字符串,即将指定的字符串添加到已知串的后边。

⑹不行。

⑺该程序中有两处使用了new运算符。

⑻运行该程序输出结果如下所示。

empty.a string.9a string.ithis a string.四、改正以下程序中的错误。

1、该程序中point类的构造函数定义不正确,在main()中队数据成员的访问不正确,修改如下:#include <iostream.h>class point{int x1,x2;public:point(int x,int y){point::x=x;point::y=y;}void disp(){cout<<x1<<endl;cout<<x2<<endl;}//……};void main(){point data(5,5);data.disp();}2、在main()函数中的p.x+=5和p.y+=6两个语句是错误的,因为保护数据仅能被类的成员函数访问。

五、按下列要求编写程序。

1、程序内容如下所示。

#include <iostream.h>class Test{public:Test(){}Test(int i,int j=20){t1=i;t2=j;t+=j-i;}static int fun(Test&T);friend int add(Test&T); private:int t1,t2;static int t;};int Test::fun(Test&T){t+=T.t;return t;}int add(Test&T){int n=T.t1+T.t2;return n;}int Test::t=5;void main(){Test a1,a2(10),a3(15,25);cout<<add(a2)<<endl;cout<<Test::fun(a2)<<endl;}2、程序内容如下所示。

#include <iostream.h>#include <string.h>class Product{char *name;int price;int quantity;public:Product(char *n,int p,int q){name =new char[strlen(n)+1];strcpy(name,n);price=p;quantity=q;}{if(name){delete [] name;name=0;}}void buy(int money){int n,r;n=money/price;if(n>quantity)cout<<"数量不够"<<endl;else{quantity-=n;r=money%price;cout<<"产品:"<<name<<"单价:"<<price<<"元顾客";cout<<money<<"元,买了"<<n<<"台,剩余"<<r<<"元"<<endl;}}void get() const{cout<<"产品:"<<name<<"单价:"<<price<<"元剩余"<<quantity<<"台"<<endl; }};void main(){Product p1("电视机",2000,15);p1.buy(7000);p1.get();p1.buy(4500);p1.get();}3、程序内容如下所示。

#include <iostream.h>#include <stdlib.h>class CDate{private:int m_nDay;int m_nMonth;int m_nYear;CDate();CDate(int day,int month,int year);void Display();void AddDay();void SetDate(int day,int month,int year);~CDate();private:bool IsLeapYear(); //判断该年是否为闰年};CDate::CDate(){}CDate::CDate(int day,int month,int year){m_nDay=day;m_nMonth=month;m_nYear=year;}void CDate::Display(){char day[5];char month[5];char year[5];_itoa(m_nDay,day,10);_itoa(m_nMonth,month,10);_itoa(m_nYear,year,10);cout<<day<<"/"<<month<<"/"<<year<<endl; }void CDate::AddDay(){m_nDay++;if (IsLeapYear()){if((m_nMonth==2)&&(m_nDay==30)){m_nMonth++;m_nDay=1;return;}}else{if((m_nMonth==2)&&(m_nDay==29))m_nMonth++;m_nDay=1;return;}}if(m_nDay>31){if(m_nMonth==12){m_nYear++;m_nMonth=1;m_nDay=1;}else{m_nMonth++;m_nDay=1;}}}void CDate::SetDate(int day,int month,int year) {m_nDay=day;m_nMonth=month;m_nYear=year;}CDate::~CDate(){}bool CDate::IsLeapYear(){bool bLeap;if (m_nYear%4!=0)bLeap=false;else if(m_nYear%100!=0)bLeap=true;else if(m_nYear%400!=0)bLeap=false;elsebLeap=true;return bLeap;}void main()CDate d;d.SetDate(2001,2,28);cout<<"当前日期=>:";d.Display();d.AddDay();cout<<"当前日期加1=>:";d.Display();}4、程序内容如下所示。

相关文档
最新文档