1

我想创建一个包含订单的表“订单”。它应具有包括 userID 和 orderID 的字段。在另一个名为“orderItems”的表中,我想列出所有涉及一个订单的项目。问题是,所有引用一个订单的项目都应该只通过一个 ID 进行查询。因为可以仅在“订单”的 orderID 字段中设置此 ID。

那么,我该如何创建索引呢?有可能以这种方式实现吗?您对如何改进这个方案有什么建议吗?

我希望你明白,我想告诉你什么。

在此先感谢,马可

4

1 回答 1

1

您描述的情况最好通过使用该列的OrderOrderItems表之间的外键来解决。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;
于 2013-06-26T09:51:05.240 回答