Динамическая
схема
На стороне клиента
Компиляция и выполнение
на стороне сервера
Статическая
схема
На стороне клиента, компиляция
на стороне сервера
Выполнение на стороне
сервера
Идея же процедур SQL, определяемых на языке модулей, повлекла
внедрение во многие реализации механизма хранимых процедур. Хранимая
процедура - это именованная, параметризованная конструкция, определяемая на
языке SQL или некотором его расширении, встраиваемая в прикладную
программу, компилируемая на стороне сервера во время обработки текста
процедуры прекомпилятором. Выполняемый или интерпретируемый код
хранимой процедуры сохраняется в базе данных, а сама она может быть вызвана
из любой прикладной программы авторизованного пользователя (того, кто
получил привилегию на выполнение этой процедуры) с указанием фактических
параметров (рисунок 5). Пожалуй, механизмы хранимых процедур возникли
прежде всего для того, чтобы обеспечить некоторое подобие статической
компиляции встроенных операторов SQL в СУБД, которые поддерживают
динамическую схему. Компания Oracle пошла дальше, разработав процедурное
расширение SQL - язык PL/SQL. С использованием этого языка можно отсылать
на сервер компоненты логики приложения. (Похоже, что в следующем стандарте
языка SQL - SQL-3 - появится нечто похожее на PL/SQL.) Как мы отмечали выше,
фактически это можно трактовать как первое приближение к трехзвенной
организации информационной системы. Как правило, развитые СУБД
поддерживают язык модулей SQL, но язык хранимых процедур обычно шире и не
стандартизован. Поэтому с хранимыми процедурами нужно обращаться
осторожно, если вы не хотите попасть в полную зависимость от конкретного
производителя. Кроме того, в случае использования распределенной базы данных
следует внимательно отслеживать возможности ссылок на таблицы,
размещающиеся в разных разделах.
Рисунок - 5. Подготовка и использование хранимой процедуры
Наконец-то мы закончили с логическим проектированием базы данных
информационной системы и можем приступать к следующим стадиям. По
крупному, их осталось две: физическое проектирование базы данных;
проектирование и разработка интерфейсов и обрабатывающей части прикладной
системы. Эти две стадии могут выполняться параллельно.
Достарыңызбен бөлісу: