gpt4 book ai didi

mysql - 在我的情况下我应该使用什么外键关系?很难理解

转载 作者:行者123 更新时间:2023-11-29 13:19:52 25 4
gpt4 key购买 nike

我很难理解何时使用识别关系或非识别关系。我已经在这里阅读了一些答案,但我仍然很困惑。我想我就是这么慢......

所以我附上了一张 ER 图的一小部分图片,其中包含饮料配方:

ER Diagram

我明显的问题是;应该确定这些关系中的哪一个(如果有)? - 为什么?

如你所见;我只有一对多的非识别关系 - 这让我觉得我一定做错了什么 - 但它确实有效。

例如玻璃器皿菜谱之间的关系:
每个食谱都需要一个玻璃杯 - 这意味着没有玻璃杯就不可能存在食谱 - 我猜。因此,我将 recipes.fk_glassware_id 设置为 NN,并且给定的 ID 必须与 glassware 表中的 ID 相对应。 (一个玻璃杯可以跨越多个食谱,因此一对多)。但这应该是一种确定的关系吗?

recipes_rel_tagsrecipes 以及 tags 表之间的关系怎么样。其中任何一个都应该被确定为关系吗?如果没有任何链接表,则该表中的任何条目都不能存在。

编辑:
我添加了图表的新图片。现在,当我将关系更改为identified时,我的_rel_表中的fk_看起来像主键——所有这些。
这是什么意思?

ER Diagram 2

最佳答案

我不确定您是否看过这个问题的答案:What's the difference between identifying and non-identifying relationships? 。我不确定我能做得更好,但也许我可以让它更具体地适合您的示例。

思考识别关系的方法是问自己:我是否想将 child 与 parent 分开创建?如果你愿意的话,这不是一种识别关系。我引用的答案使用了人​​与电话号码的关系。您不会创建一堆电话号码,然后将它们与人们联系起来(至少在通常的用例中不会)。就您而言,您可能会创建配方并稍后决定最适合它们的玻璃器皿(这将使其成为可选的非识别关系),或者您可能要求在创建时选择一些玻璃器皿(强制非识别关系)。然而,您也可能稍后添加到您的玻璃器皿 table 上(例如......有凹槽和无柄酒杯),然后更改一些配方以使用它们而不是标准酒杯......所以这绝对不是一种识别关系。

您还问:

What about the relations between recipes_rel_tags and recipes- and tags-tables. Should any of those be identified relations? No entry in this table can exist without any of the linked tables..

对!如果没有食谱和标签中的记录,您永远不会在 recipes_rel_tags 中创建记录。因此它有 2 个识别关系。

关于mysql - 在我的情况下我应该使用什么外键关系?很难理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20999563/

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