Теория и практика построения баз данных (1088289), страница 100
Текст из файла (страница 100)
Постройте ЯО! -оператор, создающий таблицу Т1 со столбцами С1, С2 и СЗ. Пусть С1 является суррогатным ключом. Пусть также С2 содержит текст длиной 50 символов, а СЗ содержит дату. 7. Напишите оператор, создающий последовательность, которая начинается с 50 и имеет инкремент 2 (то есть каждый элемент на 2 больше предыдущего). Назовите эту последовательность Т15ег!.
8. Покажите, как вставить строку в таблицу Т1 (вопрос 6), используя последовательность, созданную в ответе на вопрос 7. 9. Напишите 8О1.-оператор, запрашивающий строку, созданную в ответе на вопрос 8. 10. Опишите проблемы, которые связаны с использованием последовательностей для столбцов, являющихся суррогатными ключами. 11. Напишите 8О1-операторы, удаляющие таблицу Т1 и последовательность Т15ец. 12. Напишите БЯ!.-операторы, удаляющие столбец СЗ таблицы Т1. ' 13. Напишите БО)--операторы, создающие связь между таблицами Т2 и ТЗ. Пусть ТЗ имеет столбец ЕК1, являющийся внешним ключом и связанный с Т2, и пусть удаления в Т2 должны вызывать удаления в ТЗ. 14.
Ответьте на вопрос 13, но не вызывайте удаления в ТЗ. 15. Покажите, как удалить связь с помощью БЯ1.. 16. Напишите 5О!.-операторы, создающие уникальныи индекс по столбц м б амС2 и СЗ таблицы Т1. 17. В каких случаях следует использовать индексы. ? 18.
Напишите ЯО1.-операторы, добавляющие в таблицу Т1 новый столбец С4. Пусть этот столбец содержит значения типа Сцггепсу, и максимальное значение равно $1 000 000. 19, Прн каких условиях можно удалить столбец из существующей таблицы? 20. При каких условиях можно добавить столбец к существующей таблице? 21.
Покажите, как добавить непустой столбец к существующей таблице. 22. При каких условиях можно изменить ширину текстового или числового столбца7 23. При каких условиях можно изменить тип данных столбца? 24. Покажите, как добавить ограничение, указывающее, что значение столбца С4 таблицы Т1 не может быть меньше 1000. 25, Покажите, как добавить ограничение, указывающее, что столбец С4 таблицы Т1 не может быть меньше столбца С5 таблицы Т1.
26. Для базы данных галереи 1Г!еж К!г!яе, описанной в этой главе, построите представление, содержагцее имя клиента (Маше), город (Сйу) и штат (51ате), в котором он проживает. Назовите это представление Снз1Н1еуг. 27. Для базы данных г.вверен Н!еж КЫйе, списанной в этой главе, построите п едставление, содержащее пмя клиента я имена авторо р, рв всех абот, прп- Р обретенных данным клиентом. 28. Для базы данных галерегл Иечг КЫяе, описанной в этой главе, постройте представление, содержащее имя клиента и имена всех художников, работамп которых интересуется данный клиент. Поясните, в чем разница между этим представлением и представлением из вопроса 27. 29.
Можно лн объединить представления из вопросов 27 и 28 в одно представление? Почему? 30. Как обновить представление соединения с помощью Ога О с!е? 31. Создайте файл с последовательностью операторов РТ. г5Я1, которая описывает струкгуру таблиц С05ТОМЕк, АкТ15Т, ННОкК, ТРАМ5АСТ10М и С05ТОМЕР АкТ!5Т 1МТ. Дайте файлу имя НКТабмэд! и покажите, как запустить этот файл на выполнение из 8О1. Р!из.
32. Что означают ключевые слова 1М, ОПТ н 1М ООТ в процедуре на Р1./ВОТ.? Глава 12. Работа с базами данных в Огас!е Вопросы к проекту Р!геок 466 40. Объясните, почему для представлений соединения нужны замещающие триггеры. 41. Объясните что произойдет, если удалить оператор 1Р в триггере на листинге 12.10. 42. Напишите 5О1.-оггератар, который получает из словаря данных имена таблиц, содержащих информацию о триггерах. 43.
Какие три уровня изоляции транзакций поддерживаются Огас1е? 44. Объясните, как число изменений в системе используется Огас1е для счи тывания данных в том состоянии, в каком они были в определенный момент времени. 45. В каком случае в Огас1е возможно «грязное» чтение? 46. Объясните, как Огас!е обрабатывает конфликтующие блокировки, когда транзакция выполняется в режиме завершенного чтения. 47.
Напишите 5Я1.-оператор, задающггй уровень изоляции «сериализуемость» на весь сеанс. 48. Что происходит, когда транзакция, выполняемая в режиме сериализуемо сти, пытается обновить данные, которые уже обновлены другой транзакцией? Пусть (1) 8СХ меньше, чем 5СХ транзакции; (2) 5СХ больше, чем ЯС!л! транзакции. 49. Сформулируйте три условия, при которых транзакция может получить исключение «Сапная зег!а!!те». 50.
Объясните, как Огас1е обрабатывает уровень изоляции «сериализуемость». 51. Объясните, как связаны пользователи, роли и привилегии в контексте безопасности Огас!е. 52. Какие три типа файлов важны для резервного копирования и восстановления в Огас1е? ЗЗ. 34. 35. 36. 37. 39. Что нужно сделать, чтобы можно было увидеть сообгцения, выводимые с по- мощью пакета ОВМ5 ООТРОТ? Какие ограничения существуют на такой вывод? Объясните, как работает оператор Р1/5Я) ЕОР переменная 1М имя курсора. Какай оператор используется для вывода сообщений об ошибках при ком- пиляции триггеров и хранимых процедур? Каков синтаксис оператора ВЕ61М ТРАМ5АСТ10М в РЕ/5О1.? Как запускается транзакция? Как используются переменные Вд и а!б в хранимой процедуре в листин- ге 12.6, если в таблице ТРАМ5АСПОМ не обнаружено подходящих строк? Как они используются в случае, если в таблице ТРАМ5АСТ10М найдена ровно од- на подходящая строка? Объясните, в чем состоит назначение предварительных, завершаюших и за- мещающих триггеров, Каким образом в теле триггера, запущенного обновлением столбца, можно получить значение, которое столбец имел до обновления? Каким образом в коде триггера можно получить значение, которое будет присвоено столбцу? 53.
В чем разница между текущими и архивными файлами отката? Как используется каждый из этих типов файлов? 54. Что означает термин мультиплексирование в контексте резервного копирования восстановления баз данных в Огас1е? 55. Объясните, как в Огас1е происходит восстановление после сбоя приложения. 56. Что такое сбой экземпляра и как Огас1е восстанавливается после него? 57. Что такое сбой носителя и как Огас!е восстанавливается после него? Проекты Чтобы реализовать представленные ниже проекты, создайте срелствами Огас1е базу данных для галереи лг!еху В!с!яе, как описано в этой главе.
Рассмотрим представление базы данных под названием Аг!Вт, введенное в вопросах группы П в конце главы 10. 1. Напишите процедуру на РЕ/5О1, считывающую из представления таблицу АРП51, Отобразите на экране полученные данные. Пусть имя художника служит в качестве входного параметра. 2. Напишите процедуру на РЕ/5О1., считывающую из представления таблицы АРТ15Т, ТРАМ5АСТ10М и С05ТОМЕР. Отобразите на экране полученные данные средствами пакета ОВМ5 ООТРОТ. Пусть имя художника служит в качестве входного параметра. 3. Напишите процедуру на Р1./5О!., считывающую все таблицы из представления.
Отобразите на экране полученные данные средствами пакета ОВМ5 ООТРОТ. Пусть имя художника служит в качестве входного параметра. 4. Напишите процедуру на Р1./5Я1., которая ассоциирует с художником заинтересованность нового клиента. Пусть имя художника и имя клиента будут входными параметрами. Если имя покупателя не уникально, выведите сообщение об ошибке. Прежде чем вставлять новую строку, проведите проверку на уникальность в таблице С05ТОМЕР АРТ15Т 1МТ. Выведите сообщение об ошибке, если обнаружится дублирование. 5.
Напивште замешазощий триггер, который запускается при вставке новой строки и обновлении столбца Ма1!опайту в таблице АРТ15Т. Если новое значение равно «Впбзй», замените его на «Епй!!зй». Вопросы к проекту Нгеб0р Создайте с помошыо Огас1е базу данных са следующими четырьмя таблицами'. КЛИЕНТ (НомерКпиента, Имя, Телефон, ЭлектронныйАдрес) г При реатггзапии этой части проекта слслуег иметь в зилу, что Огас!е воспринимает символы кирил- липы в идентификаторах как ошибки, поэтому имена таблип и столбпов следует вволпть символалли латииского алфавита.
Ыы оставляем злесь кириллическое написание, чтобы сохранить единообразие в рамках проекта. — Прим, иере». 466 Глава 12. Работа а базами данных в Огас!е ГОРЕЛКА (СерийныйНомер, Тип, Версия, ДатаВыпуска) РЕГИСТРАЦИЯ (НомерКлиента, СерийныйНомер, ДатаРегистрации) РЕМОНТ-ГОРЕЛКИ (НомерСчетаЗаРемонт, СерийныйНомер, ДатаРемонта, Описание, Стоимость, НомерКяиента) Пусть первичные ключи таблиц КЛИЕНТ, ГОРЕЛКА и РЕМОНТ-ГОРЕЛКИ являются суррогатными ключами.
Создайте для них последовательности. Создайте связи, реализуюшие следующие ограничения ссылочной целостности; + НомерКлиента в таблице РЕГИСТРАЦИЯ является подмножеством НомерКлиента в таблице КЛИЕНТ; + СерийныйНомер в таблице РЕГИСТРАЦИЯ является подмножеством СерийиыйНомер в таблице ГОРЕЛКА; + СерийныйНомер в таблице РЕМОНТ-ГОРЕЛКИ является подмножеством СерийныйНомер в таблице ГОРЕЛКА; + НомерКлиента в таблице РЕМОНТ-ГОРЕЛКИ является подмножеством Номер- Клиента в таблице КЛИЕНТ. Не включайте каскадные удаления.