2016-06-22 3 views
-1

Я новичок в изучении синтаксиса SQL и наткнулся на этот пример в книге. Я понимаю необходимость использования внешних ключей и использования функции ограничения, чтобы установить ключ в другую созданную таблицу (EMPLOYEE_TBL в этом примере).Синтаксис ограничения внешних ключей

Мой вопрос, почему он перечислил строку CONSTRAINT EMP_ID_FK FOREIGN KEY (EMP_ID). Что именно представляет собой участок EMP_ID_FK? Поскольку вам просто нужно использовать функцию CONSTRAINT для установки поля в вашей дочерней таблице в родительскую таблицу, не могли бы вы просто написать ее как CONSTRAINT FOREIGN KEY (EMP_ID) REFERENCES EMPLOYEE_TBL (EMP_ID));?

Я понимаю это неправильно? Любая помощь будет оценена по достоинству. Благодаря!

CREATE TABLE EMPLOYEE_PAY_TBL 
(EMP_ID CHAR(9) NOT NULL, 
DATE_HIRE DATE NULL, 
DATE_LAST_RAISE DATE NULL, 
CONSTRAINT EMP_ID_FK FOREIGN KEY (EMP_ID) REFERENCES EMPLOYEE_TBL (EMP_ID)); 
+0

Вы используете MySQL или MS SQL Server? (Два разных продукта с некоторыми различиями SQL.) – jarlh

+3

Это имя объекта 'CONSTRAINT'. Вы должны назвать это чем-то. – Siyual

+0

@jarlh В примере в этой книге используется MySQL. – arooney88

ответ

1

Статья CONSTRAINT EMP_ID_FK просто дает имя ограничению. Это необходимо позже, если вы хотите отключить или отключить ограничение. Вы правы, что имя (EMP_ID_FK) является необязательным; если вы его опустите, вы также можете опустить ключевое слово CONSTRAINT, так как достаточно указать, что статья FOREIGN KEY достаточно сказать интерпретатору, что именно вы хотите.

Именование ваших ограничений полностью необязательно, но считается хорошей практикой для документальных целей, и в случае, как я уже сказал, вам позже нужно что-то сделать с ограничением. Если вы опустите это имя, база данных автоматически укажет вам ограничение, но удачи, узнав, что это за имя.

+0

Спасибо за объяснение. – arooney88

0

Положите это так.

Таблица 1 должна иметь ссылку на таблицу 2. В таблице 2 имеется идентификатор первичного ключа, который является уникальным значением, что означает, что к нему можно получить доступ с помощью этого идентификатора, поскольку он уникален во всех строках этой таблицы. Теперь таблица Table 1 должна ссылаться на этот идентификатор. Вам нужно сохранить этот идентификатор в таблице 1, чтобы вы могли ссылаться на него, и вы знаете, к какой таблице 2, к таблице 1. Вы используете соглашение об именах Table2_ID_FK, чтобы знать, что это поле в таблице 1 является ссылкой на идентификатор таблицы 2. Ограничение заключается в установлении фактической связи между этими таблицами.

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