- •Введение
- •1. Информационная система (ис):
- •2.Типы и структуры данных
- •2.1.Основные типы данных
- •2.1.Методы доступа к данным
- •2.1.1.Методы поиска по дереву
- •2.2.2.Хеширование
- •3. Представление данных с помощью модели "сущность-связь".
- •3.1.Элементы модели
- •3.2.Диаграмма "сущность-связь".
- •4. Даталогические модели
- •4.1.Иерархическая модель данных
- •4.1.1.Структура данных
- •4.1.2.Операции над данными, определенные в иерархической модели:
- •4.1.3. Ограничения целостности
- •4.2. Сетевая модель данных
- •4.2.1. Структура данных
- •4.2.2.Операции над данными
- •4.3. Реляционная модель данных
- •1. Основные понятия
- •4.3.1. Структура данных
- •4.3.2. Фундаментальные свойства отношений
- •4.3.2.1. Отсутствие кортежей-дубликатов
- •4.3.2.2. Отсутствие упорядоченности кортежей
- •4.3.2.3. Отсутствие упорядоченности атрибутов
- •4.3.2.4. Атомарность значений атрибутов
- •4.3.3.Свойства отношений.
- •4.3.4. Реляционная модель и модель сущность - связь
- •4.3.4.1. Преобразование er-модели в реляционную модель
- •5. Языки запросов к реляционным базам данных
- •5.1. Реляционная алгебра
- •Общая интерпретация реляционных операций
- •Замкнутость реляционной алгебры и операция переименования
- •Правила записи выражений реляционной алгебры
- •5.2. Реляционное исчисление кортежей
- •5.3. Реляционное исчисление доменов
- •5.3. Ограничения реляционных баз данных
- •5.4. Постреляционные субд
- •6. Проектирование информационных систем и баз данных
- •Информационное моделирование процессов предметной области и применение потоковых диаграмм
- •7. Проектирование реляционных баз данных с использованием нормализации
- •7.1. Основные свойства нормальных форм
- •7.2. Функциональная зависимость
- •2. Ни для какого зависимость
- •7.2.1. Аксиомы функциональных зависимостей
- •7.2.2. Вычисление замыканий
- •7.2.3. Полная функциональная зависимость
- •7.2.4. Транзитивная функциональная зависимость
- •7.2.5.2. Вторая нормальная форма
- •7.2.5.3. Третья нормальная форма
- •7.2.5.4. Нормальная форма Бойса-Кодда
- •7.2.5.5. Четвертая нормальная форма
- •7.2.5.6. Пятая нормальная форма
- •7.2.6. Функциональные зависимости и проектирование базы данных.
- •Дополнительная литература
7. Проектирование реляционных баз данных с использованием нормализации
Реляционная модель позволяет различным образом соединять отношения, связывая их через атрибуты. При этом большое внимание отводится устранению избыточности представления данных. Процесс декомпозиции отношений, связанный с устранением избыточности называется нормализацией. Нормальные формы определяют возрастающую строгость правил, которым подчиняются структуры отношений. Имеющиеся отношения разбиваются на более мелкие так, чтобы посредством определенных операций можно было восстановить исходное отношения. Это совокупность действий называется декомпозицией без потерь. При проектировании схем баз данных центральное место отводится идее зависимости данных.
Рассмотрим схему отношения: СОТРУДНИКИ-ОТДЕЛЫ-ПРОЕКТЫ
(СОТР_ИМЯ, СОТР_ЗАРП, ОТД_НОМЕР, ПРО_НОМЕР, СОТР_ЗАДАН)
Мы предполагаем, что каждый сотрудник может работать только в одном отделе, что зарплаты сотрудников определяются отделом, в котором они работают, и каждый сотрудник выполняет некоторое задание в рамках некоторого проекта
СОТР_ИМЯ |
СОТР_ЗАРП |
ОТД_НОМЕР |
ПРО_НОМЕР |
СОТР_ЗАДАН |
Козлов |
10000 |
Отдел 2 |
Проект 2 |
Анализ данных |
Козлов |
10000 |
Отдел 2 |
Проект 3 |
Проектирование |
Иванов |
9000 |
Отдел 3 |
Проект 2 |
Программирование |
Максимов |
10000 |
Отдел 2 |
Проект 1 |
Анализ данных |
Иванов |
9000 |
Отдел 3 |
Проект 1 |
Анализ данных |
Избыточность: Номер отдела повторяется несколько раз для некоторых сотрудников
Аномалии обновления: Мы не можем перевести сотрудника из одного отдела в другой, обновляя данные об отделах в единственном кортеже. В результате может оказаться, что сотрудник работает в нескольких отделах, хотя это противоречит условия проекта.
Аномалии вставки: Мы не можем включить в список нового сотрудника, если он не участвует в некотором проекте.
Аномалии удаления: Если мы завершаем работу с некоторым проектом и удаляем его из базы данных, то мы вынуждены удалить всех сотрудников, которые принимали участие в этом единственном проекте.
Далее будет рассмотрен классический подход, при котором весь процесс проектирования производится в терминах реляционной модели данных методом последовательных приближений к удовлетворительному набору схем отношений. Процесс проектирования представляет собой процесс нормализации схем отношений, причем каждая следующая нормальная форма обладает свойствами лучшими, чем предыдущая.
В теории реляционных баз данных обычно выделяется следующая последовательность нормальных форм:
первая нормальная форма (1NF);
вторая нормальная форма (2NF);
третья нормальная форма (3NF);
нормальная форма Бойса-Кодда (BCNF);
четвертая нормальная форма (4NF);
пятая нормальная форма, или нормальная форма проекции-соединения (5NF или PJ/NF).
7.1. Основные свойства нормальных форм
каждая следующая нормальная форма в некотором смысле лучше предыдущей;
при переходе к следующей нормальной форме свойства предыдущих нормальных свойств сохраняются.
7.2. Функциональная зависимость
В отношении R атрибут Y функционально зависит от атрибута X (X и Y могут быть составными) в том и только в том случае, если каждому значению X соответствует в точности одно значение Y: Такую функциональную зависимость будем обозначать R.X R.Y (FD – functional dependency). Например: СОТР_ИМЯ ОТД_НОМЕР или (СОТР_ИМЯ, ПРО_НОМЕР) СОТР_ЗАДАН. Функциональная зависимость обозначается X Y. На практике, функциональная зависимость – удобный способ отразить факт, что для любого отношения существует некий набор атрибутов, который позволяет однозначно определить значения других неуникальных атрибутов.
Для определения зависимостей необходимо проанализировать семантику атрибутов отношения . Функциональные зависимости являются отражением зависимостей, существующих в реальном мире. Включение соответствующей зависимости в проект принимается проектировщиком системы. Например включение зависимостиСОТР_ИМЯ ОТД_НОМЕР означает, что сотрудник не может одновременно работать в двух отделах (запрет на совмещение).
Из определенных зависимостей могут вытекать другие зависимости: например, СОТР_ИМЯ ОТД_НОМЕР И ОТД_НОМЕР СОТР_ЗАРП дают зависимость (СОТР_ИМЯ, ОТД_НОМЕР) (ОТД_НОМЕР, СОТР_ЗАРП). Пусть есть множество функциональных зависимостей для схемы отношенияинекоторая функциональная зависимость. Говорят, чтологически следует из, если для каждого отношениясо схемой, удовлетворяющего зависимостям из, выполняется. В частности,ивлечет. Обозначим через- замыкание множествафункциональных зависимостей. Если, то говорят, что- полное семейство зависимостей.
Пример: Пусть и. Тогдасостоит из всех зависимостей, для которых выполняется одно из условий:
1. содержит. Например,,,
2. содержити не содержит.не содержит. Например,,
3. одна из зависимостейили
На языке функциональных зависимостей можно выразить понятие ключа:
Если схема отношенияс функциональными зависимостями из, а Х подмножество множества, то Х называется ключом, если
1.