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