Содержание

0 нормальная форма

1 нормальная форма

2 нормальная форма

3 нормальная форма

3 нормальная форма Бойса Кодда

4 нормальная форма

5 нормальная форма

6 нормальная форма

Нормализация - избавлкение от избыточности хранения данных

индексы это тоже избыточность, но за их синхронизацию отвечает сама СУБД

Цели

  • избавиться от аномалий операций с данными

  • повысить качество БД

  • Процесс декомпозиции отношения на несколько поекций, так что объединение проекций точно даёт нам исходное отношение

  • Нужна каждая проекция для получения изначального отн.

  • Хотябы 1 из проекций находится в более высокой форме, чем исходное отношение

Требования

  1. Сохранять ограничения предметной области

  2. Стандарт: Адекватна ПО, удобна в тех обсл, выс производ, защита данных

  3. Минимальность PK: ключи точно нужны? В логе не нужно часто. Ключ достаточно мал и велик по типу? Можем мы сократить ключ при том же объёме?

  4. Не избыточность данных. Одни данный хранятся в 1 месте. Чтобы не было конфликтов

  5. Производительность. Какие операции будут в таблице? Индексы для чтения и тп.

  6. Консистентность данных. Создавать связи явным образом. Юзаем триггеры, проверки для ограничений. Если есть кэш, то как его обновлять? Все ограничения должны быть на стороне БД

  7. Гибкость. Соглашение по наименованию. Комментарии (сохраняются навсегда). Документация по БД (схемы лучше вручную)

  8. Логически оправданный подход. Нужны ли ограничения по кол-ву символов? Зачем?

  9. Актуальность. Есть агрегированные поля. Когда кэш обновить?

Нормальных форм куча

есть канонические(жирным)

Pasted image 20240504001720.pngPasted image 20240504002817.pngPasted image 20240504002410.png### Когда остановить нормализацию?

Часто 3НФ является достаточной

Денормализация

  • Для увеличения скорости доступа к данным (join)

  • Запросы будут проще, чем там где куча join

  • Излишне не усложняем схему

Подходы

  • Объединение 2х в 1 отношение

  • Кэширующие отношение (триггер пересчитывает поле из др таблицы и сохраняет в нужную) эт часто

  • Агрегирующие отношение/атрибуты (предобработать информацию)

  • Создание материализованного представления - наименование SQL запроса, сохранение этого запроса