建模问题:列表相互依赖,但可以是专门的条目吗?

时间:2009-05-23 15:13:17

标签: list modeling oop

相信我,我在问这里之前已经考虑了很多这个问题,我想我得到了一个解决方案,但是我想看看你们在解决我自己之前能想出什么:)

情景:

在这个领域,我们有3个实体:治疗,美容店和员工。一个beautyshop可以雇用0到很多员工。现在,一个beautysalon列出了它可以为其客户做的可能的治疗方法。每种治疗都有描述,持续时间和价格。每个员工都有一个类似的清单,但每个员工都可以专门处理每种治疗(不同的价格或持续时间),添加新的治疗方法或“移除”来自美容店的治疗。

..这对我来说似乎是一个相当普遍的问题,所以我希望有人能想出一些聪明的东西:)

到目前为止,我正在考虑让每个治疗方法都有一个唯一的ID,然后让员工列表自己插入治疗方法,这些治疗方法的ID与商店中的ID相同。然后,这些员工处理将覆盖具有相同ID的商店处理。

提前致谢

3 个答案:

答案 0 :(得分:2)

我们是在谈论问题的客观表示还是问题的数据库表示?如果它是客观表示,那么专门的治疗应该只是一般治疗的子类

使用关系数据库表示问题,事情变得更加困难:

beautyshop ---= employee
beautyshop ---= treatment_type
treatment_type ---= treatment
employee =--= treatment

---=是一对多,=--=是多对多。

但是我们如何获得一个美容店的治疗清单? 我们没有。相反,我们会获得所有beautyshop员工提供的治疗清单。也就是说,如果一个beautyshop有0名员工,它不提供任何治疗。

您可以在treatment表中使用空字段来指示特定员工使用默认属性提供此处理。如果特定beautyshop的treatment_type的默认值发生变化,则更新所有处理。

答案 1 :(得分:1)

我建议通过向Treatments类添加parentTreatment引用,为Treatment添加某种继承/特化机制。您将拥有一组标准Treatments,并且每个Employee都可以选择和自定义它们。 BeautySalon s不会明确存储任何Treatments,瞬态和易变getAvailableTreatments()方法会迭代关联的Employees并聚合其中Treatments的父Treatments每个Employee提供的{{1}}。

答案 2 :(得分:0)

为什么您希望使用相同的ID进行不同的治疗?

我宁愿设置一个“自定义治疗”ID。