【问题标题】:Database design - ERD. Modeling Question数据库设计 - ERD。建模问题
【发布时间】:2011-03-21 03:40:44
【问题描述】:

希望有人能够快速建议我建模 ERD 的最佳方法(我使用的是 IDEF1X 和 ERWin,而不是 Chen Notation),尽管这并不重要。

基本上我有三个实体

  1. 组织结构
  2. 受托人

业务规则规定,受托人可以是个人或组织。

我的问题是,与 Trustee 有两个主要的外键关系是否正确。一个来自组织 > 受托人,第二个来自个人 > 受托人。受托人的 FK 字段之一将始终为 NULL,具体取决于受托人是个人还是组织。

或者最好在个人和组织(person_organisation)之间建立某种关联表,并从 person_Organisation > Trustee 创建一个 PK、FK 关系。

第二个选项似乎更好,因为可能还有其他实体也需要链接到组织和个人。

希望这是有道理的。

非常感谢提前

【问题讨论】:

    标签: database-design entity-relationship foreign-key-relationship erd


    【解决方案1】:

    在我看来,受托人只是一个人在组织中可以扮演的角色的一个例子。所以说真的,我们正在讨论一个三向关联 Person_Organization_Role,其中三个都是主键。现在,这可以分解为 Person_Organization > PO_Role,但我的偏好是不要走得太远。

    【讨论】:

    • 你好贾斯汀。非常感谢您的回复。如果一个人没有与任何组织相关联,您的解决方案是否仍然有效?
    • 实际的表是 (person_id, org_id, role_id),所以您仍然有一个 Person 表,并且可能有关联中未引用的行。
    • 为建议喝彩。我显然仍在学习,因此非常感谢您提供的任何解决方案。
    • 我的荣幸。现在我看到了达米尔的解决方案,我意识到我解决了错误的问题。 :P
    【解决方案2】:

    编辑

    嗯,这也应该有效:

    【讨论】:

    • 嗨,达米尔,太好了。我确实考虑过超类型子类型方法,但我还有一些其他实体可以是组织或个人,它们的相关性不足以汇总为一个通用超类型,例如受托人、利益相关者和股东。
    • 在我看来,像 Stakeholder 和 Shareholder 这样的实体实际上是个人或组织都可以履行的角色,就像 Justin K 的例子一样。
    • Damir,非常感谢 ERD,一旦有人为您完成它,它似乎总是那么明显。非常感谢! :) 我可能会采用这个解决方案,看看事情如何发展(如果一切顺利,甚至可能以你的名字命名一个属性!哈哈)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    相关资源
    最近更新 更多