我正在尝试构建一个系统,允许餐厅创建可以根据一天中的时间和一周中的一天显示的菜单。
例如,可能有标准菜单、欢乐时光菜单、特色菜单等,每个菜单都有自己的项目和每个项目的定价。周五上午 10 点至下午 2 点和下午 3 点至下午 5 点,奶酪比萨的价格可能为 10 美元。
什么是设计数据库的好方法,以便项目可以具有各种定价(基于一天中的时间和一周中的一天)以及与各种“菜单”相关联(以便对它们进行分类)?
我目前有一个系统实际上不允许这样做(因为当时不需要基于时间的菜单)。
*我需要一个 menu_items_times 表,其中包含价格、时间开始、时间结束列吗?*
场地表- 每个单独的餐厅 (primary_menu_id) 与菜单表中的 menu_id 相关
+------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+----------------+
| venue_id | bigint(20) | NO | PRI | None | auto_increment |
| name | varchar(256) | NO | | None | |
| primary_menu_id | bigint(20) | NO | | NULL | |
+------------------+--------------+------+-----+---------+----------------+
menus 表每个菜单及其所属的地点
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| menu_id | bigint(20) | NO | PRI | None | auto_increment |
| venue_id | bigint(20) | NO | | None |
| name | varchar(256) | NO | | None | |
+----------+--------------+------+-----+---------+----------------+
menu_items 列出了菜单的每个单独的菜单项以及用于对类别进行排序的类别(即“饮料”、“食物”、“特价”类别)和“类别索引”。
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| menu_item_id | bigint(20) | NO | PRI | none | auto_increment |
| menu_id | bigint(20) | NO | | none | |
| name | varchar(256) | NO | | none | |
| price | float | NO | | none | |
| category | varchar(64) | NO | | none | |
| category_index| int(11) | NO | | none | |
+---------------+--------------+------+-----+---------+----------------+
menu_items_categories 视图
+----------------+--------------+-----------+-------------+------+---------+
| Field | Type | Collation | Attributes | NULL | Extra |
+----------------+--------------+-----------+-------------+------+---------+
| menu_id | bigint(20) | | | No | |
| category | varchar(64) | | | No | |
| category_index | int(11) | | | No | |
+----------------+--------------+-----------+-------------+------+---------+