【问题标题】:UML: 1-To-Many Relationship Representation?UML:一对多关系表示?
【发布时间】:2014-02-25 02:55:33
【问题描述】:
我是 UML 的新手,我还不太了解这种表示法。
这是我对图表的理解。
The system has many doctors. Doctors can have many patients; however, patients can only have one doctor. Therefore this is a **One-To-Many** relationship
不过,我觉得这也可以理解为……
The system has 1 doctor. That one doctor has many patients.
哪个是正确的解释,为什么?
【问题讨论】:
标签:
oop
associations
uml
entity-relationship
【解决方案1】:
简单地说:你的第一个解释是正确的。 每个 Doctor 与许多 Patients 相关联。 每个 Patient 与一个Doctor 相关联。 1 的多重性只告诉您有多少 Doctors 与每个 Patient 相关联,而不是系统中有多少。了解一个类通常代表一组许多实例。
顺便说一句,对于分析模型,您应该使用关联端名称来赋予这些关联语义。例如,每个Doctor对待很多Patients。每个Patient 由一个Doctor 处理。语义将揭示您的模型是否适合业务领域。如果没有语义,这种关系可以表示账单、治疗、医院就诊等。treats 以* 结尾,is Treated 继续最后是1。
对于较低级别的模型,您应该将 treats 替换为 treatmentPatient 并将 is Treated by 替换为 treatingDoctor.
【解决方案2】:
假设您的系统是一家医院,显然应该允许不止一名医生在医院工作,因此最正确的解释是第一个。
【解决方案3】:
图表上的关联线显示一个关联。可能有很多关联,或者没有关联,这无关紧要。我们正在谈论一个具体的关联:
一个医生可以有很多病人。
因此,您的第二种解释也是正确的,但它仅涉及一个关联示例。
如果我们回想一下,关联的数量是任意的,对于我们拥有第一句话的整个系统。
可以这样实现关联,即每个患者都会有一个医生的参考(可能是空的)。我们可以将其实现为每个医生实例的患者列表。或两者兼而有之 - 例如,为了更容易搜索。但所有这些信息只涉及一种关系——一位医生与许多患者。
请注意,可能存在 2 个(或更多)这样的关系。例如,一位医生今天拜访了一些病人。我们将把这种关系命名为 DoctorIsActive。而另一位 - 一些病人拜访了医生。这将是另一种关系,PatientIsActive。所以,我们将有两条线连接这些块,它们上面有不同的名称,都是一对多的。但是因为它,我们没有两个医生。它可能会更复杂 - 例如,医生可以每天进行手术。
不要感到羞耻 - 我有时在理解这个事实时也会遇到同样的问题。据我所知,这是非常普遍的误读。
查看here 了解有关关联的更多信息。