数据库系统概念第六章
数据库系统基础教程第六章答案

Solutions Chapter 6Attributes 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 %';a)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 IDT031). 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 OutcomesWHERE 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 shipNameFROM 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 TRUEThe 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 = ;SELECT AS presidentName FROM 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.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 ; MODEL PRICE----- ------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.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.speed AND P1.ram = P2.ramAND P1.model < P2.model ; MODEL MODEL----- -----1004 10121 record(s) selected.f)SELECT M.makerFROM(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 isavailable).SELECT name shipName FROM ShipsUNIONSELECT ship shipName FROM Outcomes ; SHIPNAME------------------ArizonaBismarkCaliforniaDuke of YorkFusoHarunaHieiHoodIowaKing George VKirishimaKongoMissouriMusashiNew JerseyNorth CarolinaPrince of Wales RamilliesRenownRepulseResolutionRevengeRodneyRoyal OakRoyal Sovereign ScharnhorstSouth DakotaTenneseeTennesseeWashingtonWest VirginiaWisconsinYamashiroYamato34 record(s) selected.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 distinctlyidentified this way.Thus the query will be likeSELECT A1.COLL1,A1.COLL2,A2.COLL1,…FROM R1 A1,R2 A2,…,Rn AnWH ERE 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);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 ) ;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.modelAND 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 );SELECT O.battleFROM Outcomes OWHERE O.ship IN(SELECT nameFROM Ships SWHERE S.Class ='Kongo' );SELECT O.battleFROM Outcomes OWHERE EXISTS(SELECT nameFROM Ships SWHERE S.Class ='Kongo' AND = O.ship );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 forthe 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 studiowill appear m times; once for every exec.(b)There are no common attributes between StarsIn and MovieStar; hence no tuplesare returned.(c)There will be at least one tuple corresponding to each star in MovieStar. Theunemployed stars will appear once with null values for StarsIn. All employedstars will appear as many times as the number of movies they are working in. Inother words, for each tuple in StarsIn(starName), the correspoding tuple fromMovieStar(name)) is joined and returned. For tuples in MovieStar that do nothave a corresponding entry in StarsIn, the MovieStar tuple is returned with nullvalues for StarsIn columns.6.3.8Since model numbers are unique, a full natural outer join of PC, Laptop andPrinter 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 versais not true. Thus a left natural outer join between Product and result above isrequired. The type attribute from Product must be renamed since Printer has atype 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 ofPC,Laptop and Printer and the three results can be Unioned together. Forattributes that do not exist in one relation, a constant such as 'NA' or 0.0 canbe 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' ;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 ;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) SPEED FROM 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)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 ;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' ;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 ;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.makerFROM 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.countryFROM Classes C1LEFT OUTER JOIN Classes C2 ON (C1.numGuns < C2.numGuns) WHERE C2.country IS NULL ;。
关系数据理论

练习:给出一个具有传递函数依赖的关系模式例子
存在传递函数依赖的例子
示例
考虑为管理职工的工资信息而设计一个关系模式
职工 赵明 钱广 孙志 李开 周祥
级别 4 5 6 5 6
工资 500 600 700 600 700
函数依赖
候选码:设K为R< U , F >的属性(组),若K f U,
消除非主属性对码的部分依赖 如S2NF,因为 (S#,C#)p SN (S#,C#)p SD
2NF
改造
非主属性有两种,一种完全依赖于码,一种部分依赖于码。 将S分解为: SC(S# , C# , G) S_SD(S# , SN , SD , DEAN)
练习
关系模式R(A,B,C,D),码为AB,给出它的一个函数 依赖集,使得R属于1NF而不属于2NF
第六章 关系数据理论
内容出处: 1.Abraham Silberschatz《数据库系统概念》第七 章
第六章 关系数据理论
教学目的
本章讨论如何进行关系数据库的逻辑设计。首先介绍函数依赖的概念,然 后利用函数依赖和其他类型的依赖定义范式,并给出利用Armstrong公理 系统确定范式级别的方法,最后介绍一些将关系模式分解为更高级范式的 模式分解算法。
问题:关系模式的形式描述?
关系模式的设计问题
关系模式的形式描述
关系模式由五部分组成,即关系模式是一个五元组: R(U,D,DOM,F)
R:关系名 U:组成该关系的属性名集合 D:属性组U中属性所来自的域 DOM:属性到域的映射 F:属性间的数据依赖集合。它限定了组成关系的各个元组
3NF
不良特性
S_SD(S# , SN , SD , DEAN)
数据库系统概论 第六章测试题及答案范文

图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
各实体构成如下:
部门:部门号,部门名,电话,地址
职员:职员号,职员名,职务(干部/工人),年龄,性别
设备处:单位号,电话,地址
工人:工人编号,姓名,年龄,性别
设备:设备号,名称,位置,价格
零件:零件号,名称,规格,价格
《数据库系统原理》04735课后习题答案(2018版)

答案仅供参考第一章数据库系统概述选择题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.请简述关系规范化过程。
答:对于存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理。
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式,这就是所谓的规范化过程。
数据库系统概论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章)(代码:4735)练习题6

练习题66.1 名词解释1)事务:事务是构成单一逻辑工作单元的操作集合。
要么完整地执行,要么完全不执行。
2)数据库的一致性:一个事务独立执行的结果,应保持数据库的一致性,即数据不会因事务的执行而遭受破坏。
3)数据库的可恢复性:系统能把数据库从被破坏、不确定的状态,恢复到最近一个正确的状态,DBMS的这种能力称为数据库的可恢复性(Recovery)4)并发操作:在多用户共享系统中,许多事务可能同时对同一数据进行操作,这种操作称为并发操作。
5)封锁:封锁是系统保证对数据项的访问以互斥方式进行的一种手段。
6)X锁:事务T对某数据加了X锁后,其他事务要等T解除X锁后,才能对这个数据进行封锁。
7)S锁:事务T对某数据加了S锁后,仍允许其他事务再对该数据加S锁,但在对该数据的所有S锁都解除之前决不允许任何事务对该数据加X锁。
8)调度:事务的执行次序称为“调度”。
9)串行调度:多个事务依次执行,称为事务的串行调度。
10)并发调度:利用分时的方法,同时处理多个事务,则称为事务的并发调度。
11)可串行化调度:如果一个并发调度的执行结果与某一串行调度的执行结果等价,那么这个并发调度称为“可串行化的调度”。
12)不可串行化调度:如果一个并发调度的执行结果不与某一串行调度的执行结果等价,那么这个并发调度称为“不可串行化调度”。
6.2事务的COMMIT语句和ROLLBACK语句各做什么事情?答:COMMIT(提交):语句表示事务执行成功地结束,此时告诉系统,DB要进入一个新的正确状态,该事务对DB的所有更新都已交付实施(写入磁盘)。
ROLLBACK(“回退”或“回滚”):语句表示事务执行不成功地结束,此时告诉系统,已发生错误,DB可能处在不正确的状态,该事务对DB的所有更新必须被撤消,DB应恢复该事务到初始状态。
6.3试叙述事务的四个性质,并解释每一个性质由DBMS的哪个子系统实现?每一个性质对DBS有什么益处?答:①事务的原子性:是指一个事务对DB的所有操作,是一个不可分割的工作单元。
ACCESS数据库管理系统

精选版ppt
11
使用设计视图创建表结构Fra bibliotek• 操作步骤如下:
• 打开“学生管理”数据库,在“创建”选项卡的“表格” 组中,单击“表设计”按钮,创建空表“表1”,并打开表 的设计视图。
• 按照“学生成绩”表结构要求,在“字段名称”列中输入 字段名称,在“数据类型”列中选择相应的数据类型。在 “常规”属性窗格中设置字段大小,如图6.2.6所示。
• 一般在设计视图中编辑表的结构,在数据表视图 中输入表的记录。
精选版ppt
9
创建表结构
• 例6.2.1 在“学生管理”数据库中(如图 6.2.2所示),把“表1”改造成“学生档案” 表,“学生档案”表结构如表6.2.1所示。
精选版ppt
10
• 如果要重命名字段,可以右键单击该字段,选择 “重命名字段”。
• 数据输出、数据查询等操作都以表对象作 为数据源,用户数据输入就是向表对象存 储数据。
精选版ppt
2
Access数据表
• 数据元素 :数据元素存放于字段(Field)中,数据 表中的每一个字段均具有一个惟一的名字(称为 字段名)。
• 数据元组:数据元组被称为记录(Record)。数
据表中的每一个记录均具有一个惟一的编号,称
• 在表设计视图中单击要定义为主键的字段名或选 定多个字段名;
• 单击“表格工具设计”选项卡的主键按钮。 • 如果在创建新表时没有定义主键,Access在保存
• (2)新创建的空白数据库包含了一个名称为“表1”的空 数据表,并以数据表视图打开这个数据表(如图6.2.2所 示)。
• (3)单击数据库窗口左窗格(也称导航窗格)的下拉列 表按钮(如图6.2.2所示),可打开数据库的导航项,通过 导航窗格可以创建各种对象。创建数据库一般从创建表对 象开始,可以在数据表视图中直接进行数据表的快速设计; 也可以利用数据表设计视图,设计表的结构后再输入数据。
数据库系统概念(database system concepts)英文第六版 PPT 第六章

Database System Concepts - 6th Edition
6.8
©Silberschatz, Korth and Sudarshan
Union Operation
Notation: r s Defined as:
r s = {t | t r or t s}
©Silberschatz, Korth and Sudarshan
Cartesian-Product Operation – Example
Relations r, s:
r x s:
Database System Concepts - 6th Edition
6.12
©Silberschatz, Korth and Sudarshan
Project Operation
Notation:
A , A , , A 1 2 k
(r )
where A1, A2 are attribute names and r is a relation name.
The result is defined as the relation of k columns obtained by erasing
For r s to be valid.
1. r, s must have the same arity (same number of attributes) 2. The attribute domains must be compatible (example: 2nd column of r deals with the same type of values as does the 2nd column of s)
数据库原理与设计(第6章)

职称
职工
职称
工号 姓名 性别 年龄
职工 n
工资
任职
1
职称
住房 津贴
6.3 概念结构设计
例2:在医院中,一个病人只能住在一个病房,病房号可 以作为病人实体的一个属性。但如果病房还要与医生实 体发生联系,即一个医生负责几个病房的病人的医疗工 作,则病房应作为一个实体。
工号 医生 性别 病人 n
数据库的物理设计的内容和方法
对要运行的事务进行分析
–对于查询事务,需得到如下信息
所涉及的关系,查询、连接、投影所涉及的属
性
–对于更新事务,需得到如下信息
所涉及的关系及其属性,要更新的属性值
了解所用RDBMS提供的存取方法 关系模式存取方法选择
–三者以上的联系:相联系实体的码的并构成该关系的码;
相同主码的关系可以合并
E-R图向关系模型转换实例
部门 1 1 天数 领导 1 属于 n n 职工 1 负责 供应商 n
参加
m 产品
m
供应
p 零件
供应量 1
E-R图向关系模型转换实例
部门(部门号,部门名…)
该关系模式由实体“部门”转换
数据库和信息系统
数据库是信息系统的核心和基础 数据库设计是信息系统开发和建设的重要组成部分 数据库系统的设计和开发是涉及多学科的综合性技
术
6.1 数据库设计概述
数据库设计的内容
数据库的结构设计(静态)
–逻辑数据库设计
• 局部逻辑结构 • 全局逻辑结构
–物理数据库设计
• 存储结构
数据库设计步骤
系统需求分析
–需求收集和分析,结果得到数据字典描述的数据需求和数
第6章 数据库的安全技术

Server的安全认证 2. SQL Server的安全认证
当SQL Server在Windows环境中运行时,SQL Server 2000提供了下面两种确认用户的认证模式: (1)Windows认证模式 Windows认证模式利用Windows操作系统对于用户登录 和用户帐号管理的安全机制,允许SQL Server也可以使用 Windows的用户名和口令。用户只需要通过Windows的认 证,就可以连接到SQL Server。
第六章数据库安全技术
6.3 数据库的数据保护
6.3.1 数据库的安全性
3.数据分类 数据库系统对安全性的处理是把数据分级。为每一数 据对象(文件,或字段等)赋予一定的保密级。 例如;绝密极、保密级、秘密级和公用级。对于用户, 成类似的级别。系统便可规定两条规则: (1)用户1只能查看比他级别低的或同级的数据。 (2)用户1只能修改和他同级的数据。
第六章数据库安全技术
6.3 数据库的数据保护
6.3.1 数据库的安全性
4.数据库加密 (3)数据库加密对数据库管理系统原有功能的影响 1)无法实现对数据制约因素的定义 ; 2)失去密文数据的排序、分组和分类作用; 3)SQL语言中的内部函数将对加密数据失去作用; 4)DBMS的一些应用开发工具的使用受到限制。
第六章数据库安全技术
6.1 数据库系统的组成
3.数据库特性 • 多用户 • 高可用性 • 频繁的更新 • 大文件 • 安全性与可靠性问题复杂 很 多 数 据 库 应 用 于 客 户 机 / 服 务 器 (Client / Server)平台。在Server端,数据库由Server上的DBMS 进行管理。由于Client/Server结构允许服务器有多个 客户端,各个终端对于数据的完整性和一致性要求很高, 这就涉及到数据库的安全性与可靠性问题。
数据库原理6-3

伪传递规则:由X→Y,WY→Z,有XW→Z。
证明: X→Y,有WX →WY,又WY→Z,故XW→Z。
分解规则:由X→Y及 Z Y,有X→Z。 不需证明(A1, A3)
2.根据合并规则和分解规则,可得引理6.1; 引理6.l X→A1 A2…Ak成立的充分必要条件是X→Ai成立(i=l,2 ,…,k)。
例2:求F={AB→C,A→B,B→A}的最小函数依赖集Fmin。
解:(1)去掉F中冗余的函数依赖: 判断AB→C是否冗余。设:G1={ A→B,B→A},得:(AB)G1+=AB ∵ C (AB)G1+ ∴ AB→C不冗余 判断A→B是否冗余。设:G2={ AB→C,B→A},得:AG2+=A ∵ BABG2+ ∴ A→B不冗余 判断B→A是否冗余。设:G3={ AB→C,A→B },得:BG3+=B ∵ ABG3+ ∴B→A不冗余 函数依赖集仍然为F={AB→C,A→B,B→A};
(2) 去掉各函数依赖左部冗余的属性(本题只需考虑AB→C的情况) 方法1:在决定因素中去掉B,若CAF+,则以A→C代替AB→C。 求得:AF+=ABC ∵ CAF+ ∴ 以A→C代替AB→C 故:Fm={A→C,A→B,B→A} 方法2:在决定因素中去掉A,若CBF+,则以B→C代替AB→C。 求得:BF+=ABC ∵ CBF+ ∴ 以B→C代替AB→C 故:Fm={B→C,A→B,B→A}
→sdept,Sdept → Mname,(sno,cno) → Grade}
F ΄={sno →sdept, Sno → Mname, Sdept → Mname, (sno,cno) → Grade,(sno,sdept) → sdept}
数据库第六章

五、数据依赖对关系模式旳影响
[例1]建立一种描述学校教务旳数据库:
学生旳学号(Sno)、所在系(Sdept) 系主任姓名(Mname)、课程名(Cname) 成绩(Grade)
单一旳关系模式 : Student <U、F>
U ={ Sno, Sdept, Mname, Cname, Grade }
[例2]
关系模式S(Sno, Sdept, Sage),单个属性Sno是码, SC(Sno,Cno,Grade)中,(Sno,Cno)是码 [例3]
关系模式R(P,W,A) P:演奏者 W:作品 A:听众 一种演奏者能够演奏多种作品 某一作品可被多种演奏者演奏 听众能够欣赏不同演奏者旳不同作品 码为(P,W,A),即All-Key
❖ 函数依赖涉及: (Sno, Cno) F Grade Sno → Sdept (Sno, Cno) P Sdept Sno → Sloc (Sno, Cno) P Sloc Sdept → Sloc
2NF(续)
S-L-C
Sno
Sdept
Grade
Cno
Sloc
❖ S-L-C旳码为(Sno, Cno) ❖ S-L-C满足第一范式。 ❖ 非主属性Sdept和Sloc部分函数依赖于码(Sno, Cno)
例:S-L-C(Sno, Sdept, Sloc, Cno, Grade) ∈1NF S-L-C(Sno, Sdept, Sloc, Cno, Grade) ∈2NF SC(Sno, Cno, Grade) ∈ 2NF S-L(Sno, Sdept, Sloc) ∈ 2NF
2NF(续)
❖ 采用投影分解法将一种1NF旳关系分解为多种2NF旳关系, 能够在一定程度上减轻原1NF关系中存在旳插入异常、删 除异常、数据冗余度大、修改复杂等问题。
数据库设计 第六章

概念结构(续)
概念结构设计的特点(续)
(3)易于更改,当应用环境和应用要求改变时,容易对 概念模型修改和扩充。 (4)易于向关系、网状、层次等各种数据模型转换。
数 据 库 原 理 与 应 用
概念结构(续)
描述概念模型的工具
–
E-R模型
数 据 库 原 理 与 应 用
概念结构设计的方法与步骤
自底向上策略
概念结构设计的方法与步骤(续)
–
逐步扩张
首先定义最重要的核心概念结构,然后向外扩 充,以滚雪球的方式逐步生成其他概念结构,直 至总体概念结构
数 据 库 原 理 与 应 用
–
混合策略
将自顶向下和自底向上相结合,用自顶向下策 略设计一个全局概念结构的框架,以它为骨架集 成由自底向上策略中设计的各局部概念结构。
设计概念结构的四类方法
–
自顶向下
首先定义全局概念结构的框架,然后逐步细化
数 据 库 原 理 与 应 用
–
自底向上
首先定义各局部应用的概念结构,然后将它们 集成起来,得到全局概念结构
概念结构设计的方法与步骤(续)
数 据 库 原 理 与 应 用
自顶向下策略
概念结构设计的方法与步骤(续)
数 据 库 原 理 与 应 用
下面图给出了教务管理信息系统的0层数据流图 ,该图描述了教务管理信息系统的组成部分以及各 部分的输入和输出数据。
学籍变动表
选 课 数 据 3 选课一览表
学生学籍数据
1 学生学籍 管理
选课管理
学生基本信息
课程信息
选课信息
数 据 库 原 理 与 应 用
课程数据
数据库系统概论 第六章测试题及答案

上述实体中存在如下联系:
(l)一个学生可选修多门课程,一门课程可为多个学生选修;
(2)一个教师可讲授多门课程,一门课程可为多个教师讲授;
(3)一个单位可有多个教师,一个教师只能属于一个单位。
试完成如下工作:
(1)分别设计学生选课和教师任课两个局部信息的结构E-R图。
答案:物理
5.在数据库设计中,把数据需求写成文档,它是各类数据描述的集合,包括数据项、数据结构、数据流、数据存储和数据加工过程等的描述,通常称为____。
答案:数据字典
6.数据库应用系统的设计应该具有对于数据进行收集、存储、加工、抽取和传播等功能,即包括数据设计和处理设计,而____是系统设计的基础和核心。
完成如下设计:
(1)设计该计算机管理系统的E-R图;
(2)将该E-R图转换为关系模型结构;
(3)指出转换结果中每个关系模式的候选码。
解:(1)本题的E-R图如图6.9所示。
(2)对应的关系模型结构如下:
科室(科名,科地址,科电话)
病房(病房号,床位号,科室名)
医生(工作证号,姓名,职称,科室名,年龄)
第
一、
为了作图方便,本章用形框代替形框表示实体的属性。
1.在数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它是数据库设计的____阶段。
A.需求分析B.概念设计C.逻辑设计D.物理设计
答案:B
2.E-R图是数据库设计的工具之一,它适用于建立数据库的____。
A.概念模型B.逻辑模型C.结构模型D.物理模型
解:本题对应的E-R图如图6.8所示。
图6.8E-R图
5.某医院病房计算机管理中需要如下信息:
《数据库系统概论》第六章关系数据理论复习题及答案

《数据库系统概论》第六章关系数据理论复习题及答案一、选择题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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
The participation of an entity set E in a relationship set R is said to be total(全部的) if every entity in E participates in at least one relationship in R.
SSDUT-Software School of DUT
12
Attributes
For each attribute, there is a set of permitted values, called the domain(域), or value set(值集), of that attribute. An attribute of an entity set is a function that maps from the entity set into a domain. each entity can be described by a set of (attribute, data value) pairs
Mapping cardinalities(映射基数), or cardinality ratios(基数比率), express the number of entities to which another entity can be associated via a relationship set.
SSDUT-Software School of DUT
15
Attributes
Derived attribute(派生属性)
– The value can be derived from the values of
other related attributes or entities. instructor ’s attribute: students_advised students’s attribute: age – The value of a derived attribute is not stored but is computed when required.
SSDUT-Software School of DUT
4
Design Alternatives
must avoid two major pitfalls:
– Redundancy(冗余)
A bad design may repeat information. – Incompleteness(不完整) A bad design may make certain aspects of the enterprise difficult or impossible to model.
11
Relationship Sets
Most of the relationship sets in a database system are binary(二元的). Occasionally, however, relationship sets involve more than two entity sets.
into subparts – composite attributes(复合属性): can be divided into subparts a composite attribute may appear as a hierarchy
SSDUT-Software School of DUT
7
SSDUT-Software School of DUT
Entity Sets
SSDUT-Software School of DUT
8
Relationship Sets
Relationship(联系) :an association among several entities. relationship set(联系集) : a set of relationships of the same type.
SSDUT-Software School of DUT
9
Relationship Sets
The association between entity sets is referred to as participation; that is, the entity sets E1, E2, . . . , En participate(参与) in relationship set R. A relationship instance(联系实例) in an E-R schema represents an association between the named entities in the real-world enterprise that is being modeled. The function that an entity plays in a relationship is called that entity’s role(角色).
An attribute takes a null value when an entity does not have a value for it.
SSDUT-Software School of DUT
16
Constraints
SSDUT-Software School of DUT
17
Mapping Cardinalities
SSDUT-Software School of DUT
2
Overview of the Design Process
SSDUT-Software School of DUT
3
Design Phases
characterize the data needs conceptual-design
– One-to-one – One-to-many
SSDUT-Software School of DUT
18
Mapping Cardinalities
– Many-to-one
– Many-to-many
SSDUT-Software School of DUT
19
Participation Constraints
SSDUT-Software School of DUT
10
Relationship Sets
A relationship may also have attributes called descriptive attributes(描述性属性).
SSDUT-Software School of DUT
– {(ID, 76766), (name, Crick), (dept name, Biology),
(salary, 72000)}
SSDUT-Softwarees
Simple and composite attributes
– Simple attributes(简单属性): have not been divided
SSDUT-Software School of DUT
20
Keys
A key for an entity is a set of attributes that suffice to distinguish entities from each other. Keys also help to identify relationships uniquely, and thus distinguish relationships from each other.
SSDUT-Software School of DUT
5
The Entity-Relationship Model
SSDUT-Software School of DUT
6
Entity Sets
Entity(实体) : a “thing” or “object” in the real world that is distinguishable from all other objects. entity set(实体集) : a set of entities of the same type that share the same properties, or attributes. An entity is represented by a set of attributes (属性). Attributes are descriptive properties possessed by each member of an entity set. Each entity has a value(值) for each of its attributes.
14
Attributes
Single-valued and multivalued attributes
– Single-valued attributes(单值属性): have a single
value for a particular entity – multivalued attributes(多值属性): have a set of values for a specific entity An instructor may have zero, one, or several phone numbers any particular instructor may have zero, one, or more dependents {phone_number} or {dependent_name}. upper and lower bounds may be placed on the number of values