【问题标题】:Recipe Database extended配方数据库扩展
【发布时间】:2016-02-12 13:01:51
【问题描述】:

我正在进行一个以该数据库为后端的项目。我有一些关于我正在努力解决的设计方面的问题。

这是我目前的设计:

Recipe(id, name, description, time, serving, skill)

Ingredient(id, name, type, description, BaseAmount, AmountType, cost)

RIngredient(RecipeID, IngredientID, AmountNeeded, amount type)

RStep(RecipeID, StepNo, Step description)

Meal(MealID, RecipeName, RecipeServing)

Inventory(InvID, IngredientID, IngredientName, IngredientCost, AmountNeeded)

Timetable(Day, Breakfast, Lunch, Dinner)

饭桌,是为了能把数据存到时间表里,但是这样的设计能行吗,因为将来如果饭菜多于一份,就应该存起来第二天吃或最多 2 个。因此,有效地利用成分。 库存是为了跟踪已经购买的东西并计算剩余的成分。这样,如果有剩余的成分可以通知用户,这样他们下次就不必购买那么多了。

我还希望能够为该食谱实例添加或删除其他成分。这将作为 sql 语句 delte/update 完成还是需要一个单独的表。

任何 cmets 都会非常感谢您的设计或您认为会更好的任何东西。

【问题讨论】:

  • 我将在 RIngredient 表中添加/删除行
  • 需要考虑的一件事是,有时食谱需要两次相同的成分(例如,我的煎饼需要 400 克黄油,外加 50 克用于平底锅)
  • @RiggsFolly 但是这会是食谱的永久添加吗?数据库将被多个用户使用,所以每个用户可能有不同的偏好?
  • @Strawberry 好点!没有考虑到这一点,我们是否可以不只是在 RIngredient 中添加一个目的属性来证明它是用于配方还是准备?
  • 是的,这可能是一种方式。所以你的唯一键可能是 (recipe_id,ingredient_id,preparation_flag)

标签: mysql sql database database-design relational-database


【解决方案1】:

Recipe 产生一些份量——这就是您所说的serving 的意思吗?

您可以制作“双份食谱”,或者,也许是“半份食谱”,因此需要指定“因素”。

因此,您需要另一个表来指示“制作食谱”;我称它为Batch,与RecipeId factor, datetime

一个Meal 由多个事物组成,因此您需要一个Meal 与Meal 中涉及的每个Batch 之间的多对多映射表。

你不能把剩菜冷冻起来吗?所以“一两天”大多是无关紧要的。但是您将有一份Servings 的库存放在冰箱里。

我不知道Timetable你要去哪里;大部分信息可以/应该在Meal

Inventory 中从 5 磅面粉中减去时,享受转换“杯”花的乐趣。

【讨论】:

  • 虽然我喜欢双份半份的想法。我只是想用这些食物来展示,在数据库的前端我可以计算配方成分来制作这样的食物吗?但我愿意使用这种方法,但我对批处理表有点迷茫。我正朝着食谱方向前进的那顿饭组成了一顿饭,然后用来生成时间表?但是是的,第二天或第二天无关紧要,忘记我们有冰箱哈哈。我应该在某处有一个 Frozen 标志来指示吗?幸运的是,我来自英国,所以所有这些都将以克为单位处理。 :)
  • 感谢您提出非常有建设性的意见,我是一名软件专业的学生,​​所以我对数据库还很陌生,但这是一个额外的课程项目,可以让我继续前进。
  • 我差点向你扔一个急诊室讲座——想想你的“实体”(配料、膳食……);每个都是一张桌子。然后考虑实体之间的“关系”。我没有因为“时间”和“剩菜”等变得混乱。
  • 建议作为初学者,你可以忽略剩菜和其他复杂性。专注于一些基础知识——会有足够多的事情来挑战你。然后扩充架构以处理项目的其他“功能”。祝你好运。
  • 谢谢,我了解这些基本原理 - 我的数据库模块已经完成了一半。我想到的项目可能比我能处理这么好的建议要大得多。我将让数据库的基本功能顺利运行,然后再进行扩展。毫无疑问,您会一路看到我在这里发帖。感谢您的建议
猜你喜欢
  • 2012-07-29
  • 2011-04-18
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 2017-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多