2011-09-23 68 views
1

這裏是場景。ERD - 實體關係圖 - 複雜而棘手的關係

兩個完全不同的實體以相同的方式與第三個實體獨立相關。我們如何在ERD中表示它?或(增強ER)

例:

  • 學生 「借」 書(從庫)
  • 部門 「借」 書(從同一個庫)。

如果我兩次定義'BORROWS'關係,它在圖中的外觀方面會很笨拙和笨拙,並且增加了實現的複雜性。

與此同時,我不能聲明三元關係,因爲STUDENT和DEPARTMENT在關係實例中沒有相互關係。

但是,我找不到更好的方法。

我該如何解決?

回答

1

如果要相信維基百科,Enhanced ER允許繼承。爲什麼你沒有BORROWER實體(有適當的關係),並且有STUDENT和DEPARTMENT子類?

+0

感謝您的答覆aix。 這絕對是一個解決方案。 我只是想知道實現過程中的複雜性,即創建表。 如果在編程環境中出現這種情況,那麼它將是最合適的解決方案。我仍然不確定在數據庫環境中。 – Firefox

+0

@Firefox:除了「圖表上的尷尬和笨拙的外觀」之外,您試圖解決的真正問題是什麼? – NPE

+0

我只是在實施過程中尋找一種不太複雜的解決方案,但卻滿足所有要求。 當我提到,尷尬和笨拙,這是兩個重複關係的情況下,這也導致數據庫中的多個表。 – Firefox

0

我一直有類似的問題 - 公司或個人可以訂購產品。

你有一個order,它可以屬於personcompany - 那麼你把關係鏈接到什麼?我在想訂單會有一個companyId和一個personId外鍵,但是如何讓它們獨佔?返回的數據不一定相同 - 例如,company沒有first name/last name字段。

我想這可能由具有name返回來完成,並且在person的情況下建立串出的firstname/lastname,並在company的情況下使用companyname領域。

+1

我是通過泛化來完成的。例如:在你的情況下,我會創建Customer表。人與公司是其子類。客戶包含customerId。 OrderInfo指向customerId,從中您可以推導出您的訂購者是否是公司/個人。 – Firefox