我很难理解何时使用识别或非识别关系。我在这里读了一些答案,但我仍然感到困惑。我想我只是那么慢......
所以我已经在我的ER图中包含了一张包含饮料配方的图片 -
我显而易见的问题是;应该确定哪些关系(如果有的话)? - 为什么?
正如你所看到的;我只有one-to-many non-identifying relationship
- 这让我觉得我一定做错了 - 但它确实有效。
例如glassware
和recipes
之间的关系:
每个食谱都需要一个玻璃杯 - 这意味着没有玻璃杯就不能存在食谱 - 我想。所以我将recipes.fk_glassware_id
设置为NN
,并且给定的ID必须与glassware
- 表中的ID相对应。 (一杯可以跨越多个食谱,因此one-to-many
)。但它应该是一个已确定的关系吗?
recipes_rel_tags
和recipes
- 和tags
- 表之间的关系怎么样?是否应该确定任何关系?没有任何链接表,此表中的条目不能存在..
修改
我添加了我的图表的新图片。现在我fk_
- 表中的_rel_
看起来像是主键 - 所有这些 - 当我将关系更改为identified
时。
这是什么意思?
答案 0 :(得分:1)
我不确定你是否看到过这个问题的答案:What's the difference between identifying and non-identifying relationships?。我不确定自己可以做得更好,但也许我可以让你的例子更具体。
考虑识别关系的方法是问自己:我是否想要将孩子与父母分开?如果你愿意,那不是一种认同关系。我引用的答案使用了人与电话号码的关系。你不会创建一堆电话号码然后LATER将它们绑定到人(至少不是在通常的用例中)。在您的情况下,您可以创建食谱并确定最适合它们的玻璃器皿(这将使其成为可选的非识别关系),或者您可能要求在创建时选择一些玻璃器皿(强制性非识别关系)。然而,您可能稍后也会添加到您的玻璃器皿桌上(比如说...凹槽和无茎酒杯)然后更换一些食谱而不是使用标准酒杯...所以它绝对不是识别关系。
你也问:
recipes_rel_tags与食谱和标签表之间的关系怎么样?是否应该确定任何关系?没有任何链接表,此表中的条目不能存在..
右键!您永远不会在recipes_rel_tags
中创建记录,而不会在食谱和标签中创建记录。因此它有2个识别关系。