我试图理解一个概念,而不是修复一段不起作用的代码.
我将采用表单(父表)和表单字段(子表)的一般示例.从逻辑上讲,这将是一种识别关系,因为没有表单就不能存在表单字段.

这将使我认为,为了将逻辑关系转换为技术关系,NOT NULLform_field表中的form_id字段的简单就足够了.(参见上面屏幕截图的左侧部分.)
但是,当我使用MySQL Workbench添加标识关系时,form_id不仅NOT NULL是主键的一部分,而且也是主键的一部分.(请参阅上面屏幕截图的右侧部分.)当我添加一个非识别关系时,NOT NULL仍然按逻辑方式应用它实际上也是一个识别关系.
我想这让我感到困惑,以及直到现在我总是简单地使用id字段作为主键的事实.
所以我理解识别与非识别关系的逻辑概念,但我不理解技术部分.
为什么它,正如这个答案所说的那样,"正确"的方式使外键成为孩子主键的一部分?
这些复合主键有什么好处?
在SQL Server 2008中,如何设计1:1和1:m的关系?
sql sql-server database-design data-modeling sql-server-2008