相关疑难解决方法(0)

识别和非识别关系之间有什么区别?

我无法完全掌握差异.你能描述这两个概念并使用现实世界的例子吗?

database database-design data-modeling identifying-relationship

773
推荐指数
8
解决办法
39万
查看次数

仍然困惑于识别与非识别关系

所以,我一直在阅读我的数据库设计中的识别与非识别关系,并且关于SO的一些答案似乎与我相矛盾.以下是我要看的两个问题:

  1. 识别和识别关系之间的区别是什么
  2. 确定识别或不识别关系的麻烦

从每个问题的最佳答案看,我似乎对识别关系有两种不同的看法.

第一个问题的响应表明,标识关系"描述了子表中行的存在取决于父表中的行的情况." 给出的一个例子是,"作者可以写很多书(1对n的关系),但没有作者就不能存在书." 这对我来说很有意义.

然而,当我阅读对问题二的回答时,我感到困惑,因为它说,"如果一个孩子识别其父母,那就是一种识别关系." 然后答案继续给出一些例子,例如社会安全号码(识别一个人),但地址不是(因为许多人可以住在一个地址).对我来说,这听起来更像是主键和非主键之间的决定.

我自己的直觉(以及对其他网站的额外研究)指出了第一个问题,其反应是正确的.但是,在我继续前进之前,我想验证,因为我不想学习错误,因为我正在努力理解数据库设计.提前致谢.

database database-design relational-database identifying-relationship

74
推荐指数
5
解决办法
7万
查看次数

为什么识别关系中的主键的外键部分?

我试图理解一个概念,而不是修复一段不起作用的代码.

我将采用表单(父表)和表单字段(子表)的一般示例.从逻辑上讲,这将是一种识别关系,因为没有表单就不能存在表单字段.

form和form_field表

这将使我认为,为了将逻辑关系转换为技术关系,NOT NULLform_field表中的form_id字段的简单就足够了.(参见上面屏幕截图的左侧部分.)

但是,当我使用MySQL Workbench添加标识关系时,form_id不仅NOT NULL是主键的一部分,而且也是主键的一部分.(请参阅上面屏幕截图的右侧部分.)当我添加一个非识别关系时,NOT NULL仍然按逻辑方式应用它实际上也是一个识别关系.

我想这让我感到困惑,以及直到现在我总是简单地使用id字段作为主键的事实.

所以我理解识别与非识别关系的逻辑概念,但我不理解技术部分.

为什么它,正如这个答案所说的那样,"正确"的方式使外键成为孩子主键的一部分?

这些复合主键有什么好处?

sql database-design foreign-keys primary-key

16
推荐指数
1
解决办法
5656
查看次数