我正在努力设计关系数据库的实体。我正在设置一个在线餐厅菜单,用于在应用程序中动态加载。基于我对菜单的理解,我提出了以下实体。
我应该如何设计数据库,这对于创建来自不同类别的其他简单MenuItem的组合非常有用。理想情况下,我应该能够创建新的多个具有此类特殊组合菜单项的类别,但目前我只尝试了一个专门用于此类项目的类别。
到目前为止,我已经尝试过创建一个单独的comboMenuItems实体,它具有MenuItem的所有属性(名称,描述,价格等),除了它们的类别是固定的(来自类别的MealDeals类别)表)。
为了使情况更加复杂,有时餐饮交易具有与之相关的数量,这意味着客户可以从类别中选择多个项目。这方面的一个例子可能是家庭协议,其中包括2个汉堡,2个面和一个饮料。我不确定如何设计数据库以满足此业务规则。
还有一些MenuItems的其他细节(如变体,选项等),但我在这个问题中省略了它们,只是为了让它易于理解。
我正在寻找可以处理这种情况的实体和关系。
目标是能够在数据库中创建新的组合交易,并将它们呈现在动态菜单页面中,最终目标是创建一个处理该菜单中订购的购物车。
答案 0 :(得分:0)
你可以有一个单独的餐桌交易表,每个餐点交易都有一个唯一的ID来识别该餐饮交易,价格和可以进入该餐饮交易的项目列表,你甚至可以将它们分开来他们的课程类型 - 主要,侧面,饮料等,并用逗号存储,','或管道' |'分开的清单。然后你有一个聪明的小查询查询,以确定所选项目是否是餐饮交易的一部分。
例如, ID:1,价格:3.50,MainIDs:1 | 7 | 14 | 15 | 16 | 19,SideIDs:4 | 5 | 7 | 11,DrinkIDs:5 | 6 | 7
然后,例如,客户将主要1,第4面和饮料5添加到他们的购物篮中,您的查询会执行查找以返回包含该项组合的所有餐饮交易ID(和价格)。
希望我能正确理解你的问题,我希望这会有所帮助。