Внешние ключи - это функция целостности данных реляционных (и SQL) баз данных. Внешний ключ - это набор атрибутов в реляционной таблице, на который распространяется ограничение ссылочной целостности. Ограничение ссылочной целостности требует, чтобы значения атрибутов внешнего ключа в одной таблице A соответствовали соответствующим значениям в некоторой указанной таблице B (которая иногда может совпадать с таблицей A).

внешний ключ идентифицирует столбец или набор столбцов в одной (ссылочной) таблице, которая ссылается на столбец или набор столбцов в другой (ссылочной) таблице. Столбцы в таблице ссылок должны ссылаться на столбцы первичного ключа или другого суперкластера в ссылочной таблице. Значения в одной строке ссылочных столбцов должны встречаться в одной строке в ссылочной таблице.

Таким образом, строка в ссылочной таблице не может содержать значений, которые не существуют в ссылочной таблице (кроме потенциально NULL). Таким образом могут быть сделаны ссылки, чтобы связать информацию вместе, и это является важной частью нормализации базы данных.

Несколько строк в таблице ссылок могут ссылаться на ту же строку в ссылочной таблице. В большинстве случаев он отражает одну (родительскую таблицу или таблицу с привязкой) ко многим (дочерняя таблица или ссылочная таблица).

Компонентный внешний ключ состоит из двух или более столбцов. Все столбцы, которые образуют один внешний ключ, ссылаются на одну таблицу.

В некоторых случаях ограничение внешнего ключа может ссылаться на одну и ту же таблицу. Например, для таблицы employee, имеющей employee_number, employee_name и manager_employee_number. Каждый менеджер также является сотрудником, поэтому он может создавать ограничения внешнего ключа между manager_employee_number и employee_number

Ссылка