Recentemente, meu colega de trabalho e eu discutimos na Internet (mais precisamente, em LAN em Habré) a arquitetura de um determinado sistema e tivemos uma disputa sobre um assunto.
Existe um armazém onde são armazenados diversos materiais, existem documentos de recebimento e consumo de materiais, existem registros nos documentos com as informações "material, quantidade", relação um-para-muitos. O banco de dados contém uma tabela com informações sobre a disponibilidade atual de materiais no almoxarifado, há uma tabela para documentos e uma tabela para suas posições. Vamos chamá-los de "current_stocks", "documents", "document_positions".
A tabela "current_stocks" deve ser considerada uma desnormalização de dados?
O argumento do colega é que os dados em "current_stocks" podem ser calculados a partir de documentos para toda a vida útil do sistema, então isso é uma desnormalização.
Meu argumento é que qualquer estado atual pode ser calculado a partir do histórico de alterações, portanto, isso não é uma desnormalização. Caso contrário, o termo "normalização" não faria sentido. Refere-se especificamente à modelagem do estado atual. Estes são modelos diferentes, "current_stocks" modela o estado do warehouse, "document_positions" linhas de texto em documentos.