Недостатки нормализованной базы данных
До сих пор речь шла только о недостатках ненормализованных (или в недостаточной мере нормализованных) баз данных, причем в качестве основных недостатков отмечались:
· неэкономное использование дискового пространства ввиду наличия дублирующихся данных;
· проблемы, связанные с обновлением данных ввиду нарушения фундаментального принципа «Каждый факт – в одном месте»;
· связанные с ними проблемы усиленного контроля целостности данных, которая подвергается серьезным испытаниям при наличии дублирующихся данных.
Можно сделать вывод, что для динамично обновляющихся баз данных нормализация является необходимостью, позволяющей избежать многих проблем в процессе функционирования ИС.
Тем не менее, нормализация имеет один существенный недостаток - замедление работы СУБД при выполнении запросов на извлечение (выборку) данных. В нормализованной базе данных практически каждый запрос требует соединения данных нескольких таблиц (иногда в запросах приходится соединять и довольно много таблиц). Соединение таблиц – операция, требующая определенных затрат ресурсов – памяти, процессорного времени. Чем выше степень нормализованности базы данных, тем больше в ней таблиц, следовательно, тем медленнее выполняются запросы на выборку.
В силу этих обстоятельств на практике обычно стараются найти разумный компромисс и редко доводят нормализацию до 5NF. Практика показала, что большинство динамично обновляющихся БД обычно доводится до 3NF. Во многих случаях полезно избавление от многозначных зависимостей (4NF).
Если количество запросов на выборку существенно превышает количество запросов на обновление, имеет смысл проанализировать возможности сознательной денормализации базы данных и поступиться даже требованиями 3NF.
Денормализация — это процесс модификации структуры таблиц нормализованной базы данных с целью повышения производительности за счет допущения некоторой управляемой избыточности данных. Единственным оправданием денормализации является попытка повышения скорости работы приложений, работающих с базой данных.
Денормализованная база данных — это не то же самое, что ненормализованная. Денормализация базы данных представляет собой процесс понижения нормализации на один-два уровня.
Денормализация предполагает объединение некоторых из ранее разделенных таблиц и создание таблиц с дубликатами данных с целью уменьшения числа связываемых таблиц при доступе к данным, что должно уменьшить число требуемых операций ввода-вывода и нагрузку на центральный процессор.
Однако за денормализацию нужно платить. В денормализованной базе данных повышается избыточность данных, что может повысить производительность, но потребует больше усилий для контроля ссылочной целостности. Усложнится процесс создания приложений, поскольку данные будут повторяться и их труднее будет отслеживать.
Существует золотая середина между нормализацией и денормализацией, но чтобы найти ее, требуются немалые усилия и хорошее знание предметной области.
К сожалению, не существует никаких формализованных методов для достижения удовлетворительного компромисса между нормализацией и денормализацией. Некоторые соображения по этому поводу содержатся в следующем разделе.
Дата добавления: 2015-08-26; просмотров: 1056;