
- •Основные понятия баз данных. Этапы развития субд. Функции субд. Требования к системам управления базами данных.
- •Архитектура баз данных. Логическая и физическая независимость данных. Схема прохождения запросов к бд.
- •Логическая и физическая независимость данных
- •Классификация моделей данных. Архитектура и модели "клиент-сервер" в технологии бд.
- •Модели «клиент-сервер» в технологи баз данных
- •Модель файлового сервера
- •Модель удаленного доступа к данным
- •Модель сервера баз данных
- •Модель сервера приложений
- •Реляционная модель бд, ее основные достоинства. Таблица, кортеж, атрибут, домен, первичный ключ, внешний ключ. Фундаментальные свойства отношений.
- •Фундаментальные свойства отношений
- •Обеспечение целостности данных.
- •Основы реляционной алгебры. Операторы реляционной алгебры. Операторы реляционной алгебры
- •Понятия полной и транзитивной функциональной зависимости. Нормализация, третья нормальная форма, шаги нормализации.
- •Нормальные формы и нормализация
- •Модель «объект-свойство-отношение», er-диаграммы, проектирование схемы баз данных. Инфологическая модель данных «Сущность-связь»
- •Классификация сущностей
- •Язык sql, его структура, стандарты, история развития. Подмножество языка dml: операторы select, insert, update, delete.
- •Типы данных в субд oracle 9.2i
- •Структура языка sql
- •Оператор выбора select
- •Запросы с использованием единственной таблицы Выборка без использования параметра where
- •Выборка с использованием параметра where
- •Использование параметров group by и having
- •Запросы с использованием нескольких таблиц Запросы с использованием соединений
- •Последовательности
- •Создание и удаление последовательностей
- •Изменение последовательностей
- •.Использование последовательностей
- •Оператор ввода новых строк insert Вставка единственной записи в таблицу
- •Вставка множества записей
- •Оператор изменения значений полей update
- •Обновление единственной записи
- •Обновление множества записей
- •Обновление с подзапросом
- •Оператор удаления строк delete
- •Удаление единственной записи
- •Удаление множества записей
- •Удаление с вложенным подзапросом
- •Подмножество языка ddl: операторы create, alter, drop. Представления, их значение; обновляемые представления. Оператор create Создание таблицы
- •Создание первичного ключа
- •Создание уникального ключа
- •Создание домена
- •Создание внешнего ключа
- •Удаление ограничений целостности
- •Оператор drop
- •Представления
- •Создание и удаление представлений
- •Операции выборки из представлений
- •Обновляемые представления
- •Подмножество языка dcl: операторы grant, revoke. Системные привилегии, привилегии на объекты, роли.
- •Объектные и системные привилегии
- •Операторы grant и revoke
- •Транзакции, операторы управления транзакциями: commit, rollback, savepoint; журнал транзакций, уровни блокировок.
- •Операторы управления транзакциями
- •Журналы транзакций
- •Язык pl/sql, его структура, основные операторы.
- •Курсоры, явные и неявные курсоры, операторы работы с курсором, оператор select into.
- •Процедуры, функции, пакеты.
- •Триггеры, их основные свойства и значение.
- •Параллельные архитектуры бд; масштабируемость, надежность, производительность.
- •Распределенные базы данных, фрагментация, тиражирование.
- •Средства защиты данных в субд.
- •Аутентификация/авторизация при помощи паролей.
- •Инкапсуляция передаваемой информации в специальных протоколах обмена.
- •Ограничение информационных потоков.
- •Классы безопасности
- •Шлюзы к базам данных. Архитектура odbc. Www-интерфейс к бд. Промежуточное программное обеспечение (ппо) баз данных
- •Доступ к базам данных
- •Недостатки реляционных субд
- •Манифест систем объектно-ориентированных баз данных Обязательные свойства: золотые правила
- •Необязательные возможности Множественное наследование, проверка и вывод типов, распределенность, проектные транзакции (протяженные транзакции или вложенные транзакции), версии
- •Объектная модель данных
- •Объектно-ориентированные, объектно-реляционные бд, универсальные бд
- •Эволюция технологий и возможностей субд oracle (oracle 8i, oracle 9i, oracle 10g).
- •Роль grid-технологий в организации хранения и обработки данных. Перспективы развития технологий баз данных.
Подмножество языка dcl: операторы grant, revoke. Системные привилегии, привилегии на объекты, роли.
До сих пор предполагалось, что каждый пользователь базы данных может обращаться к любому объекту базы данных и к информации, содержащейся в этих объектах. В действительности дело обстоит далеко не так. Сервер баз данных предоставляет администратору полный и систематический контроль над тем, что именно каждый отдельный пользователь может читать, модифицировать, стирать или изменять. В сочетании с использованием представлений данных можно полностью контролировать доступ к информации всех пользователей, а также разрешать и запрещать пользователям выполнение тех или иных действий.
Права доступа, или привилегии, используются для того, чтобы позволить одному пользователю работать с данными другого пользователя. После получения необходимых полномочий обладатель прав доступа может работать с объектами, принадлежащими другому пользователю.
Для любого объекта всегда существуют две категории пользователей, которые имеют привилегии на любые действия с ним – это администраторы базы данных (пользователи, владеющие ролью dba) и создатель объекта. В том случае, если необходимо предоставить доступ к тому или иному объекту для других пользователей, используются операторы языка DCL (Data Control Language, язык управления доступом к данным) GRANT и REVOKE.
Объектные и системные привилегии
Существуют привилегии двух различных видов: объектные и системные.
Объектная привилегия (object privilege) разрешает выполнение определенной операции над конкретным объектом (например, над таблицей). Название каждой из объектных привилегии совпадает с названием оператора, который она разрешает выполнять тому или иному пользователю над конкретным объектом базы данных. Примеры объектных привилегий: SELECT, DELETE, INSERT, UPDATE, REFERENCES.
Системная привилегия (system privilege) разрешает выполнение операций над целым классом объектов – над всеми объектами какого-то типа, принадлежащими конкретному пользователю, или вообще над всеми объектами какого-то типа во всей базе данных. При выдаче или изъятии системных привилегий не указывается название объекта, а
Операторы grant и revoke
Предоставление пользователям необходимых привилегий и изъятие привилегий осуществляется с помощью операторов GRANT и REVOKE.
Оператор GRANT используется для предоставления привилегии, а оператор REVOKE – для изъятия привилегии, выданной оператором GRANT. Оба оператора могут использоваться как для объектных, так и для системных привилегий.
Для объектных привилегий синтаксис оператора GRANT таков:
GRANT привилегия ON объект TO обладатель_привилегий
[WITH GRANT OPTION];
где привилегия – это нужная привилегия, объект – это объект, к которому разрешается доступ, а обладатель_привилегий – пользователь, получающий привилегию.
Для системных привилегий синтаксис оператора GRANT таков:
GRANT привилегия TO обладатель_привилегий
[WITH ADMIN OPTION];
где привилегия – это предоставляемая системная привилегия, обладатель_привилегий – пользователь, получающий привилегию.
По умолчанию пользователь, получивший какую-либо объектную или системную привилегию, не может передать ее другому пользователю. Право передачи регулируется наличием необязательного параметра WITH GRANT OPTION для объектных привилегий и WITH ADMIN OPTION для системных привилегий. Пользователь, получивший привилегию с указанием данной опции, имеет право передавать привилегию далее.
Для объектных привилегий синтаксис оператора REVOKE таков:
REVOKE привилегия ON объект FROM обладатель_привилегий
[CASCADE CONSTRAINTS];
где привилегия – это отменяемая привилегия, объект – это объект, на который предоставлена привилегия, обладатель_привилегий – пользователь, получающий эту привилегию. Необязательный параметр CASCADE CONSTRAINTS имеет то же значение, что и в операторе DROP TABLE – если команда GRANT отменяет привилегию REFERENCES (разрешение создавать внешние ключи, ссылающиеся на таблицу из другой схемы), то наличие параметра CASCADE CONSTRAINTS предварительно удалит все существующие внешние ключи, созданные благодаря наличию данной привилегии.
Для системных привилегий синтаксис оператора REVOKE таков:
REVOKE привилегия FROM обладатель_привилегий;
где привилегия – это отменяемая системная привилегия, обладатель_привилегий – пользователь, который более не будет ее иметь.
Примеры выдачи и изъятия привилегий при помощи команд GRANT и REVOKE:
GRANT select ON customers TO Adrian;
GRANT select, insert ON orders TO Adrian, Diana;
GRANT ALL ON customers TO Adrian;
REVOKE insert ON orders FROM Adrian;
Специальная привилегия ALL используется в том случае, когда нужно предоставить все возможные привилегии на какой-то объект.
Для выполнения операций над объектами, которые изначально были созданы в другой схеме, и доступ к которым был предоставлен при помощи команды GRANT, необходимо перед именем объекта ставить имя его владельца. Например, если пользователь А предоставил пользователю Б привилегию SELECT на таблицу MANAGERS, то для того, чтобы пользователь Б мог выбрать информацию из этой таблицы ему перед именем таблицы необходимо поставить имя владельца, то есть имя пользователя А:
-- пользователь А выдал привилегию:
GRANT SELECT ON MANAGERS TO B;
-- пользователь Б выбирает всю информацию из таблицы MANAGERS,
-- принадлежащей пользователю А:
SELECT * FROM A.MANAGERS;
Роли
Роль – это именованный набор системных и объектных привилегий. Роль это реализация идеи пакетной обработки данных, перенесенная в область баз данных, и используемая для оптимизации ручного труда администраторов баз данных. Действительно, если представить достаточно большую базу данных, состоящую из ста и более таблиц, то при появлении нового пользователя, которому нужно предоставить привилегии доступа к разным объектам, администратор базы данных должен выполнить довольно большой объем работы и проконтролировать, что выданы все необходимые привилегии. А если и самих пользователей базы данных достаточно много, то не трудно себе представить, сколько команд GRANT или REVOKE нужно постоянно выполнять администратору базы данных, чтобы управлять доступом к объектам базы данных.
Похожая проблема возникает, если появляется новый объект, доступ к которому нужно предоставлять для определенной категории пользователей. В этом случае администратор базы данных должен отдельно для каждого пользователя выполнить набор команд GRANT. Но в этом случае, при наличии большого числа пользователей, не исключена возможность, ошибки администратора и тогда каким-то пользователям привилегии не будут выданы.
Все перечисленные проблемы решаются использованием ролей. Обычно поступают следующим образом: сначала выделяют категории пользователей, которые должны иметь различные привилегии доступа к объектам базы данных. После этого для каждой из выделенных категорий пользователей формируется набор привилегий и объединяется в роль. Далее роль предоставляется всем пользователям, относящимся к той или иной категории. При этом выдача или изъятие роли, независимо от того, сколько привилегий она включает, осуществляется при помощи всего одной команды GRANT или REVOKE соответственно.
При появлении нового пользователя достаточно определить его категорию и выдать ему соответствующую роль. При появлении новой привилегии, которой должны обладать пользователи той или иной категории ее достаточно включить в роль и тогда все пользователи, владеющие этой ролью, получат и новую привилегию.
Примеры команд GRANT и REVOKE для назначения и изъятия ролей, включения и изъятия привилегий из ролей:
-- создание роли
CREATE ROLE student;
-- выдача привилегий роли student
GRANT select ON TimeTable, Books TO student;
-- назначение роли student для пользователей
GRANT student TO PetrovAV, IvanovAA;
-- при включении привилегии в роль все пользователи
-- PertovAV и IvanovAA получат эту привилегию,
-- поскольку обладают ролью student
GRANT select ON Prepods TO student;
-- при изъятии привилегии из роли все пользователи,
-- которым назначена эта роль, перестанут владеть
-- этой привилегией
REVOKE select ON Prepods FROM student;
Существуют ряд встроенных ролей, которые используются для выполнения типовых задач:
CONNECT – роль, включающая в себя привилегии дающие возможность организации соединения (сессии) с базой данных;
RESOURCE – роль, включающая привилегии, дающие возможность создавать любые объекты внутри своей схемы;
PUBLIC – роль, которой обладают все пользователи базы данных. При необходимости разрешить какие-либо действия всем без исключения пользователям базы данных, нужно включить привилегию в роль PUBLIC.