Pmp*_*mpr 5 schema erd database-design database-diagrams
我正在研究一个 ERD,它表示Web 开发公司行为模型中实体之间的关系。在那里我有这样的实体:
到目前为止,我有这张图,但我知道它仍然存在重大问题,这只是一个起点:
主要概念
order-item
s 上生成service
s,组合形成与order
相关的invoice
。project
都有多个project-phase
s,每个都project-phase
与一个 相关order
。project-phase
都有多个task
s,每个都分配给一个developer
。project-phase
都有一个delivery
,将在相关order
s付款后交付invoice
。问题
has
和contains
完全一样的吗?如果不是,如何在他们之间选择关系?!什么措施?!对此有任何帮助,将不胜感激。
精制版图
考虑一个快餐店的类比会有所帮助:
在您的图表中,项目似乎与客户无关。这是你的本意吗?
我认为Order和Project不应该相关,因为我认为这是场外的东西,客户与它无关。她/他只是在分娩后才关心时间和金钱,没有别的。请告诉我是否错了。
所有订单都是项目的一部分,还是您可以拥有根本不在项目中的订单?
所有订单都是项目的一部分,除了那些在流程队列中等待的新订单。
同样,您将订单项目直接与客户相关,但也与订单相关。订单是否在客户之间分配?
请把Order-Item想象成这些:
因此,客户选择其中的一些项目,收集为具有发票并可支付的订单。Order-Item与提供的Service直接相关。我不明白您的意思是订单是否在客户之间拆分?.
如果不是,您不需要客户、订单项和服务之间的三元关系。相反,订单项目是订单和服务之间的交集。订单项目通过从订单(甚至项目?)
这在某种程度上是正确的:订单项目通过从 order 继承而属于客户,但我认为这样说更合理:
从Service继承的Order-Item属于Order,而Order本身属于Customer。
小智 3
你把关系过于简单化了。图中没有两个关系是相同的,因为它们不涉及相同的域。 <ORDER> has <ORDER-ITEM>
不等于<PROJECT> has <PROJECT-PHASE>
。它们可能都是单射的,但这不足以称它们相同。
尝试给你的亲戚起一个更具描述性的名字。虽然属性(又名一对一二元关系)倾向于聚合在一个共同的决定因素上以创建“实体表”,但多值属性和更复杂的关系(例如 ,Customer
和Service
之间的三元关系Order-item
)通常会独立成为表。 Makes
确实没有正确描述关系或结果表。
我建议您在图表中添加基数指示符,并使用每个关系的谓词语句作为指导,为您的关系提供更具描述性的名称。
再想一想,只要您将它们与它们相关的实体集一起阅读,这些名称在概念设计中可能就很好。当您进行物理设计时,一对一和一对多关系可能会被实现为实体集之一的属性,因此关系名称不会影响物理设计。多对多关系和非二元关系将成为它们自己的表,对于表名,最坏的情况是您可以连接实体名称,例如CustomerServiceOrderItems
。