步驟7:特化/泛化實(shí)體(可選)
在邏輯模型中,可能會出現(xiàn)以下情況:兩個(gè)或多個(gè)實(shí)體存在共同的屬性,而這些屬性又是實(shí)體必須的部分,這就造成邏輯模型的冗余。
這種情況可以利用超類和子類來解決。超類是一個(gè)實(shí)體,包含若干個(gè)實(shí)體中出現(xiàn)的公共屬性;而子類是存放非公共屬性的實(shí)體,同時(shí)具有相應(yīng)超類中的屬性特征。子類可以區(qū)分不同的角色,比如員工是一個(gè)實(shí)體,而經(jīng)理、普通工人都是員工,同時(shí)經(jīng)理和普通工人之間有差異,此時(shí)員工實(shí)體是經(jīng)理實(shí)體、普通工人實(shí)體的超類,而經(jīng)理實(shí)體和普通工人實(shí)體是員工實(shí)體的子類。
構(gòu)造超類和子類的過程叫作特化/泛化。特化是一個(gè)自頂向下的過程,它先定義超類集合,然后定義有關(guān)的子類,這些子類集合的定義基于超類實(shí)體的一些特別特征。泛化是一個(gè)自下而上的過程,它從初始的子類中產(chǎn)生泛化的超類,是特化的逆過程。
超類和子類之間的關(guān)系根據(jù)子類是否包含超類的所有對象,可分為完全子類( CompleteSubtype)和不完全子類(Incomplete Subtype)。完全子類是指子類包含了超類的所有實(shí)體;不完全子類是指不能確定子類是否包含了超類的所有實(shí)體。
此外,超類和子類的關(guān)系可分為包含關(guān)系( Inclusive Subtype Relationship)和排外關(guān)系( Exclusive Subtype Relationship)。包含關(guān)系指的是超類的一個(gè)實(shí)體可以屬于一個(gè)或多個(gè)子類;而排外關(guān)系的超類中的一個(gè)實(shí)體最多只能屬于一個(gè)子類。
下面是一個(gè)總賬科目子類的例子,這是不完全子類(見圖4-9),超類與子類的關(guān)系屬于排外關(guān)系。
因?yàn)榭傎~科目還包括了權(quán)益類、費(fèi)用類等科目,所以圖4-9所示關(guān)系是個(gè)不完全子類;一個(gè)科目不能既屬于資產(chǎn)類又屬于負(fù)債類科目,所以這種關(guān)系也是排外關(guān)系。