主要 table 所需的主要或唯一约束:"Orders"

Primary or unique constraint required on main table: "Orders"

抱歉,如果标题不清楚。

截至目前,我只有一堆客户和订单的电子表格。例如,电子表格中的一行可能如下所示:

ID 为 1、姓名为 Sally、地址为 291 North Street 的客户购买了商品 ID 2。

实际的电子表格看起来像这样 table:

Customer Id Customer Name Customer Address Item Id Name Cost Order Id Ordered Date
1 Sally 291 North Street 2 Long Sleeves 1 1/1/2022
1 Sally 291 North Street 1 Shirt 1 1/1/2022
2 George 892 Lakers Ave 3 Backpack 5 4/9/2022

我的目标是正确规范此数据,使其不那么多余。我已经将数据分成 3 tables、ItemsOrdersOrderInfo.

项目遵循如下结构:

Item Id (PK) Name Cost
1 XL Shirt
2 Long sleeves shirt
3 Backpack

订单:

Order ID (PK/FK?) Customer ID Ordered Date
1 1 1/1/2022
5 2 4/9/2022

订单信息:

Order ID (PK/FK?) Item ID (PK/FK?)
1 2
1 1
5 3

正如您从订单 table 中看到的那样,我尝试合并所有多余的订单,例如用户 Sally 在同一订单中订购了一件长袖衬衫和一件普通衬衫。但是,这会在 OrdersInfo table 中留下冗余数据,其中多个字段的 OrderId 相同,因为客户在一个订单中购买了多个项目。

这是正确的吗?我正在尝试在 LibreOffice Base 中的 table 上定义关系,并且我可以为除 OrderInfo 和 Orders 之外的所有关系定义正确的 one-to-many 关系。

这是我尝试 link OrderID 字段时出现的关系和错误的屏幕截图。

错误代码:

SQL Status: S0011
Error code: -170

Primary or unique constraint required on main table: "Orders" in statement [ALTER TABLE "Order_Info" ADD  FOREIGN KEY ("order_id") REFERENCES "Orders" ("order_id")]

外键必须引用所引用 table 的主键(或唯一键)。如果没有定义这样的 primary/unique 键,您将收到显示的错误。

示例:

CREATE TABLE Orders (
  order_id INT NOT NULL,
  customer_id INT NOT NULL,
  PRIMARY KEY(order_id),            <-- this is probably not defined
  FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)
);

CREATE TABLE Order_info (
  order_id INT NOT NULL,
  item_id INT NOT NULL,
  quantity INT NOT NULL,
  PRIMARY KEY (order_id, item_id),
  FOREIGN KEY (order_id) REFERENCES Orders(order_id),
  FOREIGN KEY (item_id) REFERENCES Items(item_id)
);