相信我,我在问这里之前已经考虑了很多这个问题,我想我得到了一个解决方案,但是我想看看你们在解决我自己之前能想出什么:)
情景:
在这个领域,我们有3个实体:治疗,美容店和员工。一个beautyshop可以雇用0到很多员工。现在,一个beautysalon列出了它可以为其客户做的可能的治疗方法。每种治疗都有描述,持续时间和价格。每个员工都有一个类似的清单,但每个员工都可以专门处理每种治疗(不同的价格或持续时间),添加新的治疗方法或“移除”来自美容店的治疗。
..这对我来说似乎是一个相当普遍的问题,所以我希望有人能想出一些聪明的东西:)
到目前为止,我正在考虑让每个治疗方法都有一个唯一的ID,然后让员工列表自己插入治疗方法,这些治疗方法的ID与商店中的ID相同。然后,这些员工处理将覆盖具有相同ID的商店处理。
提前致谢
答案 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。