Глава 5. Основы языка определения данных
Завершаем наш обзор различных видов ограничений рассмотрением такого важно-
го понятия, как
внешний ключ (foreign key). Внешние ключи являются средством
поддержания так называемой
ссылочной целостности (referential integrity) между
связанными таблицами. Напомним, что это означает, на примере таблиц «Студен-
ты» (students) и «Успеваемость» (progress). В первой из них содержатся данные
о студентах, а во второй — сведения об их успеваемости. Поскольку в процессе обу-
чения студенты сдают целый ряд зачетов и экзаменов, то в таблице «Успеваемость»
для каждого студента может присутствовать несколько строк. Для большинства из
них это так и будет, хотя, в принципе, возможна ситуация, когда для какого-то сту-
дента в таблице «Успеваемость» не окажется ни одной строки (если, он, например,
находится в академическом отпуске).
Конечно, должна быть возможность определить, какому студенту принадлежат те
или иные оценки, т. е. какие строки в таблице «Успеваемость» с какими строками
в таблице «Студенты» связаны. Для решения этой задачи не требуется в каждой стро-
ке таблицы «Успеваемость» повторять все сведения о студенте: номер зачетной книж-
ки, фамилию, имя и отчество, данные документа, удостоверяющего личность. Доста-
точно включить в состав каждой строки таблицы «Успеваемость» лишь уникальный
идентификатор строки из таблицы «Студенты». В нашем случае это будет номер за-
четной книжки — record_book. Данный атрибут и будет являться внешним ключом
таблицы «Успеваемость». Таким образом, получив строку из таблицы «Студенты»,
можно будет найти все соответствующие ей строки в таблице «Успеваемость», сопо-
ставив значения атрибутов record_book в строках обеих таблиц. В результате мы
сможем получить все строки таблицы «Успеваемость», связанные с конкретной стро-
кой из таблицы «Студенты» по внешнему ключу.
Таблица «Успеваемость» будет
ссылающейся (referencing), а таблица «Студенты» —
ссылочной
(referenced). Обратите внимание, что внешний ключ ссылающейся таб-
лицы ссылается на первичный ключ ссылочной таблицы. Допускается ссылка и на
уникальный ключ, не являющийся первичным. В данном контексте для описания от-
ношений между таблицами можно сказать, что таблица students является
главной,
а таблица progress —
подчиненной.
Создать внешний ключ можно в формате ограничения уровня атрибута следующим
образом:
Достарыңызбен бөлісу: