- •Оглавление
- •1. Введение. Представление данных в памяти компьютера 3
- •2. Модели представления данных 43
- •3. Проектирование реляционных бд 83
- •4 Реляционная алгебра 114
- •5. Case – технологии 127
- •6. Организация доступа прикладной программы 178
- •1. Введение. Представление данных в памяти компьютера
- •1.1 Предмет дисциплины и ее задачи
- •1.2 Основные понятия
- •1.3 Файловые системы, как первый шаг к субд
- •1.4 Структурная схема субд и основные функции
- •1.5 Преимущества и недостатки субд по сравнению с файловыми системами
- •1.6 Организация внешней памяти реляционной субд
- •1.7 Типы и структуры данных
- •1.8 Типы и структуры данных, применяемые в реляционных бд
- •1.9 Типы и структуры данных, применяемые в объектно-реляционных бд
- •1.10 Понятие модели данных
- •2. Модели представления данных
- •2.1 Иерархическая модель данных
- •2.2 Сетевая модель данных
- •2.3 Реляционная модель данных
- •2.4 Свойства отношений. Отличие отношений от таблиц.
- •2.5 Понятие целостности данных
- •2.6 Ограничения реляционных баз данных
- •2.7 Суть постреляционного объектно-ориентированного подхода
- •2.8 Объектно-ориентированные субд и стандарт odmg
- •2.9 Объектно-реляционные субд
- •2.10 No sql бд и субд
- •1. NoSql базы в-основном оупенсорсные и созданы в 21 столетии.
- •6. Распределенные системы
- •3. Проектирование реляционных бд
- •3.1 Этапы разработки базы данных
- •3.2 Критерии оценки качества логической модели данных
- •3.3 Проектирование баз данных на основе нормализации отношений
- •3.4 Первая нормальная форма
- •3.5 Аномалии обновления
- •3.6 Функциональные зависимости
- •3.7 Вторая нормальная форма
- •3.8 Третья нормальная форма
- •3.9 Алгоритм нормализации (приведение к 3nf)
- •3.10 Oltp и olap-системы
- •3.11 Корректность процедуры нормализации. Теорема Хеза
- •3.12 Нормальная Форма Бойса-Кодда (nfbk)
- •3.13 Четвертая Нормальная Форма
- •3.14 Пятая Нормальная Форма
- •3.15 Продолжение алгоритма нормализации (приведение к 5 nf)
- •4 Реляционная алгебра
- •4.1 Операции над отношениями: общие сведения
- •4.2 Синтаксис операторов реляционной алгебры
- •4.3 Оптимизация алгоритмов реализации запросов
- •5. Case – технологии
- •5.1 Общие вопросы проектирования ис, понятие case-технологии
- •5.2 Жизненный цикл по ис
- •5.3 Модели жизненного цикла по
- •5.4 Методология rad
- •5.5 Структурный подход к проектированию ис
- •5.6 Методология функционального моделирования sadt (idef0)
- •5.7 Моделирование потоков данных (методология Гейна-Сарсона)
- •5.8 Методы построения диаграмм «сущность-связь» (erd)
- •5.9 Моделирование данных case-методом Баркера
- •5.10 Методология idef1
- •6. Организация доступа прикладной программы к серверу базы данных
- •6.1 Общие сведения
- •6.2 Использование специализированных библиотек и встраиваемого sql
- •6.4 Odbc – открытый интерфейс к бд на платформе ms Windows
- •6.5 Jdbc - интерфейс к базам данных на платформе Java
- •6.6 Прикладные интерфейсы ole db и ado
- •Литература
3.12 Нормальная Форма Бойса-Кодда (nfbk)
В алгоритме приведения отношений к 3NF неявно предполагалось, что все отношения содержат один потенциальный ключ. Это не всегда верно. Рассмотрим пример отношения, содержащего два потенциальных ключа.
Пример 3. Пусть требуется хранить данные о поставках деталей некоторыми поставщиками. Предположим, что наименования поставщиков являются уникальными. Кроме того, каждый поставщик имеет свой уникальный номер. Данные о поставках можно хранить в следующем отношении:
Таблица 18. – Отношение ПОСТАВКИ
PNUM |
PNAME |
DNUM |
VOLUME |
1 |
Фирма 1 |
1 |
100 |
1 |
Фирма 1 |
2 |
200 |
1 |
Фирма 1 |
3 |
300 |
2 |
Фирма 2 |
1 |
150 |
2 |
Фирма 2 |
2 |
250 |
3 |
Фирма 3 |
1 |
1000 |
Данное отношение содержит два потенциальных ключа – (PNUM, DNUM) и (PNAME, DNUM). Видно, что данные хранятся в отношении с избыточностью – при изменении наименования поставщика, его наименование нужно изменить во всех кортежах, где оно встречается. Попробуем устранить эту аномалию при помощи алгоритма нормализации, описанного ранее. Выявим имеющиеся функциональные зависимости:
PNUMPNAME – наименование поставщика зависит от номера поставщика;
PNAMEPNUM – номер поставщика зависит от наименования поставщика;
(PNUM, DNUM) VOLUME – поставляемое количество зависит от первого ключа отношения;
(PNUM, DNUM) PNAME – наименование поставщика зависит от первого ключа отношения;
(PNAME, DNUM) VOLUME – поставляемое количество зависит от второго ключа отношения;
(PNAME, DNUM) PNUM – номер поставщика зависит от второго ключа отношения.
Данное отношение не содержит неключевых атрибутов, зависящих от части сложного ключа. Действительно, от части сложного ключа зависят атрибуты PNAME и PNUM, но они сами являются ключевыми. Таким образом, отношение находится в 2NF.
Кроме того, отношение не содержит зависимых друг от друга неключевых атрибутов, т.к. неключевой атрибут всего один – VOLUME. Таким образом, показано, что отношение ПОСТАВКИ находится в 3NF.
Таким образом, получается, что описанный ранее алгоритм нормализации неприменим к данному отношению. Очевидно, однако, что аномалия данного отношения устраняется путем декомпозиции его на два следующих отношения:
Таблица 19.– Отношение ПОСТАВЩИКИ
PNUM |
PNAME |
1 |
Фирма 1 |
2 |
Фирма 2 |
3 |
Фирма 3 |
Таблица 20.– Отношение ПОСТАВКИ2
PNUM |
DNUM |
VOLUME |
1 |
1 |
100 |
1 |
2 |
200 |
1 |
3 |
300 |
2 |
1 |
150 |
2 |
2 |
250 |
3 |
1 |
1000 |
Отношение R находится в нормальной форме Бойса-Кодда (NFBK) тогда и только тогда, когда детерминанты всех функциональных зависимостей являются потенциальными ключами.
Если отношение находится в NFBK, то оно автоматически находится и в 3NF.
Отношение ПОСТАВКИ не находится в NFBK, т.к. имеются зависимости PNUMPNAME и PNAMEPNUM, детерминанты которых не являются потенциальными ключами.
Для того чтобы устранить зависимость от детерминантов, не являющихся потенциальными ключами, необходимо провести декомпозицию, вынося эти детерминанты и зависимые от них части в отдельное отношение. Отношения ПОСТАВЩИКИ и ПОСТАВКИ2, полученные в результате декомпозиции, находятся в NFBK.
Приведенная декомпозиция отношения ПОСТАВКИ на отношения ПОСТАВЩИКИ и ПОСТАВКИ2 не является единственно возможной. Альтернативной декомпозицией является декомпозиция на следующие отношения:
Таблица 21. – Отношение ПОСТАВЩИКИ
PNUM |
PNAME |
1 |
Фирма 1 |
2 |
Фирма 2 |
3 |
Фирма 3 |
Таблица 22. – Отношение ПОСТАВКИ3
PNAME |
DNUM |
VOLUME |
Фирма 1 |
1 |
100 |
Фирма 1 |
2 |
200 |
Фирма 1 |
3 |
300 |
Фирма 2 |
1 |
150 |
Фирма 2 |
2 |
250 |
Фирма 3 |
1 |
1000 |
На первый взгляд, такая декомпозиция хуже, чем первая. Действительно, наименования поставщиков по-прежнему повторяются, и при изменении наименования поставщика, это наименование придется менять одновременно в нескольких местах сразу в двух отношениях. Кажется, что ситуация стала хуже, чем была до декомпозиции. Однако такое ощущение возникает от того, что наименования поставщиков могут меняться, а номера нет. Если же предположить, что номера поставщиков тоже можно изменять, то первая декомпозиция получается такой же «плохой» как и вторая.
На самом деле никакого противоречия нет. В отношении ПОСТАВКИ3 атрибут PNAME является внешним ключом, служащим для связи с отношением ПОСТАВЩИКИ. Поэтому, при изменении наименования поставщика, это изменение происходит в отношении ПОСТАВЩИКИ и каскадно распространяется на отношение ПОСТАВКИ3 совершенно так, как изменение номера поставщика каскадно распространяется на отношение ПОСТАВКИ2. Поэтому, формально обе декомпозиции совершенно равноправны. В реальной работе разработчик выберет, конечно, первую декомпозицию, но тут важно подчеркнуть, что его выбор основан совсем на других соображениях, не имеющих отношения к формальной теории нормальных форм.