2012-07-25 89 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当且仅当他们希望收到有关此事的通知。这样可以针对组合列表和联系人设置不同的通知。

同样取决于你想如何处理从列表中删除,你可以在联结表上添加一个约束,以便两个字段中至少有一个是真的,这样尽管在谷歌组中我说有权访问我选择不从中收到通知的一些列表。

相关问题