如何为 Order 和 OrderPosition 表的约束建模

How to model constraints for Order and OrderPosition tables

存在以下场景:

Table 订单
PK - 订单号

Table 订单位置
PK - 订单号
PK - OrderPosition

OrderID 是 table 个订单的主键。 OrderID 和 OrderPosition 是 table OrderPosition.

的组合主键

如果添加了 OrderPosition 条目,则使用的 OrderID 必须存在于 table 订单中,并且 table OrderPosition 中的 OrderID 和 OrderPosition 的组合必须是唯一的。

我正在使用 SQL Server 2012 并尝试添加外键约束,但这不起作用,因为列数不同。那么对这种情况建模的正确方法是什么?

Table 订单

PK - OrderID IDENTITY(1,1)

Table 订单位置

PK - OrderPos_ID 身份 (1,1)
订单号
OrderPosition

+UNIQUE CONSTRAINT (OrderID, OrderPosition) 如果需要

+FOREIGN KEY CONSTRAINT (OrderID) REFERENCES Orders(OrderID)

更新

CREATE TABLE #o (o_id INT IDENTITY(1,1) PRIMARY KEY)

CREATE TABLE #op (o_id INT, pos_no INT, PRIMARY KEY(o_id, pos_no))

ALTER TABLE #op ADD CONSTRAINT FK_1 FOREIGN KEY (o_id) REFERENCES #o(o_id)
GO
SELECT * FROM #o o INNER JOIN #op op ON op.o_id = o.o_id
GO