具有多个主键的表的外键

时间:2016-03-10 08:35:34

标签: sql sql-server

所以这是我的双主键表

create table order_mattress
(
order_number int,
mattress_id int ,
primary key (order_number,mattress_id) 
);

这是我的第二张表

create table mattress
(
mattress_id int IDENTITY(1,1) PRIMARY KEY,
mattress_name varchar(25)
);

我想床垫中的床垫是桌子上的床垫的外键_ ordertmat怎么可能,因为第一张表中的双主键没有任何问题

2 个答案:

答案 0 :(得分:1)

我会改变它,以便你有3个表而不是2个表:

包含唯一订单号的简单订单表:

create table orders
(
    order_number int IDENTITY(1,1) PRIMARY KEY,
);

床垫桌,可容纳所有独特的床垫:

create table mattress
(
    mattress_id int IDENTITY(1,1) PRIMARY KEY,
    mattress_name varchar(25)
);

订购床垫桌,然后将床垫与外国钥匙联系起来。

create table order_mattress
(
    order_number int FOREIGN KEY REFERENCES orders(order_number),
    mattress_id int FOREIGN KEY REFERENCES mattress(mattress_id)
);

答案 1 :(得分:0)

您的方向错误 - 如果mattress表描述了床垫,mattress_order表应该有一个外键:

ALTER TABLE order_mattress
ADD FOREIGN KEY (mattress_id)
REFERENCES mattress(mattress_id)

另一个方向确实不可能,因为mattress_idorder_mattress不是唯一的。