- •Содержание
- •Введение
- •1. Основные понятия
- •1.1 Терминология, базовые принципы
- •1.1.1 Понятие базы данных, субд и информационной системы
- •1.1.2 База данных и субд
- •1.1.3 Принципы построения информационных систем
- •1.2.2 Архитектура «файл-сервер»
- •1.2 Архитектуры информационных систем
- •1.2.1 Понятие архитектуры информационной системы
- •1.2.3. Архитектура «клиент-сервер»
- •1.2.4 Многозвенные архитектуры
- •1.2.5. Информационные системы на основе web-архитектуры
- •1.2.6 Информационные системы, функционирующие в терминальном режиме
- •1.3 Модели данных
- •1.3.1 Сравнительная характеристика моделей данных
- •1. Иерархическая модель данных
- •2. Сетевая модель данных
- •3. Реляционная модель данных
- •4. Постреляционная модель данных
- •5. Объектно-ориентированная модель данных
- •1.3.2 Неформальное введение в реляционную модель
- •1. Таблицы и связи
- •2. Первичные, альтернативные и внешние ключи
- •3. Null-значения
- •4. Метаданные. Схема базы данных
- •5. Правила ссылочной целостности
- •2. Реляционная модель
- •2.1 Реляционная модель. Структурная и целостная части
- •2.1.1 Структурная часть
- •2.1.2 Атрибуты и домены. Схема отношения
- •2.1.3 Кортежи. Отношение
- •2.1.4 Потенциальные ключи. Первичный ключ
- •2.1.5 Внешние ключи
- •2.1.6 Целостная часть реляционной модели
- •2.2 Манипуляционная часть реляционной модели
- •2.2.1 Реляционная алгебра
- •2.2.2 Реляционное исчисление
- •3. Проектирование базы данных
- •3.1 Семантический анализ предметной области
- •3.1.1 Трехуровневая модель ansi/sparc
- •3.1.2 Диаграммы «сущность - связь»
- •3.1.3 Case-технологии и case-системы
- •3.1.4 Методология idef1
- •3.2 Нормализация базы данных
- •3.2.1 Определение функциональной зависимости
- •3.2.2 Математические свойства фз, теоремы
- •3.2.3 Процедура нормализации. Декомпозиция отношений
- •3.2.4 Нормальные формы
- •3.3 Денормализация. Хранилища данных
- •3.3.1 Недостатки нормализованной базы данных
- •3.3.2 Oltp и olap-системы. Data Mining
- •3.3.3 Хранилища данных
- •4. Язык sql
- •4.1 Язык ddl. Основные объекты базы данных
- •4.1.1 Общий вид команд ddl
- •4.1.2 Основные объекты бд
- •4.2 Команды ddl для работы с таблицами
- •4.2.1 Создание таблицы
- •Типы даты и времени
- •4.2.2 Удаление таблиц и изменение их структуры
- •4.2.3 Пример создания базы данных
- •4.2.4 Создание таблиц на основе других таблиц
- •4.3 Команды манипулирования данными
- •4.3.1 Команда insert
- •Insert into имя_таблицы [(список_имен_столбцов)]
- •Values (список значений)
- •Insert into имя таблицы [(список столбцов)]
- •4.3.2 Команда delete
- •4.3.3 Команда update
- •4.4 Команда выборки данных (select)
- •4.4.1 Запросы на выборку по одной таблице
- •4.4.2 Соединение таблиц в запросах
- •Декартово произведение
- •Внутреннее (естественное) соединение таблиц
- •4. Самосоединения
- •4.4.3 Вложенные запросы
- •4.4.4 Комбинированные запросы
- •4.5 Представления (view)
- •4.5.1 Понятие представления
- •4.5.2 Создание и удаление представлений
- •4.5.3 Обновление представлений
- •4.5.4 Стандартные представления словаря данных Oracle
- •4.6 Хранимый код. Триггеры
- •4.6.1 Процедурные расширения языка sql
- •1. Оператор присваивания
- •2. Условный оператор
- •3. Операторы цикла
- •4.6.2 Использование команд sql в хранимом коде
- •4.6.3 Хранимые процедуры и функции
- •4.6.4 Триггеры
- •1. Триггер на вставку нового студента
- •2. Триггеры на удаление студента
- •3. Триггер на изменение оценки
- •5. Управление доступом к данным
- •5.1 Система безопасности субд
- •Разграничение доступа пользователей.
- •5.1.1 Разграничение доступа пользователей
- •Identified by пароль
- •5.1.2 Привилегии и роли
- •5.1.3 Аудит действий пользователей
- •5.2 Поддержка транзакций
- •5.2.1 Свойства транзакции
- •5.2.2 Поддержка транзакций в языке sql
- •5.2.3 Механизмы субд для поддержки транзакций
- •5.3 Настройка производительности. Индексы
- •5.3.1 Понятие индекса
- •5.3.2 Обзор индексов Oracle
- •Заключение
- •Библиографический список
5. Управление доступом к данным
Цель изучения данной главы – получить основные знания и умения администрирования базы данных.
После изучения главы вы будете:
знать основные принципы организации системы безопасности СУБД
уметь создавать учетные записи пользователей, присваивать им определенные привилегии и роли
понимать свойства транзакций (АСИД), уметь применять на практике команды SQL для поддержки транзакций
знать основные принципы управления производительностью СУБД
уметь создавать необходимые индексы в целях повышения производительности.
5.1 Система безопасности субд
Система безопасности (Security) предназначена для сохранности данных от злонамеренной порчи либо от несанкционированного доступа. Обычно система безопасности включает две составляющие:
Разграничение доступа пользователей.
Аудит действий пользователя.
Кратко рассмотрим функции и реализацию каждой из составляющих. Системы безопасности различных СУБД существенно отличаются друг от друга (что вполне естественно), а стандарт в этой части является достаточно гибким и позволяет строить индивидуальные решения на основе типовых конструкций.
В дальнейшем изложении мы будем опираться на систему безопасности Oracle, понимая, что при переходе на любую новую СУБД придется потратить определенное время на освоение ее системы безопасности.
5.1.1 Разграничение доступа пользователей
Создание учетных записей пользователей
Все СУБД предоставляют доступ к информации базы данных только зарегистрированным пользователям, имеющим учетные записи этой базы. При установке Oracle автоматически создается несколько учетных записей – это пользователи с именами SYS и SYSTEM, обладающие всеми правами АБД (самыми обширными правами обладает SYS, который имеет право останавливать и запускать сервер), а также несколько пользователей, созданных в демонстрационных целях.
Для создания учетной записи каждого нового пользователятребуется создать стандартный объект user с обязательным указания пароля данного пользователя (пароли в словаре данных Oracle хранятся в зашифрованном виде, поэтому если пользователь забыл пароль, его нельзя посмотреть, но можно сменить). В Oracle команда CREATE USER … содержит еще ряд дополнительных параметров:
Create user имя_пользователя
Identified by пароль
[default tablespace имя_табличного_пространства]
[temporary tablespace имя_временного_табличного_пространства]
[quota unlimited / размер предоставляемого дискового пространства]
[profile имя_профиля]
Например:
CREATE USER user1
Identified by cneltyn
default tablespace users
temporary tablespace temp
В данной команде используются стандартные имена табличных пространств, которые создаются при установке сервера Oracle. Табличное пространство – это файл (или несколько файлов, логически воспринимаемые Oracle как единое пространство для хранения таблиц или индексов). В приведенном примере размер части табличного пространства, предоставляемого пользователю, не ограничен (точнее, ограничен только размерами пространства). Специальный профиль для пользователя не создается.
Несколько слов о профилях пользователей (подробные сведения выходят за рамки курса). Создание индивидуальных профилей для пользователей базы данных позволяет:
Вести индивидуальную политику паролей (время жизни пароля)
Ограничить ресурсы (количество одновременно открытых сессий, процессорное время, отводимое данному пользователю или время для некоторого конкретного запроса, время ожидания ответа сервера и ряд других важных ресурсов).
Профиль создается при помощи команды
Create profile имя профиля [параметры_профиля]
и в любой момент может быть изменен командой
ALTER PROFILE …..
Изменение учетной записи
Команда Alter user имя ......позволяет изменять различные параметры учетной записи (кроме имени пользователя).
Например:
Alter user user1
Identified by новый_пароль
Так можно сменить пароль пользователя.
Alter user user1 quota 100M on USERS
Теперь для пользователя user1 размер его части табличного пространства USERS ограничен 100 Мегабайтами.
Удаление учетной записи
С помощью команды drop user... можно совсем удалить пользователя из базы данных.
Например, команда:
drop user user1
удалит пользователя user1, но только в том случае, если он еще не создал ни одного объекта.
Для того, чтобы гарантированно удалить любого пользователя, требуется применить эту команду с параметром cascade, с помощью которого перед удалением пользователя удаляются все объекты в его схеме.
drop user user1 cascade
Пользователи и схемы
При создании учетной записи в Oracle каждый пользователь одновременно получает в распоряжение свою собственную схему в базе данных с тем же именем, т.е одновременно неявно выполняется команда
CREATE SCHEMA имя_пользователя
Напомним, что понятие схемы поддерживается стандартом. Это самостоятельная часть базы данных, все имена объектов, создаваемых пользователем, должны быть уникальны только в пределах схемы, поскольку имя объекта (таблицы, представления и т.д.) в пределах всей базы данных складывается из двух составляющих:
имя_схемы.имя_объекта
Однако, получив в распоряжение собственную учетную запись и собственную схему базы данных, только что созданный пользователь не может даже подключиться к базе данных, не говоря уж о создании объектов. Для выполнения любого действия в базе данных пользователю требуются права на выполнение подобных действий. Для этих целей вводятся два понятия – привилегии и роли.
