在建構 Logical or Physical Data Model時,Rational Data Architect提供了下列五種不同的選項來描述 Entity 之間的關係,以下描述這五種不同關係的差異性為何
- Identifying Foreign Key Relationship
- Non-Identifying Mandatory Foreign Key Relationship
- Non-Identifying One-to-One Foreign Key Relationship
- Non-Identifying Optional Foreign Key Relasionship
- Many-to-Many Relationship
這裡先區辨Identifying 和 Non-Identifying的差異。 在一個Identifying的關係中,父Entity 中的Primary Key會被加到子Entity中成為Foreign Key,且此Foreign Key和子Entity的原本的Primary Key會組合成該子Entity的Composite Primary Key;相反地,Non-Identifying的關係中,父Entity的Primary Key只會單純地成為子Entity的Foreign Key,而子Entity還是使用自己原本的Primary Key,而不會與來自父Entity的Foreign Key結合為Composite Primary Key。見下圖
介紹完Identifying和Non-Identifying的差異後,接下來介紹Non-Identifying這一大類的關係。Non-Identifying又可再細分為Mandatory、One-to-One及Optional 等三種關係。依照建立關聯後,加到子Entity的Foreign Key是否允許空值,可分出(Mandatory + One-to-One) 與Optional的差異。Optional的關係中,建在子Entity的Foreign Key允許有空值;而Mandatory及One-to-One不允許空值。
再來,Mandatory與One-to-One Foreign Relationship的差異在於 Foreign Key的cardinality,即One-to-One的Foreign Key允許1對1的關係(Cardinality為 零 或 1);而Mandatory的Foreign Key則為1對多的關係(Cardinality為零或無限)
最後,Many-to-Many的關係則不會在子Entity中建立任何欄位 e.g. Foreign Key,只是單純地描述兩個Entity之間有多對多的關係。它的用處比較像是在Model high level的 Logical Data Model時使用,此時尚不討論到實作的細節。最後在實作時,可能是在父Entity及子Entity之間,新建一個Entity。而父Entity與子Entity分別與此新建Entity間,存在Identifying Foreign Relationship的關係
沒有留言:
張貼留言