mysql - 没有主键的订单的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 可以重复(但不能组合),我不能将一列设置为主键。我应该实现另一列作为单个条目的唯一标识符,还是没有主键的表有效?
解决方案
因为,您的要求是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 的所有列。
推荐阅读
- android - arduino中气体检查器MQ-135的值十进制单位是多少?
- javascript - Spring Boot javascript没有执行?
- ios - 通过协议传递数据我做错了什么
- kubernetes - AWS/On-prem 上的 Kubeflow 管道目前是否可行?
- sql - 如何将不符合 WHERE 条件的联接表中的数据包含为空值(SQL)
- laravel - 包服务提供商和应用程序服务提供商有什么区别?
- javascript - 使用 Async Storage 存储大量数据可以吗?[反应原生]
- angular - 如何从数据库中获取数据并使用 setValue 或 patchValue
- redux-saga - 在 redux-saga 中使用事件句柄显示/隐藏组件
- swift - 如何在一个视图控制器中使用多个 UIPickerViews