О проектировании базы данных

Нормализация базы данных

Нормализацией называется процесс преобразования отношений между элементами внутри базы данных к виду отвечающем нормальным формам.

Нормализация не предназначена для ускорения или оптимизации работы базы данных, целью нормализации является уменьшение потенциальной противоречивости хранимой информации и сведение к минимуму логической избыточности.

Первая нормальная форма (1НФ, 1NF)

Каждая ячейка таблицы должна содержать одно значение, также не допустим повтор строк в таблице.

Вторая нормальная форма (2НФ, 2NF)

Таблица находится в состоянии 1НФ и каждый не ключевой атрибут неприводимо зависит от первичного ключа.

Третья нормальная форма (3НФ, 3NF)

Таблица находится в состоянии 2НФ и все не ключевые поля содержимое которых может относиться к нескольким записям, вынесены в отдельные таблицы.

Хранение деревьев

Четыре способа хранения древовидных иерархических структур:

  • Adjacency List (Список смежных вершин) - каждый элемент дерева хранит информацию о своём родителе;
  • Closure Table (Таблица связей) - связи между элементами хранятся в дополнительной таблице, в которой, как минимум, должны быть два поля: одно ссылающееся на предка и одно на потомка;
  • Nested Sets (Вложенные множества) - каждый элемент хранит ссылки на два дочерних элемента: левый и правый. Также, при необходимости, добавляется поле с информацией об уровне вложенности элемента;
  • Materialized Path (Материализованный путь) - каждый элемент хранит полный путь от корневого элемента дерева.