MySQL 如何创建一对零或多关系

MySQL How to create one to Zero or Many relation

我有实体客户和实体订单,一个客户可以有0个或多个订单,但一个订单只能有1个客户。

我已经尝试了很多方法,比如在 NN 取消选中外键,但我无法在客户处获得外键订单

编辑:使用 mySQL ERD workbench

您的 customer table 将有一个独特的 customer_id 列。在 MySQL 世界中,我们经常为这种 id 列使用自动增量主键。

您的 order table 将有一个 customer_id 列,它是 customer.customer_id 的外键。

这允许 order table 具有与特定 customer_id 相关的任意数量的行:none、一个或多个。外键关系在强制执行时——检查——只是防止 order 具有引用无效客户的 customer_id 值。

经典数据设计工具在逻辑设计和物理设计之间存在差异,当您尝试做这样简单的事情时,可能会让您抓狂。

专业提示 如果您在 id 列的所有地方都以相同的方式命名它们,数据设计工具往往会更好地工作,尤其是当 "reverse-engineering" 你的 tables。这就是为什么我建议列名 customer.customer_idorder.customer_id 而不是 customer.idorder.customer_id.