【发布时间】: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