На пальцах.
Пусть есть две таблицы — Отделы и Сотрудники. Предполагается, что сотрудник работает в одном и только в одном отделе.
У отделов есть колонка КодОтдела, уникально определяющий отдел. Так что первичный ключ для таблицы Отделы будет состоять из одной колонки: PK(КодОтдела).
Аналогично, в таблице сотрудников есть КодСотрудника. Так что первичный ключ для таблицы Сотрудники будет PK(КодСотрудника)
Теперь связь.
В таблице Сотрудники есть колонка КодОтдела, определяющая, в каком отделе работает сотрудник.
Ограничение внешнего ключа (FOREIGN KEY CONSTRAINT) позволяет гарантировать (СУБД следит), что код указанный в колонке КодОтдела таблицы Сотрудники всегдя является одним из значений первичного ключа таблицы Отделы.
Т.е. что нельзя записать в КодОтдела Иванова значение 123456, если нет отдела 123456.
Можно сказать, что таблица Сотрудники своей колонкой КодОтдела ссылается на таблицу Отделов, а внешний ключ гарантирует валидность этой связи.
Сотрудники [(PK)КодСотрудника, ФИО, (FK)КодОтдела] --> Отделы [(PK)КодОтдела, Название]
Создается примерно так:
ALTER TABLE Сотрудники
ADD CONSTRAINT Сотрудники_Отдел_FK
FOREIGN KEY (КодОтдела)
REFErENCES Отделы(КодОтдела)