【发布时间】:2012-04-16 11:04:41
【问题描述】:
我有两个表,Users 和 People,它们共享一个共同的属性,即电子邮件地址,应该允许它们拥有多个电子邮件地址。
我自己可以看到三个选项:
-
一个带有冗余列的链接表:
- 用户 [id,email_id] 和人员 [id,email_id]
- 电子邮件地址 [id,user_id,person_id,email_id]
- 电子邮件 [id、地址、类型]
-
两个没有冗余的链接表:
- 用户 [id,email_id] 和人员 [id,email_id]
- PersonEmail [id,person_id,email_id]
- 用户邮箱 [id,user_id,email_id]
- 电子邮件 [id、地址、类型]
-
没有冗余列的链接表:
- 用户 [id] 和人员 [id]
- 电子邮件 [id,address,type,user_id,person_id]
有没有人知道什么是最好的选择,或者是否有其他方法?另外,如果有人知道如何实现或觉得最好有没有生成的 id 列的链接表,请同时指定。
更新:一个用户有很多人,一个人属于一个用户
【问题讨论】:
-
如果不对用户和人之间的关系进行更多解释,就无法提供此问题的答案。例如:“用户”是可以登录的特殊类型的人吗?如果有人员条目,是否总是有用户,反之亦然?多解释一下您要建模的内容,您将能够就如何建模得到更好的答案。
-
它们在概念上是不同的——一个用户有很多人,一个人属于一个用户
标签: sql ruby-on-rails database optimization