【问题标题】:How to modell contact information database如何对联系信息数据库进行建模
【发布时间】:2015-02-02 15:07:47
【问题描述】:

我正在尝试创建一个联系信息系统,但我非常坚持数据库建模。

我今天想的是有一个人表,其中包含一个人的基本信息(姓名、名字、姓氏、ssn、性别、出生日期等)。 他们我正在考虑为地址、电子邮件地址、公司、电话号码、昵称、别名等创建新表。

使用 FK 为主要人员条目创建这些不是问题。但是,例如电子邮件地址。一个用户将有多个电子邮件地址用于多个用例。 一种是私人的,一种是与公司有一定联系的。

我想知道是否有任何理智的方法可以将公司电子邮件地址与公司表中的公司条目联系起来?

我想我可以有一个从电子邮件地址到公司表的 FK,但是如果链接不应该指向公司,而是指向其他实体怎么办?比如只在特定情况下使用的组织、别名或电子邮件地址?

同样的情况也会发生。还可以申请电话号码、邮政/访问地址等。

【问题讨论】:

    标签: sql database modeling


    【解决方案1】:

    您不能对诸如“一个人的电子邮件地址与几乎任何东西相关联”之类的东西建模。您需要具体说明这些关系。

    如果您希望能够添加特定关系而无需修改现有表(您应该这样做),那么您最好不要将 FK 从电子邮件地址添加到公司。毕竟,实体“电子邮件地址”并不知道它与公司有关系,因为某些电子邮件地址可能还有其他关系。电子邮件地址的本质不是属于公司,而是您要添加的附加方面。

    也就是说,您可以添加关系表,用于表达这些类型的关系。对于每个新关系,您要么需要添加另一个表(IMO 还不错),要么使用单个表并在非电子邮件地址端添加列,指向公司、组织或其他。

    【讨论】:

    • 不太清楚如何为此做关系表。我应该有一张有三个 FK 的桌子吗?一封给个人,一封给电子邮件,一封给公司?
    • 如果几个人可以共享同一个电子邮件地址,那么可以。否则两个 FK 就足够了,一个到电子邮件地址,一个到公司或其他。当然还有从电子邮件到人的 FK。我会选择后者,但必须重复共享电子邮件地址。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2022-01-11
    • 2012-03-24
    • 2013-04-06
    • 2012-07-15
    • 2011-09-01
    • 2010-12-06
    相关资源
    最近更新 更多