Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_пособие_СУБД.doc
Скачиваний:
5
Добавлен:
08.12.2018
Размер:
9.89 Mб
Скачать
      1. Нормализация

Для правильной организации данных в таблицах используется понятие нормализации. Нормализация данных - процесс исключения избыточной информации, при котором достигается то, что каждый элемент информации запоминается только один раз. Теория и практические рекомендации по нормализации рассматриваются в книгах по реляционным базам данных, например, [3].

Нормализация нужна также для повышения эффективности БД. Сразу следует оговориться, что нормализуется вся база, при этом вносятся изменения в отдельные таблицы, при необходимости создаются новые, устанавливаются связи между ними и т.д.

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

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

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

Неповторяемость означает, что нет повторяемых значений полей в одной записи. Имеется в виду не та ситуация, когда указано несколько полей с одинаковыми значениями. Например, рассмотрим таблицу для реализации записной книжки. Какие поля здесь необходимы? Фамилия, имя, телефон, e-mail... А может несколько телефонов, e-mail? В наше время почти у каждого есть и рабочий, и домашний, и мобильный телефоны. Так сколько таких полей ввести в таблицу? Правильнее всего будет создать еще одну таблицу с телефонами, а в ней поместить ссылку на первую (смотри рисунок 1.4). Тогда можно будет для каждого абонента указать произвольное число телефонов.

Код

Фамилия

Адрес....

Чей

Какой

Номер

1

Иванов

1

Рабочий 1

23-45-67

2

Петров

1

Рабочий 2

23-45-98

1

Домашний

11-34-98

2

Домашний

45-09-87

...

...

...

Рис. 1.4. Таблицы записной книжки

Этот процесс называется разбиением таблицы на главную и подчиненную. При этом обе таблицы находятся в отношении "один-ко-многим".

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

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

Рассмотрим приведение БД к третьей нормальной форме на примере решения задачи автоматизации процесса отпуска товаров со склада по накладной. В начале, представим необходимые для этой задачи показатели в виде одной таблицы (смотри таблицу 1.1).

Таблица 1.1. ОТПУСК-ТОВАРОВ-СО-СКЛАДА

Дата

Покупатель

Город

Адрес

Товар

Ед_измерения

Цена_за_ед_изм

Отпущено_ед

Общая_стоимость

Номер_накладной

Далее осуществим ее нормализацию. На рисунке 1.5 изображена схема этой БД, приведенной к третьей нормальной форме.

ТОВАРЫ ПОКУПАТЕЛИ

НАКЛАДНЫЕ

ОТПУСК_ТОВАРОВ_СО_СКЛАДА

Рис. 1.5. Схема базы данных для накладной отпуска товаров

Рассмотрим все плюсы и минусы нормализации данных:

«+»:

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

  • в случае изменений в данных эти изменения нужно проводить только в одном месте.

«-»:

  • чем шире число сущностей, охватываемых предметной областью, тем из большего числа таблиц будет состоять нормализованная БД;

  • уменьшается целостное восприятие БД как системы взаимосвязанных данных;

  • при составлении запросов необходимо считывать связанные данные из нескольких таблиц.

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