【正文】
type Tright is type TR body body with extension is […… […… body R: { Tright }。 [left: Tleft 。] end type Tleft。 end type TR 。 ? 方式 (1)(3)均不能確保兩對(duì)象間 1:N的約束。 R1:{ Tleft }。 ……] ……] right: Tright。 end type Tright。 方式 (1) 方式 (2) 方式 (3) ? 采用原則 :以最大查詢頻率為依據(jù)選擇入口點(diǎn) ? 可以采用組合冗余方法 ,但需要進(jìn)行狀態(tài)一致性維護(hù) Tleft Tright R N M 具有 K個(gè)屬性的二元聯(lián)系的實(shí)現(xiàn) ? 1:1的聯(lián)系 :仍然可以采用方式 (1)或 (2),K個(gè)屬性寄放在 Tleft或 Tright ? 1:N的聯(lián)系 —只能放在單值屬性的對(duì)象類型方 ? N:M的聯(lián)系 —寄存在那一方均不合適 ,只能采用方式 (3),定義此屬性的類型 TR, TR具有 K+2個(gè)元組屬性 Tleft a1 Tright R ak … Type TR with extension is Body [left: Tleft 。 a1: T1R。] operations declare TR: Tleft , Tright,T1R, …, T kR TR code initTR。 := Oright。 …。 end define initTR end type TR N—元聯(lián)系的實(shí)現(xiàn) ? 只能采用方式 (3)—建立 TR類型處理 ? 對(duì)初始化進(jìn)行重定義 ,以保證約束的一致性。 T1 T2 a1 ak Tn R … type TR with extension is Body [entitiy1: T1 。 a1: T1R。] operations declare TR: T1 , … , T n,T1R, …, T kR TR … implementation … end type TR 示例分析 (一 ) ? 11聯(lián)系實(shí)例 :工程師與他所占辦公室的聯(lián)系處理 約束條件:一個(gè)工程師一間辦公室 type Engineer is type Office is body body […… […… resideIn: Office。 ……] ……] end type Engineer 。 先有工程師,再分 經(jīng)常查詢某辦公室的工程師是誰(shuí) 配房間 Engineers Offices residesIn 1 1 用方式 (1)和 (2)組合建模下冗余的一致性維護(hù) ? 聯(lián)系更新時(shí)一般的方式 (1)If ( != NULL) :=NULL。 (3) := thePenthouse。 ? 設(shè)計(jì)操作 moveToOffice來(lái)維護(hù)一致性狀態(tài) define moveToOffice(newResidence ) is begin if ( != NULL) := NULL。 := newResidence。 end define moveToOffice。 employs: EngineerSet。 end type Division。 Engineers Divisions worksFor N 1 控制類型冗余模型的兩個(gè)操作 ? hire define hire(newEng) is Begin (newEng)。 end define hire。 := NULL。 ? 聘用和辭退兩個(gè)操作可以保持 DB的完整性約束。 ……] end type Product 。沿partof路徑進(jìn)行導(dǎo)航或訪問(wèn) Super: Super: Super: Super: Super: Super: Super: Super: ? B:通過(guò) Sub屬性 —表達(dá)了 partlist的語(yǔ)義關(guān)系: 即:一個(gè)部件由幾個(gè)子部件所組成 type Product is body […… sub: ProductSet 。 type ProductSet is body{ Product } end type ProductSet 。 begin 。 foreach ( part in ext( Product )) if ( = self ) ()。 begin 。 foreach (part in ) ()。