Учебно-практическое пособие москва 2017 ббк


ссылающейся (referencing), а таблица «Студенты» — ссылочной



Pdf көрінісі
бет71/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   67   68   69   70   71   72   73   74   ...   243
Байланысты:
Язык SQL. Базовый курс

ссылающейся
(referencing), а таблица «Студенты» —
ссылочной
(referenced). Обратите внимание, что внешний ключ ссылающейся таб-
лицы ссылается на первичный ключ ссылочной таблицы. Допускается ссылка и на
уникальный ключ, не являющийся первичным. В данном контексте для описания от-
ношений между таблицами можно сказать, что таблица students является
главной
, а
таблица progress —
подчиненной
.
Создать внешний ключ можно в формате ограничения уровня атрибута следующим
образом:
CREATE TABLE progress
( record_book numeric( 5 ) REFERENCES students ( record_book ),
...
);
Предложение REFERENCES создает ограничение ссылочной целостности и указывает
в качестве ссылочного ключа атрибут record_book. Это означает, что в таблицу «Успе-
ваемость» (progress) нельзя ввести строку, значение атрибута record_book которой от-
сутствует в таблице «Студенты» (students). Говоря простым языком, нельзя ввести за-
пись об оценке того студента, информация о котором еще не введена в таблицу «Сту-
денты».
Поскольку внешний ключ в нашем примере ссылается на первичный ключ, можно
использовать сокращенную форму записи этого ограничения, не указывая список ат-
рибутов:
CREATE TABLE progress
( record_book numeric( 5 ) REFERENCES students,
...
);
Можно определить внешний ключ и в форме ограничения уровня таблицы:
CREATE TABLE progress
( record_book numeric( 5 ),
...
75


FOREIGN KEY ( record_book )
REFERENCES students ( record_book )
);
Конечно, число атрибутов и их типы данных во внешнем ключе ссылающейся табли-
цы и в первичном ключе ссылочной таблицы должны быть согласованы.
Ограничению внешнего ключа можно присвоить наименование, как и любому дру-
гому ограничению, с помощью ключевого слова CONSTRAINT.
При наличии связей между таблицами, организованных с помощью внешних клю-
чей, необходимо придерживаться определенной политики при выполнении опера-
ций удаления и обновления строк в ссылочных таблицах, т. е. в тех, на которые ссы-
лаются другие таблицы. В нашем примере ситуация принятия «политического» ре-
шения возникает при удалении строк из таблицы «Студенты» (students). Конечно, ес-
ли бы было принято решение хранить всю историю успеваемости студентов, в том
числе и отчисленных, тогда строки из таблицы students вообще не удалялись бы. Но,
упрощая реальную ситуацию, мы решили историю не хранить. Тогда возникает за-
кономерный вопрос: что делать со строками в таблице «Успеваемость» (progress), ко-
торые ссылаются на удаляемую строку в таблице «Студенты» (students)? Возможны
несколько вариантов.
1. Удаление связанных строк из таблицы «Успеваемость» (progress), что означает,
что при отчислении студента будет удаляться вся история его успехов в учебе.
Эта операция называется каскадным удалением и для ее реализации в опреде-
ление внешнего ключа добавляются ключевые слова ON DELETE CASCADE. На-
пример:


Достарыңызбен бөлісу:
1   ...   67   68   69   70   71   72   73   74   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет