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

нормализация базы данных "что?"

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

с NoSQL движение, кажется, нормализация больше не является тем, что нужно делать?

4 ответов


Это зависит от того, какие приложения используют базу данных.

для приложений OLTP (в основном ввод данных, со многими вставками, обновлениями и удалениями, а также выбор), нормализованный, как правило, хорошая вещь.

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

вы также можете найти полезную информацию в этих очень популярные похожие вопросы:

должен ли я нормализовать свою БД или нет?

С точки зрения баз данных, является ли "нормализовать для корректности, денормализовать для производительности" правильной мантрой?

каково влияние ресурсов на нормализацию базы данных?

как убедить кого-то нормализовать базу данных?

действительно ли лучше использовать нормализованные таблицы?


NoSQL не серебряная пуля: это просто технология, которая может обеспечить гораздо лучшую приспособленность для определенных обстоятельств. Для данных в форме отношений СУБД в ближайшее время не исчезнут.


да, для транзакционной системы всегда нормализуется, или, скорее всего, у вас будут серьезные головные боли дальше по дороге. Для базы данных, которая будет использоваться для отчетности/OLAP и denormalising схема может быть очень полезной.


эмпирическое правило "присоединение дорого стоит на вычислительной мощности". Я использую при создании базы данных для проекта, большой или маленький. Таблицы, содержащие данные, такие как имена пользователей, адреса и т. д., всегда должны быть нормализованы, поскольку они доступны менее недавно, как вы учили, используя примеры. Сейчас в последние годы веб2.0 данные, приложения, мобильные сервисы и т. д. взяли на самом деле другой тип данных, которые с обилием кода памяти еще ниже, он может сэкономить вычислительную мощность, чтобы держите их всех на одном "столе", не нормализуя его.