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

Хранимые функции

Функция похожа на процедуру: она также имеет спецификацию и тело. Главное отличие между процедурой и функцией в том, что функция предназначена для возвращения значения, которое может использоваться в более крупном SQL-операторе.

Рассмотрим как пример функцию, предназначенную для вычисления процентного отличия между двумя числами. Спецификация этой функции может выглядеть таким образом:

calcjpercent (value_l NUMBER

value_2 NUMBER) return NUMBER

Эта функция принимает как входные параметры два числа, ссылаясь на них внутри себя как на VALUE_1 и VALUE_2. После написания тела функции ее можно вызывать в SQL-операторе таким образом:

INSERT INTO employee VALUES (3000, CALC PERCENT(300, 3000));

Контрольные вопросы

    1. Объясните понятие «триггер» в реляционной алгебре

    2. Какие возможности предоставляют триггеры?

    3. Какие ограничения налагаются на триггеры?

    4. Объясните отличия между разными типами триггеров?

    5. Каким образом создаются триггеры?

    6. Дайте объяснение понятию «хранимая процедура»?

    7. Объясните понятие «хранимая функция»

Тема 2.5 Защита информации в бд

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

1. Общие понятия привилегий

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

Привилегии — это то, что определяет, может ли указанный пользователь выполнить данную команду. Имеется несколько типов привилегий, соответствующих нескольким типам операций. Привилегии даются и отменяются двумя командами SQL: — GRANT (допуск) и REVOKE (отмена).

Каждый пользователь в среде SQL имеет специальное идентификационное имя или номер. Терминология везде разная, но мы выбрали (следуя ANSI) ссылку на имя или номер как на Идентификатор (ID) доступа. Команда, посланная серверу базы данных, ассоциируется с определенным пользователем, или, иначе, специальным Идентификатором доступа. Поскольку это относится к SQL базе данных, ID разрешения — это имя пользователя, и SQL может использовать специальное ключевое слово USER, которое ссылается к Идентификатору доступа связанному с текущей командой. Команда интерпретируется и разрешается (или запрещается) на основе информации связанной с Идентификатором доступа пользователя подавшего команду.

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

С точки зрения SQL, нет никакой разницы между этими двумя случаями; он воспринимает пользователя просто как его ID доступа.

SQL база данных может использовать собственную процедуру входа в систему, или она может позволить другой программе, типа операционной системы, обрабатывать файл регистрации и получать ID доступа из этой программы. Тем или другим способом, но SQL будет иметь ID доступа, чтобы связать его с вашими действиями, а для вас будет иметь значение ключевое слово USER.

Привилегии пользователя могут изменяться со временем — новые добавляться, старые удаляться. Некоторые из этих привилегий определены в ANSI SQL, но имеются и дополнительные привилегии, которые являются также необходимыми.

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