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



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

Глава 5. Основы языка определения данных
11.* В таблице «Рейсы» (flights) есть ограничение, которое регулирует соотноше-
ния значений фактического времени вылета и фактического времени прилета.
Как вы думаете, не является ли выражение actual_arrival IS NOT NULL во
второй части условного оператора OR избыточным?
CREATE TABLE flights
( ...
CHECK ( actual_arrival IS NULL OR
( actual_departure IS NOT NULL AND
actual_arrival IS NOT NULL AND
actual_arrival > actual_departure
)
),
...
Проверьте ваши предположения на практике. Для этого сначала удалите суще-
ствующее ограничение с помощью команды
ALTER TABLE flights DROP CONSTRAINT имя-ограничения;
Как определить имя этого ограничения? С помощью команды
\d flights
получите описание таблицы flights, а в нем есть названия всех ограничений.
Затем создайте это же ограничение, но в модифицированном виде:
ALTER TABLE flights
ADD CHECK ( actual_arrival IS NULL OR
( actual_departure IS NOT NULL AND
actual_arrival > actual_departure
)
);
Попробуйте добавить в таблицу flights две-три строки, подбирая такие зна-
чения атрибутов actual_departure и actual_arrival, чтобы проверить все
возможные исходы этих проверок. Конечно, вместо добавления новых строк
можно модифицировать одну и ту же строку с помощью команды UPDATE.
12. Команда ALTER TABLE позволяет переименовать таблицу. Например:
ALTER TABLE table_name RENAME TO new_table_name;
140


Контрольные вопросы и задания
Поскольку в командах создания таблиц базы данных «Авиаперевозки» мы не
указывали имена ограничений для первичных и внешних ключей, то их имена
были сформированы автоматически самой СУБД. Как вы думаете, получили ли
эти ограничения новые имена после переименования таблицы?
Проверьте ваши предположения, выполнив такую операцию с одной из таблиц
базы данных «Авиаперевозки», имеющих внешние ключи.
13. И представление «Рейсы» (flights_v), и материализованное представление
«Маршруты» (routes) построены на основе таблиц «Рейсы» (flights) и «Аэро-
порты» (airports). Логично предположить, что при каскадном удалении, на-
пример, таблицы «Аэропорты», представление «Рейсы» будет также удалено,
поскольку при удалении базовой таблицы этому представлению просто неот-
куда будет брать данные.
А что вы можете предположить насчет материализованного представления
«Маршруты»: будет ли оно также удалено или нет? Ведь оно уже содержит дан-
ные, в отличие от обычного представления. Так ли, условно говоря, сильна его
связь с таблицами, на основе которых оно сконструировано?
Проведите необходимые эксперименты, начав с команды


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




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

    Басты бет