Глава 5. Основы языка определения данных
а во-вторых, это значение по умолчанию все равно должно присутствовать в
одной из строк ссылочной таблицы. Как вы считаете, с учетом сказанного, воз-
можно ли использование ON UPDATE SET DEFAULT в нашем случае?
Попробуйте обосновать или, наоборот, опровергнуть целесообразность исполь-
зования каждой из этих политик — CASCADE, RESTRICT, SET NULL и SET
DEFAULT — при выполнении операции UPDATE в реальной информационной
системе, предназначенной для учета успеваемости студентов.
8. В таблице «Успеваемость» (progress) есть атрибут «Учебная дисциплина»
(subject). Это текстовый атрибут. Одинаковые наименования учебных дисци-
плин записываются в таблицу progress многократно. Создайте еще одну таб-
лицу — «Учебные дисциплины» (subjects), в которой будет два атрибута:
«Идентификатор учебной дисциплины» (subject_id) и «Учебная дисциплина»
(subject). Тип данных первого из них будет integer, а второго — text. В ка-
честве первичного ключа будет служить subject_id, а второй атрибут будет
уникальным. Введите в новую таблицу две-три строки для различных учебных
дисциплин.
Модифицируйте таблицу progress, заменив атрибут subject на subject_id.
Тип данных нового атрибута будет integer. Поскольку тип данных изменится,
то для замены первоначальных значений, хранящихся в этом столбце, на новые
придется использовать конструкцию USING (о ней говорится в тексте главы).
Добавьте в определение таблицы progress еще один внешний ключ, который
будет ссылаться на таблицу subjects. В составе этого внешнего ключа будет
только один атрибут — subject_id. Мы видим, что таблица может иметь боль-
ше одного внешнего ключа. Таким образом, структура связей в реальной базе
данных может оказаться весьма сложной.
Теперь введите несколько строк и в таблицу progress, учитывая ее связь с но-
вой таблицей subjects.
9. В таблице «Студенты» (students) есть текстовый атрибут name, на который на-
ложено ограничение NOT NULL. Как вы думаете, что будет, если при вводе новой
строки в эту таблицу дать атрибуту name в качестве значения пустую строку?
Например:
Достарыңызбен бөлісу: |