我正在尝试创建一个联系信息系统,但我对数据库建模非常感兴趣。
我今天想到的是有一张人桌,上面有关于一个人的基本信息(姓名,姓,姓,ssn,性别,出生日期等)。 他们正在考虑为地址,电子邮件地址,公司,电话号码,昵称,别名等等创建新表。
使用FK创建这些主要人员条目不是一个问题。但是,电子邮件地址的示例。用户将拥有多个用例的多个电子邮件地址。 一个是私人的,一个与公司有一定联系。
我很想知道是否有任何理智的方式将公司电子邮件地址与公司表中的公司条目联系起来?
我想我可以从电子邮件地址到公司表有一个FK,但是如果链接不应该是公司,而是其他实体呢?像组织,别名,或仅在某些情况下使用过的电子邮件地址?
同样的情况也是如此。也适用于电话号码,邮政/访问地址等等。
答案 0 :(得分:1)
您无法对诸如“某个人的电子邮件地址与链接”之类的内容进行建模。您需要具体了解这些关系。
如果您希望能够添加特定关系而无需修改现有表(您应该),那么最好不要将FK从电子邮件地址添加到公司。毕竟,实体“电子邮件地址”不知道它与公司有关系,因为某些电子邮件地址可能有其他关系。它不属于公司的电子邮件地址,而是您想要添加的其他方面。
也就是说,您可以添加表达各种关系的关系表。对于每个新关系,您需要添加另一个表(不是太糟糕的IMO),或者使用单个表并在非电子邮件地址一侧添加列,指向公司,组织或其他任何内容。