幸好,這種情況也不是今天才發生,早就有人整理出超實用的 【Recursive Pattern】 (Len Silverston, Paul Agnew.(2008). The Data Model Resource Book: Volume 3: Universal Patterns for Data Modeling.WILEY. )來解決這一連串的問題:
以前面的例子來說,每個零組件、半成品、成品,本質上都是零組件,彼此之間可以組合成另一個零組件,除了組合的關係外,也可能會再有其它關係,如:替代(沒有原子筆時可以用鉛筆?)。所以把上述 Pattern 的 ENTITY 替換成 PART,至於這個PART 是零件還是半成品就定義在 PART TYPE,而 PART ASSOCIATION 就記錄了每個PART 和每個 PART 彼此之間的關係。