我无法完全掌握差异.你能描述这两个概念并使用现实世界的例子吗?
database database-design data-modeling identifying-relationship
我读过这个问题:识别和非识别关系之间有什么区别?
但我还是不太确定......我拥有的是三张桌子.
用户可以拥有许多对象,也可以为每个对象发布许多图片.我的直觉告诉我这是一个识别关系,因为我需要在对象表中的userID,我需要在图片表中的objectID ...
还是我错了?另一个主题的解释仅限于数据库在已经编码后解释它的方式的理论解释,而不是对象在现实生活中如何连接.在考虑如何构建数据库时,我对如何做出识别与非识别的决定感到困惑.
在 ERD 中,弱/非识别关系是连接两个强实体的关系,用虚线表示。强/识别关系是一种将强实体连接到弱实体的关系(弱实体是一种包含来自其相关实体的外键 [FK] 作为其自己的主键 [PK] 的组成部分),并被指示用实线。
我的问题是,那又怎样?为什么区分弱/非识别关系与强/识别关系如此重要,以至于 ERD 设计者应该分别用虚线和实线进行区分?为什么这么重要?
对我来说,ERD 中的每个元素和约定都应该添加必要的信息,这些信息要么直接转换为数据库设计(即 DDL SQL 语句),要么至少解释重要但不一定明显的信息(以及最后一种情况的示例)将命名关系 - 它们不会转换为 SQL,但它们对于理解 ERD 非常有用)。为了讨论起见,这是一个示例 ERD(从另一个 StackOverflow 问题修改而来):
我已经考虑了很多,对我来说,实线与虚线添加的唯一信息已经在以下约定中得到充分传达:
据我所知,实线与虚线的关系线没有增加额外的有用信息。这种约定不是添加信息,而是不直观且非常混乱。作为它们造成的混淆的一个例子,StackOverflow 上有许多重复的问题,询问哪个是哪个;这里只是几个例子:
任何人都可以向我解释约定添加的哪些附加信息不包含在 FK 可能是也可能不是 PK 的一部分这一事实中?我正在认真考虑完全忽略约定(也就是说,我想开始用所有实线绘制我的 ERD),但如果有人能指出我忽略的重要内容,我将不胜感激。
所以,我在stackoverflow上已经阅读了很多答案,但我仍然对它的整个概念感到困惑.具体来说,我已经阅读了这篇文章(包括它引用的所有文章),但似乎无法找到对概念的可靠掌握(或者也许是我的基数(n:m等)和身份之间的混淆):
我的问题是:我知道识别关系意味着子实体的主键必须包含其外键,而非识别关系则相反(这是正确的吗?).现在,这对我来说似乎有点太"前瞻性思考"了?在其中一个链接的评论中也有同样的说法.我怎样才能"退后一步"并实际看到哪些关系具有哪些特征?
例如,我有两个困境:
job_title
(父母,1)到employee
(孩子,1 ..*).我是否正确地认为,因为job_title是一个查找表,它必须是一个非识别关系?或者更准确地说"没有工作标题,员工就不能存在,因此必须确定"?或者是定义该场景的关系?employee
to employee_equipment
(桥接m:n基数之间的实体)到equipment
.现在,我读到这必须是employee_equipment双方的识别关系.但是,如果员工不需要设备怎么办?可以有一个可选的识别关系吗?我想我正在寻找一种方法来识别哪些身份表应该属于哪个,而不考虑主键/外键,或者任何真正技术性的东西.
任何帮助将非常感激!
mysql database database-design entity-relationship cardinality