我有实体客户和实体订单,一个客户可以有0个或多个订单,但一个订单只能有1个客户。我已经尝试了很多事情,如使外键在nn取消检查,但我不能在客户外键订单编辑:使用mysql erd workbench
z9smfwbn1#
你的 customer 表将具有唯一的 customer_id 列。在mysql世界中,我们经常使用自动递增的主键来实现这类功能 id 列。你的 order table会有一个 customer_id 列的外键 customer.customer_id .这允许 order 表中包含与特定 customer_id :无、一个或多个。当强制(检查)外键关系时,它只会阻止 order 从有一个 customer_id 没有引用有效客户的值。经典的数据设计工具将逻辑设计和物理设计区分开来,当你试图做这样简单的事情时,它们会让你发疯。如果你说出你的名字 id 列无论在哪里使用都是一样的,数据设计工具往往工作得更好,尤其是在对表进行“反向工程”时。这就是为什么我建议列名称像 customer.customer_id 以及 order.customer_id 而不是 customer.id 以及 order.customer_id .
customer
customer_id
id
order
customer.customer_id
order.customer_id
customer.id
1条答案
按热度按时间z9smfwbn1#
你的
customer
表将具有唯一的customer_id
列。在mysql世界中,我们经常使用自动递增的主键来实现这类功能id
列。你的
order
table会有一个customer_id
列的外键customer.customer_id
.这允许
order
表中包含与特定customer_id
:无、一个或多个。当强制(检查)外键关系时,它只会阻止order
从有一个customer_id
没有引用有效客户的值。经典的数据设计工具将逻辑设计和物理设计区分开来,当你试图做这样简单的事情时,它们会让你发疯。
如果你说出你的名字
id
列无论在哪里使用都是一样的,数据设计工具往往工作得更好,尤其是在对表进行“反向工程”时。这就是为什么我建议列名称像customer.customer_id
以及order.customer_id
而不是customer.id
以及order.customer_id
.