《高級數(shù)據(jù)庫系統(tǒng)作業(yè)答疑課件》由會員分享,可在線閱讀,更多相關(guān)《高級數(shù)據(jù)庫系統(tǒng)作業(yè)答疑課件(47頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,高級數(shù)據(jù)庫系統(tǒng)作業(yè)答疑,2007.1,第一次作業(yè),已知有如下兩種段分配,:,A R1,在,Site1,R2,在,Site2,R3,在,Site3.,B R1,和,R2,在,Site1,R2,和,R3,在,Site3.,另已知有如下應(yīng)用,(,所有應(yīng)用的頻率相同,),A1:,在,Site1,上發(fā)出,讀,5,個,R1,記錄,5,個,R2,記錄,A2:,在,Site3,上發(fā)出,讀,5,個,R3,記錄,5,個,R2,記錄,A3:,在,Site2,上發(fā)出,讀,10,個,R2,記錄,.,問,:1.,如果以本地應(yīng)用為主要設(shè)
2、計目標,那個分配較優(yōu),?,2.,假定,A3,改為要修改,10,個,R2,記錄,并仍以本地應(yīng)用為其設(shè)計目標,則那個分配方案較優(yōu),?,第一次作業(yè),解:首先完善模型如下:,假定:,B,方案中,Site1,上的,R2,和,Site3,上的,R2,是完全相同的,即冗余;本地讀寫的代價可忽略不計;所有異地讀操作的單位記錄代價均相等,記為,1,;所有異地寫操作的單位記錄代價均相等,記為,1,。,1 A,方案,B,方案,2 A,方案,B,方案,A1,代價,5 0 5 0,A2,代價,5 0 5 0,A3,代價,0 10 0 10+10+10,故可知,第,1,個問題,,A,、,B,兩種分配方案代價相等。,第,2
3、,個問題,,A,分配方案較優(yōu)。,第二次作業(yè),習(xí)題,:,假定全局關(guān)系和分段模式如下:,全局關(guān)系,Doctor(D#,Name,Dept),Patient(P#,Name,Dept,Treat,D#),Care(P#,Drug,QTY),分段模式,Doctor1=SLDEPT=Surgery(Doctor),Doctor2=SLDEPT=Pediatrics(Doctor),Doctor3=SLDEPT,Surgery and DEPT,Pediatrics(Doctor),Patient1=SLDEPT=Surgery and treat=intensing(Patient),Patient2=
4、SLDEPT=Surgery and treat,intensing(Patient),Patient3=SLDEPT,Surgery(Patient),Care1=Care SJ p#=p#Patient1,Care2=Care SJ p#=p#Patient2,Care3=Care SJ p#=p#Patient3,使用變換準則,將下面的全局查詢變化為分段查詢,并對它們加以簡化。當需要時,用限定關(guān)系代數(shù)消除查詢中不用的段。,(a),列出在,Care,中使用,Aspirin,的,Patient,名字;,(b),列出給病人開出接受精細護理的醫(yī)生名字。,第二次作業(yè),(a),第二次作業(yè),(a),第
5、二次作業(yè),(a),第二次作業(yè),(b),第三次作業(yè),對,R,的另一個簡化程序:,R=R SJ S,T=T SJ R,S=S SJ T,計算到,R,不再變化為止,第三次作業(yè),在如下,R,S,的概貌上計算,R JNA=B S,Size(R)=50,Card(R)=100,Val(AR)=50,Size(A)=3,Size(S)=5,Card(S)=50,Val(BS)=50,Size(B)=3,R SJA=B S,的選擇度,=0.2,S SJA=B R,的選擇度,=0.8,問,:,1.,使用,SJ,簡化程序在,R,得站點執(zhí)行,JN,2.,使用,SJ,簡化程序在,S,得站點執(zhí)行,JN,3.,使用直接連
6、接在,R,站點執(zhí)行,JN,4.,使用直接連接在,S,站點執(zhí)行,JN,那種方案較優(yōu),?,第三次作業(yè),解:,1.COST1=2C0+C1(Size(A)Val(AR)+Size(S)Card(S),S,SJ R,),=2C0+C1(350+5500.8)=2C0+350C1,2.COST2=2C0+C1(Size(B)Val(BS)+Size(R)Card(R),R,SJ S,),=2C0+C1(350+501000.2)=2C0+1150C1,3.COST3=C0+C1Size(S)Card(S),=C0+C1550 =C0+250C1,4.COST4=C0+C1Size(R)Card(R),=
7、C0+C150100 =C0+5000C1,所以第三種方案最優(yōu)。,第四次作業(yè),7.2,解:第三句有問題,左邊為,string,類型,右邊是,City,類型。,cityOfLA.name:=cityOfLA.mayor.spouse.livesIn;,7.4,解:前一種的輸出結(jié)果為:,Donald Duck,Mickey Mouse,后一種的輸出結(jié)果為:,60,60,因為前一種是引用語義,而后一種是復(fù)制語義。,第四次作業(yè),7.7,解:,引用:,someMaterial:=,id88,;,隱式引用:,myCuboid.mat:=someMaterial;someMaterial.create;,重
8、引用:,w:=myCuboid,.,mat,.,specWeight;,隱式重引用:,anotherMaterial:=myCuboid.mat;myCuboid.mat.create;,第四次作業(yè),7.9,解:,(1)(2),執(zhí)行完畢后,,mary.chilaren=joe.children=littleJoe,第四次作業(yè),(3)(4),執(zhí)行完畢后,,betty.children=jimbo,jim.children=,第五次作業(yè),8.8,persistent type Cuboid is,public length,width,height,surface,volume,weight,tr
9、anslate,scale,rotate,certer,diagonal,minDistance;,body v1,v2,v3,v4,v5,v6,v7,v8:Vetex;mat:Material;value:float;,operations,declare surface:,float;,declare scale:Vertex,void,code scaleCuboid;,declare center:,Vertex;,declare diagonal:,float;,declare minDistance:Vertex,float,code minDistanceCode;,第五次作業(yè),
10、implementation,define surface is,return 2.0*(self.length*self.width+self.length*self.height+self.width*self.height);,define scaleCuboid(s)is,begin,self.v1.scale(s);,self.v8.scale(s);,end define scaleCuboid;,第五次作業(yè),define center is,var c:Vertex;,begin,c.create;,c.x=0.5*(self.v1.x+self.v7.x);,c.y=0.5*(
11、self.v1.y+self.v7.y);,c.z=0.5*(self.v1.z+self.v7.z);,return c;,end define certer;,define diagonal is,return self.v1.distance(self.v7);,第五次作業(yè),define minDistanceCode(v)is,var v0;,begin,/,將長方體的,6,個面無限延伸,可將整個空間分為,27,個區(qū)域,if(v,在長方體內(nèi)部或表面上,),return 0;,else begin,根據(jù),v,所在區(qū)域,可簡單判斷出長方體上距,v,最近的點,v0,所在 的面,/,棱,/,頂
12、點,進而求出,v0;,return v.distance(v0);,end else,end deine minDistanceCode;,end type Cuboid;,第五次作業(yè),9.1,答:,(,1,)方法一采用,1:1,關(guān)系表示,1:N,關(guān)系,存在較多冗余;,不考慮索引,已知,left,查詢對應(yīng)的,right,集時,方法二效果明顯好 于方法一;已知,right,查詢對應(yīng)的,left,時,方法一效果好于方法二。,當插入新關(guān)系,時,兩種方法都無法保證一致性,即原關(guān)系,1:N,的語義約束可能被違反,需要對,insert,操作做修改,保證每一 個,Tright,實例僅有至多一個對應(yīng)的,Tle
13、ft,實例。,刪除關(guān)系,時,方法一中直接刪除對應(yīng)的,TR,實例,方法二中 只需修改,right,集合,直到,right,集合為空時,才需要刪除對應(yīng)的,TR,實例。,更新操作由插入刪除操作組合而成,不再討論。,(,2,)方法一、二的,insert,操作均需修改,以保證一致性,方法二的,delete,操作也需要修改。修改思想上邊已說明,具體算法不再給 出。,第六次作業(yè),10.5,解:,declare connect:Pipe|Pipe,void;,refine connect:ConicalPipe|ConicalPipe,void;,一個合法的重定義要求:,操作名不變,參數(shù)個數(shù)不變;,操作的接收
14、者類型是原操作中接收者類型的子類;,操作的返回值類型是原操作返回值的子類;,操作的參數(shù)類型是原操作參數(shù)類型的超類。,題中的重定義僅滿足(,1,)(,2,)(,3,),但違反(,4,)。,ConicalPipe,是,Pipe,的子類而非超類,故不合法。,考慮下面的程序段:,var aPipe,anotherPipe:Pipe;,aConicalPipe:ConicalPipe;,anotherPipe:=aConicalPipe;/,可替換性,合法,anotherPipe.connect(aPipe);/,編譯通過,執(zhí)行時由于動態(tài)綁定,出錯,第六次作業(yè),10.6,解:,繼承屬性的類型是不能重定義
15、的,必須保持原類型。,(1),子類中繼承屬性的類型不能是該類型的子類,即特化不合法。,特化舉例:,type Person is,body name:string;,age:int;,type Employee supertype Person is,body boss:Employee;,type Manager supertype Employee is,body refine boss:Manager;,第六次作業(yè),程序段:,var anEmp:Employee;,aMgr:Manager;,aMgr.boss:=anEmp;/,語法錯誤,anEmp.boss:=aMgr;/,可替換性,合
16、法,anEmp.boss.boss:=anEmp;/,語法檢查合法,但有潛在問題,(2),子類中繼承屬性的類型不能是該類型的超類,即泛化不合法。,Person,和,Employee,的類型定義同上,,Manager,類型定義如下:,type Manager supertype Employee is,body refine boss:Person;,程序段:,var aPerson:Person;,anEmp:Employee;,aMgr:Manager;,anEmp.boss:=anEmp;/,合法,aMgr.boss:=anEmp;/,可替換性,合法,aMgr.boss.boss:=anEmp;/,語法錯誤,第六次作業(yè),12.3,解:,(1),Polymorph declare member(ListType):ListType|ElemType,bool;,define member(t)is,var item:ElemType;,begin,foreach(item in self),if(item=t),return true;,return false;,end defin