Re: не понимаю первичные и внешние ключи...
От: Igor Trofimov  
Дата: 28.09.06 16:59
Оценка:
На пальцах.
Пусть есть две таблицы — Отделы и Сотрудники. Предполагается, что сотрудник работает в одном и только в одном отделе.
У отделов есть колонка КодОтдела, уникально определяющий отдел. Так что первичный ключ для таблицы Отделы будет состоять из одной колонки: PK(КодОтдела).
Аналогично, в таблице сотрудников есть КодСотрудника. Так что первичный ключ для таблицы Сотрудники будет PK(КодСотрудника)

Теперь связь.
В таблице Сотрудники есть колонка КодОтдела, определяющая, в каком отделе работает сотрудник.

Ограничение внешнего ключа (FOREIGN KEY CONSTRAINT) позволяет гарантировать (СУБД следит), что код указанный в колонке КодОтдела таблицы Сотрудники всегдя является одним из значений первичного ключа таблицы Отделы.
Т.е. что нельзя записать в КодОтдела Иванова значение 123456, если нет отдела 123456.

Можно сказать, что таблица Сотрудники своей колонкой КодОтдела ссылается на таблицу Отделов, а внешний ключ гарантирует валидность этой связи.

Сотрудники [(PK)КодСотрудника, ФИО, (FK)КодОтдела] --> Отделы [(PK)КодОтдела, Название]

Создается примерно так:

ALTER TABLE Сотрудники
ADD CONSTRAINT Сотрудники_Отдел_FK
    FOREIGN KEY (КодОтдела)
    REFErENCES Отделы(КодОтдела)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.