我有几个关于ER建模的具体问题。
为了提供一些特定的背景,这是一个大学项目,我似乎无法找到这些问题的具体答案。
背景
- ER模型为会计师事务所描绘了一个小型数据库,供他们管理客户,审计工作(年度工作),这些工作的时间和费用以及其他一些小细节。零碎的东西很愚蠢(例如个人助理打字速度,但对项目有要求)
- 每个客户每年必须完成1次审计,并且该审计由1名或多名在会计师事务所工作的员工完成
- 客户端(和审计作业)由经理管理。每个客户只有一个经理管理他们,每个经理可以管理多个客户
- 当工作人员进行审计时,他们会收取审计时间。审计成本的计算方法是:其收费率乘以向审计收取的总小时数 每个员工为1个
- 团队工作,并且只为1个团队工作。一个团队有 1 名或多名工作人员在其中工作。
- 合作伙伴是员工超类的子类,具有标识它们的唯一 rca 编号(会计术语)。每个合作伙伴领导一个团队,每个团队有一个且只有一个合作伙伴 每个合作伙伴都有一个个人助理
- ,每个个人助理只为1个合作伙伴工作
急诊室模型
审计时间和费用ER模型
问题
-
合作伙伴和个人助理都是子类实体,根据我的图表,有一个强制性的 1..1 关系。子类之间有特定的关系是"合法的"吗?
-
我为员工子类使用了可选或关系,我认为这很好,因为工作人员不能同时担任任何角色。作为子类,唯一省略的角色是"审计员"。如果我包括这一点,"可选或"是否会更改为"强制性,或",因为显示了所有可能的选项,并且工作人员必须是这 4 个角色之一?
-
在Annual_audit和员工之间,我有一个关系实体(我可能在那里称之为错误)。这是显示关系的正确方式吗?我也尝试使用三元关系,但最终来回几次。
-
欢迎任何一般性反馈或指出错误
非常感谢任何人能够提供的任何帮助。
合作伙伴和个人助理都是子类实体,根据我的图表,有一个强制性的 1..1 关系。子类之间有特定的关系是"合法的"吗?
在子类型和/或超类型之间建立关系是完全有效的。
我为员工子类使用了可选或关系,我认为这很好,因为工作人员不能同时担任任何角色。作为子类,唯一省略的角色是"审计员"。如果我包括这一点,"可选或"是否会更改为"强制性,或",因为显示了所有可能的选项,并且工作人员必须是这 4 个角色之一?
这听起来没错。我宁愿使用术语"脱节"而不是"或"。
在Annual_audit和员工之间,我有一个关系实体(我可能在那里称之为错误)。这是显示关系的正确方式吗?我也尝试使用三元关系,但最终来回几次。
ER 模型中没有"关系实体"这样的东西。您可能正在考虑在网络数据模型中用于分解多对多关系的关联实体。ER 模型直接支持多对多关系,并且不需要关联实体来实现此目的,尽管它们在将关系置于其他关系中仍然占有一席之地。
图中Annual_audit
是弱实体关系。Staff
是常规实体关系。它们之间是Charges time
这是一种多对多的关系。如果您知道这些概念,则表示法具有足够的可读性。不过,Chen的符号可以更清楚地表示概念,而看起来像表模式的图表更适合物理模型。
图表的一个问题是箭头。它们与基数指标不一致。它们的基数指示器看起来是正确的,但箭头大多不指向有意义的方向。我会将它们全部删除,除了从子类型指向Staff
的那个.
最后,我建议你不要混合OOP和数据建模的概念和术语。数据建模用于表示知识,OOP用于对系统进行建模。对子类型/实体集的子集使用"子类型",对编程上下文中的派生类使用"子类化"。