Mysql 从编程角度识别和不识别关系

Mysql 从编程角度识别和不识别关系,mysql,database-design,relationship,Mysql,Database Design,Relationship,所以,我一直在阅读关于在数据库设计中识别和不识别关系的问题和答案 我理解,如果子行在逻辑上没有父行就无法识别,那么它就是一种识别关系 我已经考虑了一段时间了。从现实生活的逻辑角度来看,这是完全有道理的。但从数据库引擎的技术角度来看,我不能完全理解它有什么不同 那么,如果我将子行定义为NOTNULL并创建一个限制父行的外键,而不是将父行的id标识为子行主键的一部分,那么会有什么区别呢 在关系/SQL数据库中,它没有实际的区别。识别/非识别概念存在于ER建模中,主要作为解释业务领域语义方面的一种方式

所以,我一直在阅读关于在数据库设计中识别和不识别关系的问题和答案

我理解,如果子行在逻辑上没有父行就无法识别,那么它就是一种识别关系

我已经考虑了一段时间了。从现实生活的逻辑角度来看,这是完全有道理的。但从数据库引擎的技术角度来看,我不能完全理解它有什么不同


那么,如果我将子行定义为NOTNULL并创建一个限制父行的外键,而不是将父行的id标识为子行主键的一部分,那么会有什么区别呢

在关系/SQL数据库中,它没有实际的区别。识别/非识别概念存在于ER建模中,主要作为解释业务领域语义方面的一种方式,即关于首选识别方法和实体之间强制性关系的业务规则

一些ER建模者也有一种做法,即仅当出于识别目的(即“主键”属性)也需要引用属性时,才会在图表上显示这些属性(即“外键”)。当引用是“非标识”时,理论认为它们是由关系线的存在暗示的,根本不需要在引用实体中显示。这一传统如今似乎很少被遵守(至少在我的经验中是如此),但它或许可以解释为什么人们认为确定关系的重要性会出现