Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
госы 2013.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
4.38 Mб
Скачать

31. Разработка бизнес - логики на уровне сервера баз данных (хранимые процедуры, пользовательские функции, триггеры, механизмы поддержки целостности данных).

хранимые процедуры это набор SQL-инструкций, который компилируется один раз и хранится на сервере. Таким образом, клиентские приложения могут не реализовывать всякий раз одни и те же действия с БД, а просто вызывать соответствующую хранимую процедуру. Причем приложения могут быть написаны даже на разных языках программирования. Хранимые процедуры существенно помогают повысить эффективность работы приложения. Они компилируются – и поэтому исполняется быстрее интерпретируемого SQL-запроса. При их использовании существенно снижается объем пересылаемой между сервером и клиентом информации. Правда, нужно учитывать, что нагрузка на СУБД при этом непременно увеличивается. Оно и понятно: на стороне клиента (приложения) выполняется меньшая часть работы, а на стороне сервера - большая. Помимо непосредственно самих хранимых процедур большинство СУБД поддерживают их разновидность — триггеры. Они автоматически выполняются при наступлении в базе данных определенных событий, например, при выполнении операций INSERT, UPDATE и DELETE. 

Есть две ситуации, когда хранимые процедуры могут оказаться особенно полезными:

  1. Существует нескольких клиентских приложений, написанных на различных языках и обязанных выполнять одинаковые операции с базами данных;

  2. Необходимо обеспечить дополнительную безопасность приложения (пользователи не получают непосредственный доступ к таблицам базы данных и могут выполнять только конкретные хранимые процедуры).

Для создания хранимой процедуры, функции или триггера используются операторы CREATE PROCEDURE, CREATE FUNCTION и CREATE TRIGGER соответственно. Вызов хранимой процедуры происходит с помощью оператора CALL. Функции вызываются из операторов точно так же, как и любые другие функции, то есть через указание имени функции (данный факт вполне может быть использован в SQL инъекциях), а триггеры вызываются сами, если в БД наступило некоторое событие (INSERT, UPDATE, DELETE).

С помощью триггеров можно реализовать проверку целостности данных, логирование, а также установку скрытых бэкдоров в веб-приложениях.

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

Рассмотрим типы целостности и механизмы СУБД поддерживающие эти типы.

1)Сущностная целостность или целостность по первичному ключу по своему определению значение первичного ключа в таблице должно быть уникальным

2) Ссылочная целостность – это целостность поддерживается в связях между таблицами. Для того чтобы содержимое двух связанных таблиц правильно отражало предметную область. На операции изменяющие содержимое таблиц должны накладываться определенные ограничения (ограничения целостности). Это относится к трем операциям:

- удаление записей (из главной таблицы)

- изменение записей (в главной таблице)

- Вставка записей во второстепенные таблицы.

СУБД поддерживает 4 вида сценария при удаление из главной таблицы.

    • при удаление из главной таблицы автоматически удаляет связанные записи из подчиненной таблицы (каскад).

    • Запрет на удаление записи из главной таблицы если она связана с какими-либо записями в подчиненной таблице.

    • После удаления записи из главной таблицы внешним ключам связанных записей в подчиненной таблице присваиваются значения NULL.

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

3) Простым механизмом поддержания целостности БД является тип столбца таблицы СУБД автоматически отслеживает операции записи в таблицу и случаи несоответствия типов либо отвергает запись – генерирует ошибку или осуществляет неявное преобразование типов. 

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

5)Поддержание наличия возможных ключей в таблице.

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

 6)Некоторые СУБД поддерживают создание новых типов данных

7) Триггеры являются наиболее мощным средством поддержания целостности баз данных. У триггеров существует три основные функции:

    • Запретить те или иные действия которые противоречат целостности базы данных.

    • Попутно с выполняемой операцией внести изменения в др. таблицы баз данных или структуру баз данных.

    • функция журналирования тех или иных действий в базе данных.