Учебное пособие Санкт-Петербург «бхв-петербург»



Pdf көрінісі
бет76/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   72   73   74   75   76   77   78   79   ...   256
sql osnovi yazika

CREATE TABLE progress
( record_book numeric( 5 ) REFERENCES students ( record_book ),
...
);
100


5.1. Значения по умолчанию и ограничения целостности
Предложение REFERENCES создает ограничение ссылочной целостности и указыва-
ет в качестве ссылочного ключа атрибут record_book. Это означает, что в таблицу
«Успеваемость» нельзя ввести строку, значение атрибута record_book которой от-
сутствует в таблице «Студенты». Говоря простым языком, нельзя ввести запись об
оценке того студента, информация о котором еще не введена в таблицу «Студенты».
Поскольку внешний ключ в нашем примере ссылается на первичный ключ, можно
использовать сокращенную форму записи этого ограничения, не указывая список ат-
рибутов:
CREATE TABLE progress
( record_book numeric( 5 ) REFERENCES students,
...
);
Можно определить внешний ключ и в форме ограничения уровня таблицы:
CREATE TABLE progress
( record_book numeric( 5 ),
...
FOREIGN KEY ( record_book )
REFERENCES students ( record_book )
);
Конечно, число атрибутов и их типы данных во внешнем ключе ссылающейся табли-
цы и в первичном ключе ссылочной таблицы должны быть согласованы.
Ограничению внешнего ключа можно присвоить наименование, как и любому дру-
гому ограничению, с помощью ключевого слова CONSTRAINT.
При наличии связей между таблицами, организованных с помощью внешних клю-
чей, необходимо придерживаться определенной политики при выполнении опера-
ций удаления и обновления строк в ссылочных таблицах — тех, на которые ссылаются
другие таблицы. В нашем примере ситуация принятия «политического» решения воз-
никает при удалении строк из таблицы «Студенты».
Конечно, если бы было принято решение хранить всю историю успеваемости сту-
дентов, в том числе и отчисленных, тогда строки из таблицы students вообще не
удалялись бы. Но, упрощая реальную ситуацию, мы решили историю не хранить.
Тогда возникает закономерный вопрос: что делать со строками в таблице «Успева-
емость» (progress), которые ссылаются на удаляемую строку в таблице «Студенты»
(students)?
101




Достарыңызбен бөлісу:
1   ...   72   73   74   75   76   77   78   79   ...   256




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

    Басты бет