2

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

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

每个联系人可以在多个分发列表中,并且每个分发列表可以有多个联系人。在一个普通的实例中,我可以使用一个 Junction 表来实现这个解决方案。

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

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

我遇到的问题是联系人可能希望根据特定的分发列表接收不同的通知。

所以我们有一个这样的问题:--

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

我试图避免在我的联系人表中有多个联系人条目,每个联系人都应该是唯一的。

任何人都可以帮忙吗?

4

4 回答 4

4

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

contactid, distributionlistid, messagepreference

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

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

于 2012-07-25T10:40:18.600 回答
2

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

ContactsDistributions(ContactId, DistributionId, SMSFlag, EmailFlag)

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

于 2012-07-25T10:42:04.240 回答
1

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

于 2012-07-25T10:41:58.250 回答
1

在这种情况下,我会在联结表 SMS 和 email 中添加两个字段,这两个字段都是布尔值,并且当且仅当他们希望收到有关此事的通知时才设置为 true。这允许为组合列表和联系人设置不同的通知。

另外,根据您希望如何处理从列表中删除的问题,您可以在联结表上添加一个约束,以便两个字段中的至少一个为真,以便始终发送通知,尽管在谷歌群组中说我确实可以访问一些我选择不从中获取通知的列表。

于 2012-07-25T10:43:56.610 回答