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

标签 mysql cardinality

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

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

编辑:使用 mySQL ERD 工作台

最佳答案

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

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

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

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

专业提示 如果您在所有地方使用相同的方式命名您的 id 列,数据设计工具往往会更好地工作,尤其是在对您的“逆向工程”进行“逆向工程”时表。这就是为什么我建议列名像 customer.customer_idorder.customer_id 而不是 customer.idorder.customer_id.

关于MySQL如何创建一对零或多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48137780/

相关文章:

php - 具有多个选项的字段的 MySQL 数据库查询

mysql - SQL:连接另一个表中的值

php - MYSQL 检索特色图片和帖子标题

mysql - 存储过程 : if else statement inside case when

ruby-on-rails - ruby 或 rails 中有序数到基数的函数吗?

mysql索引 'and'总是选择第一个创建的索引?

algorithm - 如何最好地从查找表中获取数据

mysql - mySQL 存储过程的可靠性如何?

mysql - 显示表状态的疯狂基数计数

sql - PostgreSQL:如何实现最小基数?