Нормализация уже рассматривалась в данной книге, поэтому здесь приведено лишь несколько замечаний.
• Нормализованная база данных позволяет экономить дисковое пространство, а также препятствует появлению конфликтующих или некорректных данных, поскольку она не содержит повторяющихся данных.
• В нормализованной базе данных используется меньше страниц данных и индексов, что ускоряет поиск.
• Когда имеет смысл нарушать правила нормализации? Иногда имеет смысл создавать некоторые модули приложения на основе ненормализованных таблиц, если данные таблицы являются временными таблицами, создание которых требует много времени. Однако при постоянном хранении данные должны находиться в нормализованной структуре. Следует помнить, что для обновления нормализованной структуры после действий с ненормализованными структурами необходимо создавать специальные процедуры, которые могут повлиять на производительность. Правила нормализации можно нарушать лишь в последнюю очередь.
• Еще один аспект нормальной формы, который обычно можно игнорировать без какого-либо ущерба, — это правило многократности данных, поскольку оно влияет лишь на второстепенные данные. Часто имеются дополнительные биты информации о покупателе или товаре, которые, если строго придерживаться правил, следует хранить в отдельных таблицах. Примером могут служить дневные и вечерние номера телефонов, номера факсов, сотовых телефонов, пейджеров, адреса электронной почты и т.д.
• Правила нормализации можно нарушать в тех случаях, когда это имеет смысл. Нарушение правил нормализации иногда позволяет повысить производительность для некоторых частей приложения. Но всегда следует помнить о том, что такое нарушение может повлиять на надежность, целостность данных и эксплуатационные качества.
Идеальная схема нормализации заставила бы разработчика создать таблицу контактов с полем ID покупателя, полем типа контакта и другими полями для хранения номеров телефонов и адресов электронной почты. Вероятно, такой подход можно считать излишеством, а дополнительная целостность и гибкость не стоят затраченных усилий. Вполне разумно хранить эту информацию в таблице покупателей и воспользоваться преимуществами повышенной производительности. Однако правило заключается в том, что нужно нормализовать все, что возможно. Это то, чего ожидает Jet, так как лучше всего он работает с нормализованными данными.