我想创建一个包含订单的表“订单”。它应具有包括 userID 和 orderID 的字段。在另一个名为“orderItems”的表中,我想列出所有涉及一个订单的项目。问题是,所有引用一个订单的项目都应该只通过一个 ID 进行查询。因为可以仅在“订单”的 orderID 字段中设置此 ID。
那么,我该如何创建索引呢?有可能以这种方式实现吗?您对如何改进这个方案有什么建议吗?
我希望你明白,我想告诉你什么。
在此先感谢,马可
我想创建一个包含订单的表“订单”。它应具有包括 userID 和 orderID 的字段。在另一个名为“orderItems”的表中,我想列出所有涉及一个订单的项目。问题是,所有引用一个订单的项目都应该只通过一个 ID 进行查询。因为可以仅在“订单”的 orderID 字段中设置此 ID。
那么,我该如何创建索引呢?有可能以这种方式实现吗?您对如何改进这个方案有什么建议吗?
我希望你明白,我想告诉你什么。
在此先感谢,马可
您描述的情况最好通过使用该列的Order
和OrderItems
表之间的外键来解决。ORDER_ID
没有办法将ORDER_ID
用作每个的主键,ORDER_ITEM
因为键不是唯一的。
DDL
create table `order`(
order_id int NOT NULL,
customer_name varchar(50),
primary key(order_id)
);
create table order_item(
order_item_id int NOT NULL,
order_id int,
item_name varchar(50),
primary key(order_item_id),
foreign key(order_id) references `order`(order_id)
);
完成此 DDL 设置后,您可以通过连接两个表使用一个键轻松引用订单。
select * from
`order` o
join order_item oi
on o.order_id = oi.order_id
where o.order_id = 5;