Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
IV.docx
Скачиваний:
52
Добавлен:
11.04.2015
Размер:
107.1 Кб
Скачать

1.9 Нормализация таблиц и ее необходимость

При проектировании структуры базы данных заказчик часто предоставляет разработчику описание используемых форм и бланков, существующих в бумажном виде. При простом переносе бумажных форм в таблицы базы данных неизбежно возникнет ряд проблем. Практически для всех таблиц важны проблемы добавления изменения и удаления данных.

Нормализация таблиц — это формальный аппарат ограничений на формирование таблиц, описывающий разбиение таблиц на две или более частей и обеспечивающий создание лучших методов добавления, изменения и удаления данных. Нормализация позволяет устранить дублирование, обеспечивает непротиворечивость хранимых данных и уменьшает трудозатраты на ввод и изменение данных. Окончательной целью нормализации является получение такого проекта базы данных, в котором любая часть информации хранится лишь в одном месте, то есть, исключается избыточность информации. Это делается не столько с целью экономии места (в некоторых случаях нормализованные таблицы занимают больше места, чем ненормализованные), сколько для исключения возможности противоречий в хранимых данных. Если исходить из структуры данных, то нормализацией называется процесс превращения сетевой или иерархической структуры данных в реляционную модель.

Внешне операции нормализации выглядят достаточно просто, но при практической реализации возникают определенные трудности, так как даже для простых таблиц часто приходится поправлять состав колонок.

Таблица считается нормализованной на определенном уровне, если она удовлетворяет условиям, накладываемым соответствующей формой нормализации. Процесс нормализации представляет собой последовательное изменение структур таблиц до тех пор, пока она не будет удовлетворять требованиям последней формы нормализации. Всего существует шесть форм нормализации:

  • первая нормальная форма (First Normal Form — 1NF);

  • вторая нормальная форма (Second Normal Form — 2NF);

  • третья нормальная форма (Third Normal Form — 3NF);

  • нормальная форма Бойса—Кодда (B—Codd Normal Form — BCNF);

  • четвертая нормальная форма (Fourth Normal Form — 4NF);

  • пятая нормальная форма, или нормальная форма проекции-соединения 5NF, или PJ/NF).

На практике чаще всего используются первые три формы нормализации, обеспечивающие достаточный уровень нормализации и в то же время легко реализуемые на практике. При приведении к последней, пятой нормальной форме таблица считается полностью нормализованной. Использование последних трех форм оправдано только в том случае, если таблица имеет несколько десятков колонок, так как полная нормализация таблиц достаточно затруднительна и требует значительных усилий.

При описании нормальных форм используются несколько понятий:

  • функциональной зависимостью между полями А и В называется зависимость, при которой каждому значению А в любой момент времени соответствует единственное значение В из всех возможных;

  • полной функциональной зависимостью между составным полем А и полем В называется зависимость, при которой поле В зависит функционально от поля А и не зависит функционально от любого подмножества поля А;

  • транзитивная функциональная зависимость между полями А и С наблюдается в том случае, если поле В функционально зависит от поля А и поле С функционально зависит от В. В то же время, обратная зависимость отсутствует;

  • несколько полей взаимно независимы, если ни одно из них не является функционально зависимым от другого поля;

  • неключевым полем таблицы называется каждое поле, не входящее в состав первичного ключа.

Первая нормальная форма

Таблица находится в первой нормальной форме тогда и только тогда, когда ни одно поле строки не содержит более одного значения и любое ключевое поле не пусто.

Первая нормальная форма является основой реляционной модели данных. Любая таблица в реляционной базе данных автоматически находится в первой нормальной форме, иное просто невозможно по определению. Любой домен, а, следовательно, и колонка состоит из множества атомарных значений, которые не могут быть разложены на более мелкие составляющие.

Таблица, находящаяся в первой нормальной форме, обладает рядом недостатков.

Добавление новых данных требует ввода значений для всех колонок, даже если в таблице уже существуют необходимые данные. Налицо избыточность данных. Рано или поздно при вводе дублирующихся данных будет допущена ошибка, что приведет к возникновению двух различных значений.

Нельзя также добавить информацию ранее, чем она понадобится.

Чтобы избежать проблем, необходимо привести таблицу ко второй или третьей нормальной форме.

Вторая нормальная форма

Таблица находится во второй нормальной форме, если она удовлетворяет требованиям первой нормальной формы и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом.

Если таблица имеет простой первичный ключ, состоящий только из одной колонки, то она автоматически находится во второй нормальной форме. Если же первичный ключ составной, то таблица необязательно находится во второй нормальной форме и тогда необходимо разделить ее на две или более таблиц таким образом, чтобы первичный ключ однозначно идентифицировал значение любой колонки. Если в таблице имеется хотя бы одно поле, не зависящее от первичного ключа, то в первичный ключ необходимо включить дополнительные колонки. Если таких колонок нет, то необходимо добавить новую колонку.

Простое разбиение таблицы на несколько более мелких таблиц может привести к потере логической целостности данных. Необходимо предусмотреть создание дополнительных колонок, которые могут быть использованы в качестве первичного ключа в каждой таблице. Используя этот ключ, можно будет легко связывать данные, расположенные в разных таблицах.

Приведение таблицы ко второй нормальной форме позволяет избежать повторения одних и тех же данных, появившегося после приведения таблицы к первой нормальной форме.

Третья нормальная форма

Таблица находится в третьей нормальной форме, если она удовлетворяет определению второй нормальной формы и ни одно из ее неключевых полей не зависит функционально от любого другого не ключевого поля.

Таблица находится в третьей нормальной форме, если она находится во второй нормальной форме и каждое не ключевое поле нетранзитивно зависит от первичного ключа. Под «нетранзитивной зависимостью» подразумевается отсутствие какой-либо взаимной зависимости.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]