我检查了这个问题here,但遗憾的是图表的链接没有工作,所以我被卡住了。
我正在尝试为一个用户(工作,商业,个人等)发送多封电子邮件,我不确定如何最好地处理这种情况。
我想要有4个表:user,email,email_type和user_has_email(用户N:M电子邮件)。 我制作了两张图,但我不知道哪一张更好。
如果一个用户为工作和个人提供相同的电子邮件,那么第一张图可以帮助我(因为我不需要存储两次)。第二个选项也很好,但即使一个用户使用相同的电子邮件进行工作,业务,个人等,我也必须存储两次或更多的电子邮件。
我打算使用相同的想法来存储地址,这比电子邮件占用更多空间,我认为图1 更适合这个。< / p>
您怎么看?
图1
- user_has_email的解释:我选择制作email_type PK,因为可能存在用户拥有相同的工作或个人电子邮件的情况。如果我不PK电子邮件类型,我每个用户只能有一个email_type。我把它弄得太复杂了吗?
图2
答案 0 :(得分:3)
相反,我会使用
user (user_id, first_name, last_name)
user_emails (user_id, email_type_id, email)
email_types (email_type_id, email_type)
答案 1 :(得分:1)
我更喜欢图1,原因如下。
答案 2 :(得分:1)
以下结构应符合条例草案:
用户和电子邮件之间存在1:N关系,每个用户的电子邮件可以包含零个或多个类型,来自共享类型。
如果不需要在用户之间共享电子邮件类型,则可以进一步简化模型:
顺便说一下,由于地址固有的“模糊性”,地址使用M:N的情况也不清楚 - 请参阅this post了解有关该主题的一些问题。