- •1. Форматирование выходных данных запросов. 39
- •Тема 1.
- •1. Введение. История развития баз данных.
- •1. Введение. История развития баз данных
- •2. Основные понятия и определения
- •Тема 2.
- •1. Архитектура базы данных. Физическая и логическая независимость.
- •1. Архитектура базы данных. Физическая и логическая независимость
- •2. Разработка приложений в среде Microsoft Windows. Системы быстрой разработки приложений. Субд. Модели данных.
- •3. Основные этапы проектирование базы данных.
- •Тема 3.
- •1. Дополнительные общие рекомендации по проектированию базы данных.
- •2. Разработка приложений в среде Microsoft Windows.
- •1. Дополнительные общие рекомендации по проектированию базы данных.
- •2. Разработка приложений в среде Microsoft Windows.
- •Тема 4.
- •1. Построение таблиц.
- •2. Запросы в Microsoft Access. Параметры запросов на выборку данных.
- •3. Операции реляционной алгебры.
- •1. Построение таблиц
- •2. Запросы в Microsoft Access. Параметры запросов на выборку данных.
- •3. Операции реляционной алгебры.
- •Тема 5.
- •1. Понятие технологии «Клиент-сервер». Общие сведения о языке запросов sql.
- •2. Структура sql.
- •1. Понятие технологии «Клиент-сервер». Общие сведения о языке запросов sql.
- •2. Структура sql.
- •Тема 6.
- •1. Запрос выборки в языке sql. Выборка из одной таблицы.
- •2. Суммирование данных с помощью функций агрегирования (групповых функций).
- •1. Запрос выборки в языке sql. Выборка из одной таблицы.
- •2.Суммирование данных с помощью функций агрегирования (групповых функций).
- •Тема 7.
- •1. Форматирование выходных данных запросов.
- •2.Соединение таблиц
- •3.Вложенные подзапросы
- •4.Связанные подзапросы. Оператор exists
- •5.Вложенные и связанные подзапросы. Операторы any, all, come
- •Тема 8.
- •1. Форматирование выходных данных запросов.
- •1. Форматирование выходных данных запросов.
- •Тема 9.
- •1. Запросы обновления таблиц.
- •2. Создание, модификация и уничтожение таблиц. Ограничение на множество допустимых значений данных. Значение по умолчанию.
- •3. Создание и уничтожение индексов. Поддержка ссылочной целостности.
- •1. Запросы обновления таблиц.
- •2. Создание, модификация и уничтожение таблиц. Ограничение на множество допустимых значений данных. Значение по умолчанию.
- •3. Создание и уничтожение индексов. Поддержка ссылочной целостности.
- •Тема 10.
- •1. Создание представлений .
- •2. Определение правд доступа к данным.
- •1. Создание представлений.
- •2. Определение правд доступа к данным.
- •Тема 11.
- •1. Определение синонимов объектов. Понятие транзакций. Управление параллелизмом.
- •Тема 12.
- •1. Встроенный sql, основные понятия
- •1. Встроенный sql, основные понятия.
2. Определение правд доступа к данным.
Как уже говорилось ранее, использование SQL, в основном, имеет смысл при работе в среде Клиент-Сервер в многопользовательском режиме. Однако в таких системах возникает вопрос определения прав доступа к данным, т.е. может ли пользователь создавать таблицы, рассматривать и модифицировать чужие таблицы и т.д.
Каждый пользователь в базе данных SQL имеет множество привилегий. Привилегия – это право выполнить определённую операцию. Минимальная привилегия – это вход в систему, в процессе которого проверяется идентификатор и пароль пользователя. Привилегии делятся на объектные и системные. Сначала рассмотрим объектные привилегии, которые определены стандартом ANSI. Системные привилегии стандартом не определены, но применяются практически во всех системах, использующих SQL. Объектные привилегии определяют прав пользователя выполнять определённые команды для определённых объектов базы данных (таблиц, представлений). Т.е. пользователь может иметь различные права при работе с различными таблицами или даже со столбцами таблиц.
Пользователь, создавший таблицу, имеет все привилегии при работе с ней и может назначить привилегии другим пользователям при работе с ней.
Виды привилегий:
SELECT, INSERT, UPDATE и DELETE – право использовать соответствующие команды при работе с данной таблицей.
REFERENCES – право использовать таблицу в качестве родительской, определив внешний ключ в какой-то собственной таблице. Это право отличается от возможности читать таблицу по SELECT, т.к. может ограничить использование владельцем родительской таблицы (например, владелец не может удалять записи из родительской таблицы при наличии связанных записей в таблицах другого пользователя).
Кроме привилегий, определённых стандартом ANSI, в некоторых реализациях SQL используют нестандартные объектные привилегии, такие как:
ALTER – право модифицировать структуру таблицы или таблиц.
INDEX – право создание индексов.
SYNONYM – право создания синонимов таблицы.
Назначение привилегий на доступ к собственным таблицам осуществляется по следующей команде:
GRANT список_привилегий ON объект TO список_пользователей [WITH GRANT OPTION];
Где:
Список_привилегий – список привилегий через запятую. Для привилегий UPDATE и REFERENCES после имени может быть указан в скобках список столбцов таблицы, на которую распространяется привилегии. Соответственно, пользователь получает возможность обновлять значения только этих столбцов. Для остальных привилегий столбцы указывать нельзя. Для команды INSERT и DELETE это не имеет смысла, а право просмотра только некоторых столбцов таблицы может быть определено путём создания представления.
Объект – имя таблицы или представления. Стандарт ANSI не предусматривает, но некоторые реализации SQL позволяют указывать здесь список таблиц или представлений.
Список_пользователей – список пользователей, имя которым назначаются привелегии запятую. Здесь указываются идентификаторы, которые назначаются пользователем. Каждый пользователь может иметь собственный идентификатор или несколько пользователей имеют один идентификатор.
WITH GRANT OPTION – пользователь получает право назначать привилегии другим пользователям.
Пользователь, получивший право доступа к таблице другого пользователя, должен в своих запросах обозначать её как идентификатор_владельца.имя_таблицы.
Пример:
Пусть пользователь Иванов использует следующую команду:
GRANT SELECT, UPDATE ON план_работы TO Петров WITH GRANT OPTION;
Теперь для просмотра таблицы Петров должен использовать следующий запрос:
SELECT * FROM Иванов.план_работы
Далее, Петров может назначить полномочия другим членам группы:
GRANT SELECT ON Иванов.план_работы TO Сидоров;
Эта команда не меняет владельца таблицы и Сидоров для просмотра таблицы должен использовать эту же команду.
Пользователь может быть лишён права назначать привилегии с помощью команды:
REVOKE список_привилегий ON объект
FROM список_пользователей
При этом, возникает вопрос, кто может лишать привилегий. И если пользователь лишился привилегий, то лишаются привилегий и пользователи, получившие их от него. Во всех системах, как правило, применяется каскадный приём, т.е. если пользователь лишился привилегий, то другие пользователи, получившие привилегии от него, также лишаются этих привилегий.
Перейдём к системным привилегиям. Во всех системах существуют права пользователей, не привязанные к определённым объектам базы данных. Например, стандарт ANSI не ограничивает право создавать таблицы. Но, это область привилегий нельзя оставлять без внимания.
Привилегии, которые не определяются в терминах отдельных объектов, называются системными привилегиями или авторским правом на базу данных. Эти привилегии не стандартизированы и существуют различные подходы к их применению.
Обычно различают следующие виды системных привилегий:
CONNECT – право входа в систему и право создания представлений и синонимов.
RESOURCE – право создавать базовые таблицы.
DBA – привилегия «суперпользователя» (администратора).
Назначение и лишение привилегий осуществляется по команде GRANT или REVOKE.
Пример 1:
Регистрация пользователя в системе.
GRANT CINNECT TO Федоров
PASSWORD пароль_1;
Пример 2:
Удаление пользователя из системы.
REVOKE CINNECT FROM Федоров;
При этом, следует предварительно удалить все объекты, которые он создавал.