Если вы некоторое время работали с базами данных, скорее всего, вы слышали термин нормализация. Возможно, кто-то спросил вас: «Эта база данных нормализована?» или «Это в BCNF ?» Нормализацию часто считают роскошью, на которую успевают только ученые. Однако знание принципов нормализации и их применение к повседневным задачам проектирования баз данных не так уж сложно, и это может значительно повысить производительность вашей СУБД.
В этой статье мы познакомимся с концепцией нормализации и кратко рассмотрим наиболее распространенные нормальные формы.
Что такое нормализация?
Нормализация — это процесс эффективной организации данных в базе данных. Процесс нормализации преследует две цели: устранение избыточных данных (например, хранение одних и тех же данных в более чем одной таблице) и обеспечение зависимости данных ( имеет смысл только хранить связанные данные в таблице). Обе они являются достойными целями, поскольку они уменьшают объем пространства, потребляемого базой данных, и обеспечивают логическое хранение данных.
Нормальные Формы
Сообщество баз данных разработало серию руководящих принципов для обеспечения нормализации баз данных. Они называются нормальными формами и пронумерованы от одной (самая низкая форма нормализации, называемая первой нормальной формой или 1NF) до пяти (пятая нормальная форма или 5NF). В практических приложениях вы часто будете видеть 1NF, 2NF и 3NF вместе со случайными 4NF. Пятая нормальная форма встречается очень редко и не будет обсуждаться в этой статье.
Прежде чем мы начнем наше обсуждение нормальных форм, важно отметить, что они являются лишь руководящими принципами. Иногда возникает необходимость отклониться от них, чтобы соответствовать практическим требованиям бизнеса. Тем не менее, когда возникают изменения, необходимо оценить возможные последствия, которые они могут иметь в вашей системе, и учесть возможные несоответствия. Тем не менее, давайте рассмотрим нормальные формы.
Первая нормальная форма (1NF)
Первая нормальная форма (1NF) устанавливает основные правила для организованной базы данных:
- Удалите дублирующие столбцы из одной таблицы.
- Создайте отдельные таблицы для каждой группы связанных данных и идентифицируйте каждую строку уникальным столбцом или набором столбцов ( первичный ключ ).
Вторая нормальная форма (2NF)
Вторая нормальная форма (2NF) дополнительно обращается к концепции удаления дублирующих данных:
- Удовлетворить все требования первой нормальной формы.
- Удалите подмножества данных, которые применяются к нескольким строкам таблицы, и поместите их в отдельные таблицы.
- Создайте отношения между этими новыми таблицами и их предшественниками с помощью внешних ключей .
Третья нормальная форма (3NF)
Третья нормальная форма (3NF) идет еще на один важный шаг:
- Удовлетворить все требования второй нормальной формы.
- Удалите столбцы, которые не зависят от первичного ключа.
Нормальная форма Бойса-Кодда (BCNF или 3.5NF)
Нормальная форма Бойса-Кодда, также называемая «третьей и наполовину (3,5) нормальной формой», добавляет еще одно требование:
- Удовлетворяют всем требованиям третьей нормальной формы.
- Каждый определитель должен быть ключом-кандидатом .
Четвертая нормальная форма (4NF)
Наконец, четвертая нормальная форма (4NF) имеет одно дополнительное требование:
- Удовлетворяют всем требованиям третьей нормальной формы.
- Отношение находится в 4NF, если оно не имеет многозначных зависимостей .
Помните, что эти рекомендации по нормализации являются накопительными. Чтобы база данных была в 2NF, она должна сначала соответствовать всем критериям базы данных 1NF.
Должен ли я нормализовать?
Хотя нормализация базы данных часто является хорошей идеей, это не является абсолютным требованием . В некоторых случаях умышленное нарушение правил нормализации является хорошей практикой.
Если вы хотите убедиться, что ваша база данных нормализована, начните с изучения того, как поместить вашу базу данных в форму First Normal .