如何为Order和OrderPosition表建模约束

时间:2016-08-24 08:16:25

标签: sql-server foreign-keys constraints primary-key unique-constraint

有以下情况:

表格订单
PK - OrderID

表OrderPosition
PK - 订单ID
PK - OrderPosition

OrderID是表格订单的主键。 OrderID和OrderPosition是表OrderPosition的组合主键。

如果条目是OrderPosition被添加,则使用的OrderID必须存在于表Orders中,OrderPosition表中OrderID和OrderPosition的组合必须是唯一的。

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

1 个答案:

答案 0 :(得分:0)

表格订单

PK - OrderID IDENTITY(1,1)

表格订单

PK - OrderPos_ID IDENTITY(1,1)
订单ID
OrderPosition

如果需要,

+ UNIQUE CONSTRAINT (OrderID, OrderPosition)

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

UPD

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