我有4张桌子:
医生 ID,名称,roomNumber
约会 ID,whenOccured,ifAttended
患者 ID,姓名,地址
DPappointments DoctorID,PatientID,AppointmentID
这大致成为
但是,我现在想要改变它,以便可以预约看医生或护士吗?
如何更改类图以反映'OR'类型关系?
答案 0 :(得分:2)
根据模型的其他结构,有不同的解决方案。我认为还有一个类Nurse,并且该id与Doctor没有任何特殊关系(如从Employee或类似的继承)。所以,这将是一个通用的解决方案。
添加在约会和护士之间添加关联,类似于现有的医生。 Doctor(和护士)方面的相应多重性应为0..1,并且应添加一个附加规则 - 约会对象必须具有指向Doctor对象或Nurse对象的链接。
此规则可以在OCL中指定(如果您喜欢正式样式)或在图表上作为简单的文本注释。
还有其他一些方法来模拟这个,没有额外的限制,但模型本身(可能)是必要的复杂。例如,您可以从抽象类派生医生和护士 - AppointmentRespondent ,并使用该方面的多重性1..1将其与约会链接。这种模式允许更大的灵活性,更容易扩展(很容易添加新的潜在AppointmentRespondents),没有OCL,没有限制。
您可以选择更符合您的型号和未来扩展的方法。
P.S。并不是说这不是OR型的关系,而是异或 - 在每次任命中都必须有代表医院的某些人(这是一个合理的猜测:))。