Что такое нормализация? Когда следует проводить денормализацию?

Нормализация - техника дизайна, которая широко используется как путеводитель по проектированию баз данных. Нормализация - это двухшаговый процесс, который кладет данные в форму, удаляя повторяющиеся группы, а затем удаляет дублированные данные из таблиц.
Избыточные данные забивают диск и создают множество проблем. Если данные существуют более, чем в одном месте, необходимо унифицировать их местоположение. Изменение в поле заказчика намного проще сделать, если данные хранятся только в таблице Customers и нигде более в базе данных.
|
Первая нормальная форма |
Вторая нормальная форма |
Третья нормальная форма |
|
О базе данных говорят, что она находится в первой нормальной форме, когда все сущности имеют уникальный идентификатор или ключ, и когда каждая колонка в каждой таблице имеет лишь одно значение и не содержит повторяющихся групп или составного поля. |
База данных находится во второй нормальной форме, когда она находится в первой нормальной форме + каждый колонка непервичного ключа в таблице зависит от первичного ключа, а не является частью такового. |
База данных в третьей форме, когда она во второй форме и каждая колонка, которая не является частою первичного ключа, не зависит от других колонок, которые также не являются частью первичного клчюа. |
![]() |
Когда стоит использовать денормализацию? |
Нормализация для аккуратности и точности, денормализация для повышения производительности.
Обычно транзакционные базы данных являются высоконормализированными. Это значит, что избыточные данные заменяются ключами в соотношении один-к-многим. Нормализированные данные ограничиваются отношением с первичным ключом. Денормализированные данные, с другой стороны, создают избыточность. Это значит, что существует вероятность того, что денормализированные данные могут потерять взаимоотношения между атомарными данными.
Материалы, которые могут вас заинтересовать
- Выражения INSERT, UPDATE, DELETE
- Что такое триггер (database trigger)?
- Что такое представление (view)? Каково предназначение?
- Как повысить производительность базы данных?
- Как реализовать one-to-one, one-to-many, many-to-many отношения во время проектирования таблиц?
- Что такое sub-query? Как он влияет на производительность?
- Объединения таблиц. Inner and outer joins.
- Ленивая инициализация или Lazy Initialization в Hibernate
- Hibernate. Many-to-one ассоциации








Отправить комментарий