- •Введение в бд
- •Файловые системы
- •Системы с базами данных
- •Модели данных
- •Альтернативная терминология Терминология, используемая в реляционной модели, порой может привести к путанице, поскольку помимо предложенных двух наборов терминов существует еще один – третий.
- •Сетевая модель данных
- •Иерархическая модель данных
- •Вопросы:
- •Реляционная модель.
- •Реляционная алгебра. Реляционное исчисление.
- •Реляционная модель
- •Упражнения:
- •Реляционные языки
- •Реляционная алгебра
- •Унарные операции реляционной алгебры
- •Операции с множествами
- •Операции соединения
- •Деление
- •Реляционное исчисление
- •Реляционное исчисление кортежей
- •Реляционное исчисление доменов
- •Другие языки
- •Тема 3 Моделирование данных Модель «сущность-связь»
- •Элементы модели «сущность-связь»
- •Сущность
- •Атрибуты
- •Идентификаторы
- •Три типа бинарных связей
- •Диаграммы «сущность-связь»
- •Изображение атрибутов в диаграммах «сущность-связь»
- •Слабые сущности
- •Подтипы сущностей
- •Пример er-диаграммы
- •Диаграммы «сущность-связь» в стиле uml
- •Сущности и связи в uml
- •Представление слабых сущностей
- •Представление подтипов
- •Конструкции ооп, введенные языком uml
- •Семантическая объектная модель
- •Семантические объекты
- •Определение семантических объектов
- •Атрибуты
- •Кардинальное число атрибута
- •Экземпляры объектов
- •Парные атрибуты
- •Объектные идентификаторы
- •Домены атрибутов
- •Представления семантических объектов
- •Создание семантических объектных моделей данных
- •Пример: база данных администрации нтуу «кпи»
- •Спецификация объектов
- •Типы объектов
- •Простые объекты
- •Составные объекты
- •Гибридные объекты
- •Ассоциативные объекты
- •Объекты вида родитель/подтип
- •Объекты вида архетип/версия
- •Переход от семантической объектной модели к модели «сущность-связь»
- •Вопросы:
- •Упражнения:
- •Тема 4 Нормализация
- •Классы отношений
- •Нормальные формы от первой до пятой
- •Тема 5 Методология проектирования баз данных Введение в методологию проектирования баз данных
- •Методология концептуального проектирования базы данных
- •Методология логического проектирования реляционных баз данных
- •Суть состоит в том, что при устранении избыточности очень важно исследовать значение каждой из связей, существующих между сущностями.
- •Методология физического проектирования базы данных
- •Трехуровневая архитектура ansi-sparc
- •Система управления Базами Данных
- •1. Хранение, извлечение и обновление данных
- •2. Каталог доступный конечным пользователям
- •Поддержка транзакций
- •Сервисы управления параллельностью
- •Сервисы восстановления
- •6. Сервисы контроля доступа к данным
- •Поддержка обмена данными
- •8. Вспомогательные службы
- •Преимущества:
- •Недостатки:
- •Вопросы:
- •Упражнения:
- •История языка sql
- •Особая роль языка sql
- •Используемая терминология
- •Запись операторов sql
- •Манипулирование данными
- •Литералы
- •Простые запросы
- •Выборка строк (конструкция where)
- •Сортировка результатов (конструкция order by)
- •Использование агрегирующих функций языка sql
- •Группирование результатов (конструкция group by)
- •Ограничения на выполнение группирования (конструкция having)
- •Подзапросы
- •Ключевые слова any и all
- •Многотабличные запросы
- •Внешние соединения
- •Выполнение соединений
- •Ключевые слова exists и not exist
- •Комбинирование результирующих таблиц (операции union, intersect и except)
- •Изменение содержимого базы данных
- •Добавление новых данных в таблицу (оператор insert)
- •Модификация данных в базе (оператор update)
- •Удаление данных из базы (оператор delete)
- •Скалярные типы данных языка sql
- •Логические данные (тип boolean)
- •Символьные данные (тип character)
- •Битовые данные (тип bit)
- •Точные числовые данные (тип exact numeric)
- •Округленные числовые данные (тип approximate numeric)
- •Дата и время (тип datetime)
- •Интервальный тип данных interval
- •Скалярные операторы
- •Средства поддержки целостности данных
- •Обязательные данные
- •Ограничения для доменов
- •Целостность сущностей
- •Ссылочная целостность
- •Требования данного предприятия
- •Определение данных
- •Создание баз данных
- •Создание таблиц (оператор create table)
- •Модификация определения таблицы (оператор alter table)
- •Удаление таблиц (оператор drop table)
- •Создание индекса (оператор create index)
- •Удаление индекса (оператор drop index)
- •Представления
- •Создание представлений (оператор create view)
- •Удаление представлений (оператор drop view)
- •Замена представлений
- •Ограничения на использование представлений
- •Обновление данных в представлениях
- •Использование конструкции with check option
- •Преимущества и недостатки представлений
- •Преимущества
- •Недостатки
- •Материализация представлений
- •Использование транзакций
- •Немедленные и отложенные ограничения поддержки целостности данных
- •Управление доступом к данным
- •Идентификаторы пользователей и права владения
- •Привилегии
- •Предоставление привилегий другим пользователям (оператор grant)
- •Отмена предоставленных пользователям привилегий (оператор revoke)
- •Приложение
- •Тема 7.3 Хранимые процедуры и функции. Триггеры.
- •Создание хранимых процедур и функций
- •Простые формы выражений
- •Поддержка транзакций
- •Свойства транзакций
- •Архитектура базы данных
- •Управление параллельным доступом
- •Проблема потерянного обновления
- •Проблема зависимости от незафиксированных результатов (или "грязного" чтения)
- •Проблема анализа несогласованности
- •Упорядочиваемость и восстанавливаемость
- •Конфликтная упорядочиваемость
- •Упорядочиваемость по просмотру
- •Восстанавливаемость
- •Методы управления параллельным доступом
- •Методы блокировки
- •Двухфазная блокировка
- •Управление параллельным выполнением при использовании индексных структур
- •Защелки
- •Взаимоблокировка
- •Тайм-ауты
- •Предотвращение взаимоблокировок
- •Обнаружение взаимоблокировок
- •Частота выполнения операции обнаружения взаимоблокировок
- •Возобновление нормальной работы после обнаружения взаимоблокировки
- •Использование временных отметок
- •Правило записи Томаса
- •Сравнение методов
- •Упорядочение временных отметок в случае многих версий
- •Оптимистические методы упорядочения
- •Степень детализации блокируемых элементов данных
- •Иерархия степеней детализации
- •Блокировка с учетом нескольких степеней детализации
- •Восстановление базы данных
- •Необходимость восстановления
- •Транзакции и восстановление
- •Управление буферами базы данных
- •Функции восстановления
- •Механизм резервного копирования
- •Файл журнала
- •Создание контрольных точек
- •Методы восстановления
- •Метод восстановления с использованием отложенного обновления
- •Метод восстановления с использованием немедленного обновления
- •Метод теневого страничного обмена
- •Улучшенные модели транзакций
- •Модель вложенных транзакций
- •Эмуляция механизма вложенных транзакций с помощью точек сохранения
- •Хроники
- •Модель многоуровневых транзакций
- •Динамическая реструктуризация
- •Модели рабочих потоков
- •Общий обзор методов обработки запросов
- •Основные этапы обработки запросов
- •Динамическая и статическая оптимизация запросов
- •Декомпозиция запросов
- •Нормализация
- •Семантический анализ
- •Упрощение
- •Реструктуризация запросов
- •Эвристический подход к оптимизации запросов
- •Правила преобразования операций реляционной алгебры
- •Оценка стоимости операций реляционной алгебры
- •Статистические показатели базы данных
- •Вариант 6. Поиск по равенству значению кластеризующего (вторичного) индекса
- •Вариант 7. Поиск по равенству значению некластеризующего (вторичного) индекса
- •Составные предикаты
- •Конъюнктивная выборка без дизъюнкций
- •Выборки с дизъюнкциями
- •Конвейерная обработка данных
- •Тема 10
- •Основные типы угроз
- •Контрмеры – компьютерные средства контроля
- •Авторизация пользователей
- •Привилегии
- •Права владения и привилегии
- •Представления (подсхемы)
- •Резервное копирование и восстановление
- •Поддержка целостности
- •Шифрование
- •Raid (массив независимых дисковых накопителей с избыточностью)
- •Средства защиты субд Microsoft Access
- •Установка пароля
- •Защита на уровне пользователя
Обновление данных в представлениях
Все обновления, выполненные в таблице базы данных, немедленно отражаются на всех представлениях, предусматривающих обращения к этой таблице. Подобным же образом, можно ожидать, что если данные были изменены в представлении, то это изменение будет отображено и в той таблице (таблицах) базы данных, на которой оно построено. Однако такое условие не всегда соблюдается.
В стандарте ISO указано, что представления могут быть обновляемыми только в тех системах, которые отвечают некоторым четко определенным требованиям. Согласно стандарту ISO представление может быть обновляемым только в том случае, если:
в его определении не используется ключевое слово DISTINCT, т.е. из результатов определяющего запроса не исключаются повторяющиеся строки;
каждый элемент в списке конструкции SELECT определяющего запроса представляет собой имя столбца (а не константу, выражение или агрегирующую функцию), причем имя каждого из столбцов упоминается в этом списке не более одного раза;
в конструкции FROM указана только одна таблица, т.е. представление должно быть создано на базе единственной таблицы, по отношению к которой пользователь должен обладать необходимыми правами доступа. Если исходная таблица сама является представлением, то это представление также должно отвечать указанным условиям. Данное требование исключает возможность обновления любых представлений, построенных на базе соединения, объединения (UNION), пересечения (INTERSECT) или разности (EXCEPT) таблиц;
в конструкцию WHERE не входят какие-либо вложенные запросы типа SELECT, которые ссылаются на таблицу, указанную в конструкции FROM;
определяющий запрос не должен содержать конструкций GROUP BY и HAVING.
Кроме того, любая строка данных, добавляемая с помощью представления, не должна нарушать требования поддержки целостности данных, установленные для исходной таблицы представления. Например, при добавлении с помощью представления новой строки таблицы во все столбцы таблицы, отсутствующие в этом представлении, будут введены значения NULL. Однако при этом не должны нарушаться все требования NOT NULL, указанные в описании исходной таблицы представления. Основную концепцию, используемую при формулировании обсуждаемых ограничений, можно выразить с помощью следующего определения.
Обновляемое представление. Для того чтобы представление было обновляемым, СУБД должна иметь возможность однозначно отобразить любую его строку или столбец на соответствующую строку или столбец его исходной таблицы.
Использование конструкции with check option
В представление помещаются только те строки, которые удовлетворяют условию WHERE в определяющем запросе. Если строка в представлении будет изменена таким образом, что перестанет удовлетворять этому условию, то эта строка должна исчезнуть из данного представления. Аналогичным образом, в представлении будут появляться новые строки всякий раз, когда вставка или обновление данных в представлении приведет к тому, что новые строки будут удовлетворять условию WHERE.
Строки, которые добавляются или исключаются из представления в зависимости от содержащихся в них данных, принято называть мигрирующими.
В общем случае для предотвращения миграции строк представления используется конструкция WITH CHECK OPTION оператора CREATE VIEW. Необязательные ключевые слова LOCAL/CASCADED применимы в случае существования иерархии представлений, т.е. когда представление создается на базе другого представления. Если указана конструкция WITH LOCAL CHECK OPTION, то такие действия, как вставка или обновление данных в некотором представлении, на базе которого прямо или косвенно определены другие представления, не могут вызвать исчезновение строки из данного представления, за исключением случаев, когда данная строка исчезает также из представлений или таблиц других уровней иерархии. При указании конструкции WITH CASCADED CHECK OPTION (это значение принимается по умолчанию) в случае вставки или обновления строки в данном представлении или в любом другом представлении, прямо или косвенно определенном на базе данного, исчезновение этой строки из данного представления не допускается.
Такая функция может оказаться настолько полезной, что работать с представлениями окажется удобнее, чем с таблицами базы данных. В том случае, когда оператор INSERT или UPDATE нарушает условия, указанные в конструкции WHERE определяющего запроса, выполнение затребованной операции отменяется. В результате появляется возможность реализовать в базе данных дополнительные ограничения, направленные на сохранение целостности данных. Следует отметить, что конструкцию WITH CHECK OPTION можно указывать только для обновляемых представлений.
Пример 7.2.7. Использование опции WITH CHECK OPTION
Еще раз обратимся к представлению, созданному в примере 7.2.3:
CREATE VIEW БаллСтудент
AS SELECT *
FROM Студент
WHERE СРБАЛЛ = '3,8';
WITH CHECK OPTION;
Содержимое этого представления приведено в табл. 7.2.3. Теперь попытаемся изменить значение среднего балла студента в любой из строк с '3,8' на '4' , например, с помощью следующего чего оператора:
UPDATE БаллСтудент
SET СРБАЛЛ = '4'
WHERE НС = '12';
Поскольку в определении представления была указана конструкция WITH CHECK OPTION, выполнение этого оператора будет заблокировано, так как в противном случае произойдет миграция строки из данного горизонтального представления. Таким образом, не будет иметь успеха и попытка выполнения следующего оператора:
INSERT INTO БаллСтудент
VALUES(13, 'ТЗ-31', 'Сушко А.', 1986, ' о.Сицилия ', 4 ) ;
Поскольку в определении представления указана конструкция WITH CHECK OPTION, ввод указанной строки в данное представление будет заблокирован, так как сразу после помещения ее в исходную таблицу Студент она должна будет немедленно исчезнуть из данного представления.
А теперь рассмотрим ситуацию, когда представление БаллСтудент создается не на базе самой таблицы Студент, а на базе другого представления, созданного для этой таблицы.
CREATE VIEW МладшийСт CREATE VIEW СтаршийСт
AS SELECT * AS SELECT *
FROM Студент FROM МладшийСт
WHERE ГОДР > 1983; WHERE ГОДР > 1985
WITH LOCAL CHECK OPTION;,
CREATE VIEW БаллСтудент
AS SELECT *
FROM СтаршийСт
WHERE СРБАЛЛ = '3,8' ;
Теперь попытаемся выполнить в представлении БаллСтудент следующий оператор:
UPDATE Managers Staff
SET ГОДР = 1984
WHERE НС = '12';
Однако это нам не удастся. Дело в том, что после выполнения данного оператора измененная строка исчезнет только из представления СтаршийСт, но сохранится в представлении МладшийСт, на базе которого сформировано представление СтаршийСт. Если же при обновлении установить новое значение года рождения, равным 1986, то эта операция будет успешной, поскольку измененная строка должна будет исчезнуть и из представления МладшийСт. Если же при определении представления СтаршийСт указать конструкцию WITH CASCADED CHECK OPTION, то при указании любого из упомянутых значений года рождения (как 1984, так и 1986) выполнение данного обновления будет заблокировано, поскольку измененная строка должна будет исчезнуть из представления СтаршийСт. Следовательно, для того чтобы получить гарантию, что подобные аномалии обновления никогда не будут иметь места, каждое из создаваемых представлений должно содержать конструкцию WITH CASCADED CHECK OPTION.
