我有几个关于ER建模的具体问题。
为了提供一些特定的背景,这是针对大学项目的,我似乎无法找到这些问题的具体答案。
背景
ER模型
问题
合作伙伴和个人助理都是子类实体,根据我的图表,有一个强制性的1..1关系。在子类之间建立特定关系是“合法的”吗?
我已经为Staff的子类使用了一个可选的或关系,我觉得这很好,因为工作人员不能同时担任任何角色。作为子类的唯一省略的角色是“审计员”。如果我要包括这个,那么“可选”或“更改为”强制性或“,”因为显示了所有可能的选项,而且工作人员必须是这4个角色中的一个?
在Annual_audit和Staff之间我有一个关系实体(我可能会在那里称错了)。这是展示这种关系的正确方法吗?我也尝试过使用三元关系,但最后却多次前进和后退。
欢迎任何一般性反馈或指出错误
非常感谢任何人能够提供的任何帮助。
答案 0 :(得分:0)
合作伙伴和个人助理都是子类实体,根据我的图表,有一个强制性的1..1关系。在子类之间建立特定关系是“合法的”吗?
在子类型和/或超类型之间建立关系是完全有效的。
我已经为Staff的子类使用了一个可选的或关系,我认为这很好,因为工作人员不能同时担任任何角色。作为子类的唯一省略的角色是“审计员”。如果我要包括这个,那么“可选”或“更改为”强制性或“,”因为显示了所有可能的选项,而且工作人员必须是这4个角色中的一个?
听起来不错。我宁愿使用“disjoint”一词而不是“or”。
在Annual_audit和Staff之间我有一个关系实体(我可能在那里称错了)。这是展示这种关系的正确方法吗?我也尝试过使用三元关系,但最后却多次前进和后退。
ER模型中没有“关系实体”这样的东西。您可能正在考虑在网络数据模型中使用的关联实体来分解多对多关系。 ER模型直接支持多对多关系,并且不需要为此目的使用关联实体,尽管它们仍然可以将关系置于其他关系中。
图中的 Annual_audit
是一个弱实体关系。 Staff
是一种常规实体关系。它们之间是Charges time
,这是一种多对多的关系关系。如果你知道这些概念,那么符号就足够可读了。陈的表示法会更清楚地表示概念,而看起来像表格模式的图表对于物理模型更有效。
图表的一个问题是箭头。它们与基数指标不一致。他们的基数指标看起来是正确的,但箭头大多数并没有指向有意义的方向。除了指向子类型的Staff
之外,我会将它们全部删除。
最后,我建议你不要混淆OOP和数据建模概念和术语。数据建模用于表示知识,OOP用于建模系统。对实体集的子类型/子集使用“子类型”,为编程上下文中的派生类“子类化”。