我正在寻求数据库设计的一部分帮助。
我必须为一组联系人和一组分发列表建模数据库。
每个联系人都可以在许多分发列表中,每个分发列表可以有多个联系人。在普通实例中,我可以使用Junction表来实现此解决方案。
但还有一件事要补充。联系人可以选择通过两种不同的方法(SMS或电子邮件)接收通知。
联系人可以通过其中一种或两种方法请求发送通知。
我遇到的问题是,联系人可能希望收到不同的通知,具体取决于具体的分发列表。
所以我们遇到这样的问题: -
CONTACT A is in DL-A - Receives Notification via SMS
CONTACT A is in DL-B - Recieves Notification via Email & SMS.
我正在尝试避免在联系人表格中为联系人提供多个条目,每个联系人都应该是唯一的。
任何人都可以提供帮助吗?
答案 0 :(得分:4)
您可以使用另一个联结表:
contactid, distributionlistid, messagepreference
Messagepreference可以是电子邮件或短信。两行,如果他们想要两个。可以添加新的消息传递类型,而无需更改数据库。为安全起见,请在代码中使用常量来表示要放入列中的值。
或者,将 sendemail 和 sendsms 列添加到原始联结表中,但这样做的缺点是,如果引入新的消息传递类型,则必须更改数据库结构。
答案 1 :(得分:2)
因此,您可以添加到联结表中的字段:
ContactsDistributions(ContactId, DistributionId, SMSFlag, EmailFlag)
以指定联系人为每个分发选择的通知类型。
答案 2 :(得分:1)
您可以在联结表中再添加一个字段,该字段将表示给定联系人将如何从给定的分发列表接收通知。
答案 3 :(得分:1)
在这种情况下,我会将两个字段添加到联结表SMS并通过电子邮件发送boolean并设置为true,当且仅当他们希望收到关于此事的通知时。这允许为组合列表和联系人设置不同的通知。
另外,根据您希望如何处理从列表中删除的内容,您可以在联结表上添加约束,以便至少有两个字段为真,以便始终发送通知,尽管在google group中我也有访问我选择不接收通知的一些列表。