首页 > 解决方案 > 没有主键的订单的MySQL项目?

问题描述

我的数据库中有两个属于彼此的表。mp_order 和 mp_order_items。

mp_order具有客户订单的主要信息,如地址、日期等。(order_id、customer_company、customer_name、customer_adress、order_date、... [等]

mp_order_items包含已订购的商品/商品(order_id、item_id、item_qty

由于 order_id 和 item_id 可以重复(但不能组合),我不能将一列设置为主键。我应该实现另一列作为单个条目的唯一标识符,还是没有主键的表有效?

标签: mysqlsqldatabaseprimary-key

解决方案


因为,您的要求是order_id并且item_id不能重复组合含义: (ord_134, itm_123) 不能重复,我相信您需要创建一个COMPOSITE KEY

PRIMARY KEY(order_id, item_id)

基本上,Order Id 和 Item Id 的组合将唯一标识表中的记录。如果需要,需要注意的是,在定义 FOREIGN KEY 时,不能仅使用 order_id 链接表。您需要在 FOREIGN KEY 关系中包含属于 COMPOSITE KEY 的所有列。


推荐阅读