В процессе физического проектирования базы данных вы выбираете конкретные структуры хранения и пути доступа к файлам базы данных. На этом шаге проектирования иногда рекомендуется выполнять денормализацию некоторых таблиц базы данных с целью достижения хорошей производительности для различных приложений базы данных. Денормализация таблиц означает, что две или более нормализованных таблицы объединяются вместе, что приводит к некоторой избыточности данных.
Для демонстрации процесса денормализации рассмотрим следующий пример: в табл. 21.1 показаны две таблицы из базы данных sample - department и employee, которые являются нормализованными. (Более подробную информацию о нормализации данных.) Данные в этих двух таблицах могут быть представлены с использованием только одной таблицы dept_emp (табл. 21.2), которая показывает денормализованную форму данных, хранящихся В таблицах department и employee. В отличие от таблиц department и employee, которые не содержат никаких избыточных данных, таблица deptemp содержит много избыточности, потому что два столбца этой таблицы (dept_name и location) зависят от столбца dept_no.
Денормализация данных имеет два преимущества и два недостатка. Первое преимущество: если у вас есть столбец, который зависит от другого столбца таблицы (такой как столбец deptname в таблице deptemp, который зависит от столбца deptno) для данных, часто используемых в запросах, вы можете исключить операцию соединения таблиц, которая оказывает влияние на производительность приложений. Второе преимущество: денормализованные данные требуют меньшего количества таблиц, чем нормализованные данные.
С другой стороны, денормализованные таблицы требуют дополнительного объема дисковой памяти, а изменение данных выполнять сложнее по причине избыточности данных.
Другим вариантом в физическом проектировании базы данных, который способствует хорошей производительности, является создание индексов. Даны основные положения по созданию индексов, а далее в данной главе представлены примеры.