Вход

Нормализация базы данных

Нормализация базы данных

При построении баз данных необходимо следовать определённым правилам. Эти правила получили название нормализации баз данных. Нормализация базы данных является не обязательной, но эти правила существенно упростят работу по составлению запросов и способствуют улучшению масштабируемости.

Нормализация базы данных

Нормализация базы данных – это рекомендации по проектированию.

Преимущества нормализованной базы данных:

  • Возможность существенно упростить выборки. Получение данных из базы относительно простыми запросами.
  • Целостность данных. Избежание потерь или искажения информации в базе данных.
  • Отсутствие избыточности. Данные в таблице не дублируются, что существенно снижает её размер.
  • Благоприятные предпосылки к росту базы.

 

Как привести базу данных к нормальной форме?

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

  1. Постараться объединить данные в группы.
  2. Найти логические связи между этими группами данных. Для установки связей связываемые поля должны быть одного типа и таблица формата InnoDB.

 

Существует 3 нормальные формы базы данных:

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

    В одной ячейке одно значение. Исключение тип данных SET

    Таблица представляет сущность которая в ней размещена (например клиенты, заказы и т.д.) Причём в каждой таблице имеется уникальное поле (первичный ключ) например id и каждая таблица состоит из наименьшего количества полей.
     
    Пример №1:

    id name languages
    1 Иван Java, C++, PHP
    2 Пётр PHP, JavaScript
    3 Михаил C#, JavaScript

    В примере №1. Представлена не удачная структура таблицы, где в поле languages указано перечисление.
     
    Пример №2:

    id name languages1 languages2 languages3
    1 Иван Java C++ PHP
    2 Пётр PHP JavaScript NULL
    3 Михаил C# JavaScript NULL

     
    В примере №2 тоже не верная структура таблицы для поля languages.
     
    Правильная структура таблиц для решения данной задачи:
     
     
    Пример №3:
     

    Таблица пользователей

    id name languages
    1 Иван Java, C++, PHP
    2 Пётр PHP, JavaScript
    3 Михаил C#, JavaScript

     

    Таблица языков программирования

    id language
    1 Java
    2 PHP
    3 C#
    4 JavaScript
    5 Java

     

    Таблица связей между пользователями и языками программирования

    id language_id user_id
    1 2 1
    2 1 1
    3 5 1
    4 1 2

     

  2. Вторая нормальная форма
    Для второй нормальной формы требуется первая нормальная форма.

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

    Пример №4:

    id make model
    1 bmw X5
    2 bmw X6
    3 audi A4
    4 audi Q5
    5 toyota corolla

    В примере №4 мы видим дублирование некоторых марок автомобилей (Данные избыточны). Требуется сделать разделение на несколько таблиц как в примере №3. На первый взгляд создание новых таблиц кажется более затратным чем реализация в примере №4, но это только до тех пор когда таблица состоит всего из нескольких строк.
     
    Правильная структура таблиц для решения данной задачи:

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

    Пример №5:

    Таблица цен и цен с НДС

    id price price_nds
    1 1100 1243
    2 950 1074

    Так как цену с НДС можно получить из поля price, то данную задачу нужно переложить на язык программирования.

28 декабря 2017 /

30010 Views /

0 Comment
Ilya Web developer
Author

«Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.»Martin Golding