MySQL - 无法创建 1:1 关系

Posted

技术标签:

【中文标题】MySQL - 无法创建 1:1 关系【英文标题】:MySQL - Trouble to create a 1:1 relationship 【发布时间】:2020-09-02 18:23:31 【问题描述】:

我正在尝试在 mysql Workbench 中创建 1:1 关系(不使用 Diagram)。我有两个名为agricultural_machinetractor 的表。我想要一个 1:1 的关系,即 agricultural_machine_idtractor_id 引用。

农业机器表中的外键

拖拉机桌上的外键

图表是这样形成的

我想要这个

【问题讨论】:

【参考方案1】:

为了实现真正的 1:1 关系,您需要可延迟的约束。这意味着在这种情况下,当您在另一个表中插入“另一行”时,需要在短时间内忽略外键约束(可能直到事务结束)。插入两行后,现在可以重新激活和验证外键约束。否则,您首先插入哪一行?任何插入都会失败,因为 FK 不会被验证。

不幸的是 MySQL 没有实现这个标准 SQL 特性,所以你将无法做到。您需要将数据库更改为 PostgreSQL 或 Oracle 以实现 1:1 关系。

【讨论】:

以上是关于MySQL - 无法创建 1:1 关系的主要内容,如果未能解决你的问题,请参考以下文章

Mysql外键和表关系

从 MySQL 数据库创建实体关系图

核心数据关系创建

如何使用 sequelize 和 mysql 创建一对一的关系?

MySQL创建数据表并建立主外键关系

MySQL创建数据表并建立主外键关系