2017-04-23 33 views
0

我有一個問題,它是如下:什麼時候在數據庫中使用三元關係而不是二元關係?

一個互聯網商店想發送電子郵件給客戶。它想保留一個數據庫來記錄哪些消息已發送給哪個客戶。假設電子郵件具有消息標識(M-id),主題(主題)和消息主體(主體)。客戶由他的電子郵件地址標識,其他客戶信息包括姓名(姓名),性別(性別)和地址(地址)。

當互聯網商店發送電子郵件給客戶時,SendDate被記錄下來。

現在我們假設用上面給出的信息繪製ERD,然後繪製關係數據庫模式。

基礎上大膽的聲明,我得出了以下ERD,不知道該怎麼用基數和參與做: enter image description here 的解決問題的辦法是這樣的: enter image description here 注意,發送是一個弱實體,而電子郵件和包含,發送和客戶之間有充分的參與。

Q1:爲什麼我不能在這個例子中使用三元關係?第二季度:無論這個問題,在三元關係中,我們如何確定基數和參與度?

問題3:如何到達最終答案?

回答

1

Q1:爲什麼我不能在這個例子中使用三元關係?

問題表明電子郵件是代表單個互聯網商店記錄的。沒有必要在每個關聯中指定它,整個數據庫屬於商店。

如果您在給多個互聯網商店的客戶發送的電子郵件建模時,三元關係是適當的。

問題二:不管這個問題,在三元關係中,我們如何確定基數和參與?

關係中每個角色的基數是該角色中可以與其他角色的每個有效組合關聯的值的數量。例如。如果你有一個關係(A, B, C),那麼A的基數是從A開始的值的數量,它可以爲(B, C)的每個有效組合出現。如果(B, C)是超級鍵,那麼A的基數就是1。

參與更簡單:對於每個角色,相關實體集合中的所有值必須參與關係,還是可以獨立存在?我建議你也看到我對這個問題的回答:is optionality (mandatory, optional) and participation (total, partial) are same?

問題3:如何到達最終答案?

我不同意你發佈的最終答案。在ER模型中,弱實體集不能具有多個標識關係,並且通常具有弱密鑰。我懷疑作者可能正在使用一些網絡數據模型概念(例如與外鍵約束混合關係和/或只考慮實體可能具有屬性)。

我自己的問題的答案是這樣的:

E-mails sent to customers ER diagram