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

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

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

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

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

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

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

Код

Фамилия

Адрес....

Чей

Какой

Номер

1

Иванов

1

Рабочий 1

23-45-67

2

Петров

1

Рабочий 2

23-45-98

1

Домашний

11-34-98

2

Домашний

45-09-87

...

...

...

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

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

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

Рассмотрим пример приведения БД к третьей нормальной форме на примере накладной. Пусть необходимо автоматизировать процесс отпуска товаров со склада по накладной. Сведем имеющиеся данные в одну таблицу:

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

Дата

Покупатель

Город

Адрес

Товар

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

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

Отпущено_ед

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

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

Далее на схеме та же БД, приведенная к третьей нормальной форме.

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

Товар

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

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

НАКЛАДНЫЕ

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

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

«+»:

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

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

«-»:

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

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

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

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