是否可以在没有字段作为主键的情况下创建外键?

时间:2015-11-06 14:45:16

标签: sql sql-server sql-server-2008

例如

create table Equipment (

Equipmenttype nvarchar(1,
Description nvarchar(10),
Primary Key (Equipmenttype)
)

Create table Room (

RoomID nvarchar(8),
Capacity numeric(3),
Roomtype(fk,nvarchar(2)

)

我想创建下表...

create table RoomEquipment(
(RoomID here)
(Equipmenttype here)

Equipmenttype不是主键。

3 个答案:

答案 0 :(得分:2)

您可以在foreign keyPK的列上创建Unuque

因此,您必须在RoomID上创建唯一索引:

CREATE UNIQUE INDEX UI_Room_RoomID ON dbo.Room(RoomID); 

现在,您可以在表格foreign key中创建RoomEquipment

答案 1 :(得分:2)

FOREIGN KEY约束不必仅链接到另一个表中的PRIMARY KEY约束;它也可以定义为引用另一个表中UNIQUE约束的列。

来源:Foreign Key to non-primary key

答案 2 :(得分:0)

Equipmenttype 是主键,位于自己的表Equipment中,RoomID 应该是{的主键{1}}。

所以Room是一个标准的多对多关系表。