核心 ER 模型只定義了實體類型間的基本關系。雖然利用基本的實體和關系就可以很容易地表示商業機構中的大多數簡單數據結構,但是技術應用要求基于實體類型間的相似點和不同點的更復雜的結構。
特化和泛化
特化和泛化的目的在于重用與實體類型關聯的屬性和行為。
特化用于定義代表一個大型實體類型的一個特定部分的實體類型。特化后的實體類型從父實體類型繼承了結構和行為,比如業務規則。然而,雖然特化后的實體類型擴展了父結構或類型,但是這決不是說它小于父類型。
比如,Employee 是實體類型 Person 的一個特化,它需要實體類型 Person 的所有屬性和關系。另外還有一種叫做 Customer 的實體類型,它也是實體類型 Person 的一個特化。這兩種實體類型都具有 Person 的屬性,它們被看作 Employee 或 Customer 的屬性。因此在我們看 Customer 時,看到的是在實體類型 Person 和實體類型 Customer 中指定的所有屬性。
泛化是正好相反的工作流。泛化實體類型(或者父類型)代表所有子類型的共同結構和行為,并且包含了來自子實體類型的所有共同屬性。子實體類型具有父屬性的所有內容,并且還擁有自己的屬性。
泛化過程找出共同結構并在父實體類型中抽象出來。父實體類型通常在比較實體類型和簡化模型時的重構階段被找到。
雖然泛化僅利用面向對象或者對象關系數據庫就可以直接實現,但是泛化也可以通過使用外鍵的任何關系數據庫直接實現。