如何为 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
存在以下场景:
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