Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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_Logic_Schema - Fatal编程技术网

Mysql 在一份食品订单中表示多个菜肴的最佳数据结构/数据库模式是什么?

Mysql 在一份食品订单中表示多个菜肴的最佳数据结构/数据库模式是什么?,mysql,database,logic,schema,Mysql,Database,Logic,Schema,我能想到的选择 子表,列出订单中的每道菜及其数量,并在主订单表中添加FK 订单表中的json表示形式,包含订单中各个菜肴的详细信息 预先计算所有可能的菜肴组合并储存在表格中,然后在订单表格中引用该表格 其中哪一个是最好的选择?有没有更好的解决办法 不清楚您是否要永久存储这些 在记忆中,我会有一张地图。 食物顺序是关键,是储存菜肴的清单。 然后我会有两个查找表;一个用于点菜,一个用于点菜 在数据库中,我会有类似的东西。 |FoodOrderId | Dish0Id | Dish1Id | Dish

我能想到的选择

  • 子表,列出订单中的每道菜及其数量,并在主订单表中添加FK
  • 订单表中的json表示形式,包含订单中各个菜肴的详细信息
  • 预先计算所有可能的菜肴组合并储存在表格中,然后在订单表格中引用该表格
    其中哪一个是最好的选择?有没有更好的解决办法

    不清楚您是否要永久存储这些

    在记忆中,我会有一张地图。 食物顺序是关键,是储存菜肴的清单。 然后我会有两个查找表;一个用于点菜,一个用于点菜

    在数据库中,我会有类似的东西。 |FoodOrderId | Dish0Id | Dish1Id | Dish0Id| 同样,您还需要两个进一步的查找表。 此选项的限制是订单只能包含有限数量的菜肴

    如果限制一道菜的数量和包含的内容是一个限制,那么您可以将该菜存储在XML中

    <FoodOrder>
    <ID =##>
    <DishId>#</DishId>
    <DishId>#</DishId>
    <DishId>#</DishId>
    </FoodOrder>
    
    
    #
    #
    #
    

    然后,您可以将XML字符串放入数据库中进行存储。

    一次订购的菜肴数量没有限制。如果它是一个数据库模式,将其放在xml中是否会限制查询功能。。比如想查找在他们点的菜中点了某道菜的用户?还想知道最好的解决方案是否存在于NoSql模式中?您将能够在SQL表中通过xml进行搜索。看,如果可以的话,我也不建议走无模式的道路。显然,这取决于数据的输入方式。例如,如果你有一个像JustEat这样的应用程序,你应该可以很容易地管理信息的一致性。如果您正在读取历史非结构化数据,则可能会有点不同。尝试验证输入,而不是使用大数据世界中使用的数据质量解决方案。