Главная » Просмотр файлов » Теория и практика построения баз данных

Теория и практика построения баз данных (1088289), страница 96

Файл №1088289 Теория и практика построения баз данных (Теория и практика построения баз данных) 96 страницаТеория и практика построения баз данных (1088289) страница 962018-01-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 96)

АЙТ15Т ИНЕЙЕ СО5ТОНЕЙ.Сцвсол1ег10 =- ТЙАМ5АСТ1ОЙ.Сцвсоэег!О АМО ТЙАН5АСТ10Й.ИогК 10 = ИОЙК.Иогй10 АИО ИОЙК.Аггтвс10 = АЙТ15Т.Агт1вг!О; Обратите внимание на фразу 5ЕЕЕСТ в определении этого представления. Она задает синонимы для столбцов С05ТОМЕЙ.Масле (синоттим Сов!Масле) и АЙТ15Т.Масле (синоним Агс1всмагпе). если бы это не было сделано, в представлении оказалось бы два столбца с именем Масле, а такое недопустимо. Рисунок 12.12 показъгвает, как используются синонимы при обработке этого представления. В качестве заголовков столбцов фигурируют С05ТМАМЕ и АЙТ15ТМАМЕ.

Исследуйте данные на рис. 12.12; подумайте, что должно произойти, когда пользователь попытается обновить столбец ТМ!е. Название «Мувбс Габпс» фигурирует в трех строках, но в таблице ВОЙК имеется только две строки с таким названием. Что должна сделать Огас!е, когда пользователь обновит столбец Т11!е? Должна ли она обновить строки в таблице ВОЙК, на которой основано это представление? Или она должна создать в таблице ВОЙК новые строки и связать их со строками данного представления? А может, необходимо сделать что-то другое? 1!евозможно написать для СУБД обобшенный код, который бы корректно обрабатывал каждую возможную ситуацию. Замешаюшие триггеры позволяют разработчику задать действия, которые необходимо предпринять при попытке обновить представление в конкретном приложении.

В листинге 12.10 показан пример такого триггера, который обрабатывает обновления столбца Т1с!е представления СцвсогпегРцгсПавев. Поскольку замещающие триггеры, в отличие от предваряющих, не могут содержать фразу ОРОАТЕ ОГ, мы должны написать код, определяющий, был ли изменен столбец Т1с!е. Листинг 12.10. Замещающий триггер Т!11е Орбате СЙЕАТЕ ОЙ ЙЕРЕАСЕ ТЙ166ЕЙ Тт11е Орцасе !Й5ТЕАО ОГ ОРОЯТЕ ОМ Сцвговегрцгспавев ЙЕ61М /* Ничего не депаен, кроне случая, когда обновляется столбец Т111е */ Если пользователь обновляет столбец Т1С!е, то соответствуюшее изменение вносится в таблицу ВОЙК.

Обратите внимание, что запуск триггера происходит при обновлении представления Сцв!огпегРцгсйавев, цо само обновление производится в таблице ВОЙК вЂ” одной из таблиц, на которой базируется это представление. Как раз для таких действий и предназначаются замещающие триггеры. Этот триггер может приводить к неожиданным результатам. Если пользователь введет: ИРОАТЕ СцвгоцегРцгсцавев 5ЕТ Ттт1е = 'ва', СорУ = '1/3' ИНЕЙЕ Тт11е - 'ЬЬ': то будет произведено обновление столбца Ттс!е, но ничего не произойдет со столб- цом Сору. Лучше было бы выдать пользователю сообщение, предупреждающее о таком эффекте.

Обработка исключений В нашем изложении опущена тема обработки исключений в РЕ/ВОТ.. Это заслуживает сожаления, ибо обработка исключений важна и полезна. Дело в том, что эта тема является слишком обширной, чтобы обсуждать ее здесь. Однако если вы в будущем собираетесь программировать на РЕ/5О1-, обязательно изучите этот важный вопрос. Обработка исключений может испо/тьзоваться и любых видах 452 Глава 12.

Работа с базами данных е Огас!в Управление параллельной обработкой 453 процедур па РЕ.,гБО1, но особо опа полезна в предваряющих и замещающих триггерах для отмены незафиксированных обновлений. Исключения необходимы потому, что в Огас1е откат транзакции невозможно произвести в теле триггера. Вместо этого можно использовать исключения для генерации предупреждений и сообщений об ошибках. Исключения также дают Огас!е больше информации о том, что делает триггер.

Например, триггер, изображенный в листинге 12.10, имеет странную особенность. Если вы введете ОРОАТЕ Сцзтппегйцгспазез 5ЕТ Сору = '515' ННЕРЕ Тттб1е = 'Музт1с ГаЬгтс'; триггер не обновит ни одной строки. Однако Огас!е сообщит, что все строки представления, имеющие в столбце Тй(е название «Иузт(с ГаЬпс», были обновлены. Это было обусловлено тем, что триггеру были переданы все строки, и Огас!е не знала, какая из их вызвала обновление, а какая нет.

Если же вы включите в этот триггер код, генерирующий исключение, Огас!е будет знать, что строка не была обновлена, и выдаст правильное количество обновленных строк. Словарь данных Огас1е поддерживает исчерпывающий словарь метаданных. Этот словарь описывает структуру таблиц, последовательностей, представлений, индексов, ограничений, хранимых процедур и многого другого. Он также содержит исходные тексты процедур, функций и триггеров, И зто еще не все. В таблице 01СТ словаря метаданных содержатся данные, описывающие сам словарь. Вы можете запрашивать данные из атой таблицы, чтобы узнать больше о содержимом словаря данных, но имейте в виду, что она имеет большие размеры.

Например, если вы запросите имена всех таблиц словаря данных, вам будет возвращено более 800 строк. Предположим, вы хотите узнать, какие таблицы с информацией о пользовательских и системных таблицах имеются в словаре данных. В атом вам поможет следующий запрос: 5ЕСЕСТ ТаЬ1е Майе, Соп1еп1з ГРОМ О!СТ ННЕРЕ ТаЬ)е Майе С!КЕ ('ЖТАВСЕ51 Ч; Будет возвращено около двадцати пяти строк.

Одна из таблиц будет называться 05ЕР ТАВЕЕ5. Чтобы увидеть столбцы этой таблицы, введите ОЕ5С 05ЕР ТАВСЕ5: Вы можете использовать зту стратегию для получения из словаря метаданных информации об интересующих вас объектах и структурах. В табл. 12.2 перечислены многие из представлений и указано их назначение. Таблицы 05ЕР 500 РСЕ и 05ЕР ТР166ЕР5 полезны, когла требуется узнать, исходные тексты каких процедур и триггеров хранятся в настоящий момент в оазе данных. Таблица 12.2.

Некоторые полезные таблицы из словаря данных Огас1е Содержимое имя таблицы Метадвнные, описывающие словарь данных Список таблиц, представлений, последовательностей и других структур, принадлежащих пользователю Структуры таблиц пользователя Потомок таблицы 08ЕЯ ТАВСЕЗ. Сгщержит данные о столбцах таблиц. Синонимом является СООЗ Пользовательские представления Пользовательские ограничения Потомок таблицы 08ЕЯ СОИЗТЯА1ИТВ. Содержит столбцы, нв которые наложены ограничения Метвдвнныв, описывающие триггеры. Запрашивайте столбцы Тпддег Ивгпе, Тлддег Туре и Тпддвг Ечепт.

Предупреждение Тпддег Вобу в действительности не содержит исходного кода триггера. Чтобы получить текст процедуры МУТЯ!ООЕЯ, введите ЗЕ1.ЕСТ Твх! ГЯОМ 08ЕЯ 800ЯСЕ УУНЕЯЕ ИатегыМУТЯ1ООЕЯ' АИО О1СТ 08ЕЯ САТАСОО 08ЕЯ ТАВСЕЗ 08ЕЯ ТАВ СОСОМИЗ 08ЕЯ У!ЕУУЗ 08ЕЯ СОИВТЯА1ИТЗ 08ЕЯ СОИВ СОСОМИЗ 08ЕЯ ТЯ1ООЕЯЗ 08ЕЯ 800ЯСЕ Туое='РЯОСЕООЯЕ' Управление параллельной обработкой Огас!е поддерживает три различных уровня изоляции транзакций и вдобавок позволяет приложениям налагать блокировки явным образом. Явное наложение блокировок, однако, не рекомендуется, поскольку оно может войти в конфликт со стратегией блокировки, применяемой Огас1е по умолчанию, и, кроме того, увеличивает вероятность взаимной блокировки транзакций.

Прежде чем мы будем обсуждать уровни изоляции транзакций, необходимо кратко рассмотреть то, как Огас1е обрабатывает изменения в базе данных. Огас!е ведет учет числа изменений в системе (Бузгет СЬэпйе ТчтцтЪег, БС)ч1), которое представляет собой значение маспггаба базы данных, увеличивающееся на единицу всякий раз, когда в базе данных производится изменение. Когда изменяется строка, текущее значение ВСЯ сохраняется вместе со строкой. Одновременно исходный образ строки помещается в сегмент отката (го1!Ъас)г зейтепг) — буфер, поддерживаемый Огас! е для выполнения отката и записи транзакций в журнал.

Исходный образ включает в себя значение БС)чт, которое было записано в строке до изменения. Завершив обновление, Огас!е увеличивает БСХ. На данном этапе вы обладаете достаточным знанием БО1, чтобы самостоятельно исследовать словарь метаданных. Имейте в виду, что Огас!е записывает все имена в верхнем регистре. Если вы ищете триггер Оп Сцз1отег 1пзегТ, вам следует искать имя ОМ С05ТОМЕР 1Н5ЕРТ. 454 Глава 12. Работа с базами данных в Огас)е Управление параллельной обработкой 455 Допустим, приложение выдает ЯЯ1-оператор вида 0РОАТЕ МУТАВСЕ ЗЕТ МуСо)юп1 = 'Новое Значение' ))НЕЙЕ МУСо1цйп2 = 'Что-нибудь', Таблица 12.3. Варианты управления параллельной обработкой в Огас!е Уровень изоляции Описание Завершенное чтение Уровень изоляции, используемый Огас)е по умолчанию.

Грязное» чтение невозможно, но повторное чтение может дать различные результаты. Возможно возникновение фантомов. Каждый оператор считывает согласованные данные. Когда налагается блокировка на обновление, операторы откатываются и запускаются вновь по необходимости. Взаимная блокировка обнаруживается, и один из операторов, вызвавших ее, откатывается Грязное» чтение невозможно. Повторное чтение дает один и тот же результат, фантомы невозможны. Все операторы в транзакции считывают согласованные данные Ошибка «Саппот Вена)йе» ННевозможно сериализовать») возникает, когда транзакция пытается обновить или удалить строку с завершенным изменением, которое произошло после начала транзакции. Кроме того, зта ошибка возникает, когда транзакции или операторы, налагающие блокировку, фиксируют свои изменения, а также когда транзакция откатывается вследствие взаимной блокировки, Обработку исключения .Саппот Вепайзе необходимо производить в прикладных программах Все операторы считывают согласованные данные.

Характеристики

Тип файла
DJVU-файл
Размер
9,56 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее