我试图理解一个概念,而不是修复一段不起作用的代码。
我将举一个表单(父表)和表单域(子表)的一般示例。从逻辑上讲,这将是一种识别关系,因为没有表单就不能存在表单域。
这会让我认为,为了将逻辑关系转换为技术关系,NOT NULL
form_field 表中的 form_id 字段的简单就足够了。(见上面截图的左边部分。)
但是,当我使用 MySQL Workbench 添加标识关系时,form_id 不仅NOT NULL
是主键,而且还是主键的一部分。(请参见上面屏幕截图的右侧部分。)当我添加一个非识别关系时,NOT NULL
仍然如此逻辑地应用它实际上也是一个识别关系。
我想这让我有点困惑,以及直到现在我总是简单地使用 id 字段作为主键的事实。
所以我理解识别与非识别关系的逻辑概念,但我不了解技术部分。
正如这个答案所说,为什么它是“使外键成为孩子主键的一部分的“正确”方法?
这些复合主键有什么好处?