Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 设计数据库以允许基于时间的食物菜单_Mysql_Database_Data Structures_Time - Fatal编程技术网

Mysql 设计数据库以允许基于时间的食物菜单

Mysql 设计数据库以允许基于时间的食物菜单,mysql,database,data-structures,time,Mysql,Database,Data Structures,Time,我正在尝试建立一个系统,允许餐馆创建菜单,可以根据一天中的时间和一周中的哪一天显示 例如,可能有标准菜单、欢乐时光菜单、特色菜单等,每个菜单都有自己的项目,每个项目都有自己的定价。一份奶酪比萨饼在周五上午10点到下午2点的价格可能是10美元,下午3点到5点的价格可能是5美元 设计数据库的好方法是什么,这样项目可以有不同的定价(基于一天中的时间和一周中的某一天),并且可以关联到各种“菜单”(以便对它们进行分类) 我目前有一个系统不允许这样做(因为当时不需要基于时间的菜单) *我需要一个菜单项时间表

我正在尝试建立一个系统,允许餐馆创建菜单,可以根据一天中的时间和一周中的哪一天显示

例如,可能有标准菜单、欢乐时光菜单、特色菜单等,每个菜单都有自己的项目,每个项目都有自己的定价。一份奶酪比萨饼在周五上午10点到下午2点的价格可能是10美元,下午3点到5点的价格可能是5美元

设计数据库的好方法是什么,这样项目可以有不同的定价(基于一天中的时间和一周中的某一天),并且可以关联到各种“菜单”(以便对它们进行分类)

我目前有一个系统不允许这样做(因为当时不需要基于时间的菜单)

*我需要一个菜单项时间表,上面有价格、时间开始、时间结束栏吗*

场馆表-每个单独的洗手间(主菜单id)与菜单表中的菜单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    |                |
    +------------------+--------------+------+-----+---------+----------------+
菜单表每个菜单及其所属场地

    +----------+--------------+------+-----+---------+----------------+
    | 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=>一整天,等等

  • 与#1相同,但将字段设置为可以在LIKE(%)查询中搜索的VARCHAR。。。所以
    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。另一个想法是有菜单时间,然后是菜单项价格。每个菜单可以有时间,菜单项价格与时间和菜单项相关。