Проектирование схемы приложения. Эффективное использование синонимов в схеме приложения, страница 4

·   Действие каскадного удаления определяет удаление всех  дочерних строк, зави­сящих от родительского ключа в удаляемой строке родительской таблицы. (При спецификации каскадного удаления Oracle7 вводит ограничение обнов­ления.)

Ограничения ссылочной целостности в таблице ITEM ясно демонстрирует ( типа ссылочных действий. Один внешний ключ ссылается на таблицу ORDERS со ссылочным действием каскадного удаления (как показано в главе 2 в разделе "Использование ограничений ссылочной целостности для задания стандартных правил целостности"). Таким образом, когда кто-нибудь удаляет из таблицы OR­DERS заказ, Oracle7 автоматически выполняет каскадное удаление, уничтожая в таблице ITEM все соответствующие элементы. Другой внешний ключ в таблице ITEM использует действие ограничения ссылочной целостности, заданное как обновление/удаление, то есть ограничиваются все операции с родительским ключом, имеющие зависимые дочерние строки. Следовательно, если часть таблицы STOCK имеет зависимые элементы заказов, то Oracle7 запрещает пользователю обновление или удаление такой части.

Реляционная модель включает в себя и другие типы действий ссылочной целост­ности, не определяемые ограничениями целостности Oracle7, включая каскадное обновление (изменение значения родительского ключа приводит к изменению значений внешних ключей), обновление/удаление/обнуление (когда кто-то обнов­ляет значение родительского ключа или удаляет родительскую строку, то зависи­мые значения внешнего ключа устанавливаются в NULL), и обновление/удаление/установка по умолчанию (когда кто-то обновляет значение родительского ключа или удаляет родительскую строку, то зависимые значения внешнего ключа устанавливаются в значение по умолчанию). Хотя Oracle7 не задает эти ограничения ссылочной целостности автоматически, с помощью про­стых ограничений ссылочной целостности, многие из этих правил можно опреде­лить с помощью триггеров базы данных. (Об использовании триггеров базы данных в схеме приложения подробнее рассказывается в главе 18.)

Об управлении таблицами и ограничениях ссылочной целостности в схеме приложения рассказывается ниже в разделе "Управление таблицами и ограничения ссылочной целостности".

Эффективное применение представлений при проектировании схемы приложения

В главе 2 вы познакомились с использованием для различных целей представ­лений, которые позволяют определить дополнительные уровни защиты, выводить информацию базы данных различным образом и скрывать сложные запросы. Данный раздел более близко познакомит вас с тем, как и где в схеме приложения можно использовать представления.

Выделение логики приложения

Одним из решающих доводов в пользу использования в схеме приложения представлений является отделение логики приложения от структуры таблицы, от которой она непосредственно зависит. Предположим, например, что приложение прямо ссылается на таблицу базы данных по имени с помощью команд SQL.

Нетрудно предвидеть, что произойдет с приложением, если вы в какой-то момент измените имя таблицы: чтобы изменить все ссылки SQL со старыми именем табли­цы, вам нужно будет модифицировать исходный код приложения и перекомпили­ровать его. Либо, используя представление, заданное в качестве надстройки над таблицей, вы можете скрыть переименование таблицы от приложения простой заменой определения представления. Приложение все равно будет ссылаться на представление, но так как последнее теперь ссылается на новое имя таблицы, все будет прекрасно работать. Преимущество применения представлений показано на рис. 15.5.

 Примечание

Использование представлений— это лишь один из способов отделения логики приложения от тех таблиц, на которые оно ссылается. С этой целью можно также применять синонимы и хранимые процедуры . О сино­нимах подробнее рассказывается ниже в разделе "Эф­фективное использование синонимов в схеме приложения", а в главе 18 описываются хранимые процедуры.

Исключение команд SQL