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

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

Приступая к изучению данного материала, рекомендуется ознакомиться с описанием учебной БД.

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

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

Нормализация баз данных заключается в приведении структуры хранения данных к нормальным формам (NF). Всего таких форм существует 8, но часто достаточным является соблюдение первых трех. Рассмотрим их более подробно на примере учебной базы данных. Примеры будут строится по принципу «что было бы, если было иначе, чем сейчас».

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

Основным правилом первой формы является необходимость неделимости значения в каждом поле (столбце) строки – атомарность значений.

Рассмотрим таблицы сотрудников и телефонных линий.

Пример 1 нормальной формы

Чтобы избавиться от связывающей таблицы «Сотрудники_Линии», мы могли бы записать идентификаторы сотрудников для каждой линии в виде перечня в дополнительном столбце:

Пример нарушения атомарности значений в таблице

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

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

Помимо атомарности к первой нормальной форме относятся следующие правила:

  • Строки таблиц не должны зависеть друг от друга, т.е. первая запись не должна влиять на вторую и наоборот, вторая на третью и т.д. Размещение записей в таблице не имеет никакого значения.
  • Аналогичная ситуация со столбцами записей. Их порядок не должен влиять на понимание информации.
  • Каждая строка должна быть уникальна, поэтому для нее определяется первичный ключ, состоящий из одного либо нескольких полей (составной ключ). Первичный ключ не может повторяться в пределах таблицы и служит идентификатором записи.

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

Условием этой формы является отсутствие зависимости неключевых полей от части составного ключа.

Так как составной ключ в учебной базе наблюдается только в таблице «Сотрудники_Линии», то рассмотрим пример на ней.

Нарушение 2NF

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

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

Если соблюдены правила первой нормальной формы, то создание таблицы «Линии» и перенос в нее зависимых столбцов удовлетворяет второй нормальной форме.

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

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

На приведенном примере таблицы сотрудников видно, что столбец «Супервайзер» имеет зависимость от столбца «Группа», а это значит, что при изменении значения поля группы, потребуется изменить значение поля супервайзера.

Нарушение 3NF

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

Приведение таблиц к 3NF

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

Теория нормальных форм не всегда применима на практике. Например, неатомарные значения не всегда являются «злом», а иногда наоборот. Связано это с необходимостью дополнительного объединения (следовательно, затрат производительности системы) при выполнении запросов, особенно когда производится обработка большого массива информации.

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

Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы я мог развивать его дальше.

Комментарии  

# Алексей Савчук 19.02.2021 12:47
Всем привет) Сайт бомба) Ставлю лайк)
Ответить | Ответить с цитатой | Цитировать
# 220v110 23.08.2020 13:57
у меня вопрос по "Третья нормальная форма
". Вторая таблица. Правильно ли я понял, что группы и сотрудники соединены по Группы.id с Сотрудники.груп па, а как эти таблицы связаны в другую сторону?
Ответить | Ответить с цитатой | Цитировать
# Андрей 23.08.2020 14:45
"В другую сторону" видимо подразумевается связь сотрудники.id и группы.супервай зер. Данная связь необходима для обеспечения целостности данных, т.к. супервайзер, это обязательно один из сотрудников.
Надеюсь, я правильно понял вопрос)
Ответить | Ответить с цитатой | Цитировать
# Роман 15.03.2020 01:15
Хорошая статья. Жаль, что не рассказали про нормальную форму Бойса-Кодда.
Ответить | Ответить с цитатой | Цитировать
# Враг 13.02.2020 07:39
Я не понимаю
Ответить | Ответить с цитатой | Цитировать
# Андрей 13.02.2020 09:47
На какой вопрос для себя Вы пытаетесь ответить? Что именно вызывает непонимание?
Ответить | Ответить с цитатой | Цитировать

Добавить комментарий


Этот сайт имеет отличия от других сайтов мира качеством порно и добротой, с которой мы отбираем наши порно видео для Вас! Также, сохранение роликов на нашем портале и категории инцест порнографии совершенно бесплатен и не требует регистрации, как на подобных сайтах! | Индивидуалки в Ноосибирске - самые страстные и нежные! | Доверьтесь только проверенным проституткам Тюмени. | Анкеты индивидуалок Пензы готовы предложить вам незабываемый опыт настоящего удовольствия. | Индивидуалки в Перми предложат вам незабываемые эротические удовольствия. | Анкеты индивидуалок Саратова готовы исполнить все ваши желания. | Анкеты индивидуалок Самары удовлетворят все ваши желания. | В Ульяновске можно найти проституток, которые знают, как удовлетворить самые изысканные вкусы. | Доверьтесь проверенным проституткам Красноярска и они позаботятся о вашем удовольствии. | Недорогие проститутки Бийска - отличный выбор для тех, кто хочет экономить без потери качества. | Шлюхи Калуги готовы исполнить любые ваши фантазии. | Анкеты индивидуалок Таганрога предлагают непревзойденное удовольствие и полный контроль над встречей.

© 2011 - 2022 Office-Menu.ru - Уроки и статьи по Excel и SQL