Php 具有指向其他表中行的链接的SQLTable
我想实现一个食谱数据库。一张桌子上应该放着菜谱及其单位,另一张桌子上应该放着菜谱。但不知何故,我不知道如何实现它。disks表中的一个条目包含一个dish的名称和ingredents表中的几个ID,这些ID带有一个因子(double),表示该ingredent的单位数Php 具有指向其他表中行的链接的SQLTable,php,mysql,sql,database,Php,Mysql,Sql,Database,我想实现一个食谱数据库。一张桌子上应该放着菜谱及其单位,另一张桌子上应该放着菜谱。但不知何故,我不知道如何实现它。disks表中的一个条目包含一个dish的名称和ingredents表中的几个ID,这些ID带有一个因子(double),表示该ingredent的单位数 现在我的问题是,如何才能使一道菜的条目包含多个带有ingredentID和factor的条目?我建议您使用3个表格: 菜肴(包含菜肴id、名称和一些一般信息) Ingredents(所有现有Ingredents的列表) Recip
现在我的问题是,如何才能使一道菜的条目包含多个带有ingredentID和factor的条目?我建议您使用3个表格:
所以每道菜都有几行:每道菜一行。你至少还需要一张桌子
dish
-----
dish_id
name
other_things
dish_ingredient
----------------
dish_id
ingredient_id
amount
order?
mixing_instructions?
other_stuff
ingredient
-----------
ingredient_id
other_stuff
基本上,您可以为此创建三个具有多对多关系的表 所有食谱的列表
CREATE TABLE RecipeList
(
RecipeID INT,
RecipeName VARCHAR(50),
-- .... other fields,
CONSTRAINT tb_pk PRIMARY (RecipeID),
CONSTRAINT tb_uq PRIMARY (RecipeName),
)
所有成分的清单
CREATE TABLE IngredientList
(
IngredientID INT,
IngredientName VARCHAR(50),
-- .... other fields,
CONSTRAINT tb_pk1 PRIMARY (IngredientID),
CONSTRAINT tb_uq1 PRIMARY (IngredientName),
)
还有一张桌子,上面放着每种食谱的配料
CREATE TABLE IngredientList
(
IngredientID INT,
RecipeName INT,
Amount INT,
Units INT,
InnerAmountInGrams DECIMAL(10,2),
-- .... other fields,
CONSTRAINT tb_pk3 PRIMARY KEY (IngredientID, RecipeName),
CONSTRAINT tb_fk1 FOREIGN KEY (RecipeID)
REFERENCES RecipeList(IngredientID),
CONSTRAINT tb_fk2 FOREIGN KEY (RecipeName)
REFERENCES IngredientList(IngredientID),
)
很好,但我需要每个ingredent的统一单位,因为我想在购物清单中汇总ingredent。带有相同ingredent的解决方案条目的Atm可以有不同的单位。但是如果我想总结一下,例如,千克和克不应该混合。但是很好的方法,谢谢。啊,你可以通过添加额外的列来调整你的表,该列保存单位的转换值,见我的更新答案。您可以看到有一个列名,
InnerAmountInGrams
。在这一列中,您需要插入换算成克数的数量
和单位
,因此,在您的情况下,如果您已在InnerAmountInGrams
中插入1千克
,您将把1000
放在那里。因此很容易对值进行求和:D