【问题标题】:What is the best Data structure/Database Schema to represent multiple dishes inside a single food order?在一个食品订单中表示多道菜的最佳数据结构/数据库模式是什么?
【发布时间】:2015-06-23 11:21:18
【问题描述】:

我能想到的选项。

  1. 子表,其中列出了订单中的每道菜及其数量,并带有主订单表的 FK
  2. 订单表中的 json 表示形式,其中包含订单中各个菜肴的详细信息
  3. 预先计算所有可能的菜肴组合并存储在一个表中,然后在订单表中使用对该表的引用。

其中哪个是最好的选择?有没有更好的解决方案?

【问题讨论】:

    标签: mysql database logic schema


    【解决方案1】:

    尚不清楚您是否要永久存储这些内容。

    在记忆中,我有一张地图。 食物订单作为键和存储菜肴的列表。 然后我有两个查找表;一份用于点餐,一份用于菜肴。

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

    如果限制一个订单包含的菜肴数量是一个阻碍,您可以将订单存储在 XML 中;

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

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

    【讨论】:

    • 点菜数量没有限制。如果它是一个数据库模式,将它放在 xml 中不会限制查询功能......就像想要查找在他们的订单中订购特定菜肴的用户?还想知道最好的解决方案是否在于 NoSql 无模式?
    • 您将能够在 SQL 表中搜索 xml。见link
    • 如果可以的话,我也不建议走无模式路径。显然,这取决于您的数据是如何输入的。例如,如果你有一个像 JustEat 这样的应用程序,你应该很容易管理信息的一致性。如果您正在阅读历史非结构化数据,则可能会有所不同。尝试验证输入,而不是使用大数据世界中使用的数据质量解决方法。
    猜你喜欢
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    相关资源
    最近更新 更多