UML:1对多关系表示?

时间:2014-02-25 02:55:34

标签: oop associations uml entity-relationship

我是UML的新手,我还不太了解这个符号。

enter image description here

这是我对图表的理解。

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.

哪个是正确的解释?为什么?

3 个答案:

答案 0 :(得分:1)

让我们说你的系统是医院,显然不止一个医生应该被允许在医院工作,所以最正确的解释是第一。

答案 1 :(得分:1)

简单地说:你的第一个解释是正确的。 每个 Doctor都与许多Patients相关联。 每个 Patient与一个Doctor相关联。 1的多重性仅告诉您与Doctors相关联的Patient的数量,而不是系统中的数量Doctor。理解一个类通常代表一组很多实例。

BTW,对于分析模型,您应该使用关联端名称来赋予这些关联语义。例如,每个Patients 处理许多Patient。每个Doctor 一个*处理。语义将揭示您的模型是否适用于业务域。没有语义,这种关系可以代表计费,治疗,在医院的访问等。对待最后使用1由使用{{1}}结束。

对于较低级别的模型,您应该使用 treatedPatient 替换 treats ,并使用 treatingDoctor 替换处理>

答案 2 :(得分:0)

图表上的关联线显示一个关联。可能有许多关联,或者没有关联,无关紧要。我们正在谈论一个具体的协会:

  医生可以有很多病人。

所以,你的第二种解释也是正确的,但它只说一个关联的范例。

如果我们记得,关联的数量是任意的,对于整个系统,我们有第一句话。

可以实现关联,每个患者都会有一个参考(可能是空的)给医生。我们可以将其作为每个医生的患者名单来实现。或两者兼而有之 - 例如,更容易搜索。但所有这些信息只涉及一种关系 - 一位医生和许多患者。

请注意,可能存在2个(或更多)此类关系。例如,医生今天访问了一些患者。我们将这个名字命名为DoctorIsActive。而另一位医生则被一些病人带走了。这将是另一种关系,PatientIsActive。因此,我们将有两条线连接这些块,它们上面有不同的名称,一对多。但是因为它我们没有两个医生。它可能更复杂 - 例如,医生可以在一天内进行手术。

enter image description here

不要感到羞耻 - 我有时也会理解这个事实同样的问题。据我所知,这是非常普遍的误读。

查看here以获取有关关联的更多信息。