Проектирование и нормализация баз данных
Проектирование и нормализация баз данных — это дисциплина структурирования реляционных схем таким образом, чтобы они достоверно представляли данные, устраняя при этом избыточность и вызываемые ею аномалии обновления, вставки и удаления.
Definition
Нормализация — это процесс декомпозиции отношений для уменьшения избыточности и предотвращения аномалий, руководствующийся функциональными и многозначными зависимостями, существующими между атрибутами, при сохранении информационного содержания исходной схемы.
Scope
Эта область охватывает теорию и практику уточнения реляционных схем: функциональные и многозначные зависимости как семантические ограничения, определяющие проектирование, иерархию нормальных форм (от 1НФ до НФБК, 4НФ) и декомпозицию отношений для устранения избыточности при сохранении соединений без потерь и, по возможности, зависимостей. Она исключает нотации концептуального моделирования, такие как диаграммы «сущность-связь» (рассматриваемые в моделях данных и языках запросов), и выбор физического дизайна, такой как индексирование.
Sub-topics
Core questions
- Какие функциональные и многозначные зависимости существуют между атрибутами отношения?
- Какие аномалии — обновления, вставки, удаления — вызывает избыточность?
- Какие условия определяют каждую нормальную форму и какую избыточность каждая из них устраняет?
- Как можно декомпозировать отношение без потери информации?
- Когда сохранение зависимостей должно быть обменено на более высокую нормальную форму?
Key concepts
- функциональная зависимость
- аксиомы Армстронга и замыкание
- потенциальные ключи и первичные атрибуты
- аномалии обновления, вставки, удаления
- первая, вторая, третья нормальная форма
- нормальная форма Бойса-Кодда
- многозначные зависимости и 4НФ
- декомпозиция без потерь соединения
- сохранение зависимостей
Key theories
- Функциональные зависимости и замыкание
- Функциональная зависимость X → Y утверждает, что X определяет Y; аксиомы Армстронга позволяют вычислить замыкание множества зависимостей, что лежит в основе поиска ключей и тестирования нормальных форм.
- Нормальные формы
- Первая, вторая и третья нормальные формы, а также нормальная форма Бойса-Кодда налагают постепенно более строгие условия на функциональные зависимости для устранения избыточности; четвертая нормальная форма расширяет это на многозначные зависимости.
- Декомпозиция без потерь соединения и с сохранением зависимостей
- Декомпозиция желательна только в том случае, если она не приводит к потерям (исходное отношение может быть реконструировано путем соединения частей) и в идеале сохраняет зависимости (все исходные зависимости могут быть применены к частям), что является критериями, ограничивающими способы разделения схем.
Clinical relevance
Нормализация является ключевым навыком в создании надежных информационных систем: хорошо нормализованные схемы предотвращают несогласованность данных и упрощают обслуживание в транзакционных приложениях, в то время как специалисты также намеренно денормализуют схемы для аналитики и отчетности с интенсивным чтением, что делает компромиссы центральными для реальной разработки баз данных.
History
Кодд представил первую, вторую и третью нормальные формы в начале 1970-х годов и, совместно с Бойсом, более строгую нормальную форму Бойса-Кодда. Рональд Фейгин позднее определил четвертую и пятую нормальные формы на основе многозначных и зависимостей соединения. Вместе эти результаты превратили проектирование схем из искусства в теорию, основанную на ограничениях зависимостей.
Debates
- Насколько далеко нормализовать на практике
- Строгая нормализация устраняет избыточность и аномалии, но может потребовать множества соединений, замедляющих рабочие нагрузки с интенсивным чтением; специалисты обсуждают, когда контролируемая денормализация для повышения производительности оправдана, а когда она приводит к тем самым несоответствиям, которые нормализация была призвана предотвратить.
Key figures
- Edgar F. Codd
- Raymond F. Boyce
- Ronald Fagin
Related topics
Seminal works
- codd1972
- silberschatz2019
- garciamolina2008
Frequently asked questions
- Почему избыточность вызывает проблемы, если я осторожен?
- Избыточное хранение одного и того же факта в нескольких строках приводит к аномалиям: обновление может изменить одни копии, но не другие (аномалия обновления), вы можете быть не в состоянии записать факт без несвязанных данных (аномалия вставки), или удаление строки может привести к потере информации, которую вы хотели сохранить (аномалия удаления). Нормализация устраняет избыточность, которая делает это возможным.
- В чем разница между НФБК и третьей нормальной формой?
- Обе формы устраняют избыточность, вызванную функциональными зависимостями, но НФБК является более строгой: она требует, чтобы левая часть каждой нетривиальной зависимости была суперключом. Схема может быть в 3НФ, но не в НФБК. НФБК всегда обеспечивает декомпозицию без потерь, но может не сохранять зависимости, поэтому иногда сохраняется 3НФ.