首页 文章

数据库设计餐厅菜单

提问于
浏览
0

我正在为关系数据库的实体设计而苦苦挣扎 . 我正在设置一个在线餐厅菜单,用于在应用程序中动态加载 . 基于我对菜单的理解,我提出了以下实体 .

  • 有菜单类别(例如主菜,边,饮料,甜点)

  • 每个类别都有菜单项(汉堡,薯片,沙拉等)

  • 这很简单,但我遇到的问题是一类菜单项,它有第二种类型的MenuItems,它们是其他菜单项的组合 . 例如,麦当劳菜单中的餐饮类别包括汉堡薯条饮料 . 在这种情况下,它是三个不同类别(汉堡,边和饮料)的组合,用户可以从该类别中的多个选项中进行选择 . 并且在膳食交易类别中存在许多这样的组合 .

我应该如何设计数据库,这对于创建来自不同类别的其他简单MenuItem的组合非常有用 . 理想情况下,我应该能够创建新的多个具有此类特殊组合菜单项的类别,但目前我只尝试了一个专门用于此类项目的类别 .

到目前为止,我已经尝试过创建一个单独的comboMenuItems实体,它具有MenuItem的所有属性(名称,描述,价格等),除了它们的类别被固定为(来自Category表的MealDeals类别) .

为了使情况更复杂,有时餐饮交易具有与之相关的数量,这意味着客户可以从类别中选择多个项目 . 这方面的一个例子可能是家庭协议,其中包括2个汉堡,2个面和一个饮料 . 我不知道如何设计数据库以满足此业务规则 .

还有一些MenuItems的其他细节(如变体,选项等),但我在这个问题中省略了它们,只是为了让它易于理解 .

我正在寻找可以处理这种情况的实体和关系 .

目标是能够在数据库中创建新的组合交易,并将它们呈现在动态菜单页面中,最终目标是创建一个处理该菜单中的订购的购物车 .

1 回答

  • 0

    您可以有一个单独的餐桌交易表,其中每餐交易都有一个唯一的ID来识别该餐饮交易,价格和可以进入该餐饮交易的物品清单,您甚至可以按照其类型分开它们 . 当然 - 电源,侧面,饮料等,并将它们存储在逗号','或管道'|'分开的清单 . 然后你有一个聪明的小查询查询来确定所选项目是否是餐饮交易的一部分 .

    例如,ID:1,价格:3.50,MainID:1 | 7 | 14 | 15 | 16 | 19,SideIDs:4 | 5 | 7 | 11,DrinkIDs:5 | 6 | 7

    然后,比方说,例如,客户将主要1,第4面和饮料5添加到他们的购物篮中,您的查询会进行查找以返回包含该项目组合的所有餐饮交易ID(和价格) .

    希望我能正确理解你的问题,我希望这会有所帮助 .

相关问题