Недавно мы с коллегой по профессии обсуждали в Интернете (точнее в ЛС на Хабре) архитектуру некоторой системы, и у нас возник спор по одному вопросу.
Имеется склад, где хранятся разные материалы, имеются документы прихода и расхода материалов, в документах есть записи с информацией "материал, количество", связь один-ко-многим. В базе данных есть таблица с информацией о текущем наличии материалов на складе, есть таблица для документов и таблица для их позиций. Назовем их "current_stocks", "documents", "document_positions".
Считать ли таблицу "current_stocks" денормализацией данных?
Аргумент коллеги заключается в том, что данные в "current_stocks" можно рассчитать по документам за все время существования системы, поэтому это денормализация.
Мой аргумент в том, что любое текущее состояние можно рассчитать по истории изменений, поэтому это не денормализация. Иначе в термине "нормализация" не было бы смысла. Он относится именно к моделированию текущего состояния. Это разные модели, "current_stocks" моделирует состояние склада, "document_positions" строки текста в документах.