Estou trabalhando em um projeto de hobby chamado Gerenciamento de Menu / Receita.
É assim que minhas entidades e suas relações se parecem.
A Nutrienttem propriedades CodeeValue
Um Ingredienttem uma coleção deNutrients
A Recipetem uma coleção de Ingredientse ocasionalmente pode ter uma coleção de outrosrecipes
A Mealtem uma coleção de RecipeseIngredients
A Menutem uma coleção deMeals
As relações podem ser descritas como

Em uma das páginas, para um menu selecionado, preciso exibir as informações de nutrientes efetivas calculadas com base em seus constituintes (refeições, receitas, ingredientes e os nutrientes correspondentes).
No momento, estou usando o SQL Server para armazenar os dados e estou navegando na cadeia a partir do meu código C #, começando em cada refeição do menu e agregando os valores dos nutrientes.
Acho que não é uma maneira eficiente, pois esse cálculo está sendo feito toda vez que a página é solicitada e os constituintes mudam ocasionalmente.
Eu estava pensando em ter um serviço em segundo plano que mantém uma tabela chamada MenuNutrients ( {MenuId, NutrientId, Value}) e preencherá / atualizará esta tabela com os nutrientes efetivos quando qualquer componente (Refeição, Receita, Ingrediente) for alterado.
Eu sinto que um GraphDB seria um bom ajuste para esse requisito, mas minha exposição ao NoSQL é limitada.
Quero saber quais são as soluções / abordagens alternativas para esse requisito de exibir os nutrientes de um determinado menu.
Espero que minha descrição do cenário seja clara.