Зачем нужно выполнять нормализацию в базе данных Oracle

Вокруг нормализации постоянно ведутся споры: кто-то считает ее чуть ли не “священным Граалем”, а кто-то — средством, которое наносит ущерб производительности. Что же такого в нормализации, что заставляет людей так по-разному к ней относиться?

По идее, достаточно разместить все данные где-то в таблице, и при наличии способности написать SQL-код для извлечения требуемой информации, а также хорошей РСУБД, функционирующей на машине с быстрыми процессорами, база данных не должна работать медленно. По правде сказать, плохо спроектированные связи и таблицы в базе данных могут иметь серьезные последствия, причем не только для производительности базы данных, но и для действительности самих данных.

Давайте рассмотрим пример системы обработки заказов в хранилище данных. Предположим, что имеется простая таблица, в которой информация о каждом заказчике размещается внутри одного кортежа или строки. Что произойдет в случае проведения для заказчика A около 1000 транзакций, а для заказчика B — только одной или двух? Либо транзакции заказчика A не будут помещаться все в одной строке, либо строка заказчика B будет почти пустой. То есть либо не будет получаться угодить потребностям заказчика, либо огромное количество места в базе данных будет простаивать зря.

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

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

Надеюсь данная заметка будет полезной для начинающих и действующих разработчиков приложений под базы данных Oracle.

Вас заинтересует / Intresting for you:

Oracle и Java: использование P...
Oracle и Java: использование P... 5773 просмотров sepia Tue, 08 May 2018, 08:52:34
Oracle IDE: JDeveloper, SQL De...
Oracle IDE: JDeveloper, SQL De... 4541 просмотров Ольга Потемкина Tue, 21 Nov 2017, 13:18:46
Язык PL/SQL Oracle для програм...
Язык PL/SQL Oracle для програм... 2636 просмотров Илья Дергунов Tue, 21 Nov 2017, 13:28:01
Деятельность Oracle в XML-инду...
Деятельность Oracle в XML-инду... 7957 просмотров Дэн Tue, 21 Nov 2017, 13:33:37
Войдите чтобы комментировать

1dz аватар
1dz ответил в теме #8331 7 года 4 нед. назад
Согласна с MaxNiko. В крупных проектах трудно обеспечить 100% нормализацию данных в базе, да порой и ни к чему...
ildergun аватар
ildergun ответил в теме #7919 7 года 3 мес. назад

MaxNiko пишет: Нормализовывать данные в таблицах базы данных Oracle, конечно, нужно, но в серьезных промышленных данных не всегда возможно иметь все 100% нормализованных данных, иначе можно проиграть в производительности в каких-то моментах (запросах и т.д.).


Абсолютно разделяю Ваше мнение!
MaxNiko аватар
MaxNiko ответил в теме #7906 7 года 3 мес. назад
Нормализовывать данные в таблицах базы данных Oracle, конечно, нужно, но в серьезных промышленных данных не всегда возможно иметь все 100% нормализованных данных, иначе можно проиграть в производительности в каких-то моментах (запросах и т.д.).