2012-07-25 90 views
2

我正在尋找部分數據庫設計的幫助。數據庫模型 - SQL - 最佳方法

我必須爲一組聯繫人和一組通訊組建立數據庫模型。

每個聯繫人可以在許多通訊組列表中,每個通訊組列表可以有多個聯繫人。在一個正常的實例中,我可以使用Junction表來實現這個解決方案。

但還有一件事要補充。聯繫人可以選擇通過短信或電子郵件兩種不同的方式接收通知。

聯繫人可以請求通過其中一種或兩種方法發送通知。

我遇到的問題是聯繫人可能希望根據具體的通訊組列表接收不同的通知。

因此,我們有這樣的問題: -

CONTACT A is in DL-A - Receives Notification via SMS 
CONTACT A is in DL-B - Recieves Notification via Email & SMS. 

我試圖避免在我的聯繫人表聯繫人多個條目,每個聯繫人應該是唯一的。

任何人都可以幫忙嗎?

+0

爲什麼你不能使用聯結表,只是把NotificationType放在那裏? – BonyT 2012-07-25 10:40:37

+0

將用戶的通知首選項添加爲「連接表」中的新列? – LisMorski 2012-07-25 10:40:58

回答

2

所以,你可以添加到字段聯接表。

+0

輝煌,沒有能夠看到樹木的木材! – Derek 2012-07-25 10:43:04

4

你可以使用另一個結表:

contactid, distributionlistid, messagepreference 

Messagepreference可以電子郵件或短信。兩行,如果他們都想要。可以添加新的消息類型,而不更改數據庫。爲了安全起見,請在代碼中使用常量來表示要放入列的值。

或者,添加sendemailsendsms列到原來的結合表,但是這是你必須改變數據庫結構,如果你介紹一個新的消息類型的缺點。

1

您可以在聯結表中添加一個字段,它將表示給定聯繫人將如何接收來自給定通訊組列表的通知。以指定的通知通過每個分發接觸choosen類型

ContactsDistributions(ContactId, DistributionId, SMSFlag, EmailFlag) 

+0

感謝您的支持! :-) – Derek 2012-07-25 10:44:06

1

在這種情況下,我會將兩個字段添加到聯結表SMS和電子郵件都布爾值並設置爲true當且僅當他們希望收到有關此事的通知。這樣可以針對組合列表和聯繫人設置不同的通知。

同樣取決於你想如何處理從列表中刪除,你可以在聯結表上添加一個約束,以便兩個字段中至少有一個是真的,這樣儘管在谷歌組中我說有權訪問我選擇不從中收到通知的一些列表。

相關問題