孟彩霞班数据库db习题答案1-6章
DB第6章习题答案

第六章关系数据理论一、选择题1.为了设计出性能较优的关系模式,必须进行规范化,规范化主要的理论依据是(A)。
A.关系规范化理论B.关系代数理论C.数理逻辑D.关系运算理论2.规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每一个属性都是(B)。
A.长度不变的B.不可分解的C.互相关联的D.互不相关的3.已知关系模式R(A,B,C,D,E)及其上的函数相关性集合F={A→D,B→C,E→A},该关系模式的候选关键字是(B)。
A.ABB.BEC.CDD.DE4.设学生关系S(SNO,SNAME,SSEX,SAGE,SDPART)的主键为SNO,学生选课关系SC(SNO,CNO,SCORE)的主键为SNO和CNO,则关系R(SNO,CNO,SSEX,SAGE,SDPART,SCORE)的主键为SNO和CNO,其满足(A)。
A.1NFB.2NFC.3NFD.BCNF5.设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C表示课程,P表示教师,S表示学生,G表示成绩,T表示时间,R表示教室,根据语义有如下数据依赖集:D={C→P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R},关系模式W的一个关键字是(D)。
A.(S,C)B.(T,R)C.(T,P)D.(T,S)6.关系模式中,满足2NF的模式(B)。
A.可能是1NFB.必定是1NFC.必定是3NFD.必定是BCNF7.关系模式R中的属性全是主属性,则R的最高范式必定是(C)。
A.1NFB.2NFC.3NFD.BCNF8.消除了部分函数依赖的1NF的关系模式,必定是(B)。
A.1NFB.2NFC.3NFD.BCNF9.如果A->B,那么属性A和属性B的联系是(B)。
A.一对多B.多对一C.多对多D.以上都不是10.关系模式的候选关键字可以有1个或多个,而主关键字有(C)。
A.多个B.0个C.1个D.1个或多个11.候选关键字的属性可以有(D)。
DB第6章 习题答案

第六章關系數據理論一、選擇題1. 為了設計出性能較優的關系模式,必須進行規范化,規范化主要的理論依據是(A)。
A. 關系規范化理論B. 關系代數理論C.數理邏輯 D. 關系運算理論2. 規范化理論是關系數據庫進行邏輯設計的理論依據,根據這個理論,關系數據庫中的關系必須滿足:每一個屬性都是(B )。
A. 長度不變的B. 不可分解的C.互相關聯的 D. 互不相關的3. 已知關系模式R(A,B,C,D,E)及其上的函數相關性集合F={A→D,B→C ,E→A },該關系模式的候選關鍵字是(B )。
A.ABB. BEC.CDD. DE4. 設學生關系S(SNO,SNAME,SSEX,SAGE,SDPART)的主鍵為SNO,學生選課關系SC(SNO,CNO,SCORE)的主鍵為SNO和CNO,則關系R(SNO,CNO,SSEX,SAGE,SDPART,GAGGAGAGGAFFFFAFAFSCORE)的主鍵為SNO和CNO,其滿足(A )。
A. 1NFB.2NFC. 3NFD. BCNF5. 設有關系模式W(C,P,S,G,T,R),其中各屬性的含義是:C表示課程,P表示教師,S表示學生,G表示成績,T表示時間,R表示教室,根據語義有如下數據依賴集:D={ C→P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R },關系模式W的一個關鍵字是( D)。
A. (S,C)B. (T,R)C. (T,P)D. (T,S)6. 關系模式中,滿足2NF的模式(B )。
A. 可能是1NFB. 必定是1NFC. 必定是3NFD. 必定是BCNF7. 關系模式R中的屬性全是主屬性,則R的最高范式必定是(C )。
A. 1NFB. 2NFC. 3NFD. BCNF8. 消除了部分函數依賴的1NF的關系模式,必定是GAGGAGAGGAFFFFAFAF(B )。
A. 1NFB. 2NFC. 3NFD. BCNF9. 如果A->B ,那么屬性A和屬性B的聯系是(B )。
(完整版)数据库第六章答案

第六章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 ;。
数据库系统基础教程第六章答案

数据库系统基础教程第六章答案数据库系统基础教程第六章答案【篇一:数据库系统基础教程答案ch7】>数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案数据库系统基础教程答案a)create table movies ( titlechar(100), yearint, length int,gee char(10),studioname char(30), producerc# int,primary key (title, year),foreign key (producerc#) references movieexec(cert#) ); orcreate table movies ( titlechar(100), yearint, length int,gee char(10),studioname char(30),producerc# int references movieexec(cert#), primary key (title, year) ); b)create table movies ( titlechar(100), yearint, length int,gee char(10),studioname char(30),producerc# int references movieexec(cert#) on delete set null on update set null,primary key (title, year) );c)create table movies ( titlechar(100), yearint, length int,gee char(10),studioname char(30),producerc# int references movieexec(cert#) on delete cascade on update cascade,primary key (title, year) ); d)create table starsin (movietitle char(100)references movie(title), movieyear int,starname char(30),primary key (movietitle, movieyear, starname) );e)create table starsin (movietitle char(100)references movie(title) on delete cascade, movieyear int,starname char(30),primary key (movietitle, movieyear, starname) ); to declare such a foreign-key constraint between the relations movie and starsin, values of the referencing attributes in movie should appear inmoviestar as unique values. however, based on primary key declaration in relation starin, the uniqueness of movies is guaranteed with movietitle, movieyear, and starname attributes. even with title and year as referencing attributes there is no way of referencing unique movie from starsinwithout starname information. therefore, such a constraint can not be expressed using a foreign-key constraint.alter table productadd primary key (model);alter table pcadd foreign key (model) references product (model); alter table laptopadd foreign key (model) references product(model); alter table printeradd foreign key (model) references product (model);alter table classesadd primary key (class); alter table shipsadd primary key (name); alter table shipsadd foreign key (class) references classes(calss); alter table battlesadd primary key (name); alter table outcomes add foreign key (ship) references ships (name); alter table outcomesadd foreign key (battle) references battles (name);a)alter table shipsadd foreign key (class) references classes (class) on delete set null on update set null;in addition to the above declaration, class must be declared the primary key for classes. b)alter table outcomeadd foreign key (battle) references battles (name) on delete set null on update set null; c)alter table outcomesadd foreign key (ship) references ships (name) on delete set null on update set null; a)yearint check (year = 1915)b)length int check (length = 60 and length = 250) c)studioname char(30)check (studioname in (?disney?, fox?, ?mgm?, ?paramount?) ) a)create table laptop ( …speed decimal(4,2) check (speed = ) … ); b) create table printer ( …type varchar(10)check (type in (?laser?, ?ink-jet?, ?bubble-jet?)) … ); c)create table product ( …type varchar(10)check (type in(?pc?, ?laptop?, ?printer?)) … );d)create table product ( …model char(4)check (model in (select model from pc union all select model from laptop union allselect model from printer)) … );* note this doesn?t check the attribute constraint violation caused by deletions from pc, laptop, or printera)【篇二:数据库原理教程习题答案(全)】t>第1章数据库系统概述习题参考答案税务局使用数据库存储纳税人信息、纳税人缴纳税款信息等。
数据库第一、二、三章课后习题答案

第一章习题1.试述数据、数据库、数据库系统、数据库治理系统的概念。
答:(1)数据(Data):描述事物的符号记录称为数据。
数据的种类有数字、文字、图形、图像、声音、正文等。
数据与其语义是不可分的。
(2)数据库(D砒aBase,简称DB):数据库是长期贮存在运算机内的、有组织的、可共享的数据集合。
数据库中的数据按必然的数据模型组织、描述和贮存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各类用户共享。
(3)数据库系统(DataBase Sytem,简称DBS):数据库系统是指在运算机系统中引入数据库后的系统组成,一样由数据库、数据库治理系统(及其开发工具)、应用系统、数据库治理员组成。
(4)数据库治理系统(DataBase Management Sytem,简称DBMS):数据库治理系统是位于用户与操作系统之间的一层数据治理软件,用于科学地组织和存储数据、高效地获取和保护数据。
DBMS的要紧功能包括数据概念功能、数据操纵功能、数据库的运行治理功能、数据库的成立和保护功能。
2.试述数据治理技术的进展进程。
答:从数据治理的角度看,数据库技术到目前共经历了人工治理时期、文件系统时期和数据库系统时期。
人工治理时期数据治理特点:数据不保留,没有对数据进行治理的软件系统,没有文件的概念,数据不具有独立性。
文件系统时期数据治理特点:数据能够长期保留,由文件系统治理数据,文件的形式已经多样化,数据具有必然的独立性。
数据库系统时期数据治理特点:采纳复杂的结构化的数据模型,较高的数据独立性,最低的冗余度,数据操纵功能3.文件系统与数据库系统有什么区别和联系?答:文件系统和数据库系统之间的区别。
(1)文件系统用文件将数据长期保留在外存上,数据库系统用数据库统一存储数据;(2)文件系统中的程序和数据有必然的联系,数据库系统中的程序和数据分离;(3)文件系统用操作系统中的存取方式对数据进行治理,数据库系统用DBMS统一治理和操纵数据;(4)文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。
数据库课后答案 第一章(数据库基础知识)

数据库课后答案第一章(数据库基础知识)《数据库技术及应用基础教程》第一章参考答案--责任人:崔朝霞一、名词解释关系数据库系统:对应于一个关系模型的所有关系的集合称为关系数据库。
关系数据库管理系统就是管理关系数据库,并将数据组织为相关的行和列的系统。
分布式数据库系统分布式数据库系统有两种:一种是物理上分布的,但逻辑上却是集中的。
这种分布式数据库只适宜用途比较单一的、不大的单位或部门。
另一种分布式数据库系统在物理上和逻辑上都是分布的,也就是所谓联邦式分布数据库系统。
由于组成联邦的各个子数据库系统是相对“自治”的,这种系统可以容纳多种不同用途的、差异较大的数据库,比较适宜于大范围内数据库的集成。
多媒体数据库:能够管理数值、文字、表格、图形、图像、声音等多媒体的数据库称为多媒体数据库。
逻辑数据:逻辑数据是一种抽象的概念,是对客三、1.√2.√3.√4.×四、1. 数据库最初是在大公司或大机构中用作大规模事务处理的基础。
后来随着个人计算机的普及,数据库技术被移植到PC机(Personal Computer,个人计算机)上,供单用户个人数据库应用。
接着,由于PC机在工作组内连成网,数据库技术就移植到工作组级。
现在,数据库正在Internet和内联网中广泛使用。
2. 数据库系统是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。
它通常由软件、数据库和数据管理员组成。
其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。
数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。
数据管理员负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。
数据库管理员一般是由业务水平较高、资历较深的人员担任。
数据库系统的个体含义是指一个具体的数据库管理系统软件和用它建立起来的数据库;它的学科含义是指研究、开发、建立、维护和应用数据库系统所涉及的理论、方法、技术所构成的学科。
数据库原理课后习题及解答(常用版)

数据库原理课后习题及解答(常用版)(可以直接使用,可编辑完整版资料,欢迎下载)《数据库原理》课后习题及解答课后习题:第一章第二章第三章第四章第五章第六章第七章第八章第九章习题答案:第一章第二章第三章第四章第五章第六章第七章第八章第九章第一章概论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所示的医院组织。
数据库原理课后练习习题答案.docx

第 1 章绪论2.使用数据库系统有什么好处?答:使用数据库系统的优点是很多的,既便于数据的集中管理,控制数据冗余,提高数据的利用率和一致性,又有利于应用程序的开发和维护。
6.数据库管理系统的主要功能有哪些?答: ( l)数据库定义功能;( 2)数据存取功能;( 3)数据库运行管理;( 4)数据库的建立和维护功能。
8 .试述概念模型的作用。
答:概念模型实际上是现实世界到机器世界的一个中间层次。
概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。
12.学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授每人各带若干研究生;每个班有若干学生,每个学生选修若干课程,每门课可由若干学生选修。
请用 E 一 R 图画出此学校的概念模型。
答:实体间联系如下图所示,联系-选修有一个属性:成绩。
各实体需要有属性说明,需要画出各实体的图(带属性)或在下图中直接添加实体的属性,比如:学生的属性包括学号、姓名、性别、身高、联系方式等,此略。
13.某工厂生产若干产品,每种产品由不同的零件组成,有的零件可用在不同的产品上。
这些零件由不同的原材料制成,不同零件所用的材料可以相同。
这些零件按所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中。
请用 E 一 R 图画出此工厂产品、零件、材料、仓库的概念模型。
答:各实体需要有属性,此略。
联系组成、制造、储存、存放都有属性:数量。
20.试述数据库系统三级模式结构,这种结构的优点是什么?答:数据库系统的三级模式结构由外模式、模式和内模式组成。
外模式,亦称子模式或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
模式,亦称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 关系数据库标准语言SQL
CREATE TABLE SPJ ( sno char(6) foreign key reference S(sno), pno char(6) foreign key reference P(pno), jno char(6) foreign key reference J(jno), qty int, primary key (sno, pno,jno) )
第三章 关系数据库标准语言SQL
6针对market数据库完成下列操作 (1) 查找所有上海客户的信息
Select * from customers where city=‘上海’;
(2) 查找所有商品的名称、库存量、价格及折价 25%后的价格,并使用别名discount标识折扣 价。结果按价格由低到高排序
第三章 关系数据库标准语言SQL
10 是否所有视图都可以更新?为什么?
– 并不是所有视图都可以更新,因为有些视图的更 新操作不能唯一地、有意义地转换为对相应基本 表的更新。
第三章 关系数据库标准语言SQL
3建立chap2习题10的各表,包括主键和外键
CREATE TABLE S ( sno char(6) primary key, sname char(20), status int, city char(20) );
第三章 关系数据库标准语言SQL
(5) 查找2007.7.1至2007.12.31期间,订货金额大 于30000的所有订单的客户姓名、商品名称、单 价、订货数量和订货金额
Select cname,gname,price,quantity,ordersum from customers,goods,orders where customers. customeid=orders. customeid and goods. goodid=orders. goodid and orderdate between‘2007-7-1’and‘200712-31’ and ordersum>30000;
C)
17
第二章 关系数据库
(4) 检索WANG同学不学的课程的课程号:
πc# (C) -πc#(σsname=‘WANG‘(SC
S))
(5) 检索至少选修LIU老师所授课程中一门课程的女学生 的姓名: πs#,sname(δ sex=‘女’(S))) πsname(σteacher=‘LIU’(C) SC
18
第二章 关系数据库
(6) 检索全部学生都选修的课程的课程号与课程名:
πc#, cname,s#(SC
C) ÷ πs#(S)
(7) 检索选修课程包含LIU老师所授全部课程的学生的 学号:
πs#, c#(SC) ÷ πc#(σteacher=‘LIU’(C))
19
第三章 关系数据库标准语言SQL
数据库原理与应用
习题 第一章—第六章
第一章 数据库系统概述
基本概念: 1.数据模型:数据结构、数据操作、完整性约束 2.完整性约束:实体、参照、用户定义 3.实体、属性、键 4.三级模式结构:外模式、模式、内模式
2
第一章 数据库系统概述
4 使用数据库系统有什么有点?P4
① ② ③ ④ ① ② ③ ④ ⑤ 数据结构化 数据的共享性高、冗余度低、易扩充 数据独立性高 DBMS对数据进行统一的管理和控制 数据定义功能 数据操纵功能 数据库的事务管理和运行管理 数据库的建立和维护功能 其他功能
n 班号 ……
系-室 组成
n 教研室名 ……
班级
1
教研室
1
学习
姓名 学历 …… n n n
就职
姓名
学生
m
指导
1
教员
职称 ……
选修
n 课程名 ……
课程
第一章 数据库系统概述
16
产品 n 组成 m 零件 n n
m 存放
仓库 1 存放 n
组成
m
材料
第一章 数据库系统概述
17
百货公司 1 组成 n 连锁商店 1 工作 n 职工 n n 销售 m 商品 销售量
第二章 关系数据库
(1) 检索LIU老师所授课程的课程号和课程名:
πc#,cname(σteacher=‘LIU‘(C))
(2) 检索年龄大于22岁的男同学的学号和姓名:
πs#,sname(σsex=‘男'∧
age>22(S))
(3) 检索学号为S3的学生所学课程的课程号与任课老 师姓名:
πc#,teacher(σs#=‘S3' (SC)
第一章 数据库系统概述
10 什么是数据库的逻辑独立性、物理独立性?为 什么数据库系统具有数据与程序的独立性?P9
–逻辑独立性:当模式改变时,由DBA对各个外模式/ 模式作相应改变,从而保持外模式不变。因此依据外 模式所编写的应用程序也可以不必改变。 –物理独立性:当数据库的存储结构改变时,由数据库 管理员对模式/内模式映像作相应改变,可以使模式保 持不变,从而应用程序也不必改变,保证了数据与程 序的物理独立性。 –数据库之所以能够具有数据与程序的独立性,是由两 级映射所提供的逻辑独立性和物理独立性所保证的。
27
第三章 关系数据库标准语言SQL
(5)求至少使用了供应商S1所供应的全部零件的 工程号JNO: select distinct jno from SPJ A where not exists (select * from SPJ B where sno='S1' and not exists (select * from SPJ C where C.pno=B.pno and C.jno=A.jno));
– 实体完整性规则:关系中的元组在主属性上不能 有空值; – 参照完整性规则:外键得知不允许参照不存在的 相应表的主键的值; – 用户定义的完整性规则:用户根据具体应用的语 义定义的完整性规则。 – 当外键非本表的主键(属性)时可以取空值。
第二章 关系数据库
• 11在下列表中完成相应的操作 S (s#,sname,sex,age) C (c#,cname,teacher) SC (s#,c#,grade)
集合运 ∪ 并 算符 - 差
∩ 交 × 广义笛卡尔积
专门的 关系运 算符
比较运 > 算符 ≥ < ≤ = ≠ 逻辑运 算符 ∧ ∨
选择 投影 连接 除 大于 大于等于 小于 小于等于 等于 不等于 非 与 或
第二章 关系数据库
2 解释概念
– 关系:P25定义2.2 – 关系模式:P27 – 关系数据库:P27 – 主键: – 候选键: – 外键: P25 – 主属性:
26
第三章 关系数据库标准语言SQL
(4)求没有使用天津供应商生产的红色零件的工 程号JNO: 方法一(不相关子查询): select jno from J where jno not in (select jno from SPJ,S,P where SPJ.sno=S.sno and SPJ.pno=P.pno and city='天津' and color='红');
第二章 关系数据库
基本概念:
1.关系数据库系统 2.关系模型中常用的操作 3.域、笛卡儿积、关系、主键、外键、主属性等 4.关系的完整性: 实体完整性 参照完整性 用户定义完整性 5.关系运算的定义
明 按 行 运 算 按行 按列 二元 二元 辅 助 专 门 的 关 系 运 算
第三章 关系数据库标准语言SQL
CREATE TABLE P ( pno char(6) primary key, pname char(20), color char(10), weight real ); CREATE TABLE J ( jno char(6) primary key, jname char(40), city char(20) );
Select gname,stocks,price,price*0.75 Discount from goods order by price
第三章 关系数据库标准语言SQL
(3) 查找商品名中包含computer的商品编号、 名称及价格 Select goodid,gname,price from goods where gname like ‘%computer%’; (4) 查找库存量大于100小于500的商品名称、库 存量和单价 Select stocks,gname,price from goods where stocks between 100 and 500;
第三章 关系数据库标准语言SQL
4 在第3题所建的表中完成下列操作 (1)求供应工程J1零件的供应商号码SNO: select sno from SPJ where jno='J1'; (2)求供应工程J1零件P1的供应商号码SNO: select sno from SPJ where jno='J1' and pno='P1';
第二章 关系数据库
6 关系数据语言的特点和分类 P28
– 特点:具有完备的表达能力,是非过程化的集合 操作语言,功能强,能够嵌入高级语言中使用。 – 分类:关系代数语言、关系演算语言(元组关系 演算语言、域关系演算语言)、具有关系代数和 关系演算双重特点的语言
第二章 关系数据库
7 关系模型的完整性规则?在参照完整性中, 为什么外键属性的值也可以为空,什么情况 下才可以为空?P29
25
第三章 关系数据库标准语言SQL
(3)求供应工程J1零件为红色的供应商号码SNO: select sno from SPJ where jno='J1' and pno in (select pno from P where color='红'); 或: select sno from SPJ,P where SPJ.pno=P.pno and SPJ.jno='J1' and P.color='红';