У меня есть задание, где я долженSQL Server: ограничения и внешние ключи
- создать объект отношений схему конкретной ситуации, и
- Напишите код SQL для представления на диаграмме
Я новичок в SQL Server, но у меня есть таблица class
, которая имеет первичный ключ CRN varchar(10)(UNN)
и два внешних ключа, emp_id varchar(20) (NN)
, который имеет 1 обязательную связь с преподавателем и room_number varchar(5) (UNN)
, который также имеет 1 обязательная связь с Classroom
.
Мой код таблицы Class
:
CREATE TABLE class
(
CRN varchar(10) UNSIGNED NOT NULL,
emp_id varchar(20),
room_number varchar(5),
enrollment smallint UNSIGNED NOT NULL,
CONSTRAINT pk_class PRIMARY KEY (CRN),
CONSTRAINT fk_class
FOREIGN KEY (emp_id) REFERENCES instructor (emp_id),
CONSTRAINT fk_class
FOREIGN KEY (room_number) REFERENCES classroom (room_number)
);
Ошибка я получаю:
Constraint "FK_CLASS" уже существует; SQL заявление:
CREATE класс TABLE
(CRN VARCHAR (10) UNSIGNED NOT NULL,
emp_id VARCHAR (20),
room_number VARCHAR (5),
регистрации SMALLINT UNSIGNED NOT NULL,
Constraint pk_class PRIMARY KEY (CRN),
CONSTRAINT fk_class FOREIGN KEY (emp_id) СПРАВОЧНЫЙ инструктор (emp_id),
CONSTRAINT fk_class FOREIGN KEY (room_number) Список литературы (класс room_number)) [90045-193]
Я видел много разных примеров того, как сделать таблицу двумя внешними ключами, но не повезло. Что я делаю не так?
Каждого ограничения должно иметь уникальное имя, так же, как каждая таблица должна иметь уникальное имя. Может быть, что-то вроде fk_class_emp_id и fk_class_room_number? –
Вам нужно уникальное имя для каждого первичного ключа и ограничения внешнего ключа. Вы назвали оба ограничения внешнего ключа одинаковыми. Таким образом, ошибка. Ваши имена в общем-то дороги, слишком расплывчатые и общие. Но в частности, ваши имена FK должны указывать на то, что отношения FK ... FK_class_instructor, а FK_class_classroom - возможные предложения. – pmbAustin