1

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

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

背景

  • ER 模型为会计师事务所描绘了一个小型数据库,用于管理他们的客户、审计工作(年度工作)、这些工作的时间和费用以及其他一些小细节。零碎的东西很傻(例如个人助理打字速度,但是是项目的要求)
  • 每位客户每年必须完成 1 次审计,且该审计由 1 名或多名在会计师事务所工作的员工完成
  • 客户(和审计工作)由经理管理。每个客户只有一个经理来管理他们,每个经理可以管理多个客户
  • 当员工从事审计工作时,他们会为审计收取时间。审计成本的计算方法是他们的收费率乘以收取审计费用的总小时数
  • 每个工作人员为 1 个且仅 1 个团队工作。一个团队有 1 名或多名员工在其中工作。
  • 合伙人是员工超类的子类,具有唯一的 rca 编号来标识他们(会计术语)。每个合伙人领导一个团队,每个团队只有一个合伙人
  • 每个合伙人都有一个私人助理,每个私人助理只为一个合伙人工作

ER模型

审核时间和费用 ER 模型

问题

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

  2. 我为员工的子类使用了可选或关系,我认为这很好,因为员工不能同时担任任何角色。作为子类的唯一被忽略的角色是“审计员”。如果我要包括这一点,“可选,或”是否会更改为“强制,或”,因为所有可能的选项都会显示并且工作人员必须是这 4 个角色之一?

  3. 在Annual_audit 和Staff 之间,我有一个关系实体(我可能在那里称其为错误)。这是显示关系的正确方式吗?我也尝试过使用三元关系,但最后还是前后来回了好几次。

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

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

4

1 回答 1

1

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

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

我为员工的子类使用了可选的或关系,我认为这很好,因为员工不能同时担任任何角色。作为子类的唯一被忽略的角色是“审计员”。如果我要包括这个,“可选,或”是否会更改为“强制,或”,因为所有可能的选项都会显示并且工作人员必须是这 4 个角色之一?

听起来是对的。我宁愿使用术语“不相交”而不是“或”。

在Annual_audit 和Staff 之间,我有一个关系实体(我可能在那里称其为错误)。这是显示关系的正确方式吗?我也尝试过使用三元关系,但最后还是前后来回了好几次。

ER 模型中没有“关系实体”之类的东西。您可能正在考虑在网络数据模型中用于分解多对多关系的关联实体。ER 模型直接支持多对多关系并且不需要为此目的的关联实体,尽管它们在使关系服从其他关系方面仍然占有一席之地。

Annual_audit在你的图中是一个弱实体关系。Staff是一个常规的实体关系。它们之间是Charges time多对多的关系关系。如果您了解这些概念,则该符号是足够可读的。不过,陈的符号会更清楚地表示概念,而看起来像表格模式的图表更适合物理模型。

您的图表的一个问题是箭头。它们与基数指标不一致。它们的基数指标看起来是正确的,但箭头大多没有指向有意义的方向。除了从子类型指向Staff.

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

于 2018-05-30T18:44:47.833 回答