2015-11-06 69 views
-1

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

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是不是主键。

+0

号不能创建一个外键,只是任何列。这没有任何逻辑意义。当然在你的例子中,你声明EquipmentType是主键。 –

+0

正如我所见的Equipmenttype id PK。 RoomID不是PK。 –

+1

如果你想这样做,那么你已经发现你的数据库设计有缺陷。 – Tomalak

回答

0

Equipmenttype一个主键,在其自己的表Equipment,并RoomID应该Room主键。

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

2

你可以是PKUnuque列上创建foreign key

所以,你必须在RoomID创建唯一索引:

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

现在你可以在表RoomEquipment创建一个foreign key

2

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

来源:Foreign Key to non-primary key

相关问题