在我的情况下我应该使用哪些外键关系?很难理解

时间:2014-01-08 15:18:12

标签: mysql entity-relationship

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

所以我已经在我的ER图中包含了一张包含饮料配方的图片 -

ER Diagram

我显而易见的问题是;应该确定哪些关系(如果有的话)? - 为什么?

正如你所看到的;我只有one-to-many non-identifying relationship - 这让我觉得我一定做错了 - 但它确实有效。

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

recipes_rel_tagsrecipes - 和tags - 表之间的关系怎么样?是否应该确定任何关系?没有任何链接表,此表中的条目不能存在..

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

ER Diagram 2

1 个答案:

答案 0 :(得分:1)

我不确定你是否看到过这个问题的答案:What's the difference between identifying and non-identifying relationships?。我不确定自己可以做得更好,但也许我可以让你的例子更具体。

考虑识别关系的方法是问自己:我是否想要将孩子与父母分开?如果你愿意,那不是一种认同关系。我引用的答案使用了人​​与电话号码的关系。你不会创建一堆电话号码然后LATER将它们绑定到人(至少不是在通常的用例中)。在您的情况下,您可以创建食谱并确定最适合它们的玻璃器皿(这将使其成为可选的非识别关系),或者您可能要求在创建时选择一些玻璃器皿(强制性非识别关系)。然而,您可能稍后也会添加到您的玻璃器皿桌上(比如说...凹槽和无茎酒杯)然后更换一些食谱而不是使用标准酒杯...所以它绝对不是识别关系。

你也问:

  

recipes_rel_tags与食谱和标签表之间的关系怎么样?是否应该确定任何关系?没有任何链接表,此表中的条目不能存在..

右键!您永远不会在recipes_rel_tags中创建记录,而不会在食谱和标签中创建记录。因此它有2个识别关系。