数据库原理课后答案第六章
数据库系统原理及应用教程第四版课后答案(苗雪兰 刘瑞新) 机械工业出版社第6章汇总
6.2答: ① SELECT 姓名,联系电话 FROM 供应商 WHERE 所在城市='天津 ② SELECT * FROM 工程 WHERE 预算 BETWEEN 50000 AND 100000 ORDER BY 预算 DESC ③ SELECT 工程代号 FROM 供应零件 WHERE 供应商代码='S1 ④ SELECT 零件.零件名, 供应零件.数量 FROM 零件,供应零件 WHERE 零件.零件代码=供应零件.零件代码 AND 供应零件.工程代码= 'J2' ⑤ SELECT 零件代号 FROM 供应商, 供应零件 WHERE供应商.供应商代码=供应零件.供应商代码 AND 供应商.所在城 市='上海'
6.1答: ① CREATE TABLE 职工(职工号 CHAR(10) NOT NULL UNIQUE, 姓名 CHAR(8) NOT NULL, 年龄 SMALLINT, 性别 CHAR(2), CONSTRAINT C1 CHECK(性别 IN ('男','女'))) Go CREATE TABLE 社会团体(编号 CHAR(8) NOT NULL UNIQUE, 名称 CHAR(12) NOT NULL, 负责人 CHAR(8), 活动地点 VARCHAR(50), CONSTRAINT C2 FOREIGN KEY(负责人) REFERENCES职工(职工号)) Go CREATE TABLE 参加(职工号 CHAR(8), 编号 CHAR(8), 参加日期 DATE, CONSTRAINT C3 PRIMARY KEY(职工号, 编号), CONSTRAIN C3 FOREIGN KEY(职工号) REFERENCES 职工(职工号)) Go ②SELECT 职工号, 姓名 FROM 职工, 社会团体, 参加 WHERE 职工.职工号=参加.职工号 AND 参加.编号=社会团体.编号 AND社会团体.名称 IN ('唱歌队', '篮球队') ③SELECT * FROM 职工 WHERE NOT EXISTS ( SELECT * FROM 参加 WHERE 参加.职工号=职工.职工号) ④ SELECT * FROM 职工 WHERE NOT EXISTS (SELECT * FROM 参加 WHERE NOT EXISTS (SELECT * FROM 社会团体 WHERE 参加.职工号=职工.职工号 AND 参加.编号=社会团体.编号))
数据库原理课后答案第六章
第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、数据库设计的重要特点之一要把_结构(数据)_设计和__行为(处理)_设计密切结合起来,并以_结构(数据)_为核心而展开。
自考数据库系统原理课后答案
第六章课后习题答案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.关系规范化中的操作异常有哪些?是由什么引起的?解决方法是什么?操作异常有数据冗余问题、数据更新问题、数据插入问题、数据删除问题。
其产生的原因是关系模式没有设计好,某些属性之间存在不良的函数依赖。
解决方法是进行模式分解,把一个不良的关系模式分解为两个或多个关系模式。
2.第一、二、三范式的定义分别是什么?第一范式:不包含重复组的关系,即不包含非原子项的属性。
第二范式:属于第一范式,且每个非主属性都完全函数依赖于主码。
第三范式:属于第二范式,且所有非主属性都不传递依赖于主码。
3.什么是部分函数依赖?什么是传递函数依赖?举例说明。
部分函数依赖:在关系模式R(U)中,如果X→Y,并且存在X的一个真子集X0,使得X0→Y,则称Y对X部分函数依赖。
传递函数依赖:在关系模式R(U)中,设X,Y,Z是U的不同的属性子集,如果X确定Y、Y确定Z,且有X不包含Y,Y不确定X,(X∪Y)∩Z=空集合,则称Z传递函数依赖于X。
4.第三范式的关系模式是否一定不包含部分函数依赖?不一定。
可列举以下关系模式:关系模式(A,B,C,D)中AB和BC为候选码,AC相互依赖,D完全依赖于AB或BC,则ABC为主属性。
令AB为主码,此关系模式中各属性不可再分,且非主属性D完全依赖于主码,并不传递依赖于主码,则其为第三范式,但主属性C部分依赖于主码AB。
实际例子:(学号,课程号,身份证号,成绩)候选码:(学号,课程号)和(课程号,身份证号)主码:(学号,课程号)主属性:学号,课程号,身份证号非主属性:成绩5.对于主码只有一个属性组成的关系模式,如果它是第一范式,则它是否也一定是第二范式?第一范式主码只有一个属性,则不存在部分依赖关系,即一定是第二范式。
6.学生修课(学号,姓名,所在系,性别,课程号,课程名,学分,成绩)关系模式…。
指出候选码,判断是第几范式,转为第三范式并指出主码与外码。
数据库第六章习题答案
第六章习题答案一、选择填空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、运行该程序输出结果如下所示。
〉数据库原理及应用教程简答题等答案第六章设计题和简答题答案
第六章三、设计题1.一个图书管理系统中有如下信息。
图书:书号、书名、数量、位置借书人:借书证号、姓名、单位出版社:出版社名、邮编、地址、电话、E-mail其中约定:任何人可以借多种书,任何一种书可以被多个人借,借书和还书时,要登记相应的借书日期和还书日期;一个出版社可以出版多种书籍,同一本书仅为一个出版社所出版,出版社名具有唯一性。
根据以上情况,完成如下设计。
(1)设计该系统的E-R图。
(2)将E-R图转换为关系模式。
(3)指出转换后的每个关系模式的主码。
关系模式及主码图书(书号,书名,数量,位置,出版社名)借书人(借书证号,姓名,单位)出版社(出版社名,邮编,地址,电话,E-mail)2.图6-26(a)、(b)和(c)给出某企业管理系统三个不同的局部E-R图,将其合成一个全局E-R图,并设置各个实体以及联系的属性(允许增加必要的属性,也可将实体的属性改为联系的属性)。
(a ) (b ) (c ) 图6-26 局部E-R 图各实体的属性如下。
部门:部门号、部门名、电话、地址职员:职员号、职员名、职务、年龄、性别设备:设备号、名称、规格、价格零件:零件号、名称、规格、价格3.经过需求分析可知,某医院病房计算机管理系统中需要管理以下信息。
科室:科室名、科室地址、科室电话、医生姓名病房:病房号、床位号、所属科室医生:工作证号、姓名、性别、出生日期、联系电话、职称、所属科室名病人:病历号、姓名、性别、出生日期、诊断记录、主管医生、病房号其中,一个科室有多个病房、多名医生,一个病房只属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治,一个病人的主管医生只有一个。
根据以上需求分析的情况,完成以下有关的设计。
(1)画出该计算机管理系统中有关信息的E-R 图。
(2)将该E-R 图转换为对应的关系模式。
(3)指出转换以后的各关系模式的范式等级和对应的候选码。
科室(科室名,科室地址,科室电话)病房(病房号,床位号,科室名)医生(工作证号,姓名,性别,出生日期,联系电话,职称,科室名)病人(病历号,姓名,性别,出生日期,诊断记录,主管医生,病房号)4. 排课是教学环节中的重要过程,该过程包括以下实体。
《数据库原理与应用》课后习题参考答案
《数据库原理与应用》课后习题参考答案第一章作业参考答案1. 单项选择题C C D B C2. 判断题对错错错对3填空题网状模型用户商业智能数据挖掘系统设计4简答题1)数据模型是指描述事物对象的数据组成、数据关系、数据约束的抽象结构及其说明。
数据模型是指描述事物对象的数据组成、数据关系、数据约束的抽象结构及其说明。
数据模型是指描述事物对象的数据组成、数据关系、数据约束的抽象结构及其说明。
3〕数据约束:用于描述数据结构中数据之间的语义联系、数据之间的制约和依存关系,以及数据动态变化的规则。
主流数据库采用关系图模型。
数据库典型数据模型:层次数据模型网状数据模型关系数据模型其它数据模型〔如对象数据模型、键值对数据模型、列式数据模型。
〕2)数据库——是一种依照特定数据模型组织、存储和管理数据的文件,数据库文件一般存放在辅助存储器以便长久保存。
数据库具有如下特点:数据不重复存放;提供应多种应用程序访问;数据结构独立于使用它的应用程序;对数据增、删、改、检索由统一软件进行管理和控制。
3)数据库(Database)是一种依照特定模型组织、存储和管理数据的数据结构。
在数据库中,不仅存放了数据,而且还存放了数据与数据之间的关系。
数据库内部元素:用户表:用户在数据库中创建的数据库表;系统表:数据库中系统自带的数据库表;视图:数据库中用于对数据进行查询的虚拟表;索引:数据库中用于加快数据查询的索引项;约束:数据库中对数据、数据关系施加的规则;存储过程:数据库内部完成特定功能处理的程序;触发器:数据库内部因数据变化自动执行的一类存储过程等等4)数据库系统包括:用户、数据库应用程序、数据库管理系统和数据库四个组成要素。
5)数据库管理系统〔Database Manage System,DBMS 〕——是一种专门用来创建数据库、管理数据库、维护数据库,并提供对数据库访问的系统软件。
数据库管理系统〔DBMS〕主要功能:创建数据库和表; 创建支持结构,如索引等; 读取数据库数据; 修改数据库数据; 维护数据库结构; 执行规则; 并发控制; 提供安全性; 执行备份和恢复等等第二章作业参考答案1 单项选择题C B D A A2. 判断题对对错对错3填空题全外连接数据约束候选键用户定义完整性4简答题外码键1)在关系模型中,使用“关系”来存储“实体”中的数据。
数据库系统原理(2018版)课后习题参考答案
选择题
A、D、D
填空题
数据库系统就是指在计算机中引入数据库技术之后得系统,包括数据库、数据库管理系统及相关实用工具、应用程序、数据库管理员与用户。
2、请简述早数据库管理技术中,与人工管理、文件系统相比,数据库系统得优点。
数据共享性高
数据冗余小
易于保证数据一致性
数据独立性高
可以实施统一管理与控制
减少了应用程序开发与维护得工作量
一对多联系:对于实体集A中得每个实体,实体集B中有N个实体与之联系,反之,对于实体集B中得每个实体,实体集A中最多只有一个实体与之联系。举例:班级与班级成员,每个班级对应多个班级成员,每个班级成员只对应一个班级。
多对多联系:对于实体集A中得每个实体,实体集B中有N个实体与之联系,反之,对于实体集B中得每个实体,实体集A中有M个实体与之联系。举例:授课班级与任课教师,每个班级对应多名任课教师,每个任课教师也对应多个授课班级。
答案仅供参考
第一章 数据库系统概述
选择题
B、B、A
简答题
1、请简述数据,数据库,数据库管理系统,数据库系统得概念。 P27
数据就是描述事物得记录符号,就是指用物理符号记录下来得,可以鉴别得信息。
数据库即存储数据得仓库,严格意义上就是指长期存储在计算机中得有组织得、可共享得数据集合。
数据库管理系统就是专用于建立与管理数据库得一套软件,介于应用程序与操作系统之间。
建立在严格得数学概念得基础上
概念单一,统一用关系表示实体与实体之间得联系,数据结构简单清晰,用户易懂易用
存取路径对用户透明,具有更高得数据独立性、更好得安全保密性。
第二章 关系数据库
选择题
C、C、D
简答题
数据库原理课后习题及解答(常用版)
数据库原理课后习题及解答(常用版)(可以直接使用,可编辑完整版资料,欢迎下载)《数据库原理》课后习题及解答课后习题:第一章第二章第三章第四章第五章第六章第七章第八章第九章习题答案:第一章第二章第三章第四章第五章第六章第七章第八章第九章第一章概论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所示的医院组织。
数据库系统原理版课后习题参考答案
数据库系统原理版课后习题参考答案答案仅供参考第一章数据库系统概述选择题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.请简述关系规范化过程。
答:对于存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理。
数据库原理及应用课后习题答案
数据库原理及应⽤课后习题答案第⼀章习题⼀、选择题1.数据库(DB)、数据库系统(DBS)、数据库管理系统(DBMS)之间的关系是(C)。
A)DB包含DBS和DBMS B)DBMS包含DBS和DBC)DBS包含DB和DBMS D)没有任何关系2.数据库系统的核⼼是(B)。
A)数据模型 B)数据库管理系统C)数据库 D)数据库管理员3.数据独⽴性是数据库技术的重要特点之⼀,所谓数据独⽴性是指(D)。
A)数据与程序独⽴存放B)不同的数据被存放在不同的⽂件中C)不同的数据只能被队友的应⽤程序所使⽤D)以上三种说法都不对4.⽤树形结构表⽰实体之间联系的模型是(C)。
A)关系模型 B)⽹状模型 C)层次模型 D)以上三个都是5.“商品与顾客”两个实体集之间的联系⼀般是(D)。
A)⼀对⼀ B)⼀对多 C)多对⼀ D)多对多6.在E-R图中,⽤来表⽰实体的图形是(A)。
A)矩形 B)椭圆形 C)菱形 D)三⾓形7.在数据库管理系统提供的数据语⾔中,负责数据的模式定义和数据的物理存取构建的是(A)。
A)数据定义语⾔ B)数据转换语⾔ C)数据操纵语⾔ D)数据控制语⾔8.数据库系统的三级模式结构中,下列不属于三级模式的是(B)。
A)内模式 B)抽象模式 C)外模式 D)概念模式9.在数据库管理系统提供的语⾔中,负责数据的完整性、安全性的定义与检查以及并发控制、故障恢复等功能的是(D)。
A)数据定义语⾔ B)数据转换语⾔ C)数据操纵语⾔ D)数据控制语⾔10.下⾯关于数据库系统叙述正确的是(B)。
A)数据库系统避免了⼀切冗余B)数据库系统减少了数据冗余C)数据库系统⽐⽂件能管理更多的数据D)数据库系统中数据的⼀致性是指数据类型的⼀致11.下列叙述中,错误的是(C)。
A)数据库技术的根本⽬标是要解决数据共享的问题B)数据库设计是指设计⼀个能满⾜⽤户要求,性能良好的数据库C)数据库系统中,数据的物理结构必须与逻辑结构⼀致D)数据库系统是⼀个独⽴的系统,但是需要操作系统的⽀持12.在数据库管理系统提供的数据语⾔中,负责数据的查询及增、删、改等操作的是(D)。
数据库原理与应用教程(第三版)第六章课后习题答案
6.学生选课(学号,姓名,所在系,性别,课程号,课程名,学分,成绩)(1)候选码(学号,课程号)(2)该关系模式是第一范式(3)因为存在部分函数依赖关系((学号,课程号)—P—>姓名),所以要进行关系模式的规范化R1(学号,姓名,所在系,性别)主码:学号R2(课程号,课程名,学分)主码:课程号R3(学号,课程号,成绩)主码:(学号,课程号)学号是引用了R1关系模式的外码,课程号是引用了R2的外码因为每个关系模式此时已经是不含有依赖函数关系了,所以也是第三范式了7.学生(学号,姓名,所在系,班号,班主任,系主任)(1)候选码(学号,班号)(2)第一范式(3)因为存在部分函数依赖关系((学号,班号)—P—>姓名),所以要进行关系模式的规范化R1(学号,姓名,所在系,系主任)R2(班号,班主任)R3(学号,班号)(删去)因为每个关系模式此时是含有依赖函数关系了学号—f—>所在系,所在系—f—>系主任所以:R1(学号,姓名,所在系)主码:学号所在系是引用了R3中“所在系”的外码R2(班号,班主任)主码:班号R3(所在系,系主任)主码:所在系8.教师授课(课程号,课程名,学分,授课教师号,教师名,授课时数)(1)候选码(课程号,授课教师号)(2)第一范式(3)因为存在部分函数依赖关系((课程号,授课教师号)—P—>姓名),所以要进行关系模式的规范化(4)R1(课程号,课程名,学分)主码:课程号R2(授课教师号,教师名)主码:教师名R3(课程号,授课教师号,授课时数)主码:(课程号,授课教师号)课程号是引用了R1中的“课程号”的外码,授课教师号引用了R2的“授课教师号”的外码因为每个关系模式此时已经是不含有依赖函数关系了,所以也是第三范式了。
《数据库技术与应用》第6章习题答案
《数据库技术与应用》第6章习题答案第6章关系数据理论1. 理解下列术语的定义:函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、码、主码、外码、全码、1NF、2NF、3NF、BCNF、4NF。
解:函数依赖:设R(U)是属性集U上的关系模式。
X,Y是U的子集,若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X→Y。
部分函数依赖:如果X→Y,但Y不完全函数依赖于X,则称Y对X 部分函数依赖(Partial Functional Dependency),记作:X Y。
完全函数依赖:如果X→Y,但对于X中的任意一个真子集,都有Y不依赖于,即,则称Y对X完全函数依赖(Full Functional Dependency),记作:X Y。
传递依赖:如果X→Y,Y→Z,且Y X,,则称Z对X传递函数依赖(Transitive Functional Dependency)。
记作:X Z。
候选码:若关系中的某一属性组的值能惟一地标识一个元组,则称该属性组为候选码(Candidate key)。
主码:若一个关系有多个候选码,则选定其中一个为主码(Primarykey) 。
外部码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码K s相对应,则称F是基本关系R的外部码(Foreign key),简称外码。
全码:最复杂的情况,整个属性组是码,称为全码(All-key)。
1NF:若一个关系模式R中每一个属性值都是一个不可再分的最小数据单元,则称关系模式满足第一范式,记作R1NF。
2NF:若R1NF,且每一个非主属性完全函数依赖于R的码,则R2NF。
3NF:关系模式R中若不存在这样的候选码X,属性组Y及非主属性Z(Z Y)使得X Y,Y Z成立,则称R3NF。
BCNF:关系模式R1NF。
若对于R中的每一个函数依赖X Y且Y X,X必含有码,则RBCNF。
数据库课后题答案 第6章 管理数据库其他对象
第6章管理数据库其他对象本章要点:1、视图及视图与表的关系2、视图的创建、管理和操作3、规则、默认值的概念及创建、捆绑、修改和删除4、自定义数据类型的创建、修改、删除和查看5、触发器的概念、作用及两种触发器的工作原理和执行过程6、触发器的创建及管理6.1 视图6.1.1 视图的概念视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图的结构和数据是对数据表进行查询的结果。
视图被定义后便存储在数据库中,通过视图看到的数据只是存放在基表中的数据。
当对通过视图看到的数据进行修改时,相应的基表的数据也会发生变化,同时,若基表的数据发生变化,这种变化也会自动地反映到视图中。
视图可以是一个数据表的一部分,也可以是多个基表的联合。
6.1.2 视图的优点⏹视图可以屏蔽数据的复杂性,简化用户对数据库的操作。
⏹视图可以让不同的用户以不同的方式看到不同或者相同的数据集。
⏹可以使用视图重新组织数据。
⏹视图可以定制不同用户对数据的访问权限。
6.1.3 创建视图1、创建视图之前的注意事项:⏹只能在当前数据库中创建视图。
⏹一个视图中行、列的限制。
⏹如果视图中某一列是函数、数学表达式、常量或者来自多个表的列名相同,则必须为列定义名称。
⏹视图与基表的关系⏹不能在视图上创建索引,不能在规则、默认的定义中引用视图。
2、创建视图(1)使用企业管理器创建视图在企业管理器中展开要创建视图的数据库,用鼠标右键单击“视图”选项,在弹出的快捷菜单中选择“新建视图”命令,打开后,这个界面我们在前面介绍select语句的时候已经给大家介绍过了。
在此不再赘述了,请大家对照书本的例子练习。
(2)使用Transact-SQL语句创建视图CREATE VIEW[ < database_name > .] [ < owner > .]view_name [ ( column [ ,...n ] ) ][ WITH < view_attribute > [ ,...n ] ]ASselect_statement[ WITH CHECK OPTION ]< view_attribute > ::={ ENCRYPTION | SCHEMABINDING |VIEW_METADATA }举例:在“studentborrow”数据库中,创建一个仅包含“高等教育出版社”出版图书的视图语句:create view 高等教育出版社asselect *from 图书信息where 出版社名称='高等教育出版社'创建一个视图,其中的内容是所有价格低于10元的图书,并加密视图的定义。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第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、下列不属于数据库物理结构设计阶段任务的是确定选用的DBMS
10、确定数据的存储结构和存取方法时,下列策略中将表和索引存储在同一磁盘上
不利于提高查询效率。
二、填空题
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、数据库设计的重要特点之一要把_结构(数据)_设计和__行为(处理)_设计密切结合起来,并以_结构(数据)_为核心而展开。
8、数据库设计一般分为如下六个阶段:需求分析、__概念结构设计__、__逻辑结构设计__、数据库物理设计、数据库实施、数据库运行与维护。
9、概念设计的结果是得到一个与__计算机与DBMS__无关的模型。
10、在数据库设计中,__数据字典__是系统各类数据的描述的集合。