所以我们有食物,通常是一个单一的单位和食谱,由不同数量的不同食物组成。
我们想跟踪一些基本的东西,比如价格和营养信息。
我们如何为此设计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的字段会为另一个实体创建空列。
你会如何解决这个问题?你更倾向哪个?还有更好的方法吗?
答案 0 :(得分:2)
答案 1 :(得分:0)
如果您必须具有此数据库结构(+1到Oded),请确保未使用的列为NULL并且您的代码会处理此问题。