我有一个SQL Server数据库,其中包含两个包含电子邮件地址的表。一个包含组织为用户创建的电子邮件地址,另一个包含用户个人电子邮件收件人。
我们希望为用户提供将其中一个设置为首选联系人电子邮件地址的选项。在数据库中表示这个的最佳方法是什么?
据我所知,我可以: -
您认为哪种解决方案最好?
用户可以拥有多个组织邮件地址以及多个个人电子邮件地址。
答案 0 :(得分:2)
以下是模仿此方法的一种方法:
注意:如果没有(特定字段)或(特定约束),只需将所有三个电子邮件表合并为一个。
EMAIL的复合PK建立了给定人员级别的电子邮件订购。然后,您可以简单地引入一个约定,即相对于该排序的第一行是“首选”电子邮件。
这是另一种方式(如果你想要更简单的键):
答案 1 :(得分:0)
我会创建一个包含email_id
,email_address
,employee_id
和type
列(个人或组织标志)的电子邮件地址表。然后,我会将列preferred
添加到我的员工表中,并让它存储相应的email_id
。
我认为电子邮件地址必须是DISTINCT,因此您可能会将ID全部废弃,并将地址作为密钥。
答案 2 :(得分:0)
我希望有一个单独的表
UserId, PreferredOrgEmailId, PreferredPersonalEmailId
这整个情况远非理想,但如果你不得不使用它......单独的表将起作用。因此,您可以使用FK确保您的数据不会失去同步。此外,可能是一个检查约束,以确保您只能填充一个电子邮件ID(组织或个人)。
实际上,在这个新表中存储电子邮件地址将是2NF。