版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第1章數(shù)據(jù)庫概論基本內(nèi)容分析本章的重要概念DB、DBMS和DBS的定義2)數(shù)據(jù)管理技術(shù)的發(fā)展階段人工管理階段、文件系統(tǒng)階段、數(shù)據(jù)庫系統(tǒng)階段和高級(jí)數(shù)據(jù)庫技術(shù)階段等各階段的特點(diǎn)。3)數(shù)據(jù)描述概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)等各階段中數(shù)據(jù)描述的術(shù)語,概念設(shè)計(jì)中實(shí)體間二元聯(lián)系的描述(1:1,1:N,M:N)。4)數(shù)據(jù)模型數(shù)據(jù)模型的定義,兩類數(shù)據(jù)模型,邏輯模型的形式定義,ER模型,層次模型、網(wǎng)狀模型、關(guān)系模型和面向?qū)ο竽P偷臄?shù)據(jù)結(jié)構(gòu)以及聯(lián)系的實(shí)現(xiàn)方式。5)DB的體系結(jié)構(gòu)三級(jí)結(jié)構(gòu),兩級(jí)映像,兩級(jí)數(shù)據(jù)獨(dú)立性,體系結(jié)構(gòu)各個(gè)層次中記錄的聯(lián)系。DBMSDBMS的工作模式、主要功能和模塊組成。DBSDBS的組成,DBA,DBS的全局結(jié)構(gòu),DBS結(jié)構(gòu)的分類。本章的重點(diǎn)篇幅(1)教材P23的圖 1.24(四種邏輯數(shù)據(jù)模型的比較) 。(2)教材P25的圖1.27(DB的體系結(jié)構(gòu))。(3)教材P28的圖1.29(DBMS的工作模式)。(4)教材P33的圖1.31(DBS的全局結(jié)構(gòu))。教材中習(xí)題1的解答名詞解釋邏輯數(shù)據(jù):指程序員或用戶用以操作的數(shù)據(jù)形式。物理數(shù)據(jù):指存儲(chǔ)設(shè)備上存儲(chǔ)的數(shù)據(jù)。聯(lián)系的元數(shù):與一個(gè)聯(lián)系有關(guān)的實(shí)體集個(gè)數(shù),稱為聯(lián)系的元數(shù)。1:1聯(lián)系:如果實(shí)體集E1中每個(gè)實(shí)體至多和實(shí)體集E2中的一個(gè)實(shí)體有聯(lián)系,反之亦然,那么E1和E2的聯(lián)系稱為“1:1聯(lián)系”。1:N聯(lián)系:如果實(shí)體集E1中每個(gè)實(shí)體可以與實(shí)體集E2中任意個(gè)(零個(gè)或多個(gè))實(shí)體有聯(lián)系,而E2中每個(gè)實(shí)體至多和E1中一個(gè)實(shí)體有聯(lián)系,那么E1和E2的聯(lián)系是“1:N聯(lián)系”M:N聯(lián)系:如果實(shí)體集E1中每個(gè)實(shí)體可以與實(shí)體集E2中任意個(gè)(零個(gè)或多個(gè))實(shí)體有聯(lián)系,反之亦然,那么E1和E2的聯(lián)系稱為“M:N聯(lián)系”。數(shù)據(jù)模型:能表示實(shí)體類型及實(shí)體間聯(lián)系的模型稱為“數(shù)據(jù)模型” 。概念數(shù)據(jù)模型:獨(dú)立于計(jì)算機(jī)系統(tǒng)、完全不涉及信息在計(jì)算機(jī)中的表示、反映企業(yè)組織所關(guān)心的信息結(jié)構(gòu)的數(shù)據(jù)模型。結(jié)構(gòu)數(shù)據(jù)模型(或邏輯數(shù)據(jù)模型):與DBMS有關(guān)的,直接面向DB的邏輯結(jié)構(gòu)、從計(jì)算機(jī)觀點(diǎn)對(duì)數(shù)據(jù)建模的數(shù)據(jù)模型。層次模型:用樹型(層次)結(jié)構(gòu)表示實(shí)體類型及實(shí)體間聯(lián)系的數(shù)據(jù)模型稱為層次模型。網(wǎng)狀模型:用有向圖結(jié)構(gòu)表示實(shí)體類型及實(shí)體間聯(lián)系的數(shù)據(jù)模型稱為網(wǎng)狀模型。關(guān)系模型:用二維表格表達(dá)實(shí)體集的數(shù)據(jù)模型。外模式:是用戶用到的那部分?jǐn)?shù)據(jù)的描述。概念模式:數(shù)據(jù)庫中全部數(shù)據(jù)的整體邏輯結(jié)構(gòu)的描述。內(nèi)模式:DB在物理存儲(chǔ)方面的描述。外模式/模式映象:用于定義外模式和概念模式之間數(shù)據(jù)結(jié)構(gòu)的對(duì)應(yīng)性。模式/內(nèi)模式映象:用于定義概念模式和內(nèi)模式之間數(shù)據(jù)結(jié)構(gòu)的對(duì)應(yīng)性。數(shù)據(jù)獨(dú)立性:應(yīng)用程序和DB的數(shù)據(jù)結(jié)構(gòu)之間相互獨(dú)立,不受影響。物理數(shù)據(jù)獨(dú)立性:在DB的物理結(jié)構(gòu)改變時(shí),盡量不影響應(yīng)用程序。邏輯數(shù)據(jù)獨(dú)立性:在DB的邏輯結(jié)構(gòu)改變時(shí),盡量不影響應(yīng)用程序。主語言:編寫應(yīng)用程序的語言(如C一類高級(jí)程序設(shè)計(jì)語言),稱為主語言。DDL:定義DB三級(jí)結(jié)構(gòu)的語言,稱為DDL。DML:對(duì)DB進(jìn)行查詢和更新操作的語言,稱為DML。過程性語言:用戶編程時(shí),不僅需要指出“做什么”,還需要指出“怎么做”的語言。非過程性語言:用戶編程時(shí),只需指出“做什么”,不需要指出“怎么做”的語言。DD(數(shù)據(jù)字典):存放三級(jí)結(jié)構(gòu)定義的DB,稱為DD。DD系統(tǒng):管理DD的軟件系統(tǒng),稱為DD系統(tǒng)。試解釋DB、DBMS和DBS三個(gè)概念。答:DB是長期存儲(chǔ)在計(jì)算機(jī)內(nèi)、有組織的、統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合。DBMS是位于用戶與 OS之間的一層數(shù)據(jù)管理軟件,它為用戶或應(yīng)用程序提供訪問DB的方法。DBS是實(shí)現(xiàn)有組織地、動(dòng)態(tài)地存儲(chǔ)大量關(guān)聯(lián)數(shù)據(jù)、方便多用戶訪問的計(jì)算機(jī)硬件、軟件和數(shù)據(jù)資源組成的系統(tǒng),即采用數(shù)據(jù)庫技術(shù)的計(jì)算機(jī)系統(tǒng)。人工管理階段和文件系統(tǒng)階段的數(shù)據(jù)管理各有哪些特點(diǎn)?答:人工管理階段主要有四個(gè)特點(diǎn):數(shù)據(jù)不保存在計(jì)算機(jī)內(nèi);沒有專用的軟件對(duì)數(shù)據(jù)進(jìn)行管理;只有程序的概念,沒有文件的概念;數(shù)據(jù)面向程序。文件系統(tǒng)階段主要有五個(gè)特點(diǎn):數(shù)據(jù)以“文件”形式長期保存;數(shù)據(jù)的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)有了區(qū)別;文件組織已多樣化;數(shù)據(jù)面向應(yīng)用;對(duì)數(shù)據(jù)的操作以記錄為單位。文件系統(tǒng)階段的數(shù)據(jù)管理有些什么缺陷?試舉例說明。答:主要有三個(gè)缺陷:數(shù)據(jù)冗余;數(shù)據(jù)不一致性;數(shù)據(jù)聯(lián)系弱。例如學(xué)校里教務(wù)處、財(cái)務(wù)處、保健處建立的文件中都有學(xué)生詳細(xì)資料,譬如聯(lián)系電話,家庭住址等。這就是“數(shù)據(jù)”冗余;如果某個(gè)學(xué)生搬家,就要修改三個(gè)部門文件中的數(shù)據(jù),否則會(huì)引起同一數(shù)據(jù)在三個(gè)部門中不一致;產(chǎn)生上述問題的原因是這三個(gè)部門的文件中數(shù)據(jù)沒有聯(lián)系。數(shù)據(jù)管理的數(shù)據(jù)庫階段產(chǎn)生的標(biāo)志是哪三件事情?答:進(jìn)入數(shù)據(jù)庫階段的標(biāo)志是 20世紀(jì)60年代末發(fā)生的三件事件:1968年舊M公司研制的IMS系統(tǒng)是一個(gè)典型的層次DBS;1969年美國CODASYL組織DBTG報(bào)告,提出網(wǎng)狀DBS的概念;1970年美國舊M公司的E.F.Codd發(fā)表論文,提出關(guān)系模型的思想。數(shù)據(jù)庫階段的數(shù)據(jù)管理有哪些特點(diǎn)?答:主要有五個(gè)特點(diǎn):采用數(shù)據(jù)模型表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu);有較高的數(shù)據(jù)獨(dú)立性;為用戶提供了方便的用戶接口;提供了四個(gè)方面的數(shù)據(jù)控制功能;對(duì)數(shù)據(jù)的操作以數(shù)據(jù)項(xiàng)為單位,增加了系統(tǒng)的靈活性。與“文件”結(jié)構(gòu)相比,“數(shù)據(jù)庫”結(jié)構(gòu)有些什么不同?答:與文件結(jié)構(gòu)相比,數(shù)據(jù)庫結(jié)構(gòu)主要有下面三點(diǎn)不同:數(shù)據(jù)的結(jié)構(gòu)化。文件由記錄組成,但各文件之間缺乏聯(lián)系。數(shù)據(jù)庫中數(shù)據(jù)在磁盤中仍以文件形式組織,但這些文件之間有著廣泛的聯(lián)系。數(shù)據(jù)庫的邏輯結(jié)構(gòu)用數(shù)據(jù)模型來描述,整體結(jié)構(gòu)化。數(shù)據(jù)模型不僅描述數(shù)據(jù)本身的特點(diǎn),還要描述數(shù)據(jù)之間的聯(lián)系。數(shù)據(jù)獨(dú)立性。文件只有設(shè)備獨(dú)立性,而數(shù)據(jù)庫還具有邏輯獨(dú)立性和物理獨(dú)立性。訪問數(shù)據(jù)的單位。訪問文件中的數(shù)據(jù),以記錄為單位。訪問數(shù)據(jù)庫中的數(shù)據(jù),以數(shù)據(jù)項(xiàng)(字段)為單位,增加了系統(tǒng)的靈活性。什么是數(shù)據(jù)獨(dú)立性?在數(shù)據(jù)庫中有哪兩級(jí)獨(dú)立性?/131SELECTA,BFROMRRXWHERENOTEXISTS(SELECT*FROMSWHERENOTEXISTS(SELECT*FROMRRYWHERERY.A=RX.AANDRY.B=RX.BANDRY.C=S.;C))設(shè)有兩個(gè)關(guān)系R(A,B)和S(A,C),試用SQL查詢語句表示下列域表達(dá)式:①{a| (b)(R(ab)Ab='17,)}②{abc|R (ab)AS(ac)}{a| (c)(b)(b2)(S(ac)AR(ab)AR(血)Abi>b)}解①SELECTAFROMRWHEREB=1;7SELECTR.A,R.B,S.CFROMR,SWHERER.A=S.;ASELECTS.AFROMS,RRX,RRYWHERES.A=RX.AANDRX.B>RY;.B試敘述SQL?言的關(guān)系代數(shù)特點(diǎn)和元組演算特點(diǎn)。答SQL的關(guān)系代數(shù)特點(diǎn)如下有關(guān)系代數(shù)運(yùn)算的并、交、差、自然聯(lián)接等運(yùn)算符;FROM子句體現(xiàn)了笛卡爾積操作,WHERE子句體現(xiàn)了選擇操作,SELECT子句體現(xiàn)了投影操作。SQL的元組演算特點(diǎn)如下FROM子句中的基本表名應(yīng)視為“元組變量”,屬性名應(yīng)視為“元組分量”;有存在量詞EXISTS符號(hào)。試用SQLS詢語句表達(dá)下列對(duì)3.2題中三個(gè)基本表S、SGC的查詢:①在表C中統(tǒng)計(jì)開設(shè)課程的教師人數(shù)。求選修C4課程的女學(xué)生的平均年齡。求LIU老師所授課程的每門課程的平均成績。統(tǒng)計(jì)每個(gè)學(xué)生選修課程的門數(shù)(超過5門的學(xué)生才統(tǒng)計(jì))。要求輸出學(xué)生學(xué)號(hào)和選修門數(shù),查詢結(jié)果按門數(shù)降序排列,若門數(shù)相同,按學(xué)號(hào)升序排列。檢索學(xué)號(hào)比WANG]學(xué)大,而年齡比他小的學(xué)生姓名。⑥在表SC中檢索成績?yōu)榭罩档膶W(xué)生學(xué)號(hào)和課程號(hào)。檢索姓名以L打頭的所有學(xué)生的姓名和年齡。求年齡大于女同學(xué)平均年齡的男學(xué)生姓名和年齡。求年齡大于所有女同學(xué)年齡的男學(xué)生姓名和年齡。解①SELECTCOUNT(DISTINCTTEACHER)FROM;CSELECTAVG(AGE)FROMS,SCWHERES.S#=SC.S#ANDC’#C=4’ANDSEX=’F’;SELECTC.C,#AVG(GRADE)FROMSC,CWHERESC.C#=C.C#ANDTEACH‘ERL=IU’GROUPBYC.C;#SELECTS#,COUNT(C#)FROMSCGROUPBYS#HAVINGCOUNT(*)>5ORDERBY2DESC,1;SELECTSNAMEFROMSWHERES#>ALL(SELECTS#FROMSWHERESNAM’EW=ANG’)ANDAGE<ALL(SELECTS#FROMSWHERESNAME=’WANG’);SELECTS#,C#FROMSCWHEREGRADEISNU;LLSELECTSNAME,AGEFROMSWHERESNAMELIK’EL%’;SELECTSNAME,AGEFROMSWHERESEX’M=’ANDAGE>(SELECTAVG(AGE)FROMSWHERESEX’F=’);SELECTSNAME,AGEFROMSWHERESEX’M=’ANDAGE>ALL(SELECTAGEFROMSWHERESEX=’F’);對(duì)于下面的關(guān)系R和S,試求出下列各種聯(lián)接操作的執(zhí)行結(jié)果:RNATURALINNERJOINSRNATURALRIGHTOUTERJOINSRRIGHTOUTERJOINSUSINGC)RINNERJOINSRFULLOUTERJOINSONfalseRABCa1bRABCa1b1c1a2b2c2a3b3c3解:0ABeD ②ABCa1 b〔 C1 d1a1 b1C1a2 b2 C2 d2a2 b2 C2null b4C4AAR.BR.CS.BS.CDa1 b〔 C1b1cd1a1 b1 C1 b2 C2 d2a1 b1 C1 b4 C4 d4a2 b2 C2b〔cd1a2 b2 C2 b2 C2 d2a2 b2 C2 b4 C4 d4a3 b3 C3b〔cd1a3 b3 C3b2 C2 d2a3 b3 C3b4 C4 d4CASES達(dá)式操作,SBCDb1C1d1b2C2d2b4C4d4D③AR.BCS.BDd1a1b1C1b1d1d2a2b2C2b2d2d4nullnullC4b4d4C5)AR.BR.CS.BS.CDa1b1C1nullnullnulla2b2C2nullnullnulla3b3C3nullnullnullnullnullnullb1C1d1nullnullnullb2C2d2nullnullnullb4C4d43.9SQL2提供法如下:CASE這個(gè)操作類似于程序設(shè)計(jì)語力中的多分支選擇結(jié)構(gòu),其句結(jié)果1結(jié)果2結(jié)果1結(jié)果2WHEN條件2THENWHEN條件nTHEN結(jié)果nELSE結(jié)果mEND如果自上而下“條件i”首先被滿足,那么這個(gè)操作返回值“結(jié)果i”(可以是某個(gè)表達(dá)式的值);如果沒有一個(gè)條件被滿足,那么返回值“結(jié)果m0在基本表SC(S#,C#,GRADE中,GRADES是百分制。如果欲轉(zhuǎn)換成“成績等第”,則規(guī)則如下:若GRADE40則等第為F,若400GRADE60WJ等第為C,若600GRADE80則等第為B,若80WGRADEJ等第為A試寫出下列兩個(gè)查詢語句:檢索每個(gè)學(xué)生的學(xué)習(xí)成績,成績顯示時(shí)以等第(SCORE形式出現(xiàn)。檢索每個(gè)等第的學(xué)生人次數(shù)。解:①SELECTS#C#,CASEWHENGRADE>=80THE'NA'WHENGRADE>=60THE'NB'WHENGRADE>=40THE'NC'ELSE'F'ENDASSCOREFROMS;CSELECTSCOR,ECOUN(TS#)FROM(SELECTS#,C#,CASEWHENGRADE>=80THE'NA'WHENGRADE>=60THE'NB'WHENGRADE>=40THE'NC'ELSE'F'ENDFROMS)CASRESULT(S#,C#,SCOR)EGROUPBYSCO;RE用第3.9題給出的CASE?作在下列更新語句中完成SC表中的元組更新:若課程號(hào)為C5則增加6分,若課程號(hào)為C8則增加10分,其他一律增加5分。若C4課程的成績低于該門課平均成績時(shí),提高 5%,否則提高 4%。解:①UPDATESCSETGRADE=GRADE+CASEWHENC#'=C5'THEN6WHENC#'=C8'THEN10ELSE5END;UPDATESCSETGRADE=GRADE*CASEWHENGRADE(<SELECTAV(GGRAD)EFROMSCWHEREC#'=C4')THEN1.05ELSE1.04ENDWHEREC#'=C4';設(shè)零件之間有組合聯(lián)系,其關(guān)系模式如下:PART(P#,PNAM,ESUBP,#TOTA)L其屬性表示零件編號(hào)、零件名稱、所需子零件編號(hào)及數(shù)量。設(shè)臨時(shí)關(guān)系 W(P#,SUBP)#的屬性分別表示零件編號(hào)、這種零件的直接或間接子零件編號(hào)。試寫出表示關(guān)系W勺規(guī)則。②寫出計(jì)算W勺遞歸查詢語句。解:①W(x,y)—PART(x,g,y,h)W(x,y)—W(x,z)AW(z,y)WITHRECURSIVEW(P#,SUBP#)AS(SELECTP#,SUBP#FROMPART)UNION(SELECTW1.P#,W2.SUBP#FROMWASW1,WASW2WHEREW1.SUBP#=W2.P#)SELECT*FROM;W試用SQLM新語句表達(dá)對(duì)3.2題教學(xué)數(shù)據(jù)庫中關(guān)系S、SGC的更新操作:往關(guān)系C中插一個(gè)課程元組('C8','VC++','BAO')。檢索所授每門課程平均成績均大于80分的教師姓名,并把檢索到的值送往另一個(gè)已存在的表 FACULT(YTNAM)E。在SC中刪除尚無成績的選課元組。把選修LIU老師課程的女同學(xué)選課元組全部刪去。⑤把MATHS!不及格的成績?nèi)臑?0分。把低于所有課程總平均成績的女同學(xué)成績提高 5%。⑦在表SC中修改C4課程的成績,若成績小于等于70分時(shí)提高5%,若成績大于70分時(shí)提高4%(用兩種方法實(shí)現(xiàn),一種方法是用兩個(gè)UPDAT曲句實(shí)現(xiàn),另一種方法是用帶CASE?作的一個(gè)UPDAT踣句實(shí)現(xiàn))。⑧在表SC中,當(dāng)某個(gè)成績低于全部課程的平均成績時(shí),提高5%解:①INSERTINTOCVALUES'(C8','VC++','BAO');INSERTINTOFACULTY(TNAME)SELECTDISTINCTTEACHERFROM(SELECTTEACHER,C.C#,AVG(GRADE)FROMS,SCWHERESC.C#=C.C#GROUPBYTEACHER,C.C#)ASRESULT(TEACHER,C#,AVG_GRADE)ASXWHERE80<=ALL(SELECTAVG_GRADEFROMRESULTASYWHEREY.TEACHER=X.TEACH;ER)DELETEFROMSCWHEREGRADEISNU;LLDELETEFROMSCWHERES#IN(SELECTS#FROMSWHERES'EFX')=ANDC#IN(SELECTC#FROMCWHERETEACH'LEIRU=');UPDATESCSETGRADE=60WHEREGRADE<60ANDC#IN(SELECTC#FROMCWHERECNA'MEA=TH'S);UPDATESCSETGRADE=GRADE*1.05WHERES#IN(SELECTS#FROMSWHERES'EFX')=ANDGRADE<(SELECTAVG(GRADE)FROM;SC)⑦用兩個(gè)UPDAT踣句實(shí)現(xiàn):UPDATESCSETGRADE=GRADE*1.04WHEREC#'=C4'ANDGRADE>7;0UPDATESCSETGRADE=GRADE*1.05WHEREC#'=C4'ANDGRADE<=7;0(這兩個(gè)UPDATM句的順序不能顛倒。)用一個(gè)UPDAT踣句實(shí)現(xiàn):UPDATESCSETGRADE=GRADE*CASEWHENGRADE>70THEN1.04ELSE1.05ENDWHEREC#'=C4';UPDATESCSETGRADE=GRADE*1.05WHEREGRADE<(SELECTAVG(GRADE)FROMSC;)設(shè)數(shù)據(jù)庫中有三個(gè)關(guān)系:職工表 EMP(E#,ENAM,EAGE,SEX,ECITY),其屬性分別表示職工工號(hào)、姓名、年齡、性別和籍貫。工作表 WORK(SE#,C#,SALAR)Y,其屬性分別表示職工工號(hào)、工作的公司編號(hào)和工資。公司表 COMP(C#,CNAM,ECITY),其屬性分別表示公司編號(hào)、公司名稱和公司所在城市。試用SQL語句寫出下列操作:用CREATETABLE旬創(chuàng)建上述三個(gè)表,需指出主鍵和外鍵。檢索超過50歲的男職工的工號(hào)和姓名。假設(shè)每個(gè)職工只能在一個(gè)公司工作,檢索工資超過 1000元的男性職工工號(hào)和姓名。假設(shè)每個(gè)職工可在多個(gè)公司工作,檢索在編號(hào)為C4和C8公司兼職的職工工號(hào)和姓名。檢索在“聯(lián)華公司”工作、工資超過 1000元的男性職工的工號(hào)和姓名。⑥假設(shè)每個(gè)職工可在多個(gè)公司工作 ,檢索每個(gè)職工的兼職公司數(shù)目和工資總數(shù) .顯示(E#,NUMSUM_SALARY分別表示工號(hào)、公司數(shù)目和工資總數(shù)。工號(hào)為無6的職工在多個(gè)公司工作,試檢索至少在E6職工兼職的所有公司工作的職工工號(hào)。檢索聯(lián)華公司中低于本公司平均工資的職工工號(hào)和姓名。在每一公司中為50歲以上職工加薪 100元(若職工為多個(gè)公司工作,可重復(fù)加)。⑩在EMRft和WORKS中刪除年齡大于60歲的職工有關(guān)元組。解:①CREATETABLEEMP(E# CHAR(4)NOTNULL,ENAMECHAR(8)NOTNULL,AGE SMALLINT,SEX CHAR(1),ECITY CHAR(20),PRIMARYKEY(E#);)CREATETABLECOMP(C# CHAR(4)NOTNULL,CNAMECHAR(20)NOTNULL,CITY CHAR(20),PRIMARYKEY(C#);)CREATETABLEWORKS(E# CHAR(4)NOTNULL,C# CHAR(4)NOTNULL,SALARYSMALLINT,PRIMARYKEY(E#,C#),FOREIGNKEY(E#)REFERENCESEMP(E#),FOREIGNKEY(C#)REFERENCESCOMP(;C#))SELECTE#,ENAMEFROMEMPWHEREAGE>50ANDSE'XM'=;SELECTEMP.E#,ENAMEFROMEMP,WORKSWHEREEMP.E#=WORKS.E#ANDSALARY;>1000SELECTA.E#,A.ENAMEFROMEMPA,WORKSB,WORKSCWHEREA.E#=B.E#ANDB.E#=C.E#ANDB.C#='C4'ANDC.C#='C8';SELECTA.E#,A.ENAMEFROMEMPA,WORKSB,COMPCWHEREA.E#=B.E#ANDB.C#=C.C#ANDCNAME=華公司'ANDSALARY>1000ANDSEX'=M';SELECTE#,COUNT(C#)ASNUM,SUM(SALARY)ASSUM_SALARYFROMWORKSGROUPBYE;#SELECTX.E#FROMWORKSXWHERENOTEXISTS(SELECT*FROMWORKSYWHEREE#'E=6'ANDNOTEXISTS(SELECT*FROMWORKSZWHEREZ.E#=X.E#ANDZ.C#=Y.C#));SELECTA.E#,A.ENAMEFROMEMPA,WORKSB,COMPCWHEREA.E#=B.E#ANDB.C#=C.C#ANDCNAME*華公司'ANDSALARY<(SELECTAVG(SALARY)FROMWORKS,COMPWHEREWORKS.C#=COMP.C#ANDCNAME'聯(lián)華公司= ');UPDATEWORKSSETSALARY=SALARY+100WHEREE#IN(SELECTE#FROMEMPWHEREAGE;>50)DELETEFROMWORKSWHEREE#IN(SELECTE#FROMEMPWHEREAGE;>60)DELETEFROMEMPWHEREAGE>;60對(duì)第3.13題中的關(guān)系建立一個(gè)有關(guān)女職工信息的視圖EMP_WOMAN生包括(E#,ENAMIEC#,CNAM,ESALAR)Y。然后對(duì)視圖EMP_WOMAN,檢索每一位女職工的工資總數(shù)。(假設(shè)每個(gè)職工可在多個(gè)公司兼職)解:CREATEVIEWEMP_WOMANASSELECTA.E#,A.ENAME,C.C#,CNAME,SALARYFROMEMPA,WORKSB,COMPCWHEREA.E#=B.E#ANDB.C#=C.C#ANDSEX='F';SELECTE,#SUM(SALARY)FROMEMP_WOMANGROUPBYE;#在第1章中提到的倉庫管理數(shù)據(jù)庫中有五個(gè)基本表 :零件 PART(P#,PNAM,ECOLO,RWEIGHT)項(xiàng)目 PROJEC(TJ#,JNAM,EDATE)供應(yīng)商 SUPPLIER(S#,SNAM,ESADD)R供應(yīng) P_P(J#,P#,TOTAL)采購 P_S(P#,S#,QUANTITY)①試用SQLDD皚句定義上述五個(gè)基本表,需說明主鍵和外鍵。試將PROJECTP_RPART三個(gè)基本表的聯(lián)接定義為一個(gè)視圖VIEW1,將PARTP_SSUPPLIERS個(gè)基本表的聯(lián)接定義為一個(gè)視圖VIEW2試在上述兩個(gè)視圖的基礎(chǔ)上進(jìn)行查詢操作:a)檢索上海的供應(yīng)商所供應(yīng)的零件的編號(hào)和名稱。b)檢索項(xiàng)目J4所用零件的供應(yīng)商的編號(hào)和名稱。解:①CREATETABLEPART(P#CHAR(6),PNAMECHAR(10)NOTNULL,COLORCHAR(6),WEIGHTFLOAT(6),PRIMARYKEY(P#));CREATETABLEPROJECT(J#CHAR(6),JNAMECHAR(12)NOTNULL,DATEDATE,PRIMARYKEY(J#));CREATETABLESUPPLIER(S#CHAR(8),SNAMECHAR(12)NOTNULL,SADDRVARCHAR(30),PRIMARYKEY(S#));CREATETABLEP_P(J#CHAR(6),P#CHAR(6),TOTALINTEGER,PRIMARYKEY(J#,P#)FOREIGNKEY(J#)REFERENCESPROJECT(J#),FOREIGNKEY(P#)REFERENCESPART(P#));CREATETABLEP_S(P#CHAR(6),S#CHAR(8),QUANTITYINTEGER,PRIMARYKEY(P#,S#)FOREIGNKEY(P#)REFERENCESPART(P#),FOREIGNKEY(S#)REFERENCESSUPPLIER(S#));CREATEVIEWVIEW1ASSELECTA.J#,JNAME,DATE,C.P#,PNAME,COLOR,WEIGHT,TOTALFROMPROJECTA,P_PB,PARTCWHEREA.J#=B.J#ANDB.P#=C.P#;CREATEVIEWVIEW2ASSELECTA.P#,PNAME,COLOR,WEIGHT,C.S#,SNAME,SADDR,QUANTITYFROMPARTA,P_SB,SUPPLIERCWHEREA.P#=B.P#ANDB.S#=C.S#;a) SELECTP#,PNAMEFROMVIEW2WHERESADDRLIKE’上海 %’;b)SELECTS#,SNAMEFROMVIEW1,VIEW2WHEREVIEW1.P#=VIEW2.P#ANDJ#=’J4’;3.16對(duì)于3.2題的教學(xué)數(shù)據(jù)庫中基本表SG建立一個(gè)視圖:CREATEVIEWS_GRADE,(S#C_NU,MAVG_GRADE)ASSELECTS,#COUNT(C#,)AVG(GRAD)EFROMSCGROUPBYS#;試判斷下列查詢和更新操作是否允許執(zhí)行。如允許,寫出轉(zhuǎn)換到基本表SC上的相應(yīng)操作SELECT*FROMS_GRA;DESELECTS,#C_NUMFROMS_GRADEWHEREAVG_GRADE;>80SELECTS,#AVG_GRADEFROMS_GRADEWHEREC_NUM>(SELECTC_NUMFROMS_GRADEWHERES#='S4');UPDATES_GRADESETS#='S3'WHERES#='S4;'DELETEFROMS_GRADEWHEREC_NUM;>4答:①允許查詢。相應(yīng)的操作如下:SELECTS,#COUN(TC#)ASC_NUM,AVG(GRAD)EASAVG_GRADEFROMSCGROUPBYS;#允許查詢。相應(yīng)的操作如下:SELECTS,#COUN(TC#)ASC_NUMFROMSCGROUPBYS#HAVINGAV(GGRAD)E>80;允許查詢。相應(yīng)的操作如下:SELECTS,#AVG(GRAD)EASAVG_GRADEFROMSCGROUPBYS#HAVINGCOUN(TC#)>(SELECTCOUN(TC#)FROMSCGROUPBYS#HAVINGS#='S4');不允許。C_NUMg又tSC中的學(xué)生選修門數(shù)進(jìn)行統(tǒng)計(jì),在未更改 SC表時(shí),要在視圖S_GRADE更改門或,是不可能的。⑤不允許。在視圖S_GRADE刪除選修門數(shù)在4門以上的學(xué)生元組,勢必造成SC中這些學(xué)生學(xué)習(xí)元組的刪除,這不一定是用戶的原意,因此使用分組和聚合操作的視圖,不允許用戶執(zhí)行更新操作。預(yù)處理方式對(duì)于嵌入式SQL的實(shí)現(xiàn)有什么重要意義?答:此時(shí)宿主語言的編譯程序不必改動(dòng),只要提供一個(gè) SQL函數(shù)定義庫,供編譯時(shí)使用。預(yù)處理方式只是把源程序中的SQL語句處理成宿主語言的函數(shù)調(diào)用形式。在宿主語言的程序中使用SQL語句有哪些規(guī)定?答:有三條規(guī)定:在程序中要區(qū)分 SQL語句與宿主語言語句,所有 SQL語句必須加前綴標(biāo)識(shí)“EXECSQL”以及結(jié)束標(biāo)志"END_EXEC”;允許嵌入的SQL語句引用宿主語言的程序變量,而主語句不能引用數(shù)據(jù)庫中的字段變量;SQL的集合處理方式與宿主語言的單記錄處理方式之間要用游標(biāo)機(jī)制協(xié)調(diào)。SQL的集合處理方式與宿主語言單記錄處理方式之間如何協(xié)調(diào)?答:用游標(biāo)機(jī)制協(xié)調(diào)。把 SELECT語句查詢結(jié)果定義成游標(biāo)關(guān)系,以使用文件的方式來使用游標(biāo)關(guān)系。與游標(biāo)有關(guān)的 SQL語句有四個(gè):游標(biāo)定義,游標(biāo)打開,游標(biāo)推進(jìn),游標(biāo)關(guān)閉。嵌入式SQLBDMLS旬何時(shí)不必涉及到游標(biāo)?何時(shí)必須涉及到游標(biāo)?答:不涉及游標(biāo)的DML語句有下面兩種情況:①INSERT、DELETE、UPDATE語句,只要加上前綴和結(jié)束標(biāo)志,就能嵌入在宿主語言程序中使用;②對(duì)于SELECT語句,如果已知查詢結(jié)果肯定是單元值,也可不必涉及游標(biāo)操作。涉及游標(biāo)的DML語句有下面兩種情況:當(dāng)SELECT語句查詢結(jié)果是多個(gè)元組時(shí),必須用游標(biāo)機(jī)制把多個(gè)元組一次一個(gè)地傳遞給主程序處理;對(duì)游標(biāo)指向元組進(jìn)行修改或刪除操作時(shí),也涉及到游標(biāo)。3.21在教學(xué)數(shù)據(jù)庫中檢索成績不及格的學(xué)生信息,要求顯示 (S#,SNAM,EC#,CNAM,ETEACHE)R,試編寫實(shí)現(xiàn)此功能的嵌有SQL?句的C語言程序段。解:#defineNO_MORE_TUPLES!(strcmp(SQLSTAT,〞E02000〞))voidsel(){EXECSQLBEGINDECLARESECTI;ONcharsno[5],cno[5],sname[9],cname[11],teacher[9];charSQLSTATE[6];EXECSQLENDDECLARESECT;IONEXECSQLDECLARExCURSORFORSELECTs.s#,sname,c.c#,cname,teacherFROMs,sc,cWHEREs.s#=sc.s#andsc.c#=c.c#andgrade<60;EXECSQLOPENsc;xwhile(1){EXECSQLFETCHFROMxINTO:sno,:sname,:cno,:cname,:teacher;if(NO_MORE_TUP)LEbSreak;printf(〞 %s,%s,%s,%s,%s\n〞,sno,sname,cno,cname,teacher);}EXECSQLCLOSE;x}3.3練習(xí)題填空題TOC\o"1-5"\h\z1.在SQL中,關(guān)系模式稱為 ,子模式稱為 ,元組稱為 ,屬性稱為 。.SQL中,表有兩種: 和 ,也稱為 和 。.SQL中,用戶有兩種: 和 。.SQL中,外模式一級(jí)數(shù)據(jù)結(jié)構(gòu)的基本單位是 。5.在“ SQL模式”中,主要成分有 。6.基本表中, “主鍵”概念應(yīng)該體現(xiàn)其值的 和 兩個(gè)特征。7.操作“元組 IN(集合)”的語義是 。8.表達(dá)式中的通配符“ %”表示 ,“_”(下劃線)表示 。9.操作“元組 >SOME(集合)”的語義是 。10.操作“元組 <ALL(集合)”的語義是 。.SQL有兩種使用方式: 和 。.嵌入式 SQL的預(yù)處理方式,是指預(yù)處理程序先對(duì)源程序進(jìn)行掃描,識(shí)別出 ,并處理成宿主語言的 形式。13.為保證嵌入式 SQL的實(shí)現(xiàn),通常 DBMS制造商提供一個(gè) ,供編譯時(shí)使用。SQL語句嵌入在 C語言程序中時(shí),必須加上前綴標(biāo)識(shí) 和結(jié)束標(biāo)志 ?!熬碛螛?biāo)”是指 。.3.2單項(xiàng)選擇題(在備選答案中選出一個(gè)正確答案)1.在SQL中,用戶可以直接進(jìn)行查詢操作的是 [ ]A.實(shí)表和虛表 B.基本表和實(shí)表C.視圖和虛表 D.基本表.SQL中,聚合函數(shù) COUNT(列名)用于 [ ]A.計(jì)算元組個(gè)數(shù) B.計(jì)算屬性的個(gè)數(shù)C.對(duì)一列中的非空值計(jì)算個(gè)數(shù) D.對(duì)一列中的非空值和空值計(jì)算個(gè)數(shù).SQL中,與“NOTIN”等價(jià)的操作符是 [ ]A.=SOMEB.<>SOMEC.=ALLD.<>ALL.元組比較操作(ai,a2)>(bi,b2)的意義是 []A.(a1>b1)OR((a1=b1)AND(a2>=b2))B.(ai>=bi)OR((ai=bi)AND(a2>=b2))C.(ai>bi)OR((ai=bi)AND(a2>b2))D.(ai>=bi)OR((ai=bi)AND(a2>b2).SQL中,謂詞EXISTS可用來測試一個(gè)集合是否[ ]A.有重復(fù)元組 B.有重復(fù)的列名C.為非空集合 D.有空值6.對(duì)于基本表 EMP(ENO,ENAME,SALARY,DNO)其屬性表示職工的工號(hào)、姓名、工資和所在部門的編號(hào)?;颈鞤EPT(DNO,DNAME)其屬性表示部門的編號(hào)和部門名。有一SQL語句:SELECTCOUNT(DISTINCTDNO)FROMEMP;其等價(jià)的查詢語句是 [ ]A.統(tǒng)計(jì)職工的總?cè)藬?shù) B.統(tǒng)計(jì)每一部門的職工人數(shù)C.統(tǒng)計(jì)職工服務(wù)的部門數(shù)目 D.統(tǒng)計(jì)每一職工服務(wù)的部門數(shù)目7對(duì)于第 6題的兩個(gè)基本表,有一個(gè) SQL語句:SELECTENO,ENAMEFROMEMPWHEREDNONOTIN(SELECTDNOFROMDEPTWHEREDNAME='金工車間 ';其等價(jià)的關(guān)系代數(shù)表達(dá)式是:[ ]A.EENO,ENAME((TDNAME*'金工車間’(EMP?DEPT))EENO,ENAMEEMP?DEPT)DNAMEw'金工車間'C.EENO,ENAME(EMP)—兀ENO,ENAME(dDNAME='金工車間’(EMP?DEPT))D,兀ENO,ENAME(EMP)一兀ENO,ENAME(①DNAMEJ金工車間’(EMP?DEPT))8對(duì)于第 6題的兩個(gè)基本表,有一個(gè) SQL語句:UPDATEEMPSETSALARY=SALARY*1.05WHEREDNO='D6'ANDSALARY<(SELECTAVG(SALARY)FROMEMP);其等價(jià)的修改語句為[ ]A為工資低于 D6部門平均工資的所有職工加薪 5%B為工資低于整個(gè)企業(yè)平均工資的職工加薪 5%C.為在D6部門工作、工資低于整個(gè)企業(yè)平均工資的職工加薪 5%D為在 D6部門工作、工資低于本部門平均工資的職工加薪 5%9有關(guān)嵌入式 SQL的敘述,不正確的是 [ ]A宿主語言是指 C一類高級(jí)程序設(shè)計(jì)語言B宿主語言是指 SQL語言C.在程序中要區(qū)分SQL語句和宿主語言語句DSQL有交互式和嵌入式兩種使用方式10嵌入式SQL實(shí)現(xiàn)時(shí),采用預(yù)處理方式是 [A把SQL語句和主語言語句區(qū)分開來B為SQL語句加前綴標(biāo)識(shí)和結(jié)束標(biāo)志C.識(shí)別出SQL語句,并處理成函數(shù)調(diào)用形式D把SQL語句編譯成二進(jìn)制碼TOC\o"1-5"\h\z.允許在嵌入的 SQL語句中,引用宿主語言的程序變量,在引用時(shí)[ ]A.直接引用B.這些變量前必須加符號(hào)“ *”C.這些變量前必須加符號(hào)“:”D.這些變量前必須加符號(hào)“ &”.如果嵌入的 SELECT語句的查詢結(jié)果肯定是單元組,那么嵌入時(shí)[ ]A.肯定不涉及游標(biāo)機(jī)制B.必須使用游標(biāo)機(jī)制C.是否使用游標(biāo),由應(yīng)用程序員決定D.是否使用游標(biāo),與 DBMS有關(guān)TOC\o"1-5"\h\z13.卷游標(biāo)的推進(jìn)語句“ EXECSQLFETCHRELATIVE -4”表示 [ ]A.把游標(biāo)移向查詢結(jié)果的第 4行B.把游標(biāo)移向查詢結(jié)果的倒數(shù)第 4行C.把游標(biāo)從當(dāng)前位置推進(jìn)4行D.把游標(biāo)從當(dāng)前位置返回 4行14.卷游標(biāo)的推進(jìn)語句“ EXECSQLFETCHABSOLUTE-3”表示 [ ]A.把游標(biāo)移向查詢結(jié)果的第 3行B.把游標(biāo)移向查詢結(jié)果的倒數(shù)第 3行C.把游標(biāo)從當(dāng)前位置推進(jìn)3行D.把游標(biāo)從當(dāng)前位置返回 3行3.3.3簡答題1.試敘述SQL的關(guān)系代數(shù)特點(diǎn)和元組演算特點(diǎn)。2.SQL語言對(duì)于“查詢結(jié)果是否允許存在重復(fù)元組”是如何實(shí)現(xiàn)的?3.試對(duì) SELECT語句中使用的基本表名和列名的語義作詳細(xì)的解釋。4.SELECT語句中,何時(shí)使用分組子句,何時(shí)不必使用分組子句?3.4練習(xí)題答案填空題答案.基本表 視圖行列.基本表 視圖實(shí)表虛表.應(yīng)用程序 終端用戶4.視圖5.基本表、視圖、索引、完整性規(guī)則等.惟一 非空.若元組在集合中,其值為true,否則為false8.與零個(gè)或多個(gè)字符組成的字符串匹配 與單個(gè)字符匹配.若元組值大于集合中某一元組值,則其值為 true,否則為false.若元組值小于集合中每一元組值,則其值為 true,否則為false.交互式 SQL嵌入式SQL.SQL語句函數(shù)調(diào)用.SQL函數(shù)定義庫TOC\o"1-5"\h\z.EXECSQL分號(hào)(; )15.可以進(jìn)退自如的游標(biāo)(即可隨意推進(jìn)或返回)3.4.2單項(xiàng)選擇題答案A 2. C 3.D4.C 5.C 6.C 7.C8.C 9. B 10.C11.C 12.C 13.D 14.B3.4.3簡答題答案.答:SQL的SELECT語句的基本句法來自于關(guān)系代數(shù)表達(dá)式九 l(①f(RiX…XRm)),并且SQL中有并(UNION)、交(INTERSECT)和差(EXCEPT)等操作,因止匕SQL具有關(guān)系代數(shù)特點(diǎn)。SELECT語句中出現(xiàn)的基本表名,都應(yīng)該理解成基本表中的元組變量,而列名應(yīng)理解成元組分量,這樣 SQL就具有了元組演算的特點(diǎn)。.答:對(duì)于SELECT語句中SELECT子句,若用“SELECTDISTINCT”形式,貝U查詢結(jié)果中不允許有重復(fù)元組;若不寫 DISTINCT字樣,則查詢結(jié)果中允許出現(xiàn)重復(fù)元組。3.答:在基本 SQL中,SELECT語句中使用的基本表名都應(yīng)該理解成表中的元組變量,而列名就成了元組分量。這樣就使 SELECT語句帶有元組演算的特點(diǎn)。(注:實(shí)際上,在基本 SQL中,把關(guān)系變量和元組變量混為一談了。這在面向?qū)ο髷?shù)據(jù)庫中得到了糾正,在引用表時(shí),都要為表定義一個(gè)元組變量。)4.答: SELECT語句中使用分組子句的先決條件是要有聚合操作。當(dāng)聚合操作值與其他屬性的值無關(guān)時(shí),不必使用分組子句。譬如求男同學(xué)的人數(shù)。此時(shí)聚合值只有一個(gè),因此不必分組。當(dāng)聚合操作值與其他屬性的值有關(guān)時(shí),必須使用分組子句。譬如求每一性別的人數(shù)。此時(shí)聚合值有兩個(gè),與性別有關(guān),因此必須分組。第4章模式設(shè)計(jì)理論基本知識(shí)點(diǎn)本章重要概念(1)關(guān)系模式的冗余和異常問題。FD的定義、邏輯蘊(yùn)涵、閉包、推理規(guī)則、與關(guān)鍵碼的聯(lián)系;平凡的 FD;屬性集的閉包;推理規(guī)則的正確性和完備性;FD集的等價(jià);最小依賴集。(3)無損分解的定義、性質(zhì)、測試;保持依賴集的分解。(4)關(guān)系模式的范式: 1NF,2NF,3NF,BCNF。分解成 2NF、3NF模式集的算法。MVD、4NF、JD和5NF的定義。4.1.2本章的重點(diǎn)篇幅(1)教材中P148的例4.13。(無損聯(lián)接和保持 FD的例子)(2)教材中P149的例4.14和P150的例4.15。(分解成2NF和3NF的例子)4.2教材中習(xí)題4的解答名詞解釋數(shù)據(jù)冗余:指同一個(gè)數(shù)據(jù)在系統(tǒng)中多次重復(fù)出現(xiàn)。?函數(shù)依賴(FD):在關(guān)系模式R(U)中,F(xiàn)D是形為X-Y的一個(gè)命題,只要r是R的當(dāng)前關(guān)系,對(duì)r中任意兩個(gè)元組t和s,都有t[X]=s[X]蘊(yùn)涵t[Y]=s[Y],那么稱FDX-Y在關(guān)系模式R(U)中成立。平凡的FD:如果X-Y,且Y?X,則稱X-Y是一個(gè)“平凡的FD”。FD集F的閉包F+:被F邏輯蘊(yùn)涵的函數(shù)依賴全體構(gòu)成的集合,稱為F的閉包,記為F+,即F+={X-Y|F?XfY}。屬性集X的閉包X+:從已知的FD集F使用FD推理規(guī)則推出的所有滿足X-A的屬性A的集合,稱為X的閉包,記為X+,即X+={屬性A|X-A在F+中}。FD的邏輯蘊(yùn)涵:如果從已知的FD集F能推導(dǎo)出X-Y成立,那么稱F邏輯蘊(yùn)涵XfY,記為F?X-Y。?FD集的等價(jià):對(duì)于兩個(gè)FD集F和G,有F+=G+,則稱F和G是等價(jià)的依賴集。?最小依賴集:設(shè)F是屬性集U上的FD集,F(xiàn)min是F的最小依賴集,那么Fmin應(yīng)滿足下列四個(gè)條件:Fmin+=F+;每個(gè)FD的右邊都是單屬性;Fmin中沒有冗余的FD;每個(gè)FD的左邊沒有冗余的屬性。?無損分解:設(shè)關(guān)系模式R,F是R上的FD集,P={Ri,…,Rk}是R的一個(gè)分解。k如果對(duì)R中滿足F的每一關(guān)系r,都有r=?i=i九%(r),那么稱分解p相對(duì)F是“無損分解”。?泛關(guān)系假設(shè):指數(shù)據(jù)庫中每一個(gè)關(guān)系都是全部屬性構(gòu)成的關(guān)系的投影,此時(shí),由全部屬性構(gòu)成的關(guān)系稱為泛關(guān)系。?chase過程:根據(jù)已知FD集,對(duì)R分解成p構(gòu)造的初始表格的值進(jìn)行修改,使之符合FD集,這個(gè)過程稱為chase過程。?保持FD:設(shè)關(guān)系模式R,F是R上的FD分解,p={Ri,…,Rk}是R的一個(gè)分解,k如果有Um=Ri(F)?F,那么稱分解p保持FD集F。1NF:如果關(guān)系模式R的每個(gè)關(guān)系r的屬性值都是不可分的原子值,那么稱R是1NF的模式。2NF:如果R是1NF的模式,且每個(gè)非主屬性完全函數(shù)依賴于 R的候選鍵,那么稱R是2NF的模式。.3NF:如果R是1NF的模式,且每個(gè)非主屬性都不傳遞依賴于 R的候選鍵,那么稱R是3NF的模式。BCNF:如果R是1NF的模式,且每個(gè)屬性都不傳遞依賴于R的候選鍵,那么稱R是BCNF的模式。4NF:設(shè)D是關(guān)系模式R上成立的FD和MVD集合。如果D中每個(gè)非平凡的MVDX的左部X都是R的超鍵,那么稱R是4NF模式。5NF:如果關(guān)系模式R的每個(gè)JD均由R的候選鍵蘊(yùn)涵,那么稱R是5NF的模式。多值依賴(MVD):設(shè)關(guān)系模式R(U),X和Y是U的子集,Z=U-X-Y。對(duì)于R的關(guān)系r,若在r中存在元組(x,yi,zi)和(x,y2,z2),就也應(yīng)存在元組(x,y2,zi)和(x,yi,Z2),那么稱MVDX—7在模式R上成立。聯(lián)接依賴(JD):設(shè)關(guān)系模式R(U),Ri、…、Rn是U的子集,并滿足U=RiU-URn,P={Ri,…,Rn}是R的一個(gè)分解。如果對(duì)于R的每個(gè)關(guān)系r都有mP(r)=r,那么稱JD*(Ri,…,Rn)在模式R上成立。用Ai、A2和A3三條推理規(guī)則來證明4.2.3節(jié)中的定理4.2(推理規(guī)則A4?A8)。A4(合并性,union):{XfY,X-Z}?X^Y乙證明:已知X7丫,根據(jù)A2,兩邊用X擴(kuò)充,得到X-XY從已知X-Z,根據(jù)A2兩邊用Y擴(kuò)充,得到XY^Y乙冉本g據(jù)A3,從X-XY和XY^YZ可得至UX-Y乙A5(分解性,decomposition):{XfY,ZY}?X-乙證明:已知ZY,可得Y-乙從Y-Z和已知X-Y,可得X-Z成立。A6(偽傳遞性):{XfY,WY>Z}?WX>Z。證明:已知XfY,根據(jù)A2,兩邊用WT充,得到WX>WY據(jù)WX>WY和已知的WY>Z,。再根據(jù)A3,可得WX>Z成立。A7(復(fù)合性,composition):{XfY,WZ}?XW>Y乙證明:已知X-Y,根據(jù)A2,兩邊用W擴(kuò)充,得到WX>WY從已知WZ,根據(jù)A2兩邊用Y擴(kuò)充,得至ijWY>Y乙冉*艮據(jù)A3,從WX>WYf口WY>YZ可得至ijXW>YZ成立。
A8{XfY,WZ}?XU(VW-Y)->\Z證明:已知X-Y,根據(jù)A2,兩邊用(W-Y)擴(kuò)充,得到XU(W-Y)-YU(W-Y),而YU(W-Y=WY因此有XU(W-Y)fWY從已知WZ,根據(jù)A2兩邊用Y擴(kuò)充,得到WY>丫乙再根據(jù)A3,從XU(W-Y)-WYf口WY>YZ可得至ijXU(W-Y)-YZo對(duì)函數(shù)依賴X-Y的定義加以擴(kuò)充,X和Y可以為空屬性集,用小表示,那么X-小,小—Y,小—小的含義是什么?答:據(jù)推理規(guī)則的自反律可知,X力和力力是平凡的FD,總是成立的。而力Y表示在當(dāng)前關(guān)系中,任意兩個(gè)元組的Y值相等,也就是當(dāng)前關(guān)系的Y值都相等。設(shè)關(guān)系模式R有n個(gè)屬性,在模式R上可能成立的函數(shù)依賴有多少個(gè)?其中平凡的 FD有多少個(gè)?非平凡的FD有多少個(gè)?解:這個(gè)問題是排列組合問題。FD形為XY,從n個(gè)屬性值中選擇屬性組成X共有Cg+C1+…+C^]=2n種方法;同理,組成Y也有2n種方法。因此組成XY形式應(yīng)該有2n-2n=4n種方法。即可能成立的FD有4n個(gè)。平凡的FD要求YX,組合XY形式的選擇有:mC
+
ooC
?
onCnullmC
+
ooC
?
onCnull+C)+C2+)22C+12C+02+CS(Cg+ci+-?CS)=CR?20+C1?21+C^?22+…+CR?2n=(1+2)n=3n即平凡的FD有3n。因而非平凡的FD有4n—3n個(gè)已知關(guān)系模式R(ABC),F是R上成立的FD集,F(xiàn)={A-B,B-C},試寫出F的閉包F+。解:據(jù)已知條件和推理規(guī)則,可知F+有43個(gè)FD:A 力 AB 力A 力 AB 力A A AB AA B AB BACABCAC 力 ABC 力AC A ABC AAC B ABC BAC C ABC CB力C力
BB CCBC 力力BBCA AB AB ABA AC AB ACA BC AB BCA AB AB ABA AC AB ACA BC AB BCACABACACACBCABCABBC力ABCACBCBABCBCBCCAABCABABCACABCABCABCBCBCAABC設(shè)關(guān)系模式R(ABCD),F是R上成立的FD集,F(xiàn)={A-B,C-B},則相對(duì)于F,試寫出關(guān)系模式 R的關(guān)鍵碼。并說明理由。解:R的關(guān)鍵碼為ACD。因?yàn)閺囊阎腇,只能推出ACD-ABCD設(shè)關(guān)系模式R(ABCD)hFD集為F,并且F={AAC,CfD,D-A}。①試從F求出所有非平凡的 FD。②試求R的所有候選鍵。③試求R的所有不是候選鍵的超鍵。解:①從已知的F可求出非平凡的FD有76個(gè)譬如,左邊是C的FD有6個(gè):C-A,C-D,C-AD,CfAG8CDCfACD左邊是D的FD有2個(gè):AA,AAD左邊是AB的FD有12個(gè):AB-^C,AAD,AACDAB^AG……。感興趣的讀者可以自行把這76個(gè)FD寫齊。②候選鍵是能函數(shù)決定所有屬性的不含多余屬性的屬性集。根據(jù)這個(gè)概念可求出 R的候
選鍵有三個(gè):ARBC和BdABCABDBCDffiABCD③R的所有不是候選鍵的超鍵有四個(gè):4.8試舉出反例說明下列規(guī)則不成立:ABCABDBCDffiABCD①{A-B}?{BfA}②{AB-C,A-C}?{BfC}③{AB-C}③{AB-C}?{A-C}(2)在關(guān)系”中,AB-C和A-C成立,但B-C不成立(3)在關(guān)系r3中,AB-C成立,但A-C不成立。設(shè)關(guān)系模式R(ABCD,F是R上成立的FD集,F(xiàn)={A-B,B-C},①試寫出屬性集BD的閉包(BD)+。②試寫出所有左部是B的函數(shù)依賴(即形為“B-?”)。解:①從已知的F,可推出BD-BCD,所以(BD)+=BCD。②由于B+=BC,因此左部是B的FD有四個(gè):B-小,B-B,B-C,B-BCo設(shè)關(guān)系模式R(ABCDEtFD集為F,并且F={A-BGCAE,B-D,E-A}①試求R的候選鍵。②試求B+的值。解:①R的候選鍵有四個(gè):AE、CD和BG②B+=BD設(shè)有關(guān)系模式R(ABC),其關(guān)系r如圖4.1所小。①試判斷下列三個(gè)FD在關(guān)系r中是否成立?A-B BC-AB-A②根據(jù)關(guān)系r,你能斷定哪些FD在;系模式R上不成立?ABC圖4.1解:①在關(guān)系r中,A-B成立,BC-A②在關(guān)系r中,不成立的FD有:B-A,1 2 34 2 35 3 3不成立,BfA不成立。C-A,C-B,C-AB,B8A。設(shè)關(guān)系模式R(ABC)分解成p= {AB,BC},如果R上的FD集F={A-B},那么這個(gè)分解是損失分解。試舉出R的一個(gè)關(guān)系r,不滿足mP(r)=r。解:這個(gè)反例r可以舉測試時(shí)的初始表格:ABCABa1a2b13BCb21a2a3兀ab(r)?ttbc(r)有四個(gè)元組:ABCb13a1 ab13a1a2a3b21a2 b13b21a2a3即mp(r)wr。試解釋數(shù)據(jù)庫“丟失信息”與“未丟失信息”兩個(gè)概念?!皝G失信息”與“丟失數(shù)據(jù)”有什么區(qū)別?答:數(shù)據(jù)庫中丟失信息是指r^mP(r),未丟失信息是指r=mP(r)。丟失信息是指不能辨別元組的真?zhèn)?,而丟失數(shù)據(jù)是指丟失元組。設(shè)關(guān)系模式R(ABC),F是R上成立的FD集,F(xiàn)={A-C,B-C},試分別求F在模式AB和AC上的投影。答:冗ab(F)=小(即不存在非平凡的FD)ttac(F)={A-C}設(shè)關(guān)系模式R(ABC),F是R上成立的FD集,F(xiàn)={B-A,C-A},p={AB,BC}是R上的一個(gè)分解,那么分解p是否保持FD集F?并說明理由。答:已知F={B-A,C-A},而冗ab(F)={B-A},冗bc(F)=小,顯然,分解p丟失了FDC-A。設(shè)關(guān)系模式R(ABC),F是R上成立的FD集,F(xiàn)={B-C,C-A},那么分解p={AB,AC}相對(duì)于F,是否無損分解和保持FD?并說明理由。答:①已知F={B-C,C-A},而TTAB(F)=(|),兀AC(F)={C-A}顯然,這個(gè)分解丟失了FDB-C②用測試過程可以知道,p相對(duì)于F是損失分解。設(shè)關(guān)系模式R(ABCDEG)FD集為F,并且F={AG,C-A,CAE,AfB}。①求D+,C+,A+,(CD)+,(AD)+,(AC)+,(ACD)+。②試求R的所有候選鍵。③用p1={CDEGABQ替換R,這個(gè)分解有什么冗余和異?,F(xiàn)象?④用p2={DGAC,CDEAB}替換R,這個(gè)分解是無損分解嗎?⑤用P3={CDEAGDGBCD替換R,先求F在p3的每個(gè)模式上的投影兀Ri(F),再判斷分解P3保持FD嗎?解:①D+=DGC+=ABCA+=AR(CD)+=ABCDEG(AD)+=ABDG(AC)+=ABC(ACD)+=ABCDEG②R的候選鍵只有一個(gè): CD。③用p1={CDEGABC替換R,在本K式CDEGK有局部依賴CAG,此時(shí)在關(guān)系中,一個(gè)D值只有一個(gè)G值,但當(dāng)這個(gè)D值與10個(gè)C值對(duì)應(yīng)時(shí),就要出現(xiàn)10個(gè)元組,則G值就要重復(fù)10次。在模式ABCt,有傳遞依賴(C-A和A-B),此時(shí)在關(guān)系中,一個(gè)A值只有一個(gè)B值,但當(dāng)這個(gè)A值與10個(gè)C值對(duì)應(yīng)時(shí),就要出現(xiàn)10個(gè)元組,則B值就要重復(fù)10次。④用p2={DGAC,CDEAB}替換R,據(jù)chase過程可知,相對(duì)于F,R分解成p是無損分解。⑤用P3={CDEAGDGBCD替換R,則F在模式CDE±lB&影為{CA曰,F(xiàn)在模式AC上的投影為{8A},F在模式DG上的投影為{DfG},F在模式BCD1的投影為{CfB},顯然從這四個(gè)投影集中的FD推不出原來F中的A-B,因此分解p3不保持FD集。設(shè)關(guān)系模式R(ABCD),F是R上成立的FD集,F(xiàn)={A-B,B-C,A-D,D-C},P={AB,AC,BD}是R的一個(gè)分解。①相對(duì)于F,p是無損分解嗎?為什么?②試求F在P的每個(gè)模式上的投影。③p保持F嗎?為什么?答:①用測試過程可以知道,p相對(duì)于F是損失分解。②幾AB(F)={A—B},TtAC(F)={A-C},兀BD(F)=小。③顯然,分解p不保持FD集F,丟失了B-C、A-D和D-C等三個(gè)FD。設(shè)關(guān)系模式R(ABCD),R上的FD集F={A-C,D-C,BD-A},試說明p={AB,ACD,BCD}相對(duì)于F是損失分解的理由。答:據(jù)已知的F集,不可能把初始表格修改為有一個(gè)全a行的表格,因此p相對(duì)于F是損失分解。設(shè)關(guān)系模式R(ABCD)hFD集為F,并且F={A-B,B-C,DfB}。①R分解成p={ACDBDr,試求F在ACDffiBD上的投影。②ACD和BD是BCNFF馬?如不是,試分解成BCNF解:①F在模式ACD上的投影為{A-C,AC},F在模式BD上的投影為{DfB}。②由于模式ACD勺關(guān)鍵碼是AD,因此顯然模式AC¥是BCNF模式ACD應(yīng)分解成{AGAQ或{CDADJ。但是這個(gè)分解不保持FD,丟失了FDAC或A-C。另外,模式BD已是BCNF設(shè)關(guān)系模式R(ABCD)p={AB,BC,CD是R的一個(gè)分解。設(shè)F1=?B,B-C},F2={B,C,C-D
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度南京企業(yè)總部辦公室高端裝修合同4篇
- 2025版門衛(wèi)突發(fā)事件應(yīng)對(duì)合同范本4篇
- 2025年度智能穿戴設(shè)備研發(fā)與制造承攬服務(wù)合同范本4篇
- 擔(dān)保合同協(xié)議書(2篇)
- 二零二五版智能門禁系統(tǒng)研發(fā)與定制合同全文4篇
- 二零二五年度出租車行業(yè)司機(jī)招聘與綠色出行倡導(dǎo)合同3篇
- 二零二五年度門類安裝工程質(zhì)量保證合同4篇
- 2025年棉花產(chǎn)業(yè)扶貧項(xiàng)目運(yùn)輸保障合同書2篇
- 二零二五年度排水設(shè)施安全保障與應(yīng)急預(yù)案合同4篇
- 二零二五年度土地租賃合同糾紛調(diào)解服務(wù)協(xié)議
- 家具生產(chǎn)車間規(guī)章制度
- (高清版)JTGT 3360-01-2018 公路橋梁抗風(fēng)設(shè)計(jì)規(guī)范
- 小紅書違禁詞清單(2024年)
- 胰島素注射的護(hù)理
- 云南省普通高中學(xué)生綜合素質(zhì)評(píng)價(jià)-基本素質(zhì)評(píng)價(jià)表
- 2024年消防產(chǎn)品項(xiàng)目營銷策劃方案
- 聞道課件播放器
- 03軸流式壓氣機(jī)b特性
- 五星級(jí)酒店收入測算f
- 大數(shù)據(jù)與人工智能ppt
- 人教版八年級(jí)下冊第一單元英語Unit1 單元設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論