版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數(shù)據(jù)庫系統(tǒng)基礎教程PrinciplesofDatabase第一頁,共一百一十二頁,編輯于2023年,星期三依賴理論人們采用多種方法為一個應用設計關系數(shù)據(jù)庫模式。初始的關系模式通常需要改進,尤其在消除冗余方面。一般來說,這些問題是由于模式試圖將過多的內容合并到一個關系中而造成的。依賴理論涉及如何構建一個良好的關系數(shù)據(jù)庫模式,以及當一個模式存在缺陷時如何改進。第二頁,共一百一十二頁,編輯于2023年,星期三3.1函數(shù)依賴關系R上的函數(shù)依賴是指“如果R的兩個元組在屬性A1,A2...An上一致,那么它們必定在其他屬性B1,B2...Bm上一致.該函數(shù)依賴記為:A1,A2...An->B1,B2...Bm。如果關系R的每個實例都能使一個給定的FD為真,那么稱R滿足函數(shù)依賴f。這是在R上聲明了一個約束,而不是僅僅針對R的一個特殊實例。例3.1考慮關系Movies(title,year,length,genre,sudioName,starName)函數(shù)依賴:titleyear->lengthgenrestudioNametitleyear->starName第三頁,共一百一十二頁,編輯于2023年,星期三3.1.2關系的鍵如果下列條件滿足,就認為一個或多個屬性集{A1,A2,...An}是關系的鍵。這些屬性函數(shù)決定關系的所有其他屬性。也就是說,關系R不可能存在兩個不同的元組,它們具有相同的A1,A2,..,An值。在{A1,A2,...An}的真子集中,沒有一個能函數(shù)決定R的所有其他屬性。例3.2Movies1(title,year,length,genre,sudioName,starName)鍵為:(title,year,starName)有時一個關系可能會有多個鍵,通常需要指定一個為主鍵。超鍵:一個包含鍵的屬性集叫超鍵。第四頁,共一百一十二頁,編輯于2023年,星期三3.2函數(shù)依賴的規(guī)則例3.4如果關系R(A,B,C)滿足FD:A->B和B->C,那么久可以推斷出A->C。對于FD結合S和T而言,若關系實例集合滿足S與其滿足T的情況完全一樣,就認為S和T等價;若滿足T中所有FD的每個關系實例也滿足S中的所有FD,則認為S是由T推斷而來的。當且僅當S是從T中推斷而來,并且T也是從S中推斷而來,S和T才是等價的。第五頁,共一百一十二頁,編輯于2023年,星期三3.2.2分解組合規(guī)則A1,A2...An->B1,B2...Bm等價于下列FD的集合A1,A2...An->B1,A1,A2...An->B2,....,A1,A2...An->Bm.分解規(guī)則不能應用到FD的左邊,例3.6。3.2.3平凡函數(shù)依賴A1,A2...An->B1,B2...Bm,其中{B1,B2...Bm}屬于{A1,A2...An},平凡FD的右邊是左邊的子集。FD右邊的一些(而不是全部)屬性也在左邊出現(xiàn)。這個FD不是平凡函數(shù)依賴。平凡依賴規(guī)則:A1,A2...An->B1,B2...Bm等價于A1,A2...An->C1,C2,..Ck,Ci是集合B而不是集合A中的屬性。第六頁,共一百一十二頁,編輯于2023年,星期三3.2.4計算屬性的閉包假設{A1,A2,...,An}是屬性集合,S是FD的集合,s集合下的屬性集合{A1,A2,...,An}的閉包是滿足下面條件的屬性集合B:每一個滿足S中所有FD的關系,也同樣滿足A1A2...An->B.記為{A1,A2,...,An}+.算法3.7屬性集合的閉包例3.8考慮含有屬性A,B,C,D,E,F的關系.假設此關系包含F(xiàn)D:AB->C,BC->AD,D->E和CF->B,求{A,B}+通過計算任一屬性集合的閉包,尅判斷任一給定的FDA1A2...An->B是否可以由FD集合S推斷.例3.9考慮上題中關系和FD集合,判斷AB->D水哦能從該FD集合推斷.第七頁,共一百一十二頁,編輯于2023年,星期三3.2.6傳遞規(guī)則若關系R中FDA1A2...An->B1B2...Bm和B1B2...Bm->C1C2...Ck都成立,那么FDA1A2...An->C1C2...Ck在R中成立。如果C中屬性屬于A,則可根據(jù)平凡依賴規(guī)則把它們從右邊消除。例3.10titleyear->studioNamestudioName->studioAddr第八頁,共一百一十二頁,編輯于2023年,星期三3.2.7函數(shù)依賴的閉包集合如果給定一個FD集合S(例如在某個關系中成立的FD集合),則任何核S等價的FD結合都被稱為S的等價集。我們關心的是一個關系完全FD集合的等價集。滿足下面三個條件的等價集B稱為關系的最小化基本集。B中所有FD的右邊均為單一屬性。從B中刪除任何一個FD后該集合不再是基本集。對于B中任何一個FD,如果從其左邊刪除一個或多個屬性,B將不再是基本集。例3.11考慮關系R(A,B,C),它的任一個屬性都能函數(shù)決定其他兩個屬性。第九頁,共一百一十二頁,編輯于2023年,星期三3.2.8投影函數(shù)依賴假設有一個含有FD集合S的關系R,通過計算R1=ΠL(R)對其部分屬性進行投影。那么R1中有哪些FD成立?算法3.12例3.13第十頁,共一百一十二頁,編輯于2023年,星期三3.3關系數(shù)據(jù)庫模式設計不仔細選擇關系數(shù)據(jù)庫模式會帶來冗余和相應的異常。titleyearlengthgenrestudioNamestarNameStarwarsStarwarsstarwarsMightDucksWayne’sworldWayne’sworld1977197719771991199219921241241241049595SciFiSciFiSciFiComedyComedyComedyFOXFoxFoxDisneyParamountParamountCarrieFisherMarkHamillHarrisonFordHarrisonFordDanaCarveyMikeMeyers第十一頁,共一百一十二頁,編輯于2023年,星期三3.3.1異常冗余:信息在多個元組中重復。更新異常:可能修改了某個元組的信息,但沒有修改其他元組中的相同信息。刪除異常:如果一個值集變成空集,則可能帶來丟失信息的副作用。3.3.2分解關系給定一個關系R(A1,A2,..,An),把他分解為關系S(B1,B2,...,Bm)和T(C1,C2,...,Ck),并且滿足:{A1,A2,..,An}={B1,B2,...,Bm}U{C1,C2,...,Ck}S=πB1,B2,...,Bm(R)T=πC1,C2,...,Cm(R)第十二頁,共一百一十二頁,編輯于2023年,星期三titleyearlengthfilmTypestudioNameStarwarsMightDucksWayne’sWorld19771991199212410495ColorColorColorFoxDisneyParamounttitleyearstarNameStarwarsStarwarsStarwarsMightDucksWayne’sWorldWayne’sWorld197719771977199119921992CarrieFisherMarkHamillHarrisonFordEmilioEstevezDanaCarveyMikeMeyers第十三頁,共一百一十二頁,編輯于2023年,星期三3.3.3Boyce-Codd范式一個簡單的條件可以保證前面討論的異常不存在。這個條件稱為Boyce-Codd范式。關系R屬于BCNF范式當且僅當:如果R中非平凡FDA1A2...An->B1B2...Bm成立,則{A1,A2,...,An}是R的超鍵。例3.15圖3-6中的關系Movie1不屬于BCNF。例3.16圖3-7的關系Movie2屬于BCNF例3.17任意一個二元關系都屬于BCNF第十四頁,共一百一十二頁,編輯于2023年,星期三3.3.4分解為BCNF重復選擇適當?shù)姆纸猓梢园讶魏我粋€關系模式分解為帶有下列重要性質的具有多個屬性的子集:以這些子集為模式的關系都屬于BCNF原始關系中的數(shù)據(jù)都正確地反映在分解后的關系上,即原始關系應能從分解后的幾個關系實例中重構。要遵循的分解而策略是找出違反BCNF條件的非平凡FDA1A2...An->B1B2...Bm,并且{A1A2,...,An}不是超鍵。然后盡可能地向FD的右邊增加由{A1,A2,...,An}決定的屬性。其中一個模式包含了上述FD的所有屬性,而另一個包含了該FD左邊的屬性和不屬于該FD的所有屬性。第十五頁,共一百一十二頁,編輯于2023年,星期三例3.18考慮關系Movies1(title,year,length,genre,studioName,starName)titleyear->lengthgenrestudioName例3.19考慮具有如下模式的關系:{title,year,studioName,president,presAddr}titleyear->studioNamestudioName->presidentpresident->presAddr鍵為{title,year}第一步分解:StudioName->president;在右邊添加StudioName決定的屬性presAddr,于是為StudioName->president,presAddr;得到{title,year,studioName}和{sudioName,president,presAddr}第二步對{sudioName,president,presAddr}進行分解。president->presAddr第十六頁,共一百一十二頁,編輯于2023年,星期三3.4分解的優(yōu)劣分解應當具有以下三個性質:消除異常信息的可恢復。是否能夠從分解后的各個元組中恢復原始關系。依賴的保持:如果FD的投影在分解后的關系上成立,能否確保對分解后的關系用連接重構獲取的原始關系仍然滿足原來的FD?3.4.1從分解中恢復信息使用3.20算法進行分解,其中所有的分解都起因于一個違反BCNF的FD,那么將原始元組的投影進行連接就可以生成所有原始元組,且僅生成原來那些原組??紤]關系R(A,B,C)和一個違反BCNF的FDB->C,分解為R1(a,b)和R2(b,c)如t=(a,b,c),投影后再連接能得到(a,b,c)另一方面,如R中有元組t=(a,b,c)和v=(d,b,e),投影后再進行自然連接,不會產生偽元組。第十七頁,共一百一十二頁,編輯于2023年,星期三X,Y,Z是屬性集,R的屬性集為XUYUZ,那么R=πXUY(R)∞πYUZ(R)例3.21R(A,B,C),但關系中不存在A->B,B->C.ABC142235第十八頁,共一百一十二頁,編輯于2023年,星期三3.4.4依賴的保持在某些情況下,把一個關系分解為一系列BCNF關系時,無法同時擁有無損連接和依賴保持兩種性質。例3.25考慮關系Bookings(title,theater,city)theater->city,titlecity->theater鍵:{title,city}{theater,title}BCNF違例:theater->city,分解結果為{theater,city},{theater,title}原關系滿足titlecity->theater,但分解后的關系進行連接操作后,產生的關系卻不滿足titlecity->theater。第十九頁,共一百一十二頁,編輯于2023年,星期三theatercityGuildParkMenloParkMenloParktheatertitleGuildParkAntzAntztheatercitytitleGuildParkMenloParkMenloParkAntzAntz第二十頁,共一百一十二頁,編輯于2023年,星期三3.5第三范式關系R屬于第三范式,如果它滿足:只要A1A2...An->B1B2...Bm是非平凡FD,那么或者{A1,A2,...,An}是超鍵,或者每個屬于B1,B2,...,Bm但不屬于A的屬性都是某個鍵的成員。如果一個屬性是某個鍵的成員,則常被稱為“主屬性”。因此3NF可以概括為:對于每個非平凡FD,或者其左邊是超鍵,或者其右邊僅由主屬性構成。第二十一頁,共一百一十二頁,編輯于2023年,星期三3.5.23NF模式綜合算法算法3.26具有無損連接和依賴保持性質的3NF關系綜合算法找出F的一個最小基本集,記為G。對于G中的每一個FDX->A,將XA作為分解出的某個關系的模式如果第2步分解出的關系的模式均不包含R的超鍵,則增加一個關系,其模式為R的任何鍵。例3.27考慮關系R(A,B,C,D,E),其上有FD:AB->C,C->B,A->D。上述FD集就是最小化基本集。S1(A,B,C),S2(B,C),S3(A,B),增加一個S4(A,B,E)(R的鍵有兩個{A,C,E},{A,B,E}第二十二頁,共一百一十二頁,編輯于2023年,星期三第4章高級數(shù)據(jù)庫模型思考高級設計關系數(shù)據(jù)庫模式關系DBMS第二十三頁,共一百一十二頁,編輯于2023年,星期三4.1E/R模型4.1.1實體集4.1.2屬性:實體集具有相關的屬性,屬性是這個實體集中實體所具有的性質。4.1.3聯(lián)系:兩個或多個實體集的連接。4.1.4實體-聯(lián)系圖:是描述實體集、屬性和聯(lián)系的圖示。第二十四頁,共一百一十二頁,編輯于2023年,星期三MoviesStarsStudiosStars-inOwnsnameaddresstitleyearlengthgenrenameaddress第二十五頁,共一百一十二頁,編輯于2023年,星期三4.1.5E/R圖實例一個E/R圖描述的數(shù)據(jù)庫包含特定的數(shù)據(jù),稱為數(shù)據(jù)庫實例。對于每個實體集,數(shù)據(jù)庫實例都有一個特定的有限實體集合。聯(lián)系集:連接n個實體集E1,E2,...,En的聯(lián)系R的一個實例由元組(e1,e2,...en)的有限集構成。MoviesStarsBasicInstinctTotalRecallTotalRecallSharonStoneArnoldSchwarzenggerSharonStone第二十六頁,共一百一十二頁,編輯于2023年,星期三4.1.6二元E/R聯(lián)系的多樣性二元聯(lián)系能將一個實體集中任意數(shù)目的實體與另一個實體集中任意數(shù)目的實體相連接。如果E中的任一實體可以通過R和F中的至多一個實體連接,那么說R是從E到F的多對一聯(lián)系如果R既是從E到F的多對一聯(lián)系,又是從F到E的多對一聯(lián)系,那么R就是一對一聯(lián)系。如果R既不是從E到F的多對一聯(lián)系,又不是從F到E的多對一聯(lián)系,那么R就是多對多聯(lián)系。例4.4第二十七頁,共一百一十二頁,編輯于2023年,星期三4.1.7多路聯(lián)系ContractsStarsMoviesSudios第二十八頁,共一百一十二頁,編輯于2023年,星期三4.1.8聯(lián)系的角色一個聯(lián)系中一個實體集可能出現(xiàn)兩次或多次MoviesSequel-ofSequelOriginal第二十九頁,共一百一十二頁,編輯于2023年,星期三ContractsMoviesStarsStudiosProducingstudioStudioofstar第三十頁,共一百一十二頁,編輯于2023年,星期三4.1.9聯(lián)系的屬性有時需要把屬性與聯(lián)系相連,較之與聯(lián)系中的任何一個實體集相連更加方便。屬性的的值由聯(lián)系集中對應的整個元組函數(shù)決定。ContractsMoviesStarsStudiossalary第三十一頁,共一百一十二頁,編輯于2023年,星期三4.1.10多路聯(lián)系到二元聯(lián)系的轉換連接實體集:它的實體被看作是多路聯(lián)系的聯(lián)系集的元組。然后,針對組成原來多路聯(lián)系元組的每個實體集,從連接實體集中引入多對一聯(lián)系。Star-ofMoviesContractsMovie-ofStarsStudiosStudioofstarProducingstudio第三十二頁,共一百一十二頁,編輯于2023年,星期三4.1.11E/R模型中的子類一個實體集中含有一些實體,這些實體擁有集合其他實體成員沒有的特殊性質。這就需要定義實體集的子類。子類實體集與面向對象方法的子類的區(qū)別MoviestitleyearlengthgenreisaisaCartoonsMurder-MysteriesweaponVoicesStars第三十三頁,共一百一十二頁,編輯于2023年,星期三4.2設計原則忠實性:忠實于應用的具體要求。例4.13避免冗余:對每件事只說一次。簡單性:除非絕對需要,不要在你的設計中添加更多成分。選擇正確的聯(lián)系。例4.15.ContractsStarsMoviesSudios第三十四頁,共一百一十二頁,編輯于2023年,星期三選擇正確的聯(lián)系例4.16MoviesStarsStudiosStars-inOwnsWorks-for第三十五頁,共一百一十二頁,編輯于2023年,星期三選擇正確的元素種類人們可以選擇不同的設計元素的類型來表示現(xiàn)實世界。很多這樣的選擇介于是用屬性還是用實體集(聯(lián)系)來表示。例4.17電影公司是作為實體集還是作為電影的屬性?假設E是一個實體集,如果要把E用一個屬性或幾個其他實體集的屬性代替,必須滿足如下條件:所有與E有關的聯(lián)系必須有箭頭指向E.如果E有幾個屬性,那么必須沒有屬性能依賴于其他屬性。也就是說,E的唯一鍵是它所有的屬性。沒有聯(lián)系包含E多次。如果這些條件都符合,那么可以這樣代替實體集E;如果從實體集F到E有多對一聯(lián)系R,那么刪除R并把E的屬性作為F的屬性。如果有多路聯(lián)系R的箭頭指向E,E的屬性作為R的屬性,并刪除從R到E的弧。第三十六頁,共一百一十二頁,編輯于2023年,星期三例4.18用多路聯(lián)系還是用多個二元聯(lián)系如果只涉及到兩個電影公司,用多路聯(lián)系或連接實體集都是正確的。ContractsMoviesStarsStudiosProducingstudioStudioofstar第三十七頁,共一百一十二頁,編輯于2023年,星期三Studios-ofMoviesStarsStudiosContractsStar-ofMovie-of假設合同包含一個影星、一部電影和電影公司的任意集合。第三十八頁,共一百一十二頁,編輯于2023年,星期三4.3E/R模型中的約束
E/R模型中的鍵:實體集E的鍵是一個或多個屬性的集合K,對于來自于E的不同實體e1,e2,它們對鍵K中屬性沒有完全相同的值。每個實體集必須與一個鍵。一個實體集也可以有多個鍵。但是習慣上只選擇一個作為主鍵,所以就好像只有一個鍵一樣。當一個實體集處于一個ISA層次時,要求根實體集擁有鍵所需的所有屬性,并且每個實體集的鍵都可在根實體集中發(fā)現(xiàn)它的組成部分,而不管在這個層次中有多少個實體集是它的組成部分。E/R模型中鍵的表示。第三十九頁,共一百一十二頁,編輯于2023年,星期三4.3.3引用完整性在一段上下文中出現(xiàn)的值一定在另一段上下文中出現(xiàn)。例4.19度約束MoviesStudiosPresidentsOwnsRunsMoviesStarsStars-in<=10第四十頁,共一百一十二頁,編輯于2023年,星期三4.4弱實體集一個實體集的鍵是由另一個實體集的部分或全部屬性構成,這樣的實體集叫做弱實體集。弱實體集有兩個來源,一是isa層次結構,二是連接實體集。例4.20一個電影公司可能有幾套拍攝班子。這些拍攝班子可能被一個電影公司指定為crew1、crew2等。CrewsUnit-ofnumberStudiosaddrname第四十一頁,共一百一十二頁,編輯于2023年,星期三例4.22連接實體集形成弱實體集StarsStudio-ofaddrMoviesnameContractssalaryStar-ofMovie-ofStudiosnameaddrtitleyear第四十二頁,共一百一十二頁,編輯于2023年,星期三4.4.2弱實體集的要求弱實體集的鍵由如下屬性組成:零個或多個它自己的屬性;從E到其他實體集的多對一聯(lián)系連接的鍵屬性。這些多對一聯(lián)系稱為E的支持聯(lián)系。,從E到達的實體集稱為支持實體集。從E到某個實體集F的多對一聯(lián)系R成為E的一個支持聯(lián)系,必須滿足如下條件:必須是從E到F的二元的多對一聯(lián)系。R必須有從E到F的引用完整性。F提供給E作鍵的屬性必須是F的鍵屬性。然而,如果F本身就是弱實體集,那么F提供給E的F的部分或全部鍵屬性是由支持聯(lián)系連接的一個或多個實體集G的鍵屬性。如果從E到F有多個不同的支持聯(lián)系,那么每個聯(lián)系被用來提供一份F的鍵的拷貝以幫助E鍵的形成。第四十三頁,共一百一十二頁,編輯于2023年,星期三4.4.3弱實體集的符號從弱實體集連接出去的多對一聯(lián)系不一定是支持聯(lián)系。例4.23圖4-22中,聯(lián)系studio-of不需要時支持聯(lián)系。第四十四頁,共一百一十二頁,編輯于2023年,星期三4.5從E/R圖到關系設計把E/R圖轉換為關系數(shù)據(jù)庫模式很直觀:每個實體集可以轉化為具有相同屬性集的關系;聯(lián)系也用關系轉換,替換的關系屬性就是聯(lián)系所連接的實體集的鍵集合。這兩條規(guī)則對大多數(shù)情況都適合,但需要考慮下面幾種特殊情況:弱實體集不能直接轉化為關系isa聯(lián)系和子類需要特殊對待;有時,需要把兩個關系組合為一個關系。第四十五頁,共一百一十二頁,編輯于2023年,星期三4.5.1實體集到關系的轉換MoviesStarsStudiosStars-inOwnstitleyearlengthfilmTypenameaddressnameaddressnameaddressMarkHamill456OakRd.,BrentwoodCarrieFisher123MapleSt.,Hollywood第四十六頁,共一百一十二頁,編輯于2023年,星期三4.5.2E/R聯(lián)系到關系的轉化E/R模型中的聯(lián)系也可以用關系表示。對于聯(lián)系R中涉及的每一個實體集,它們的鍵屬性都是R關系模式的以部分。如果這個聯(lián)系有屬性,則它們也是R關系中的屬性。如果一個實體集以不同角色在聯(lián)系中多次出現(xiàn),則它的鍵屬性出現(xiàn)的次數(shù)就同角色出現(xiàn)的次數(shù)一樣多。第四十七頁,共一百一十二頁,編輯于2023年,星期三Owns(title,year,studioName)Stars-in(title,year,starName)titleyearstudioNameStarwars1977FoxMightyducks1991DisneyWayne’sworld1992Paramount第四十八頁,共一百一十二頁,編輯于2023年,星期三例4.27將多路聯(lián)系轉換為關系ContractsMoviesStarsStudiosProducingstudioStudioofstarContracts(starName,title,year,studioOfStar,producingStudio)第四十九頁,共一百一十二頁,編輯于2023年,星期三4.5.3關系組合有時,從實體集和聯(lián)系中轉化而來的關系對于給定的數(shù)據(jù)而言并不是最好的。設R是從E到F的多對一聯(lián)系,我們可以將R組合到E的關系模式中,E的模式包含:E的所有屬性;F的鍵屬性;聯(lián)系R的任何屬性。對于一個不與F相連的E中實體而言,上述的2和3類型的屬性在e元組中的相應分量取空值。例4.28titleyearlengthgenrestudioNameStarWars1977124sciFiFoxMightDucks1991104dramaDisneyWayne’sworld199295comedyParamount第五十頁,共一百一十二頁,編輯于2023年,星期三例4.29將多對多聯(lián)系組合到實體集關系模式中titleyearlengthgenrestudioNamestarNameStarWars1977124sciFiFoxCarrieFisherStarWars1977124sciFiFoxMarkHamillStarWars1977124sciFiFoxHarrisonEsteveyMightDucks1991104comedyDisneyEmilicEstevezWayne’sworld199295comedyParamountDanaCarvey第五十一頁,共一百一十二頁,編輯于2023年,星期三4.5.4處理弱實體集從弱實體集W得到的關系不僅要包含W的屬性,還要包含相應的支持實體集的鍵屬性。與弱實體集相連的聯(lián)系,經(jīng)轉換所得的關系必須包含W的所有鍵屬性。支持聯(lián)系R不必轉換為關系。例4.30:Studios(name,addr)Crews(number,studioName,crewChief)Unit-of(number,studioName,name)CrewsUnit-ofnumberStudiosaddrnamecrewChief第五十二頁,共一百一十二頁,編輯于2023年,星期三考慮一下聯(lián)系unit-of,假設迪斯尼#3攝制組是迪斯尼公司的一員,聯(lián)系unit-of包含(Disney-crew-#3,Disney)轉換為關系后,相應的元組為:(3,Disney,disney)因此,unif-of可簡化為unit-of(number,name),而這個模式是crew的以部分,因此不必轉換支持聯(lián)系。弱實體集轉換為關系的修改規(guī)則。若W是一個弱實體集,則W轉化為關系后的模式組成為:W的所有屬性.與W相連的支持聯(lián)系的所有屬性。針對每一個連接W的支持聯(lián)系,即從W到實體集E的多對一聯(lián)系,把E的所有鍵屬性加入到W的對應關系中。第五十三頁,共一百一十二頁,編輯于2023年,星期三4.6子類結構到關系的轉化遵照E/R觀點:為任一個在層次中的實體集創(chuàng)建一個關系,它包含了根的鍵屬性和自身屬性。把實體看作屬于單個類的對象.對于每一個包含了根的子樹創(chuàng)建一個關系,這個關系的模式包括了子樹種所有實體集的所有屬性。使用空值。創(chuàng)建一個包含層次中所有實體集的屬性的關系。每個實體由一個元組表示,對于實體沒有的屬性,則設該元組的相應分量為空。第五十四頁,共一百一十二頁,編輯于2023年,星期三4.6.1E/R方式轉換給每個實體集建立一個關系。如果實體集E不是層次中的根,則為了能夠區(qū)分元組表示的實體,關系E要包含根的鍵屬性和E本身的屬性。例4.31Movies(title,year,length,genre)MurderMysteries(title,year,weapon)Cartoons(title,year)Voices(title,year,starName)注意:(即屬于卡通片又屬于兇殺片的電影)在這三個關系中均有元組。另外,Cartoons的模式是Voices關系模式的子集。第五十五頁,共一百一十二頁,編輯于2023年,星期三4.6.2面向對象方法枚舉層次中所有可能的子樹。為每一個子樹構造可以描述該子樹對應的實體的關系。這個關系模式含有子樹中所有實體集的所有屬性。因為這種方法假定這些實體是屬于且只屬于一個類的對象。Movies(title,year,length,genre)MoviesC(title,year,length,genre)MoviesMM(title,year,length,genre,weapon)MoviesCMM(title,year,length,genre,weapon)如果Cartoons有自身的屬性,則所有的四個關系將會有不同的屬性集合。Voices(title,year,starName),是否有必要建立兩個這樣的關系?第五十六頁,共一百一十二頁,編輯于2023年,星期三4.6.3使用空值組合關系可以對一個實體集層次只創(chuàng)建一個關系。這個關系包含了層次中所有實體集的所有屬性。一個實體表現(xiàn)為關系中一個元組。例4.33Movies(title,year,length,genre,weapon)另外還必須為聯(lián)系Voice創(chuàng)建關系。第五十七頁,共一百一十二頁,編輯于2023年,星期三4.6.4各種方法的比較空值法對于所有屬性只使用一個關系,查詢易于實現(xiàn)。查詢“2008年的哪幾部影片放映時間長于150分鐘?”,如果使用直接E/R法,可以直接從Movies關系查到。如果使用”面向對象法”,則需要查詢所有的四個關系。查詢“放映時間長于150分鐘的卡通片中使用了什么武器?”,如果使用”面向對象法”,則只需查找MoviesCMM即可。如果使用“E/R”方法,則需要先查找Movies(lenght>150),再在Cartoons中查找是否這些電影是卡通,最后在MurderMysteries找出武器。如果傾向于使用盡量少的關系,使用空值法。其他兩種方法各有優(yōu)點。有時可能寧愿減少空間和避免重復信息。因為“面向對象”的方法對每個實體只使用一個元組,并且這個元組只含有對實體有意義的屬性的分量,所有這種方法占用盡可能少的空間。第五十八頁,共一百一十二頁,編輯于2023年,星期三4.7統(tǒng)一建模語言4.7.1UML類4.7.2UML類的鍵4.7.3關聯(lián):在類之間的二元聯(lián)系。關聯(lián)是對象對的集合,每個對象來自它連接的類。MoviestitlePK
yearPKlengthgenrefloatlengthHours(intlength);第五十九頁,共一百一十二頁,編輯于2023年,星期三例4.36studiosnamePKaddressMoviestitlePKyearPKlengthgenreStarsnamePKaddress0..10..*0..*0..*Stars-inOwns第六十頁,共一百一十二頁,編輯于2023年,星期三4.7.4自關聯(lián)一個關聯(lián)的兩端可以連接同一個類,這樣的關聯(lián)稱為資關聯(lián)。關聯(lián)類:它的屬性可以被認為是依附的關聯(lián)的屬性。StarsnamePKaddressMoviestitlePKyearPKlengthgenreCompensationSalaryResiduals0..*0..*Stars-in第六十一頁,共一百一十二頁,編輯于2023年,星期三4.7.6UML中的子類UML允許類C有四種不同的子類完整對局部:每個類C中對象是否一定屬于某個子類?分離對重疊:如果一個對象可以在兩個或多個子類中,那么子類是重疊的。在一個典型的面向對象系統(tǒng)中子類是分離的。也就是說沒有對象可以在兩個類中。E/R模型自動地允許重疊類。E/R模型和面向對象系統(tǒng)都允許完整和局部的子類。第六十二頁,共一百一十二頁,編輯于2023年,星期三例4.40MoviestitlePKyearPKlengthgenreCartoonsMurder-MysteriesWeaponCartoon-MurderMysteriesWeapontoVoice第六十三頁,共一百一十二頁,編輯于2023年,星期三4.7.7聚集和組合MoviestitlePKyearPKlengthgenrestudiosnamePKaddressPresidentsMovieExecscert#PKnameaddressnetworth1..*0..1第六十四頁,共一百一十二頁,編輯于2023年,星期三4.8UML圖到關系的轉化類到關系關聯(lián)到關系例4.42Stars-In(movieTitle,movieYear,starName)Owns(movieTitle,movieYear,studioName)Stars-In(movieTitle,movieYear,starName,salary,rediduals)不必為關聯(lián)類單獨創(chuàng)建關系第六十五頁,共一百一十二頁,編輯于2023年,星期三4.8.2從UML子類到關系跟Isa結構一樣,也包括了E/R方法、面向對象方法、空值法。如果層次的每一層都是分離的,那么建議使用面向對象方法。如果層次在每一層既是完整的又是分離的,那么任務相對簡單。如果使用面向對象方法,那么只要為層次中葉子節(jié)點的來構建關系。如果層次很大并且在某些或者所有的層次上是重疊的,那么E/R方法是合適的。4.8.3從聚集與組合到關系不為聚集和組合構建關系,為非菱形端的類添加菱形端類的鍵屬性。在聚集情況下,這些屬性可以為空。例4.43MovieExecs(cert#,name,address,netWorth)Presidents(cert#,studioName)Moivies(title,year,length,genre,studioName)Studios(name,address)第六十六頁,共一百一十二頁,編輯于2023年,星期三4.8.4UML與弱實體集的對比與E/R不同,UML遵循面向對象的傳統(tǒng),每個對象都有自己的對象標識。也就是說,既是它們的每個屬性和其他性質都具有相同的值,兩個對象也是可以區(qū)分開來。即使已有的類的屬性不能唯一標識一個類的對象,也可以創(chuàng)鍵一個新的屬性來作為對應關系的鍵并標識對象的對象標識。UML中,也可能像在E/R模型中為弱實體集使用支持聯(lián)系一樣使用一個組合(支持組合)。CrewsnamePKcrewChiefstudiosnamePKaddress1..1PK0..*第六十七頁,共一百一十二頁,編輯于2023年,星期三實驗一數(shù)據(jù)庫的創(chuàng)建一、實驗目的掌握SQlserver中數(shù)據(jù)庫的創(chuàng)建及分離(附加)操作,掌握簡單查詢語句的應用。二、實驗內容1、創(chuàng)建產品數(shù)據(jù)庫(P29)2、執(zhí)行查詢語句(P152習題6.1.3,d)-f);P158習題6.2.2a)-e);任選5題)。3、執(zhí)行數(shù)據(jù)庫的分離和附加操作。第六十八頁,共一百一十二頁,編輯于2023年,星期三實驗二SQL查詢語句一、實驗目的掌握SQL查詢語句的應用方法。二、實驗內容P165習題6.3.1a),b),d),e);P171習題6.4.6a)-f);任選6題。第六十九頁,共一百一十二頁,編輯于2023年,星期三實驗三數(shù)據(jù)庫的更新一、實驗目的掌握使用SQL語句更新數(shù)據(jù)庫的方法。二、實驗內容P173習題6.5.1a)-g);任選6題。第七十頁,共一百一十二頁,編輯于2023年,星期三實驗四數(shù)據(jù)庫設計某商業(yè)企業(yè)須設計一個管理信息系統(tǒng),對企業(yè)的各種產品、客戶、供應商、運貨商信息進行綜合管理,按下面要求設計數(shù)據(jù)庫模式。要求畫出E-R模型,然后將起轉換為關系模式并進行優(yōu)化,注意不要造成數(shù)據(jù)冗余和異常。企業(yè)銷售的產品分成多個類型,每種產品屬于一個類型。每種產品可由多個供應商提供,每個供應商提供多種產品。對于每種產品須記錄如下信息:產品名稱、供應商、庫存數(shù)量、單價、訂購數(shù)量等。對每個類型須記錄類型名稱、類型說明。對于供應商須保存供應商名、聯(lián)系電話信息。企業(yè)具有多位員工,分別來自多個地區(qū)。對于每位員工保存的信息有:員工姓名、頭銜、出生日期、雇用日期、家庭地址、所在城市、所在地區(qū)、郵編、宅電、照片。第七十一頁,共一百一十二頁,編輯于2023年,星期三企業(yè)有很多客戶,對于每位客戶須記錄如下信息:客戶姓名、所在公司名稱、、客戶頭銜、聯(lián)系地址、所在城市、所在地區(qū)、郵編、國家、電話、傳真。企業(yè)具有多個運貨商,須記錄運貨商的公司名稱、聯(lián)系電話??蛻粝蚱髽I(yè)訂購產品,須填寫訂單。每筆訂單涉及一位客戶,由一位員工負責。訂單中的信息有:客戶名、員工名、訂購日期;發(fā)貨日期、運貨商、運費、貨主姓名、貨主地址、貨主所在城市、貨主所在地區(qū)、貨主郵編、貨主所在國家。另外,每筆訂單還涉及到多種產品,須記錄客戶購買每種產品的單價、數(shù)量和折扣。對于企業(yè)經(jīng)營活動所涉及到的每個地區(qū),須記錄地區(qū)名、地區(qū)的相關描述。第七十二頁,共一百一十二頁,編輯于2023年,星期三第7章約束和觸發(fā)器主動元素:一個表達式或語句。該表達式或語句只只需要編寫一次,存儲在數(shù)據(jù)庫中,然后在適當時候被執(zhí)行。應用程序編寫者面臨的一個重要問題是,當更新數(shù)據(jù)庫時,新的信息有可能存在各種形式的錯誤。SQL提供了各種技術把完整性約束作為數(shù)據(jù)庫的一部分。第七十三頁,共一百一十二頁,編輯于2023年,星期三7.1,鍵和外鍵SQL中可以將關系一個屬性或屬性組聲明為外鍵,該外鍵引用另一個關系(也可以是同一個關系)的屬性(組)。它隱含了兩重意思。例7.1studio(name,address,presC#)MovieExec(name,address,cert#,networth)createTableStudio(namechar(30)primaraykey,addressvarchar(255)presC#int,foreignkey(presC#)referencesMovieExec(cert#));第七十四頁,共一百一十二頁,編輯于2023年,星期三7.1.2維護引用完整性模式設計者可以從三種方法選擇強制外鍵約束。DBMS將阻止如下行為:對Studio插入一新元組,其presC#值非空,但它不是MovieEexc關系中任何元組的Cert#值。修改Studio關系元組的presC#屬性為非空值,但該值不是MovieEexc關系中任何元組的Cert#值。刪除MovieExec元組,該元組的cert#值非空,是一個或多個studio元組的presC#值。修改MovieExec元組的cert#值,而舊的cert#值是某電影公司的presC#值。第七十五頁,共一百一十二頁,編輯于2023年,星期三對于后兩種更新,有三種選擇:缺省原則:拒絕違法更新級聯(lián)原則置空原則createTableStudio(namechar(30)primaraykey,addressvarchar(255)presC#intreferencesMovieExec(cert#)ondeletesetnullonupdatecascade);第七十六頁,共一百一十二頁,編輯于2023年,星期三7.1.3延遲約束檢查考慮例7.1的兩個關系:studio(name,address,presC#)MovieExec(name,address,cert#,networth如果presC#是外鍵(引用cert#)。insertintostudiovalues(‘LaVista’,’newYork’,23456);//違反外鍵約束。解決方法是在studio中先插入presC#屬性值為空的元組。再在MovieExec中插入元組,最后修改studio,使得presC#變?yōu)?3456或者一開始就先在MovieExec中插入元組,然后才在studio中插入元組。第七十七頁,共一百一十二頁,編輯于2023年,星期三循環(huán)約束例7.3如果電影制片人被約束為是電影公司經(jīng)理,則要聲明cert#是引用studio(presC#)的外鍵。于是presC#bixu被聲明為UNIQUE。循環(huán)約束的解決方法:首先,必須將兩個插入操作組成一個單一的事務;然后有一種方法通知DBMS不要檢查其約束,知道整個事務完成執(zhí)行并要提交為止。任何約束的聲明—鍵、外鍵或其他將在本章中見到的約束—后面可以有deferrable或notdeferrable選項。后者是缺省值,意味著每次執(zhí)行一條數(shù)據(jù)庫更新語句時,隨后立即檢查該約束。defferrable后還有initiallydeferred和initiallyimmediate選項。第七十八頁,共一百一十二頁,編輯于2023年,星期三
createtablestudio(namechar(30)primarykey,addressvarhcar(255),presC#intUNIQUEreferecesMovieExec(cert#)deferrableinitiallydeferred);任何類型的約束都可以命名。如果約束有名字,比如MyConstraint,就可以用如下SQL語句將該約束從立即檢查改為推遲檢查。setconstraintMyConstraintDeferredsetconstraintMyConstraintimmediate第七十九頁,共一百一十二頁,編輯于2023年,星期三7.2屬性和元組上的約束createtable語句可以聲明兩種約束:在單一屬性上的約束;在整個元組上的約束非空值約束(notnull)插入元組時,不能有空值;前面的置空值原則失效(P186);第八十頁,共一百一十二頁,編輯于2023年,星期三7.2.2基于屬性的check約束check后面的條件是該屬性的每個值都應滿足的條件。條件可以引用其他屬性或其他關系,但該關系必須子查詢的形式出現(xiàn)。check約束是在元組為該屬性獲得新值時被檢查。如果數(shù)據(jù)庫的修改沒有改變與約束相關的屬性,則不進行基于屬性的check約束檢查。例7.6假設證書號必須至少有6為數(shù)字。createtablestudio(namechar(30),addressvarchar(200),presC#intreferencesMovieExec(cert#)check(presC#>=10000)MovieStar(name,address,gender,birthdate)genderchar(1)check(genderin(‘F’,’M’));第八十一頁,共一百一十二頁,編輯于2023年,星期三例7.7使用基于屬性的check的約束模擬引用完整性。studio(name,address,presC#)MovieExec(name,address,cert#,networth)presC#intcheck(presC#in(selectcert#FROMMovieExec))對studio引入一個不是MovieExec中cert#值的presC#值時,這樣的修改將被拒絕。但是如果改變MoiveExec關系,比方說刪除電影公司的經(jīng)理元組,此變化對上述check約束不可見。于是刪除操作被執(zhí)行,即使這樣導致presC#上基于屬性的Check約束被違反。第八十二頁,共一百一十二頁,編輯于2023年,星期三7.2.3基于元組的Check約束每次向R插入元組以及當R的元組被修改時,都要檢查基于元組的check約束條件。要為這個新元組或被修改的元組計算條件。如果該元組的約束條件計算結果是假,則表明違反約束,違規(guī)的插入和修改語句被拒絕。createtableMovieStar(namechar(30)primarykey,addressvarchar(255),genderchar(1),birthdatedate,check(gender=‘F’ornamenotlike‘Ms.%’));第八十三頁,共一百一十二頁,編輯于2023年,星期三7.2.4基于元組和基于屬性的約束的比較如果元組上的約束設計該元組的多個屬性,那么它必須作為基于元組的約束。但是如果約束僅涉及元組的一個屬性,那么可以作為基于元組或基于屬性的約束。當僅涉及該元組的一個屬性(不計條件中子查詢)時,不管作為基于元組還是基于屬性的約束,條件檢查是一樣的。但是基于元組的約束將比基于屬性的約束更頻繁地被檢查,只要該元組的任一個屬性被改變,而不是僅當在約束中提及的屬性改變時都要檢查。第八十四頁,共一百一十二頁,編輯于2023年,星期三7.3修改約束給約束命名namechar(30)constranintNameisKeyPrimarykey,genderchar(1)constraintNoAndrocheck(genderIn(‘F’,’M’)),constraintRightTitlecheck(gender=‘F’ornameNotLIKE‘’MS.%’)setconstraint語句可以改變約束檢查執(zhí)行的方式(延期或立即執(zhí)行)。altertable語句可以刪除或添加約束。添加的約束必須是與元組相關,如基于元組的約束、鍵或外鍵約束。另外添加的約束應該讓現(xiàn)有的表中元組不要違反此約束。第八十五頁,共一百一十二頁,編輯于2023年,星期三例7.10altertalbemovieStardropconstraintNameIsKey;altertalbemovieStardropconstraintNoAndro;altertalbemovieStardropconstraintRightTitle;altertalbeMovieStaraddconstraintNameIsKeyprimarykey(name);altertalbeMovieStaraddconstraintNoAndrocheck(genderIn(‘F’,’M’));altertalbeMovieStaraddconstraintRightTitlecheck(gender=‘F’ornamenotlike‘Ms.%’)這些約束都是基于元組二步是基于屬性的檢查,不能恢復到基于屬性的約束。第八十六頁,共一百一十二頁,編輯于2023年,星期三7.4斷言斷言與特定的元組或元組的分量并不相關。它是數(shù)據(jù)庫模式的一部分,DBMS必須推斷數(shù)據(jù)庫的任何更新是否影響斷言的真假。例7.11假若希望其凈資產值少于10000000的任不能成為電影公司經(jīng)理。可以創(chuàng)建一個斷言聲明經(jīng)理凈資產值少于10000000美元的電影公司集合是空。createassertionRichPrescheck(notexists(selectfromstudio,MovieExecwherepresC#=cert#andnetWorth<1000000));第八十七頁,共一百一十二頁,編輯于2023年,星期三例7.12Movie(title,year,length,genre,studioName,producerC#)createassertionSumLengthcheck(10000>=all(selectsum(length)fromMoviesgroupbystudioName));該約束至涉及關系Movies,似乎可以用基于元組的check約束,但實際上兩者有一些區(qū)別。checkcheck(10000>=all(selectsum(length)fromMoviesgroupbystudioName));dropassertionSumLength;第八十八頁,共一百一十二頁,編輯于2023年,星期三7.5觸發(fā)器僅當數(shù)據(jù)庫程序員聲明的事件發(fā)生時,觸發(fā)器被激活。事件種類通常是對特定關系的插入、刪除或修改。當觸發(fā)器被事件激活時,觸發(fā)器測試動作條件。如果條件不成立,觸發(fā)動作不會被執(zhí)行。如果觸發(fā)器的動作條件滿足,觸發(fā)動作由DBMS執(zhí)行。觸發(fā)動作可以是以某種方式修改事件的結果,甚至可以撤銷事件所在的事務。第八十九頁,共一百一十二頁,編輯于2023年,星期三例7.13createtriggerNetWorthFriggerafterupdateofnetWorthOnMovieExecreferencingoldrowasoldTuple,newrowasnewTupleforeachrowwhen(OldTWorth>NewTWorth)updateMovieExecSetnetWorth=oldTWorthwherecert#=newTuple.cert#;第九十頁,共一百一十二頁,編輯于2023年,星期三7.5.2觸發(fā)器設計的選項after、before:指明條件測試和動作執(zhí)行將在觸發(fā)事件之后的數(shù)據(jù)庫狀態(tài)上被執(zhí)行。insteadof用于視圖修改。update、insert、delete:觸發(fā)事件,of短語在insert、delete事件中不可用。when短語是可選項。如果該短語缺省,則只要觸發(fā)器被喚醒,都要執(zhí)行動作。動作可以是多個SQL語句。當行級觸發(fā)器的觸發(fā)事件是修改時,則有舊元組和信元組之分,分別表示修改之前和修改之后的元組。它們用oldrowas和newrowas短語命名。foreachrow(foreachstatement):行級觸發(fā)器或語句級觸發(fā)器。在語句級觸發(fā)器中,不能直接引用舊的和新的元組。但是無論語句級觸發(fā)器還是行級觸發(fā)器,都可以引用舊元組的關系和新元組的關系,聲明方式是使用保留字oldtableasoldStuff和newtableasnewStuff。第九十一頁,共一百一十二頁,編輯于2023年,星期三例7.14假定要阻止電影制作人的平均凈資產值降到500000美元。在對關系MovieExec(name,address,cert#,netWorth)的netWorth列做插入、刪除或修改時可能違反上述約束。注意:在一個插入(刪除或修改)語句中可以改變許多元組。所以需要多個語句級觸發(fā)器。第九十二頁,共一百一十二頁,編輯于2023年,星期三createtriggerAvgNetWorthTriggerafterupdateofnetWorthOnMovieExecreferencingoldtableasoldStuff,newTableasnewStuffforeachstaementwhen(50000>(selectavg(netWorth)fromMovieExec))begindeletefromMovieExecwhere(name,address,cert#,netWroth)innewStuff;insertintoMovieExec(select*fromoldStuff);end;第九十三頁,共一百一十二頁,編輯于2023年,星期三例7.15before觸發(fā)器的重要用途,是在插入元組之前以某種方式處理被插入的元組。在關系Movie(title,year,length,genre,sudiName,producerC#)插入元組,確保year不能為空。
createtriggerFixYearTriggerbeforeinsertonMoviesreferencingnewrowasnewRownewtableasnewStuffforeachrowwhennewRow.yearisnullupdatenewStuffsetyear=1995;第九十四頁,共一百一十二頁,編輯于2023年,星期三第8章視圖和索引8.1虛擬視圖虛擬視圖是由其他關系上的查詢所定義的一種關系。虛擬視圖并不再數(shù)據(jù)庫進行存儲,但是可以對其進行查詢,就好像它確實存儲在數(shù)據(jù)庫中一樣。查詢處理器會在執(zhí)行查詢時用視圖的定義來替換視圖。例8.1定義視圖:由paramountStudos制作的所有電影的片名和年份所組成。
createviewParamountMoviesasselecttitle,yearfromMovieswherestudioName=‘Paramount’;第九十五頁,共一百一十二頁,編輯于2023年,星期三例8.2建立一個包含電影名和制片人姓名的關系MovieProd。Movie(title,year,length,genre,studioName,producerC#)MovieExex(name,address,cert#,netWorth)createviewMovieProdasselecttitle,namefromMovies,MovieExecwhereproducerC#=cert#;第九十六頁,共一百一十二頁,編輯于2023年,星期三8.1.2視圖查詢視圖可以像一個被真正存儲的表一樣來查詢。查詢中可以同時使用視圖和基本表。解釋包含虛擬視圖查詢最簡單方式是將From子句后面的視圖用等價的視圖定義查詢替換。如例8.4.selctdistinctstarNamefromPramountMovies,StarsInwheretitle=MovieTitleandyear=movieYear;selctdistinctstarNamefrom(selecttitle,yearfromMovieswherestudioName=‘Paramount’;)Pm,StarsInwherePm.title=MovieTitleandPm.year=movieYear;第九十七頁,共一百一十二頁,編輯于2023年,星期三8.1.3屬性重命名createviewMovieProd(movieTitle,prodName)asselecttitle,namefromMovies,MovieExecwhereproducerC#=cert#;第九十八頁,共一百一十二頁,編輯于2023年,星期三8.2視圖更新對視圖的更新轉變成一個等價的對基本表的更新,更新操作最終作用在基本表上。8.2.1視圖刪除dropviewParamountMovies;dropTableMovies第九十九頁,共一百一十二頁,編輯于2023年,星期三8.2.2可更新視圖粗略地講,可更新視圖是從單個關系R(R本身可能是一個可更新視圖)選取出(用select關鍵字,而非selectdistinct)的一些屬性組成。where子句在子查詢中不能使用關系RFrom語句智能包含一個關系R,不能再有其他關系。select語句匯總的蘇醒列表必須包括做夠多的屬性,以保證能夠用NULL或者適當?shù)哪J值來填充所有其他不屬于該視圖的屬性。第一百頁,共一百一十二頁,編輯于2023年,星期三例8.5向視圖ParamountMovies中插入一個元組insertintoParamountMoviesvalues(‘StarTrek‘,1979);studioName的值為null,所以對視圖ParamountMovies沒有任何影響,查詢視圖將不會出現(xiàn)剛才的元組。視圖可修改如下:
createviewParamountMoviesasselecttitle,yearstudioNamefromMovieswherestudioName=‘Paramount’;第一百零一頁,共一百一十二頁,編輯于2023年,星期三在可更新視圖中刪除元組和更新元組為了保證刪除的是那些智能在視圖中看到的元組,要把視圖的where語句中的條件添加(用and)到刪除操作的where子句中。例8.6deletefromParamountMovieswheretitlelike‘%Trek%’;被轉換成:deletefromParamountMovieswheretitlelike‘%Trek%’andstudioName=‘paramount’第一百零二頁,共一百一十二頁,編輯于2023年,星期三8.2.3視圖中的替換觸發(fā)器當視圖上定義一個觸發(fā)器時,可使用insteadof選項。如果這樣做,那么當一個觸發(fā)事件喚醒
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度沖擊鉆施工設備進出口代理合同3篇
- 二零二五年度新能源汽車充電樁產品區(qū)域總代理合同樣本3篇
- 2025年借款合同書寫范本示例
- 2025年度個人藝術品抵押租賃合同2篇
- 二零二五年度內衣行業(yè)人才培養(yǎng)合作合同2篇
- 二零二五年度池塘承包水域生態(tài)環(huán)境治理合同4篇
- 2025年度個人舊房屋買賣合同(含家具家電及裝修)2篇
- 2025年大宗商品房買賣合同
- 2025年度新型節(jié)能幕墻施工服務合同4篇
- 二零二五年度成都二手房房源信息共享及合作開發(fā)合同4篇
- 第1課 隋朝統(tǒng)一與滅亡 課件(26張)2024-2025學年部編版七年級歷史下冊
- 2025-2030年中國糖醇市場運行狀況及投資前景趨勢分析報告
- 冬日暖陽健康守護
- 水處理藥劑采購項目技術方案(技術方案)
- 2024級高一上期期中測試數(shù)學試題含答案
- 盾構標準化施工手冊
- 天然氣脫硫完整版本
- 山東省2024-2025學年高三上學期新高考聯(lián)合質量測評10月聯(lián)考英語試題
- 不間斷電源UPS知識培訓
- 三年級除法豎式300道題及答案
- 人教版八級物理下冊知識點結
評論
0/150
提交評論