2015-11-05 4 views
-4

CREATE TABLE Room ( RoomID NVARCHAR (8) первичный ключ, Емкость числовой (3)Продолжайте получать ошибку при попытке создать внешний ключ в sql?

)

CREATE TABLE RoomType ( RoomType NVARCHAR (2) первичный ключ, Описание NVARCHAR (20), NVARCHAR является ответственным (20) )

альтер стол номер

добавить ограничения fk_type иностранного ключа (типа) ссылается номер Тип (Type)

Основная ошибка 0x80040E11, Minor Error 0

альтер стол номер добавить ограничение fk_type внешнего ключа (тип) ссылается RoomType (тип) Invalid столбец ID. [Тип]

+0

Что вы хотите назвать таблицей, которую вы пытаетесь создать? Какие поля вы хотите в этой таблице? Какие таблицы и поля должны участвовать во взаимоотношениях с внешним ключом? – zedfoxus

+0

Я хочу, чтобы RoomID и Equipmenttype в таблице, которую я собираюсь создать, чтобы связать комнату с оборудованием, чтобы новая таблица называлась RoomEquipment. @zedfoxus – salman12

+0

Хорошо, RoomEquipment - это таблица. Он будет иметь поля RoomID и EquipmentType. Поле Equipment Equipment Equipment Equipment Equipment будет связано с полем EquipmentType Equipment. Поле RoomID в RoomEquipment относится ко всему? – zedfoxus

ответ

0

Вы можете создать таблицу RoomEquipment, которая сочетает в себе RoomID и EquipmentType так:

create table RoomEquipment (
    RoomID int, 
    EquipmentType nvarchar(1), 
    primary key (roomid, equipmenttype), 
    constraint fk_roomequipment_equipment_type 
      foreign key (equipmenttype) 
      references equipment(equipmenttype), 
    constraint fk_roomequipment_equipment_roomid 
      foreign key (roomid) 
      references room(roomid) 
); 

Другие таблицы могут выглядеть следующим образом:

-- I prefer using char datatype for predictable number of characters in a field 
CREATE TABLE RoomType (
Roomtype nvarchar(2) NOT NULL, 
Description nvarchar(20), 
Responsibility nvarchar(20), 
primary key (Roomtype) 
); 

-- You could use char(1) instead of nvarchar(1) for type; I'd prefer using int instead 
create table Equipment (
Equipmenttype nvarchar(1) NOT NULL, 
Description nvarchar(10) 
); 

-- Added a unique key to assist with good foreign key relationship 
alter table Equipment add constraint uk_equipment_equipmenttype unique (equipmenttype); 

-- Just use an int or char if roomID length is predictable 
Create table Room (
RoomID nvarchar(8), 
Capacity numeric(3), 
Roomtype(fk,nvarchar(2) 
); 

alter table room add constraint uk_room_id unique (roomid); 

Пример здесь: http://sqlfiddle.com/#!3/f510b

+0

Я добавил столовую. – salman12

+0

Проверьте первый блок кода, где я создаю таблицу RoomEquipment с соответствующими внешними ключами. Это работает для вас? – zedfoxus

+0

В моем задании говорится, что нам не разрешено комбинировать любые таблицы, но это помогает. – salman12

Смежные вопросы