【发布时间】:2013-06-11 10:15:57
【问题描述】:
我检查了这个问题here,但不幸的是,图表的链接不起作用,所以我被卡住了。
我正在尝试为一个用户(工作、业务、个人等)发送多封电子邮件,但我不确定如何最好地处理这种情况。
我想有 4 个表:user、email、email_type 和 user_has_email(用户 N:M 电子邮件)。 我做了两张图表,但我不知道哪一张会更好。
如果一个用户的工作和个人电子邮件相同,第一个图表对我有帮助(因为我不必存储两次)。第二个选项也不错,但即使一个用户将同一电子邮件用于工作、商务、个人等,我也必须存储两次或更多电子邮件。
我打算使用相同的想法来存储 地址,它比电子邮件占用更多空间,我认为 图 1 更适合于此。
你怎么看?
图 1
-user_has_email 的解释:我选择进行 email_type PK 是因为可能存在用户拥有相同的工作或个人电子邮件的情况。如果我不 PK email_type,我将只能为每个用户拥有一个 email_type。我是不是太复杂了?
图 2
【问题讨论】:
-
您的两个图表都实现了多对多关系。您是否需要支持多个人共享一个电子邮件地址的可能性?
-
@Dan Pichelman - 是的,这是可能的,但我不认为在电子邮件的情况下。由于我计划使用相同的模型来存储用户的地址,我确信会有用户共享相同的地址。或者,至少会有一些用户将地址用于个人和企业。
标签: mysql database-design normalization composite-primary-key