double arrow

Пример нормализации отношений

Разберем на примере создание базы данных с помощью нормализации. Дан документ «Накладная» (рисунок 16), необходимо создать базу данных, приведенную к 3НФ.

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

1. Определить поле, которое можно назначить первичным ключом. Если такого поля нет, то добавить новое уникальное ключевое поле.

2. Определить группы повторяющихся полей.

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

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

5. Определить тип отношения между таблицами.

Накладная № 123 ДатаПокупательАдрес 10.10.2006 ООО "Весна" Тольятти, ул. Промышленная, 9
Название товара Количество Ед. изм. Цена за ед. изм., рубю Стоимость, руб.
  Ручка шариковая № 1   шт.    
  Ручка шариковая № 3   шт.    
  Ручка шариковая № 4   шт.    
  Карандаш КОН-НВ   шт.    
  Корректор   шт.    
  Клей канц. № 2   шт.    
  Тетрадь кл. 18 л.   шт.    
  Тетрадь кл. 12 л.   шт.    
             
      Итого    


Рисунок 16 - Исходные документы для создания базы данных

Разделим семантически неделимые поля, например «Адрес», выделив из него поле «Город». Исключая повторяющиеся группы, выделим поле «Название товара». В качестве идентификатора добавим поля «Код товара» и «Код покупателя».

На рисунке 17 представлена база данных, приведенная к 1НФ.

Для приведения к 2НФ необходимо:

1) вынести все частично зависимые поля в отдельную таблицу;

2) определить ключевые поля;

3) установить отношения между таблицами.

Рисунок 17 - База данных, приведенная к 1НФ

На рисунке 18 представлена база данных, приведения к 2 НФ.

 
 


Рисунок 18 - База данных, приведенная к 2НФ

Определим поля «Код товара», «Код покупателя», «Дата» и «Номер накладной» как ключевые. Выделим в отдельные таблицы информацию, связанную с товаром, покупателями и накладными. Определим связь 1:1 между таблицами ПОКУПАТЕЛИ и НАКЛАДНЫЕ, и связь 1:М между таблицами НАКЛАДНЫЕ и ОТПУСК_ТОВАРА_СО_СКЛАДА, ТОВАР и ОТПУСК_ТОВАРА_СО_СКЛАДА.

Для приведения к 3НФ необходимо из таблиц исключить поля, которые не зависят от ключа.

Исключаем вычисляемые поля «Стоимость» и «Итог».

На рисунке 19 представлена база данных, приведенная к 3НФ.


Рисунок 19 - База данных, приведенная к 3НФ


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: