ER建模 - 子类关系&关系实体

时间:2018-05-26 22:00:37

标签: database-design entity-relationship mappedsuperclass eer-model

我有几个关于ER建模的具体问题。

为了提供一些特定的背景,这是针对大学项目的,我似乎无法找到这些问题的具体答案。

背景

  • ER模型描绘了一个会计师事务所的小型数据库,供他们管理客户,审计工作(年度工作),这些工作的时间和费用以及其他一些小部件。点点滴滴是愚蠢的(例如,个人助理打字速度,但是是项目的要求)
  • 每位客户每年必须完成1次审核,并且由在会计师事务所工作的1名或多名员工完成审核
  • 客户(和审计工作)由经理管理。每个客户只有一个管理它们的经理,每个经理可以管理多个客户
  • 当员工参与审计工作时,他们会花时间进行审计。审计费用按其收费率乘以审计的总小时数计算
  • 每位员工只为1名团队工作。一个团队有一名或多名工作人员在其中工作。
  • 合作伙伴是员工超类的子类,其唯一的rca编号标识它们(会计术语)。每个合作伙伴都会领导一个团队,每个团队都有一个且只有一个合作伙伴
  • 每个合作伙伴都有一名私人助理,每名私人助理仅为一名合伙人
  • 工作

ER模型

Audit Time & Fee ER Model

问题

  1. 合作伙伴和个人助理都是子类实体,根据我的图表,有一个强制性的1..1关系。在子类之间建立特定关系是“合法的”吗?

  2. 我已经为Staff的子类使用了一个可选的或关系,我觉得这很好,因为工作人员不能同时担任任何角色。作为子类的唯一省略的角色是“审计员”。如果我要包括这个,那么“可选”或“更改为”强制性或“,”因为显示了所有可能的选项,而且工作人员必须是这4个角色中的一个?

  3. 在Annual_audit和Staff之间我有一个关系实体(我可能会在那里称错了)。这是展示这种关系的正确方法吗?我也尝试过使用三元关系,但最后却多次前进和后退。

  4. 欢迎任何一般性反馈或指出错误

  5. 非常感谢任何人能够提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

  

合作伙伴和个人助理都是子类实体,根据我的图表,有一个强制性的1..1关系。在子类之间建立特定关系是“合法的”吗?

在子类型和/或超类型之间建立关系是完全有效的。

  

我已经为Staff的子类使用了一个可选的或关系,我认为这很好,因为工作人员不能同时担任任何角色。作为子类的唯一省略的角色是“审计员”。如果我要包括这个,那么“可选”或“更改为”强制性或“,”因为显示了所有可能的选项,而且工作人员必须是这4个角色中的一个?

听起来不错。我宁愿使用“disjoint”一词而不是“or”。

  

在Annual_audit和Staff之间我有一个关系实体(我可能在那里称错了)。这是展示这种关系的正确方法吗?我也尝试过使用三元关系,但最后却多次前进和后退。

ER模型中没有“关系实体”这样的东西。您可能正在考虑在网络数据模型中使用的关联实体来分解多对多关系。 ER模型直接支持多对多关系,并且不需要为此目的使用关联实体,尽管它们仍然可以将关系置于其他关系中。

图中的

Annual_audit是一个弱实体关系。 Staff是一种常规实体关系。它们之间是Charges time,这是一种多对多的关系关系。如果你知道这些概念,那么符号就足够可读了。陈的表示法会更清楚地表示概念,而看起来像表格模式的图表对于物理模型更有效。

图表的一个问题是箭头。它们与基数指标不一致。他们的基数指标看起来是正确的,但箭头大多数并没有指向有意义的方向。除了指向子类型的Staff之外,我会将它们全部删除。

最后,我建议你不要混淆OOP和数据建模概念和术语。数据建模用于表示知识,OOP用于建模系统。对实体集的子类型/子集使用“子类型”,为编程上下文中的派生类“子类化”。