Database design 如何设计这个RDBMS模式?

Database design 如何设计这个RDBMS模式?,database-design,rdbms,Database Design,Rdbms,所以我们有食物,通常是一个单一的单位和食谱,其中包括不同数量的不同食物 我们想追踪一些基本信息,比如价格和营养信息 我们将如何为此设计RDBMS模式 因此,这里可能是最明显的解决方案: [Foods] : ID, Name, Carbs, Protein, Fat, Price [RecipeIngredients] : ID, FoodID, RecipeID, AmountOfFood [Recipes] : ID, Name 然而,由于recipe和foods具有几乎所有相同的操作,我需

所以我们有食物,通常是一个单一的单位和食谱,其中包括不同数量的不同食物

我们想追踪一些基本信息,比如价格和营养信息

我们将如何为此设计RDBMS模式

因此,这里可能是最明显的解决方案:

[Foods] : ID, Name, Carbs, Protein, Fat, Price
[RecipeIngredients] : ID, FoodID, RecipeID, AmountOfFood
[Recipes] : ID, Name
然而,由于recipe和foods具有几乎所有相同的操作,我需要创建大量重复代码来支持这两种操作

以下是另一种方法:

[Foods] : ID, Name, Carbs, Protein, Fat, Price, IsRecipe
[RecipeFoods] : ID, FoodID, RecipeID (which points to another Food), AmountOfFood
现在,所有操作对这两个对象都起相同的作用。但是,仅添加特定于食品或配方的字段会为其他实体创建空列

你将如何解决这个问题?你喜欢哪一个?有更好的方法吗?

保存数据库

一份
食谱
不是你已经注意到的
食物
,所以他们不应该共用一张桌子


每个实体在数据库中都应该有自己的表。

如果必须具有此数据库结构(+1到Oded),请确保未使用的列为NULL,并且代码可以处理此问题