- •28.09.2011 Лекция 2. Панасенко Сергей Петрович. Develop@ancud.Ru Основы проектирования и использования баз данных (часть 2). Дополнительные возможности оператора select
- •Оператор insert
- •Основные возможности языка определения данных
- •Основные параметры запроса на создание таблицы
- •Пример запроса на создание таблицы
- •Основные параметры запроса на модификацию таблицы
- •Примеры запросов на модификацию таблицы
- •Пример связи между таблицами (Пример 1)
- •Запрос на создание таблицы Course:
- •Запрос на создание таблицы Lectures:
- •Примеры других запросов языка определения данных:
- •Цели проектирования реляционных бд
- •Пример неудачно спроектированной бд с избыточностью:
- •Основные понятия нормализации:
- •Вторая нормальная форма
- •Пример таблицы, не соответствующей второй нормальной форме:
- •Пример бд, таблицы которой соответствуют второй нормальной форме:
- •Достоинства второй нормальной формы
- •Третья нормальная форма
- •Пример таблицы, не соответствующей третьей нормальной форме
- •Пример таблицы, соответствующей третьей нормальной форме
- •Достоинства третьей нормальной формы
- •Раздел 2.1. «Основы проектирования и использования баз данных».
- •Раздел 2.2. «Безопасность баз данных».
- •Внутренними источниками угроз безопасности субд являются
- •Безопасность взаимодействия с внешними компонентами
- •Составные части обеспечения безопасности бд
- •Логические подсистемы обеспечения безопасности
- •Основные средства обеспечения конфиденциальности субд
- •Представление
- •Пример таблицы, для которой необходимо представление
Логические подсистемы обеспечения безопасности
-
Подсистема управления доступом.
-
Подсистема регистрации и учёта.
-
Криптографическая подсистема.
-
Подсистема контроля целостности.
Основные средства обеспечения конфиденциальности субд
Внутренние механизмы самой СУБД:
-
Использование представлений. Полагаться особо нельзя
-
Использование триггеров. Достаточно эффективный
-
Встроенные механизмы шифрования на уровне столбцов таблиц.
Внешние механизмы:
-
Контроль доступа со строгой аутентификацией пользователей.
-
Шифрование трафика между сервером и клиентами СУБД.
Представление
Представление – это поименованная динамически поддерживаемая сервером выборка из одной или нескольких таблиц.
Достоинства представления:
-
позволяет ограничить данные, видимые пользователю;
-
эффективно контролирует, какие данные пользователь имеет право модифицировать;
-
СУБД гарантирует актуальность представления. СУБД написали год назад, задали представление, после чего каждый день запрашивая данное представление, получаем результат, актуальный именно на тот момент, когда мы его запрашиваем
Например, у нас есть одна большая таблица, с которой каждому пользователю необходимо работать по-разному (в т.ч., видеть только «свои» поля таблицы). Задаём представление, которое решает эту задачу
Пример таблицы, для которой необходимо представление
Prep
NP |
Name |
Position |
Seniority |
ChartNum |
Salary |
1 |
Иванов |
Доцент |
10 |
403 |
7000 |
2 |
Петров |
Ст. преп. |
5 |
556 |
5000 |
3 |
Сидоров |
Профессор |
20 |
212 |
10000 |
Можем разрешить работнику бухгалтерии работать с этой таблице целиком, но при этом создать представление, которое работнику кадровой службы эту зарплату закроет и не покажет
Примеры запросов на создание представления
CREATE VIEW Prep_View AS SELECT NP, Name, Position, Seniority, ChartNum FROM Prep Для работника кадровой службы
CREATE VIEW Prep_Small_Salary AS SELECT NP, Name, Position, Seniority, ChartNum, Salary FROM Prep WHERE Salary<20000 Допустим, есть главный бухгалтер, которому доступно всё, и есть неглавный, которому не обязательно знать людей с большой зарплатой
Триггер
Триггер – это совокупность предложений языка SQL или некоторого иного процедурного языка, автоматически запускаемая СУБД при возникновении определённых событий в системе.
Триггеры выполняются системой автоматически до или после возникновения предопределённых событий. Например, выполнение операторов INCERT, UPDATE или DELETE.
Основные способы использования триггеров для повышения защищённости системы
-
Дополнительный контроль допустимости действий пользователя.
-
Введение специализированного аудита действий пользователя.
Примеры триггера уровня таблицы (СУБД Oracle)
CREATE OR REPLACE TRIGGER DistrictUpdatedTrigger AFTER UPDATE ON district BEGIN INSERT INTO info VALUES (‘table “district” has changed’); END
При использовании триггеров мы жертвуем скоростью (скорость запросов однозначно страдает), однако при повышении безопасности мы всегда жертвуем: а) удобством работы (всегда), б) скоростью.
Примеры триггера уровня строки таблицы (СУБД Oracle)
CREATE OR REPLACE TRIGGER DistrictUpdaterTrigger AFTER UPDATE ON district FOR EACH ROW BEGIN INSERT INTO info VALUES (‘one string in table “district” has changed’); END