如何设计此RDBMS架构?

时间:2010-06-28 10:18:16

标签: database-design rdbms

所以我们有食物,通常是一个单一的单位和食谱,由不同数量的不同食物组成。

我们想跟踪一些基本的东西,比如价格和营养信息。

我们如何为此设计RDBMS架构?

所以,这可能是最明显的解决方案:

[Foods] : ID, Name, Carbs, Protein, Fat, Price
[RecipeIngredients] : ID, FoodID, RecipeID, AmountOfFood
[Recipes] : ID, Name

然而,由于食谱几乎与食物有相同的动作,我需要创建大量重复的代码来支持它们。

这是另一种方法:

[Foods] : ID, Name, Carbs, Protein, Fat, Price, IsRecipe
[RecipeFoods] : ID, FoodID, RecipeID (which points to another Food), AmountOfFood

现在所有的操作都适用于两者。但是,添加仅特定于Food或Recipe的字段会为另一个实体创建空列。

你会如何解决这个问题?你更倾向哪个?还有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

保留您的数据库normalized

Recipe不是您已经注意到的Food,因此他们不应该共享表格。

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

答案 1 :(得分:0)

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