Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 配方数据库设计建议_Sql_Database_Database Design - Fatal编程技术网

Sql 配方数据库设计建议

Sql 配方数据库设计建议,sql,database,database-design,Sql,Database,Database Design,我在设计数据库时遇到问题。 我得做一张桌子,比如说一份食谱。 我有一些桌子,比如说:香料,肉类,蔬菜 Recipe <----> RecipeVeggies <----> Veggies 好的,现在我需要从香料、肉类、蔬菜中获取数据,并在Recipes表中创建一个食谱。我的问题是,考虑到一个食谱可以有更多的蔬菜、更多的果酱和更多的香料,如何将所有这些都映射到食谱中 谢谢。这是我要做的 我会使用继承映射,每种ORM都有它,几乎每种web语言都有它(php有条令,java和

我在设计数据库时遇到问题。 我得做一张桌子,比如说一份食谱。 我有一些桌子,比如说:香料,肉类,蔬菜

Recipe <----> RecipeVeggies <----> Veggies
好的,现在我需要从香料、肉类、蔬菜中获取数据,并在Recipes表中创建一个食谱。我的问题是,考虑到一个食谱可以有更多的蔬菜、更多的果酱和更多的香料,如何将所有这些都映射到食谱中


谢谢。

这是我要做的

我会使用继承映射,每种ORM都有它,几乎每种web语言都有它(php有条令,java和.net有Hibernate等)

如本例所示,您在层次结构的顶部有一个表,对于您的系统,我将其称为配料,然后将蔬菜/肉类/香料作为子表。然后我将制作一个名为Recipe的表,它将与配料表有一对多的关系

我希望您正在为此使用ORM,它将为您节省大量时间,并将导致更少的bug


谢谢你提出的这个有趣的问题,很高兴有一个更主观的设计类型的问题来激发创意。

你可以这样做。。在配方表列表中,列出配方名称(如x)的详细信息,该名称针对配方项目的每个内容重复,然后您可以创建另一个包含配方项目名称和编号的表。。在原始表格中使用此编号。。简言之,规范化配方表。。你可以对每种配料做进一步的调整。

食谱和配料之间有一种所谓的
n:m
关系。在关系数据库中解决此问题的常用方法是引入映射表

假设你的每个食谱都有一个id(
RecipeID
),每个配料也有一个id(
ingredienID
)。然后创建一个新表,其中既包含一个
RecipeID
列,也包含一个
IngredientID
列。此表中的每条记录将一种配料映射到一个配方,反之亦然


如果您想进一步限定关系,这样的表也很方便。例如,您可以在映射表中添加另一列,其中包含配方所需成分的说明。

在我看来,您所说的是n-m关系:

  • 一份食谱可以有许多香料/肉类 /蔬菜
  • 每种香料/肉类/蔬菜 可以与许多食谱联系在一起
通常将其存储在数据库中的方式是在菜谱和(例如)蔬菜之间建立一个关联表

Recipe <----> RecipeVeggies <----> Veggies
RecipeVeggies表创建并存储食谱和蔬菜之间的关系

您必须为香料和肉类创建类似的表格


我希望我说得清楚,否则请随意提问,我会改进我的答案。

肉、蔬菜和香料是成分
IngreditType
(m、V、S)用于识别各组

如果出于某种原因,您觉得每个成分都需要自己的表,因为它们有不同的列,那么请使用此模型。在
成分表中保留所有常用列


非常感谢您的解决方案……还有一个问题。。。如果我实现了在自己的表中分离成分的设计,我如何向它添加多个翻译?你们们建议采用什么方法?在中,半月和“X”是什么意思,它连接成分和IngredientType?@Hexatonic,子类型鉴别器——相互排斥。不,这不是家庭作业,只是一个个人项目,我需要一些建议。