- •Базы данных
- •Лекция 1 Хранение данных Данные, информация
- •Системы хранения данных на основе файлов
- •База данных
- •Требования к субд
- •Администратор бд (абд)
- •Лекция 2 Модели данных Независимость данных
- •Модель, схема
- •Сетевая модель
- •Лекция 3 Ранние модели Иерархическая модель
- •Лекция 4 Пример базы данных, построенной на сетевой модели Постановка задачи
- •Диаграмма
- •Описание на яод
- •Лекция 5 Реляционная модель Принципы
- •Уточнения
- •Лекция 6 Методы хранения данных и доступа к ним
- •Последовательный метод
- •Прямой метод
- •Индексные методы
- •Индексно-последовательный метод
- •Индексно-произвольный метод
- •Инвертированные списки
- •Хеширование
- •Лекция 7 Реляционная алгебра: определения, изменение отношений
- •Изменение отношений во времени.
- •Лекция 8 Операции реляционной алгебры
- •Булевы операции
- •Выбор; свойства выбора
- •Проекция; свойства проекции
- •Лекция 9 Операции реляционной алгебры (продолжение) Соединение
- •Свойства соединения
- •Лекция 10 Операции реляционной алгебры (продолжение)
- •Деление
- •Постоянные отношения. Переименование атрибутов
- •Эквисоединение, естественное и -соединение
- •Реляционная алгебра. Полнота ограниченного множества операторов
- •Операторы расщепления и фактора
- •Лекция 11 Язык структурных запросов sql
- •Начальные понятия
- •Стандарт ansi
- •Типы данных
- •Интерактивный и встроенный sql
- •Синтаксис
- •Подразделы sql
- •Простейшие действия
- •Функции агрегирования
- •Группировка
- •Возможности форматирования
- •Лекция 12 Язык структурных запросов sql (продолжение) Соединение
- •Вложенные запросы
- •Связанные запросы
- •Предикаты, определенные на подзапросах
- •Объединение
- •Изменение базы данных
- •Лекция 13 Понятие о нормальных формах
- •1 Нормальная форма (1нф)
- •2 Нормальная форма (2нф)
- •3 Нормальная форма (3нф)
- •Нормальная форма Бойса-Кодда (нфбк)
- •4 Нормальная форма (4нф)
- •5 Нормальная форма (5нф) – проекция/соединение
- •Лекция 13 Проектирование данных Процессы проектирования
- •Концептуальное проектирование
- •Логическое проектирование
- •Средства создания модели
- •Лекция 14 Функциональные зависимости
- •Аксиомы вывода
- •Ориентированный ациклический граф вывода
- •Определение реляционной базы данных
- •Представление множества функциональных зависимостей
- •Лекция 15 Покрытия функциональных зависимостей
- •Лемма об эквивалентности фз
- •Неизбыточные покрытия
- •Посторонние атрибуты
- •Канонические покрытия
- •Структура неизбыточных покрытий
- •Оптимальные покрытия
- •3 Нормальная форма
- •Нормализация через декомпозицию и посредством синтеза
- •Нормальная форма Бойса-Кодда
- •Литература
Средства создания модели
Создание ER-модели обычно сопровождается ее графическим представлением. Различные нотации ER-диаграмм поддерживается специальными средствами проектирования программных систем (CASE-средствами). В некоторых случаях подобные средства включаются в инструментальную среду создания баз данных (FoxPro, Access, Oracle и т.п.), иногда они существуют как отдельный продукт. Последний вариант интересен тем, что нет привязки к конкретной СУБД, то есть можно определять концептуальную модель, которая может быть отображена в логическую после того, как будет выбрана СУБД. Рассмотрим один из наиболее популярных средств такого рода – ERWin.
CASE-средство ERWin уже достаточно долго присутствует на рынке инструментальных средств, ориентированных на базы данных. Существует несколько версий этого продукта. ERWin позволяет создавать модели двух уровней: концептуального и логического. Правда называются они довольно своеобразно: концептуальный называется логическим, а логический – физическим. Представление диаграмм соответствует стандарту IDEF1X. Основные элементы модели следующие: сущности, атрибуты сущностей, домены, связи (четыре вида), индексы. Современные версии ERWin не допускают атрибуты связей. Среди атрибутов выделяются первичные ключи. Кроме первичных, можно отметить возможные (альтернативные) ключи, а также ключи поиска. Внешние ключи формируются автоматически при определении связей, причем, в качестве родительского ключа выбирается первичный.
Сильная сторона ERWin заключается в относительной простоте и удобстве работы с продуктом, что немаловажно в случае сжатых сроков разработки (а это случается постоянно). Разумеется, поддерживаются различные уровни документирования модели: описания сущностей, атрибутов, связей, диаграммы, модели в целом и т.п. Есть возможность получить пакет документации о модели с использованием внутреннего генератора отчетов.
После выбора СУБД появляется возможность привязки к типам данных, принятых в этой СУБД. В терминах ERWin, эта работа производится в физической модели. Можно уточнить типы данных, индексы, а также задать хранимые процедуры, обеспечивающие корректность базы данных. Заметим, что в этой модели несколько меняется терминология: сущности называются таблицами, а атрибуты – столбцами. И, наконец, завершающая работа – автоматическая генерация пустой базы данных по разработанной модели. Базу данных следует проверить, особенно индексы, заполнить тестовыми данными и протестировать. Обычно для создания работоспособной базы данных требуется несколько итераций, в ходе которых изменять следует исключительно модель, а не созданную базу данных.
Лекция 14 Функциональные зависимости
Последующие лекции будут посвящены более подробному изучению нормальных форм на базе работы Мейера [14]. В силу краткости курса приводится изложение лишь тех разделов, на которых основан алгоритм синтеза базы данных по множеству функциональных зависимостей. Практически все теоремы приводятся без доказательства. Совершенно не обсуждаются многозначные зависимости и соответствующие нормальные формы.
Теория нормальных форм базируется на понятии функциональных зависимостей (ФЗ). Общее представление о них дано в обзорной лекции по нормализации. Дадим более строгое их определение.
Определение. Пусть r – отношение со схемой R; X,Y R. Отношение r удовлетворяет функциональной зависимости X Y, если Y(X=x(R)) имеет не более, чем один кортеж для каждого X-значения x, то есть, для t1, t2 r : (t1(X)=t2(X)) (t1(Y)=t2(Y)).
Помимо обычных X и Y, рассмотрим варианты с пустыми подмножествами атрибутов. Будем считать, что X тривиально удовлетворяет любым отношениям, Y удовлетворяет тем отношениям, в которых Y-значения всех кортежей совпадают.
Пользуясь приведенным определением, для заданного отношения r и множеств атрибутов X,Y R можно построить алгоритм, проверяющий существование ФЗ XY. Такой алгоритм приведен в [14] (алгоритм SATISFIES). Суть его в том, что кортежи отношения группируются по X-значениям, при этом все Y-значения для одинаковых X-значений должны быть одинаковыми.
Алгоритм SATISFIES
Вход: отношение r, ФЗ XY.
Выход: истина, если r удовлетворяет XY, ложь в противном случае.
Отсортировать r по X-столбцам, группируя равные значения.
Если каждая группа X-кортежей имеет одинаковые Y-значения, возвратить истину, в противном случае – ложь.
Пример
Дан график распределения пилотов по рейсам. Проверим ФЗ РейсВремя и ВремяРейс.
Пилот |
Рейс |
Дата |
Время |
Иванов |
83 |
09.01.2000 |
10:00 |
Иванов |
16 |
10.01.2000 |
13:00 |
Петров |
81 |
08.01.2000 |
05:00 |
Петров |
31 |
12.01.2000 |
18:00 |
Петров |
83 |
11.01.2000 |
10:00 |
Сидоров |
83 |
13.01.2000 |
10:00 |
Сидоров |
16 |
12.01.2000 |
13:00 |
Федоров |
81 |
09.01.2000 |
05:00 |
Федоров |
81 |
13.01.2000 |
05:00 |
Федоров |
41 |
15.01.2000 |
13:00 |
Группировка по времени
Пилот
Рейс
Дата
Время
Петров
81
08.01.2000
05:00
Федоров
81
09.01.2000
05:00
Федоров
81
13.01.2000
05:00
Иванов
83
09.01.2000
10:00
Петров
83
11.01.2000
10:00
Сидоров
83
13.01.2000
10:00
Иванов
16
10.01.2000
13:00
Сидоров
16
12.01.2000
13:00
Федоров
41
15.01.2000
13:00
Петров
31
12.01.2000
18:00
Группировка по рейсу
Пилот
Рейс
Дата
Время
Иванов
83
09.01.2000
10:00
Петров
83
11.01.2000
10:00
Сидоров
83
13.01.2000
10:00
Петров
81
08.01.2000
05:00
Федоров
81
09.01.2000
05:00
Федоров
81
13.01.2000
05:00
Федоров
41
15.01.2000
13:00
Петров
31
12.01.2000
18:00
Иванов
16
10.01.2000
13:00
Сидоров
16
12.01.2000
13:00
Конец примера
