數(shù)據庫系統(tǒng)概論習題答案.pdf
《數(shù)據庫系統(tǒng)概論習題答案.pdf》由會員分享,可在線閱讀,更多相關《數(shù)據庫系統(tǒng)概論習題答案.pdf(15頁珍藏版)》請在裝配圖網上搜索。
第一章 第二章 5 設有一個 SPJ 數(shù)據庫,包括 S 、 P 、 J 、 SPJ 四個關系模式: S ( SNO , SNAME , STATUS , CITY ) ; P ( PNO , PNAME , COLOR , WEIGHT ) ; J ( JNO , JNAME , CITY ) ; SPJ ( SNO , PNO , JNO , QTY); 供應商表 S 由供應商代碼( SNO ) 、供應商姓名( SNAME ) 、供應商狀態(tài) ( STATUS ) 、供應商所在城市( CITY )組成; 零件表 P 由零件代碼( PNO ) 、零件名( PNAME ) 、顏色( COLOR ) 、重量 ( WEIGHT )組成; 工程項目表 J 由工程項目代碼( JNO ) 、工程項目名( JNAME ) 、工程項目所在城 市( CITY )組成; 供應情況表 SPJ 由供應商代碼 ( SNO ) 、 零件代碼 ( PNO ) 、 工程項目代碼 ( JNO ) 、 供應數(shù)量( QTY )組成,表示某供應商供應某種零件給某工程項目的數(shù)量為 QTY 。今有 若干數(shù)據如下: SNO SNAME STATUS CITY S1 S2 S3 S4 S5 精 益 盛 錫 東方紅 豐泰盛 為 民 20 10 30 20 50 天津 北京 北京 天津 上海 PNO PNAME COLOR WEIGHT Pl P2 P3 P4 P5 P6 螺 母 螺 栓 螺絲刀 螺絲刀 凸 輪 齒 輪 紅 綠 藍 紅 藍 紅 12 17 14 14 40 30 JNO JNAME CITY J1 J2 J3 J4 J5 J6 J7 三 建 一 汽 彈簧廠 造船廠 機車廠 無線電廠 半導體廠 北京 長春 天津 天津 唐山 常州 南京 SNO PNO JNO QTY S1 S1 S1 S1 S2 S2 S2 S2 S2 S2 S3 S3 S4 S4 S4 S5 S5 S5 S5 P1 P1 P1 P2 四 P3 P3 四 P5 P5 P1 P3 P5 P6 P6 P: P3 P6 P6 J1 J3 J4 J2 n J2 J4 J5 n J2 J1 n J1 J3 J4 J4 J1 J2 J4 200 100 700 100 400 200 500 400 400 100 200 200 100 300 200 100 200 200 500 試分別用關系代數(shù)、AIJHA 語言、QBE 語言完成下列操作: (1)求供應工程 n 零件的供應商號 SNO; 答 (2)求供應工程 n 零件 n的供應商號 SNO; 答 關系代數(shù) (3)求供應工程 n 紅色零件的供應商號 SNO; 答 (4)求沒有使用天津供應商生產的紅色零件的工程號 JNO; 答 解析 減法運算中被減的部分是使用了天津供應商生產的紅色零件的所有工程號,Π JNO 是全 部工程的工程號,兩者相減就是沒有使用天津供應商生產的紅色零件的工程號,包括沒有使 用任何零件的工程號。 (5)求至少用了 S1 供應商所供應的全部零件的工程號 JNO。 答 關系代數(shù) 解析 上面公式中除號前的部分是所有工程與該工程所用的零件,除號后的部分是 S1 所供應 的全部零件號。對于 SPJ 表中的某一個 JNO,如果該工程使用的所有零件的集合包含了 S1 所供應的全部零件號,則該 JNO 符合本題條件,在除法運算的結果集中??梢钥吹?,使用 關系代數(shù)的除法運算概念清晰,語言表達也很簡單。 第三章 3.用 SQL 語句建立第二章習題 5中的 4 個表。 答: 對于 S表:S(SNO,SNAME,STATUS,CITY); 建 S表 CREATE TABLE S ( S N O CH A R(3) , S N A ME C H A R( 10) , S T A TU S CH A R( 2) , CI TY CH A R ( 10) ) ; 對于 P表:P( PNO, PNAME, COLOR, WEIGHT); 建 P表 CREATE TABLE P ( P N O CH A R(3) , P N A ME CH A R( 10) , COLOR CHAR(4), WEI G H T I NT) ; 對于 J 表:J(JNO,JNAME,CITY); 建 J 表 CREATE TABLE J ( JN O CH A R( 3) , J N A ME C H A R( 10) , CI T Y CH A R( 10) ) ; 對于 SPJ 表:SPJ(SNO,PNO,JNO,QTY); 建 SPJ 表 CREATE TABLE SPJ (SNO CHAR(3), PNO CHAR(3), JNO CHAR(3), Q T Y I N T ) ; 4.針對上題中建立的 4 個表試用 SQL 語言完成第二章習題 5 中的查詢。 ( 1) 求供應工程 Jl 零件的供應商號碼 SNO; SELECT SNO F RO M S P J W H E RE J N O = ‘ J l’ ; ( 2) 求供應工程 J1 零件 P1 的供應商號碼 SNO; SELECT SNO F RO M S P J WHERE JNO = ‘Jl’ AND PNO = ‘P1’; ( 3) 求供應工程 J1 零件為紅色的供應商號碼 SNO; SELECT SNO / *這是嵌套查詢* / F RO M S P J WHERE JNO = Jl AND PNO IN / *找出紅色零件的零件號碼 PNO * / (SELECT PNO F RO M P / *從 P表中找*/ WH ERE CO LO R =’紅’); 或 SELECT SNO F RO M S P J , P /*這是兩表連接查詢*/ WHERE JNO = J1 /*這是復合條件連接查詢*/ AND SPJ. PNO= P. PNO AND COLOR =’紅’; ( 4) 求沒有使用天津供應商生產的紅色零件的工程號 JNO; 這里的第一種解法是使用多重嵌套查詢,第二種方法的子查詢是一個多表連接。 注意:從 J 表入手,以包含那些尚未使用任何零件的工程號。 SELECT JNO F RO M J WHERE NOT EXISTS (SELECT * F RO M S P J WH ERE S P J. JN O = J. JN O AND SNO IN /*天津供應商的 SNO*/ (SELECT SNO F RO M S WH ERE CI TY =’天津’) A ND P N O IN /*紅色零件的 PNO */ (SELECT PNO F RO M P WH ERE CO LO R=’紅’) ); 或 SELECT JNO F RO M J WHERE NOT EXISTS (SELECT * FROM SPJ, S, P W H E RE S P J . J N O = J . J N O AND SPJ. SNO = S. SNO AND SPJ. PNO = P. PNO AND S.CITY=’天津’ AND P. COLOR=’紅’); (5)求至少用了供應商 S1 所供應的全部零件的工程號 JNO(類似于《概論》P111 例 47)。 SELECT DISTINCT JNO FROM SPJ SPJZ WHERE NOT EXISTS /*這是一個相關子查詢*/ (SELECT * /*父查詢和子查詢均引用了 SPJ 表*/ F RO M S P J S P J X / *用別名將父查詢與子查詢中的 SPJ 表區(qū)分開*/ WHERE SNO=’S1’ AND NOT EXISTS (SELECT * FROM SPJ SPJY WHERE SPJY.PNO=SPJX.PNO AND SPJY.JNO=SPJZ.JNO)); 若設 P表示謂詞“供應商 S1 供應了零件 y” ;q表示謂詞“工程 x 選用了零件 y” 。上述 查詢可以抽象為:要求這樣的工程 x,使(Vy)p→q 為真。即,對于所有的零件 y,滿足邏輯 蘊涵 p→q。即,只要“供應商 S1 供應了零件 y”為真,則“工程 x 選用了零件 y”為真。 邏輯蘊涵可以轉換為等價形式: 不存在這樣的零件 y,供應商 S1 供應了 y,而工程 x 沒有選用 y。 5.針對習題 3 中的 4 個表試用 SQI 語言完成以下各項操作: (1)找出所有供應商的姓名和所在城市。 SELECT SNAME,CITY F RO M S ; ( 2) 找出所有零件的名稱、顏色、重量。 SELECT PNAME,COLOR,WEIGHT F RO M H ( 3) 找出使用供應商 S1 所供應零件的工程號碼。 SELECT JNO F RO M S P J WHERZ SNO=’S1’; ( 4) 找出工程項目 J2使用的各種零件的名稱及其數(shù)量。 SELECT P.PNAME,SPJ.QTY F RO M P ,SPJ WHERE P.PNO=SPJ.PNO AND SPJ.JNO=’J2’; ( 5) 找出上海廠商供應的所有零件號碼。 SELECT DISTINCT PNO F RO M S P J WHERE SNO IN (SELECT SNO F RO M S WHERE CITY=’上海’); ( 6) 找出使用上海產的零件的工程名稱。 SELECT JNAME P RO M J ,SPJ,S WHERE J.JNO=SPJ.JNO AND SPJ.SNO=S.SNO AND S.CITY=’上海’; 或 SELECT JNAME F RO M J WHERE JNO IN (SELECT JNO F RO M S P J ,S WHERK SPJ.SNO=S.SNO AND S.CITY=’上?!?; ( 7) 找出沒有使用天津產的零件的工程號碼。 SELECT JNO F RO M J WHERE NOT EXISTS (SELECT * P RO M S P J WHERE SPJ.JNO=J.JNO AND SNO IN (SELECT SNO F RO M S WHERE CITY=’天津’)); 或 SELECT JNO F RO M J WHERE NOT EXIST (SELECT F RO M S P J ,S WHERE SPJ..JNO=J.JNO AND SPJ.SNO=S.SNO AND S.CITY=’天津’); ( 8) 把全部紅色零件的顏色改成藍色。 UPDATE P SET COLOR=’藍’ WHERE COLOR=’紅’; ( 9) 由 S5 供給 J4 的零件 P6 改為由 S3 供應,請做必要的修改。 UPDATE SPJ SET SNO=S3, WHERE SNO=’S5’ AND JNO=’J4’ AND PNO=’P6’; ( 1 0) 從供應商關系中刪除 S2 的記錄,并從供應情況關系中刪除相應的記錄。 DELETE F RO M S P J WHERE SNO=’S2’; DELETE F RO M S WHERE SNO=’S2’; ( 1 1) 請將(S2,J6,P4,200)插入供應情況關系。 INSERT INTO SPJ(SNO,JNO,PNO,QTY) /*INTO子句中指明列名*/ VALUES(S2,J6,P4,200); / * 插入的屬性值與指明列要對應*/ 或 I N S E R T I N T O S P J /*I N T O子句中沒有指明列名*/ VALUES(S2,P4,J6,200); /*插入的記錄在每個屬性列上有值*/ / * 并且屬性列要和表定義中的次序對應*/ 11.請為三建工程項目建立一個供應情況的視圖,包括供應商代碼(SNO)、零件代碼 (PNO)、供應數(shù)量(QTY)。針對該視圖完成下列查詢: ( 1) 找出三建工程項目使用的各種零件代碼及其數(shù)量。 ( 2) 找出供應商 S1 的供應情況。 建視圖: CREATE VIEW V_SPJ AS SELECT SNO,PNO,QTY F RO M S P J WHERE JNO= (SELECT JNO F RO M J WHERE JNAME=’三建’); 對該視圖查詢: ( 1) 找出三建工程項目使用的各種零件代碼及其數(shù)量。 SELECT PNO,QTY FROM V_SPJ; ’ ( 2) 找出供應商 S1 的供應情況。 SELECT PNO,QTY /* S1 供應三建工程的零件號和對應的數(shù)量*/ FROM V_SPJ WHERE SNO=’S1’; 第四章 8.今有兩個關系模式: , 職工(職工號,姓名,年齡,職務,工資,部門號) 部門(部門號,名稱,經理名,地址,電話號) 請用 SQL 的 GRANT 和 REVOKE 語句(加上視圖機制)完成以下授權定義或存取控 制功能: ( 1) 用戶王明對兩個表有 SELECT 權力。 GRANT SELECT ON 職工,部門 T O王明; ( 2) 用戶李勇對兩個表有 INSERT 和 DELETE 權力。 GRANT INSERT,DELETE ON 職工,部門 T O李勇; ( 3) 每個職工只對自己的記錄有 SELECT 權力。 GRANT SELECT ON 職工 WHEN USER()=NAME T O A L L ; 這里假定系統(tǒng)的 CRANT 語句支持 WHEN子句和 USER()的使用。 用戶將自己的名 字作為 ID。注意,不同的系統(tǒng)這些擴展語句可能是不同的。 ( 4) 用戶劉星對職工表有 SELECT 權力,對工資字段具有更新權力。 GRANT SELECT,UPDATE(工資) ON 職工 T O劉星; ( 5) 用戶張新具有修改這兩個表的結構的權力。 GRANT ALTER TABLE ON 職工,部門 T O張新; ( 6) 用戶周平具有對兩個表所有權力(讀,插,改,刪數(shù)據),并具有給其他用戶授權 的權力。 GRANT ALL PRIVILIGES ON 職工,部門 T O周平 WITH GRANT OPTION; ( 7) 用戶楊蘭具有從每個部門職工中 SELECT 最高工資、最低工資、平均工資的權 力,他不能查看每個人的工資。 首先建立一個視圖。然后對這個視圖定義楊蘭的存取權限。 CREATE VIEW部門工資 AS SELECT 部門,名稱,MAX(工資),MIN(工資),A VG(工資) F RO M職工,部門 W H E RE職工.部門號=部門.部門號 GROUP BY 職工.部門號; GRANT SELECT ON 部門工資 T O楊蘭; 9.把習題 8 中(1)—(7)的每一種情況,撤銷各用戶所授予的權力。 (1) REVOKE SELECT ON職工,部門 F RO M王明; (2) REVOKE INSERT,DELETE ON 職工,部門 F RO M李勇; (3) REOVKE SELECT ON職工 WHEN USER()=NAME F RO M A L L ; 這里假定用戶將自己的名字作為 ID,且系統(tǒng)的 REOVKE 語句支持 WHEN 子句, 系統(tǒng)也支持 USER()的使用。 (4) REVOKE SELECT,UPDATE ON 職工 F RO M劉星; (5) REVOKE ALTER TABLE ON 職工,部門 F RO M張新; (6) REVOKE ALL PRIVILIGES ON職工,部門 F RO M周平; (7) REVOKE SELECT ON部門工資 F RO M楊蘭; DROP VIEW 部門工資; 第五章 6.假設有下面兩個關系模式: 職工(職工號,姓名,年齡,職務,工資,部門號),其中職工號為主碼; 部門(部門號,名稱,經理名,電話),其中部門號為主碼。 用 SQL語言定義這兩個關系模式, 要求在模式中完成以下完整性約束條件的定義: 定義每個模式的主碼;定義參照完整性;定義職工年齡不得超過 60 歲。 CREATE TABLE DEPT (Deptno NUMBER(2), Deptname VARCHAR(10), Manager VARCHAR(10), PhoneNumber Char(12) CONSTRAINT PK_SC PRIMARY KEY(Deptno)); CREATE TABLE EMP (Empno NUMBER(4), Ename VARCHAR(10), Age NUMBER(2), CONSTRAINT Cl CHECK(Aage<=60), J o b V A RCH A R( 9) , Sal NUMBER(7,2), Deptno NUMBER(2), CONSTRAINT FK_DEPTNO FOREIGN KEY(Depmo) REFERENCES DEPT(Deptno)); 第六章 2.建立一個關于系:學生、班級、學會等諸信息的關系數(shù)據庫。 描述學生的屬性有:學號、姓名、出生年月、系名、班號、宿舍區(qū)。 描述班級的屬性有:班號、專業(yè)名、系名、人數(shù)、人校年份。 描述系的屬性有:系名、系號、系辦公室地點、人數(shù)。 描述學會的屬性有:學會名、成立年份、地點;人數(shù)。 有關語義如下:一個系有若干專業(yè),每個專業(yè)每年只招一個班,每個班有若干學生。一 個系的學生住在同一宿舍區(qū)。每個學生可參加若干學會,每個學會有若干學生。學生參加某 學會有一個入會年份。 請給出關系模式,寫出每個關系模式的極小函數(shù)依賴集,指出是否存在傳遞函數(shù)依 賴,對于函數(shù)依賴左部是多屬性的情況討論函數(shù)依賴是完全函數(shù)依賴,還是部分函數(shù)依賴。 指出各關系的候選碼、外部碼,有沒有全碼存在? 答 關系模式:學生 S(S#,SN,SB,DN,C#,SA) 班級 C(C#,CS,DN,CNUM,CDATE) 系 D(D#,DN,DA,DNUM) 學會 P(PN,DATEl,PA,PNUM) 學生一學會 SP(S#,PN,DATE2) 其中,S#一學號,SN 一姓名,SB—出生年月,SA 一宿舍區(qū) C # 一班號,CS一專業(yè)名,CNUM 一班級人數(shù),CDATE 一入校年份 D #一系號,DN 一系名,DA 一系辦公室地點,DNUM 一系人數(shù) P N一學會名,DATEl 一成立年月,PA 一地點,PNUM 一學會人數(shù),DATE2 一入 會年份 每個關系模式的極小函數(shù)依賴集: S :S#→SN,S#→SB,S#→C#,C#→DN,DN→SA C :C#→CS,C#→CNUM,C#→CDATE,CS→DN,(CS,CDATE) →C# /*因為每個專業(yè)每年只招一個班*/ D :D#→DN,DN→D#,D#-→DA,D#→DNUM /*按照實際情況,系名和系號是一一對應的*/ P :PN→DATEl,PN→PA,PN→PNUM. S P :(S#,PN) →DATE2 S中存在傳遞函數(shù)依賴:S#→DN,S#→SA,C#→SA /*因為 S#→C#,C#→DN,DN→SA*/ C中存在傳遞函數(shù)依賴:C#→DN /*因為 C#→CS,CS→DN */ ( S #,PN) →DATE2 和(CS,CDATE) →C#均為 SP 中的函數(shù)依賴,是完全函數(shù)依 賴。 關系 候選碼 外部碼 全碼 S S # C#,DN 無 C C# ,(CS,CD A T E ) D N 無 D D#和D N 無 無 P P N 無 無 S P ( S #,P N ) S #,PN 無 解析 應該根據題目中給出的有關語義寫出關系模式中的數(shù)據依賴, 有些依賴可以按照實 際情況寫出,也許題目中并沒有明顯指出。例如,按照實際情況,系名和系號是一一對應的, 因此有 D#→DN,DN→D#。 第七章 18.現(xiàn)有一局部應用,包括兩個實體: “出版社”和“作者” ,這兩個實體是多對多的 聯(lián)系,請讀者自己設計適當?shù)膶傩?,畫?E-R 圖,再將其轉換為關系模型(包括關系名、屬 性名、碼和完整性約束條件)。 答 E —R 圖為: 關系模型為: 作者(作者號,姓名,年齡,性別,電話,地址) 出版社(出版社號,名稱,地址,聯(lián)系電話) 出版(作者號,出版社號,書的數(shù)量) 出版關系的主碼作者號, 出版社號分別參照作者關系的主碼作者號和出版社關系的 主碼出版社號。 19.請設計一個圖書館數(shù)據庫,此數(shù)據庫中對每個借閱者保存讀者記錄,包括:讀 者號,姓名,地址,性別,年齡,單位。對每本書存有:書號,書名,作者,出版社。對每 本被借出的書存有讀者號、借出日期和應還日期。要求:給出 E-R 圖,再將其轉換為關系 模型。 答 E —R 圖為: 關系模型為: 讀者(讀者號,姓名,地址,性別,年齡,單位) 書(書號,書名,作者,出版社) 借書(讀者號,書號,借出日期,應還日期) 第九章 2.對學生—課程數(shù)據庫有如下的查詢: SELECT Cname F RO M S tud en t,Course,SC WHERE Student.Sno=SC.Sno AND SC.Cno= Course.Cno AND Student.Sdept=‘IS’ ; 此查詢要求信息系學生選修了的所有課程名稱;試畫出用關系代數(shù)表示的語法樹, 并用關系代數(shù)表達式優(yōu)化算法對原始的語法樹進行優(yōu)化處理,畫出優(yōu)化后的標準語法樹。 答 第十一章 9.設 T1,T2,T3 是如下的 3 個事務,設 A的初始值為 0: T 1 :A: :A+2; T 2 :A: :A* 2; T 3 :A:A** 2;(A←A 2 ) ( 1) 若這 3 個事務允許并行執(zhí)行,則有多少可能的正確結果,請一一列舉出來。 答 A的最終結果可能有 2、4、8、16。 因為串行執(zhí)行次序有 T1 T2 T3、 Tl T3 T2、 T2 Tl T3、 T2 T3 T1、 T3 T1 T2、 T3 T2 T1。 對應的執(zhí)行結果是 16、8、4、2、4、2。 ( 2) 請給出一個可串行化的調度,并給出執(zhí)行結果 答 最后結果 A為 16,是可串行化的調度。 ( 3) 請給出一個非串行化的調度,并給出執(zhí)行結果。 答 最后結果 A為 0,為非串行化的調度。 ( 4) 若這 3 個事務都遵守兩段鎖協(xié)議,請給出一個不產生死鎖的可串行化調度。 答 (5)若這 3 個事務都遵守兩段鎖協(xié)議,請給出一個產生死鎖的調度。 答- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 數(shù)據庫 系統(tǒng) 概論 習題 答案
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.jqnhouse.com/p-12741411.html