【正文】
? 其中唯有方式 (2)能確保一致性約束 ,R是單值的。 ? 方式 (1)(3)均不能確保兩對(duì)象間 1:N的約束。 –對(duì) (1),必須重新定義 R屬性的值接受操作 –對(duì) (3),必須對(duì) TR的對(duì)象實(shí)例庫進(jìn)行一致性維護(hù) ,即 TR的 insert操作進(jìn)行一致性維護(hù) N:M的二元聯(lián)系的實(shí)現(xiàn) type Tleft is type Tright is type TR body body with extension is […… […… body R: {Tright }。 R1:{ Tleft }。 [left: Tleft 。 ……] ……] right: Tright。] end type Tleft。 end type Tright。 end type TR 。 方式 (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 。 right: Tright。 a1: T1R。 … ak: TkR。] operations declare TR: Tleft , Tright,T1R, …, T kR TR code initTR。 implementation define initTR(Oleft ,Oright,O1,…,O k) is begin := Oleft。 := Oright。 := O1。 …。 := Ok 。 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 。 … entitiyn: Tn。 a1: T1R。 … ak: TkR。] 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。 isOccupied: Engineer。 ……] ……] end type Engineer 。 end type Office。 先有工程師,再分 經(jīng)常查詢某辦公室的工程師是誰 配房間 Engineers Offices residesIn 1 1 用方式 (1)和 (2)組合建模下冗余的一致性維護(hù) ? 聯(lián)系更新時(shí)一般的方式 (1)If ( != NULL) :=NULL。 (2)If ( != NULL ) . isOccupiedby :=NULL。 (3) := thePenthouse。 (4) := leonardo。 ? 設(shè)計(jì)操作 moveToOffice來維護(hù)一致性狀態(tài) define moveToOffice(newResidence ) is begin if ( != NULL) := NULL。 if ( != NULL ) := NULL。 := newResidence。 newResidence. isOccupiedBy := self。 end define moveToOffice。 示例分析 (二 ) ? 工程師與部門間的 1:N的聯(lián)系 type Engineer is type Division is body body […… [……