数据库模型 - SQL - 最佳方法

时间:2012-07-25 10:38:23

标签: sql database database-design

我正在寻求数据库设计的一部分帮助。

我必须为一组联系人和一组分发列表建模数据库。

每个联系人都可以在许多分发列表中,每个分发列表可以有多个联系人。在普通实例中,我可以使用Junction表来实现此解决方案。

但还有一件事要补充。联系人可以选择通过两种不同的方法(SMS或电子邮件)接收通知。

联系人可以通过其中一种或两种方法请求发送通知。

我遇到的问题是,联系人可能希望收到不同的通知,具体取决于具体的分发列表。

所以我们遇到这样的问题: -

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

我正在尝试避免在联系人表格中为联系人提供多个条目,每个联系人都应该是唯一的。

任何人都可以提供帮助吗?

4 个答案:

答案 0 :(得分:4)

您可以使用另一个联结表:

contactid, distributionlistid, messagepreference

Messagepreference可以是电子邮件或短信。两行,如果他们想要两个。可以添加新的消息传递类型,而无需更改数据库。为安全起见,请在代码中使用常量来表示要放入列中的值。

或者,将 sendemail sendsms 列添加到原始联结表中,但这样做的缺点是,如果引入新的消息传递类型,则必须更改数据库结构。

答案 1 :(得分:2)

因此,您可以添加到联结表中的字段:

ContactsDistributions(ContactId, DistributionId, SMSFlag, EmailFlag)

以指定联系人为每个分发选择的通知类型。

答案 2 :(得分:1)

您可以在联结表中再添加一个字段,该字段将表示给定联系人将如何从给定的分发列表接收通知。

答案 3 :(得分:1)

在这种情况下,我会将两个字段添加到联结表SMS并通过电子邮件发送boolean并设置为true,当且仅当他们希望收到关于此事的通知时。这允许为组合列表和联系人设置不同的通知。

另外,根据您希望如何处理从列表中删除的内容,您可以在联结表上添加约束,以便至少有两个字段为真,以便始终发送通知,尽管在google group中我也有访问我选择不接收通知的一些列表。