Порядок в работе с данными важен в любой сфере деятельности. В данной статье мы рассмотрим нормализацию базы данных и ее виды. Также приведем примеры для полноты понимания отношений между разными таблицами в нормализованной базе данных.
Нормализация БД представляет собой процесс организации информации определенным образом и по установленным рекомендациям проектирования. Все таблицы и отношения (связи) между ними должны создаваться согласно правилам. Таким образом, будет обеспечиваться необходимый уровень сохранности и безопасности данных, а сама база может своевременно дополняться и корректироваться. Оператор сможет быстро устранять из нее все несогласованные избыточности или зависимости.
Плюсы нормализации баз данных
Нормализацию нельзя назвать обязательным мероприятием, но у нее есть целый ряд положительных черт.
- Нормализация упрощает процессы выборки. В данном случае речь идет об упрощении составления запросов. Пользователь легко может получить информацию по простейшему запросу.
- Обеспечение целостности данных. В процессе нормализации сокращается вероятность искажения и потери важной информации.
- Улучшенная масштабируемость. При соблюдении всех правил нормализации постепенно создаются благоприятные условия для расширения такой базы.
- Отсутствие избыточности. Большой объем информации задействует огромную часть свободного места на жестком диске и усложняет процесс обслуживания информации. В некоторых случаях возникают множественные повторяющиеся записи и одинаковая информация сразу в нескольких местах. Из-за этого пользователи вынуждены вносить изменения сразу во все источники информации. Это очень трудоемкое занятие нередко приводит к ошибкам. Намного проще сделать таким образом, чтобы данные по одному подразделению или участку хранились в соответствующей таблице и больше нигде. Избыточность предполагает постоянное дублирование данных, усложняет работу с базой данных и раздувает ее размер.
- Отсутствие несогласованных зависимостей. Всевозможные нестыковки и несогласованные зависимости также усложняют доступ к информации, поскольку путь к данным может быть нелогичным и неверным. Например, в таблице «Sities» более логично искать адреса и количество жителей, а не адреса и имена жителей. Для этой информации надо создавать другую таблицу, к примеру «Sitizens».
Как выполнить нормализацию базы данных?
Для того, чтобы привести конкретную базу данных к нормальному виду, необходимо сделать следующее:
- Объединить все данные в тематических группах.
- Установить логические связи между группами для обеспечения правильности связей, чтобы связанные поля имели один тип.
Если таблица не нормализована, то в ней может храниться информация сразу о нескольких сущностях, а также множество повторяющихся столбцов и одинаковых значений. Если таблица нормализована, то в ней будет сохранена информация только об одной сущности.
При нормализации необходимо использовать неформальный подход к структуре собранных данных. Но важно учитывать несколько строгих правил нормализации. Каждое такое правило носит название «нормальная форма» (НФ). Все формы кроме первой предполагают, что к имеющимся данным муже была применена предыдущая нормальная форма - 1НФ. А при выполнении трех правил – она должна выражаться в третьей нормальной форме – 3НФ.
Всего существует семь форм (уровней) нормализации. На практике будет достаточно нормализовать базу данных до третьей нормальной формы. То есть, база данных будет считаться нормализованной, когда к ней будет применена 3НФ и выше.
Полное обеспечение соответствия для всех спецификаций – это не всегда выполнимая задача, поскольку для нормализации нужно будет создавать другие таблицы. Иногда это вовсе неприемлемо. Но если правила придется нарушать, то нужно быть готовым к таким проблемам, как несогласованные избыточности и зависимости. Они будут учитываться в работе системы и никак не нарушат ее работоспособность.
Примеры правил нормализации базы данных
Первая нормальная форма – 1НФ
Согласно установленным правилам, атрибуты в таблице должны иметь простой и понятный вид, а все сохраненные данные в строках и столбцах должны содержать скалярные значения. Здесь не допускается наличие повторяющихся строк. В качестве примера можно рассмотреть таблицу с автомобилями
Следует обратить внимание на нарушение нормализации в моделях BMW. В таблице в одной ячейке находится перечень сразу из трех элементов – М5, Х5М и М1. Это свидетельствует об отсутствии атомарности. После проведенного преобразования 1НФ таблица будет иметь другой вид.
Вторая нормальная форма 2НФ
Отношения в таблице будут соответствовать 2НФ при условии, что база данных находится в 1 НФ и каждый ее столбец зависит от первичного ключа. Рассмотрим еще одну таблицу.
Представленная выше таблица приведена в форму 1НФ, но не в форму 2НФ. Здесь стоимость автомобилей зависит от производителя и модели. Также размер скидки зависит от производителя, поэтому прямая функциональная зависимость от самого первого ключа будет неполной. Это можно исправить, если выполнить декомпозицию сразу на 2 отношения, где не ключевые атрибуты будут зависеть только от первого ключа.
Третья нормальная форма 3НФ
В данном случае таблица должна находиться в форме 2НФ, а каждый лишний столбец, не являющийся ключом, должен зависеть от первичного ключа.
В представленной таблице в отношении атрибут первым ключом является «Модель». Поскольку свои телефоны у автомобилей отсутствуют, то необходимо указывать номера продаваемых их магазинов. В результате создается связь функционального типа или зависимость следующего вида:
Такая модель транзитивна, поэтому ее отношение не отражается в 3НФ. Если разделить исходное отношение, то можно получить два отношения, которые будут отражены в форме 3НФ.