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



Pdf көрінісі
бет108/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   104   105   106   107   108   109   110   111   ...   256
sql osnovi yazika

CREATE TABLE students
( record_book numeric( 5 ) NOT NULL UNIQUE,
name text NOT NULL,
doc_ser numeric( 4 ),
doc_num numeric( 6 ),
PRIMARY KEY ( doc_ser, doc_num )
);
Обратите внимание, что для атрибутов doc_ser и doc_num можно не указывать
ограничение NOT NULL: они входят в состав первичного ключа, а в нем NULL-
значения не допускаются, поэтому ограничение NOT NULL фактически подра-
зумевается при включении атрибута в состав первичного ключа.
CREATE TABLE progress
( doc_ser numeric( 4 ),
doc_num numeric( 6 ),
subject text NOT NULL,
acad_year text NOT NULL,
term numeric( 1 ) NOT NULL CHECK ( term = 1 OR term = 2 ),
mark numeric( 1 ) NOT NULL CHECK ( mark >= 3 AND mark <= 5 )
DEFAULT 5,
FOREIGN KEY ( doc_ser, doc_num )
REFERENCES students ( doc_ser, doc_num )
ON DELETE CASCADE
ON UPDATE CASCADE
);
Теперь и первичный, и внешний ключи — составные. Проверьте их действие,
добавив несколько строк в каждую таблицу.
7.* Модифицируйте определение таблицы «Успеваемость» (progress), а если по-
требуется, то и определение таблицы «Студенты» (students), чтобы изучить
все варианты реагирования СУБД на обновление строк в ссылочной таблице,
в данном случае — students. Последовательно изменяйте определение внеш-
него ключа таблицы progress, испробовав варианты ON UPDATE CASCADE, ON
UPDATE RESTRICT, ON UPDATE SET NULL и ON UPDATE SET DEFAULT. Для получе-
ния информативной картины введите несколько строк в обе таблицы, а затем
выполняйте операцию UPDATE, подбирая значения ключевых атрибутов таким
образом, чтобы вызвать ожидаемую реакцию СУБД.
Учтите, что при использовании фразы ON UPDATE SET DEFAULT необходимо,
чтобы, во-первых, с помощью ключевого слова DEFAULT было установлено зна-
чение по умолчанию для атрибута внешнего ключа в ссылающейся таблице,
137




Достарыңызбен бөлісу:
1   ...   104   105   106   107   108   109   110   111   ...   256




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

    Басты бет