1.2 Теория нормальных форм
Можно доказать, что любую структуру данных можно преобразовать в простую двухмерную таблицу. Такое представление является наиболее удобным и для пользователя, и для машины, - подавляющее большинство современных информационных систем работает именно с такими таблицами, т.е. с реляционными базами данных.
Основная идея реляционного подхода состоит в том, чтобы представить произвольную структуру данных в виде двухмерной таблицы, т.е. нормализовать структуру.
Каждая запись в таблице должна иметь первичный ключ, т.е. идентификатор (или адрес), значение которого однозначно определяет эту и только эту запись. Первичный ключ должен обладать двумя свойствами.
Однозначная идентификация записи: запись должна однозначно определяться значением ключа.
Отсутствие избыточности: никакое поле нельзя удалить из ключа, не нарушая при этом свойства однозначной идентификации.
Каждое значение первичного ключа в пределах таблицы должно быть уникальным. В противном случае невозможно отличить одну запись от другой. Указание ключа - это единственный способ отличить одну запись от другой. Обычно используют придуманные разработчиком уникальные цифровые значения - код, табельные номера и т.д.
Кроме первичного, могут использоваться так называемые простые (или вторичные) ключи таблицы. Простых ключей может быть множество. Они используются при упорядочивании (индексировании) таблиц.
Процесс превращения иерархической или сетевой структуры данных в реляционную называется нормализацией. Внешне эта операция очень проста, но содержит некоторые нюансы, игнорирование которых может привести к неприятностям. Нюансы эти заключаются в том, что даже для простых двухмерных структур приходится подправлять состав полей.
Например, мы включим в таблицу поле, значение которого не зависит от первичного ключа. В таком случае появляется возможность утери информации. Однако важнее другое: повторяя многократно одни и те же данные, мы не только переделаем массу лишней работы, но и неминуемо ошибемся. Поэтому следует стремиться к исключению из таблицы полей, которые не связаны непосредственно с первичным ключом таблицы. Для этого, помимо оперативной, можно создать несколько справочных таблиц. Оперативная таблица меняется часто, а справочники - редко, их легко выправить раз и навсегда, внося в дальнейшем лишь небольшие изменения.
При проектировании таблиц рекомендуются следующие "золотые правила":
Надо уяснить себе, что есть первичный ключ таблицы (т.е. убедиться, что двух записей с одинаковым значением ключа в таблице быть не может)
Если первичный ключ не просматривается, подумать, правильно ли подобран состав полей
Если первичный ключ безупречен, к нему можно дописывать любые атрибуты, зависящие только от ключа.
Если при просмотре подготовленной БД в паре таблиц обнаружится одноименное поле, которое не входит в первичный ключ ни одной из этих таблиц, - это ошибка нормализации. Система не сможет контролировать согласованность значений таких полей.
Состав атрибутов отношений БД должен удовлетворять двум основным требованиям:
Между атрибутами не должно быть нежелательных функциональных зависимостей (ФЗ);
Группировка атрибутов должна обеспечивать минимальное дублирование данных.
Удовлетворение этих требований достигается нормализацией отношений БД - пошаговый обратимый процесс декомпозиции (разложения) исходных отношений на более мелкие и простые отношения. При этом устраняются все нежелательные функциональные зависимости. Аппарат нормализации был разработан Е. Коддом.
В чём определяются различные нормальные формы (НФ)? Кодд выделил три НФ. На сегодня определены ещё четвёртая и пятая. Каждая НФ ограничена определённым типом ФЗ и устраняет соответствующие аномалии при вычислении операций над отношениями. При декомпозиции встает проблема обратимости. Декомпозиция гарантирует такое восстановление без потерь. В результате применения последовательности операций естественных соединений над проекциями исходных отношений должно получиться отношение, эквивалентное исходному, причём в результирующем отношении не должны появляться раньше отсутствующие кортежи - следствия ошибочного соединения.
Если есть атрибуты А и В, говорят что В функционально зависит от А, если для каждого значения А в любой момент времени существует ровно одно связанное с ним значение В, причём А и В могут быть составными - представлять собой группы, состоящие из 2-х и более атрибутов.
I нормальная форма
Простой атрибут - атрибут, значения которого неделимы, атомарны.
Сложный атрибут - атрибут, значение которого представляет собой конкатенацию значений одного/нескольких доменов (аналоги - агрегат, вектор, повторяющаяся группа)
Отношение находится в первой нормальной форме (НФ), если все атрибуты простые (атомарные) и нет повторяющихся групп. Отношение в I НФ должно быть прежде постановки вопроса о разбиении на два или более отношений, т.е. к I НФ необходимо привести универсальное отношение.
Универсальное отношение - отношение, в состав которого входят все атрибуты проектируемой БД.
Пример:
Сотрудники
ФИО |
Таб. № |
Отдел |
Тел. |
Дети |
||
Имя |
Возраст |
|||||
Борисов Борисов |
211 211 |
СС СС |
3-57 3-57 |
Иван Миша |
10 15 |
|
Андреев Андреев |
364 364 |
УП УП |
2-15 2-15 |
Маша Егор |
6 4 |
II нормальная форма
Отношение находится во II НФ, если оно находиться в I НФ, и каждый не ключевой атрибут функционально полно зависит от составного ключа.
Чтобы привести отношение ко 2 НФ необходимо:
Построить его проекцию, исключив атрибуты, которые не находятся в полной функциональной зависимости от составного ключа;
построить дополнительно одну или несколько проекций на часть составного ключа и атрибуты, функционально зависящие от этой части ключа. Атрибуты, функционально зависящие от одной и той же части ключа, объединяются в одно отношение.
Пример:
Универсальное отношение "Сотрудник" разбивается на два отношения:
Сотрудники Дети
Таб. № |
ФИО |
Отдел |
Тел. |
Таб. № |
Имя |
Возраст |
|
211 |
Борисов |
СС |
3-57 |
211 |
Иван |
10 |
|
211 |
Миша |
15 |
|||||
364 |
Андреев |
УП |
2-15 |
364 |
Маша |
6 |
|
364 |
Егор |
4 |
Наличие транзитивной зависимости порождает неудобства и аномалии следующего характера (например, атрибут Тел.):
Имеет место дублирование информации для сотрудников одного отдела;
Существует проблема контроля избыточности, поскольку изменение номера телефона отдела ведёт к необходимости поиска и замены номеров сотрудников отдела;
Аномалия добавления и удаления: нельзя включить данные о новом отделе, если на данный момент отсутствуют его сотрудники, и наоборот: при увольнении всех сотрудников отдела данные о нём нельзя сохранить.
Таким образом, отношение во II НФ также может потребовать дальнейших преобразований.
III нормальная форма
Отношение находиться в III НФ, если оно находиться во II НФ и в нём отсутствует транзитивная зависимость неключевых атрибутов от ключа.
Для преобразования к III НФ необходимо построить несколько проекций.
Пример:
(в нашем случае -- отношение "Сотрудник" разбить на два: Отдел - Тел.,
Таб. № - ФИО - Отдел).
Сотрудники |
Отдел |
Дети |
||||
Таб. № |
ФИО |
Отдел |
Отдел |
Тел. |
Дети - // - |
|
211 |
Борисов |
СС |
СС |
3-56 |
||
364 |
Андреев |
УП |
УП |
2-15 |
В итоге получили три таблицы: "Сотрудники", "Отдел", "Дети"
III НФ освобождает от избыточности и аномалий редактирования, если отношения имеют один ключ и другие зависимости (в т.ч. многозначные) в нём отсутствуют.
Но если имеются многозначные зависимости от ключа, то III НФ не обеспечивает отсутствия аномалий обновления. В этом случае применяют усиленную III НФ.
Усиленная III нормальная форма (Бойса-Кодда) НФБК
Отношение находятся в НФБК, если оно находится в III НФ, и в нём отсутствуют зависимости ключей от не ключевых атрибутов.
Пусть имеется отношение R(А, В, С) с ключом К = {А, В}. Между атрибутами этого отношения существуют ФЗ А, В С и С В:
А, В С - зависит от ключа
С В - зависимость ключа от не ключевых атрибутов
Пример:
А - адрес, В - город, С - индекс;
Проект (Деталь#, Проект#, Поставщик#);
Дет#, Пр# Пост#, Пост# Пр#
Каждый проект может обслуживаться несколькими поставщиками, но любой поставщик обслуживает только один проект.
Для приведения к НФБК необходимо выполнить
;
.
Хотя существует НФ более высокого уровня, которые накладывают даже более сильные ограничения на отношения, на практике обычно стараются получить отношение НФБК.
Переход к НФБК происходит не по схеме , а с использованием более общего подхода к декомпозиции отношения.
IV нормальная форма
Отношение, находится в IV НФ, если оно находится в НФБК, но в нем отсутствуют многозначные зависимости. IV НФ показывает, что отношение может находиться в НФБК, но тем не менее могут существовать аномалии, особенно при добавлении.
Например, для отношения преподаватель Препод (ФИО, группа, предмет) при появлении у преподавателя новой группы в отношение приходится добавлять не один кортеж, а столько, сколько предметов он читает в этой группе. Аналогичная ситуация возникает при добавлении в отношение нового предмета.
Устранение аномалий достигается разложением исходного отношения на несколько отношений с многозначной зависимостью от одного и того же ключа.
В нашем случае "Препод" разбивается на:
Предмет (ФИО, предмет)
Группа (ФИО, группа)
- Введение. Понятие информации и информационной системы. Требования к организации данных
- Глава 1. Базы данных
- 1.1 Модели баз данных
- 1.1.1 Реляционная модель
- 1.1.2 Иерархическая модель
- 1.1.3 Сетевая модель
- 1.1.4 Объектно-ориентированная модель данных
- 1.2 Теория нормальных форм
- 1.3 Достоверность и безопасность информации
- Глава 2. Основы разработки базы данных