Mysql 设计数据库以允许基于时间的食物菜单
我正在尝试建立一个系统,允许餐馆创建菜单,可以根据一天中的时间和一周中的哪一天显示 例如,可能有标准菜单、欢乐时光菜单、特色菜单等,每个菜单都有自己的项目,每个项目都有自己的定价。一份奶酪比萨饼在周五上午10点到下午2点的价格可能是10美元,下午3点到5点的价格可能是5美元 设计数据库的好方法是什么,这样项目可以有不同的定价(基于一天中的时间和一周中的某一天),并且可以关联到各种“菜单”(以便对它们进行分类) 我目前有一个系统不允许这样做(因为当时不需要基于时间的菜单) *我需要一个菜单项时间表,上面有价格、时间开始、时间结束栏吗* 场馆表-每个单独的洗手间(主菜单id)与菜单表中的菜单id相关Mysql 设计数据库以允许基于时间的食物菜单,mysql,database,data-structures,time,Mysql,Database,Data Structures,Time,我正在尝试建立一个系统,允许餐馆创建菜单,可以根据一天中的时间和一周中的哪一天显示 例如,可能有标准菜单、欢乐时光菜单、特色菜单等,每个菜单都有自己的项目,每个项目都有自己的定价。一份奶酪比萨饼在周五上午10点到下午2点的价格可能是10美元,下午3点到5点的价格可能是5美元 设计数据库的好方法是什么,这样项目可以有不同的定价(基于一天中的时间和一周中的某一天),并且可以关联到各种“菜单”(以便对它们进行分类) 我目前有一个系统不允许这样做(因为当时不需要基于时间的菜单) *我需要一个菜单项时间表
+------------------+--------------+------+-----+---------+----------------+
| 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 | |
+------------------+--------------+------+-----+---------+----------------+
菜单表每个菜单及其所属场地
+----------+--------------+------+-----+---------+----------------+
| 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 | |
+----------+--------------+------+-----+---------+----------------+
菜单项表菜单的每个单独菜单项以及用于分类的类别(即“饮料”、“食品”、“特色菜”类别)和“类别索引”
+---------------+--------------+------+-----+---------+----------------+
| 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 | |
+---------------+--------------+------+-----+---------+----------------+
菜单项\u类别视图
+----------------+--------------+-----------+-------------+------+---------+
| Field | Type | Collation | Attributes | NULL | Extra |
+----------------+--------------+-----------+-------------+------+---------+
| menu_id | bigint(20) | | | No | |
| category | varchar(64) | | | No | |
| category_index | int(11) | | | No | |
+----------------+--------------+-----------+-------------+------+---------+
我可以看到4种方法
时间\u id
字段添加到菜单项
,该字段包含包含时间的静态数组的id。。。1=>早上,2=>晚上,3=>一整天,等等time\u id
变得像“.8.9.10.11.”对于上午8点到11点,.18.19.20.21.”对于下午6点到9点…有点混乱,并且像这样的查询有点密集,所以可能不理想菜单项中的字段
,添加另一个表…菜单项时间
…包含菜单项id
和时间id
s…这可能比#2快。它甚至可以包含时间描述
而不是时间id
,例如“整个上午”或“欢乐时光”菜单
和菜单项
之间放置菜单时间
…因此菜单
包含菜单时间
,其中包含菜单项
关于所有这些解决方案,需要注意的一点是,其中一些解决方案需要多个
菜单项
,用于不同的价格…这并不理想。但是,对于解决方案1-3,您可以通过将价格
移动到菜单项时间
表中来解决此问题。您需要将项与v关联是什么意思各种各样的“菜单”
?我的意思是,“奶酪比萨饼”可以是下午4-6点“快乐时光”菜单的一部分,有自己的价格,但也可以是“标准菜单”的一部分,在一天的其他时间有不同的价格。所以同一个“项目”在两个“菜单”上,但在不同的时间有不同的价格。谢谢neokio的回复。1)我不确定e由于可能有一个特定的时间(开始/结束时间)和几天,因此这是否有效它适用于。2)是的,这对我来说可能有点难实现,就像你说的可能不是最理想的。3)这可能会起作用。虽然,这不是**菜单项(时间)**而是因为每个项目可以根据时间有自己的价格吗?我是否也会添加“价格”?这样每个项目每次都可以有一个条目。'Pizza'item cou我有一个菜单项,时间是上午10点到11点,M/W/F,$6。还有一个菜单项是上午11点到晚上10点,M/W/F,$12。另一个想法是有菜单时间,然后是菜单项价格。每个菜单可以有时间,菜单项价格与时间和菜单项相关。