假设我必须对一个晚餐的餐点进行建模。

一顿饭可以包含几个“组成部分”:

  • (薯条或米饭或薯条)
  • AND(六种不同饮料之一)
  • AND(七种不同的调味料中的一种或两种,或完全没有)

    另一餐可以包括:
  • (沙拉或米饭)
  • AND(大蒜或无大蒜)

  • 进餐包括:
  • 炸薯条
  • 只是一种饮料
  • Just ...

  • 我该如何建模? (UML,实体关系,代码,...您能最好解释的内容)

    如果您知道我要执行的某些任务,则可能会有所帮助,因此:
  • 允许客户首先选择餐点并显示所有剩余的“附加组件”。
  • 从组件列表中检测餐点。例如,如果客户订购了薯条,酱汁和饮料,则应该可以从第一个示例中检测到餐点。

  • 我曾考虑过将所有组件划分为文章,然后添加某种角色映射以将“炸薯条”标记为“芝士汉堡”,“炸肉排”,“...”的补充,但后来我想知道如何对多个添加进行建模插件,可选插件,n个out-of-m插件...

    我希望你能帮助我...

    最佳答案

    如果这是家庭作业,那就没关系了...
    但是-如果要在实际应用中使用它,我强烈建议您不要为每种食品使用具体的类,即。上面推荐的可乐类,沙拉类,米饭类等。
    这是使您的应用程序不灵活的肯定方法。

    拥有食品类和饮料类并具有名称属性或类似属性会更好。

    想象一下,仅由于现在有一个新的特殊商品或食品而不得不重建整个应用程序……不酷;)。

    我认为其他答案缺少的是一个小组的想法。
    每个食品可以与其他食品一起属于一个组,也可以单独属于一个组。

    说薯条,米饭和楔子属于A组。饮料属于B组。
    然后,您可以将组合建模为组列表-即。 1个A组项目和1个B组项目,或者两个A组项目和1个B组项目。

    您还可以使食品能够同时属于多个组...以使选择更加灵活。

    db模型在定义所有关系时可能会变得很复杂,但是我认为这是必要的。

    也许是这样的:
    group(id, name, desc)-一组类似商品-主菜,开胃菜,饮料...或其他任何东西
    foodItem(id, name, desc)-代表一个项目-薯条,米饭等
    foodItem_group(foodIgem_Id, group_Id)-将食品映射到他们的组-多对多
    combo(id, name, desc)-描述一个组合
    combo_group(combo_Id, group_Id)-将组映射到连击-多对多

    我认为这可以代表基本的所需模型-您可能希望使用其他表来存储客户实际订购的商品。并且,当然,要确定客户订单是否与组合匹配,这取决于您的业务逻辑。

    关于oop - 在只有某些实体组才能参与角色的复杂角色关系中,我该如何建模?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/598158/

    10-11 21:43