- •Оглавление
- •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.8 Третья нормальная форма
Атрибуты называются взаимно независимыми, если ни один из них не является функционально зависимым от другого.
Отношение R находится в третьей нормальной форме (3NF) тогда и только тогда, когда отношение находится в 2NF и все неключевые атрибуты взаимно независимы.
Отношение СОТРУДНИКИ_ОТДЕЛЫ не находится в 3NF, т.к. имеется функциональная зависимость неключевых атрибутов (зависимость номера телефона от номера отдела): Н_ОТДТЕЛ.
Для того чтобы устранить зависимость неключевых атрибутов, нужно произвести декомпозицию отношения на несколько отношений. При этом те неключевые атрибуты, которые являются зависимыми, выносятся в отдельное отношение.
Отношение СОТРУДНИКИ_ОТДЕЛЫ нужно декомпозировать на два отношения – СОТРУДНИКИ и ОТДЕЛЫ.
Отношение СОТРУДНИКИ (Н_СОТР, ФАМ, Н_ОТД) включает следующие функциональные зависимости: Н_СОТРФАМ, Н_СОТРН_ОТД, Н_СОТРТЕЛ.
Таблица 6. – Отношение СОТРУДНИКИ
Н_СОТР |
ФАМ |
Н_ОТД |
1 |
Иванов |
1 |
2 |
Петров |
1 |
3 |
Сидоров |
2 |
Отношение ОТДЕЛЫ (Н_ОТД, ТЕЛ) включает функциональную зависимость номера телефона от номера отдела: Н_ОТДТЕЛ.
Таблица 7. – Отношение ОТДЕЛЫ
Н_ОТД |
ТЕЛ |
1 |
11-22-33 |
2 |
33-22-11 |
Отметим, что атрибут Н_ОТД, не являвшийся ключевым в отношении СОТРУДНИКИ_ОТДЕЛЫ, становится потенциальным ключом в отношении ОТДЕЛЫ. Именно за счет этого устраняется избыточность, связанная с многократным хранением одних и тех же номеров телефонов.
Таким образом, все обнаруженные аномалии обновления устранены. Реляционная модель данных, состоящая из четырех отношений СОТРУДНИКИ, ОТДЕЛЫ, ПРОЕКТЫ, ЗАДАНИЯ, находится в 3NF, является адекватной описанной модели предметной области и предполагает наличие только тех триггеров, которые поддерживают ссылочную целостность. Такие триггеры являются стандартными и не требуют больших усилий в разработке.
3.9 Алгоритм нормализации (приведение к 3nf)
Шаг 1 (Приведение к 1NF). На первом шаге задается одно или несколько отношений, отображающих понятия предметной области. По модели предметной области (не по внешнему виду полученных отношений!) выписываются обнаруженные функциональные зависимости. Все отношения автоматически находятся в 1NF.
Шаг 2 (Приведение к 2NF). Если в некоторых отношениях обнаружена зависимость атрибутов от части сложного ключа, то проводим декомпозицию этих отношений на несколько отношений следующим образом: те атрибуты, которые зависят от части сложного ключа выносятся в отдельное отношение вместе с этой частью ключа. В исходном отношении остаются все ключевые атрибуты:
Исходное отношение: .
Ключ: – сложный.
Функциональные зависимости:
– зависимость всех атрибутов от ключа отношения.
– зависимость некоторых атрибутов от части сложного ключа.
Декомпозированные отношения:
– остаток от исходного отношения. Ключ .
– атрибуты, вынесенные из исходного отношения вместе с частью сложного ключа. Ключ
Шаг 3 (Приведение к 3NF). Если в некоторых отношениях обнаружена зависимость некоторых неключевых атрибутов от других неключевых атрибутов, то проводим декомпозицию этих отношений следующим образом: те неключевые атрибуты, которые зависят от других неключевых атрибутов выносятся в отдельное отношение. В новом отношении ключом становится детерминант функциональной зависимости.
Исходное отношение: . Ключ: .
Функциональные зависимости:
– зависимость всех атрибутов от ключа отношения.
– зависимость некоторых неключевых атрибутов от других неключевых атрибутов.
Декомпозированные отношения:
– остаток от исходного отношения. Ключ .
– атрибуты, вынесенные из исходного отношения вместе с детерминантом функциональной зависимости. Ключ .
На практике, при создании логической модели данных, как правило, не следуют прямо приведенному алгоритму нормализации. Опытные разработчики обычно сразу строят отношения в 3NF. Кроме того, основным средством разработки логических моделей данных являются различные варианты ER-диаграмм. Особенность диаграмм заключается в том, что они сразу позволяют создавать отношения в 3NF. Тем не менее, приведенный алгоритм важен по двум причинам.
Во-первых, этот алгоритм показывает, какие проблемы возникают при разработке слабо нормализованных отношений.
Во-вторых, модель предметной области никогда не бывает правильно разработана с первого шага. Эксперты предметной области могут забыть о чем-либо упомянуть, разработчик может неправильно понять эксперта, во время разработки могут измениться правила, принятые в предметной области, и т.д. Все это может привести к появлению новых зависимостей, которые отсутствовали в первоначальной модели предметной области. Тут как раз и необходимо использовать алгоритм нормализации хотя бы для того, чтобы убедиться, что отношения остались в 3NF и логическая модель не ухудшилась.
У слабо нормализованных отношений есть единственное преимущество если к БД обращаться только с запросами на выборку данных, то они будут выполняться быстрее. Это связано с тем, что в слабо нормализованных отношениях не нужно выполнять операцию соединения отношений и на это не тратится время при выборке данных.
Таким образом, выбор степени нормализации отношений зависит от типа операций, которые планируется чаще выполнять над данными в базе.