gpt4 book ai didi

蛋糕食谱的 SQL 模式和配料表

转载 作者:行者123 更新时间:2023-11-29 14:26:39 25 4
gpt4 key购买 nike

我是 PostgreSql 的新手,正在为学习目的开发一个示例数据库。我有一个面包店数据库和一个食谱表和一个配料表。我试图理解连接两个表的模式,以便食谱表有一个引用成分表的成分列表,但我不确定我是否需要第三个表或者我是否可以只用两个表.

CREATE TABLE ingredients
(
ing_id SERIAL PRIMARY KEY,
name varchar(255) NOT NULL,
quantity integer NOT NULL
);


CREATE TABLE recipes
(
rec_id SERIAL PRIMARY KEY,
name varchar(120) NOT NULL,
list_of_ingredients text NOT NULL,
);


编辑:假设我在配料表中有这个:

(1, flour, 40)
(2, eggs, 12)
(3, sugar, 23)

食谱表中的这个:

(1, cake, "3 flour, 4 eggs, 2 sugar")

我对如何链接这两个表有点困惑。


list_of_ingredients 需要引用配料表作为外键。我知道 NoSQL 数据库的全部意义在于允许列表,所以我不确定我是否完全错误地处理了这个问题。

我还将编写一个 Make_Recipe 函数,该函数将接收一个食谱并确保有足够的配料,然后在满足上述条件时继续减少配料数量。

我已经通读了这些帖子,但它们不太符合要求: Database design for storing food recipes Database Schema for Recipe/Ingredient/Measurement/Amount

感谢您的宝贵时间!非常感谢任何帮助。

最佳答案

食谱和配料之间的关系是所谓的多对多关系 - 一个食谱可能包含任意数量的配料,而一种配料可能被任意数量的食谱使用。

在关系型数据库中(PostgreSql 是一种关系型数据库),创建多对多关系的方法是引入桥接表。

对于食谱和配料,您将拥有三个表格。
一张成分表,指定成分的名称(以及可能的其他成分相关数据,如果您能想到此类数据)。另一个食谱表,指定食谱的名称、描述、文本解释等,以及菜肴的大小。然后你有桥表 ingredientToRecipe,它将包含配方表的一对多外键,成分表的一对多外键,以及特定配方中特定成分所需的数量.

还记得食谱表中菜品的尺寸吗?在按比例放大或缩小菜肴的尺寸时,需要计算配料数量的放大或缩小比例。

因此,这些表的 DDL 可能如下所示:

CREATE TABLE ingredients
(
ing_id SERIAL PRIMARY KEY,
name varchar(255) NOT NULL
);


CREATE TABLE recipes
(
rec_id SERIAL PRIMARY KEY,
name varchar(120) NOT NULL,
description text NOT NULL,
DishSize integer NOT NULL
);

CREATE TABLE ingredientsToRecipes
(
rec_Id integer REFERENCES recipes (rec_id),
ing_id integer REFERENCES ingredients (ing_id),
quantity integer NOT NULL,
quantity_unit varchar(100) NOT NULL,
PRIMARY KEY(rec_Id, ing_id)
);

关于蛋糕食谱的 SQL 模式和配料表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57100688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com