Estoy trabajando en un proyecto de pasatiempo llamado Gestión de menús / recetas.
Así es como se ven mis entidades y sus relaciones.
A Nutrient
tiene propiedades Code
yValue
An Ingredient
tiene una colección deNutrients
A Recipe
tiene una Colección de Ingredients
y ocasionalmente puede tener una colección de otrosrecipes
A Meal
tiene una colección de Recipes
yIngredients
A Menu
tiene una colección deMeals
Las relaciones se pueden representar como
En una de las páginas, para un menú seleccionado, necesito mostrar la información de nutrientes efectivos calculada en función de sus componentes (comidas, recetas, ingredientes y los nutrientes correspondientes).
A partir de ahora estoy usando SQL Server para almacenar los datos y estoy navegando por la cadena desde mi código C #, comenzando desde cada comida del menú y luego agregando los valores de nutrientes.
Creo que esta no es una forma eficiente, ya que este cálculo se realiza cada vez que se solicita la página y los componentes cambian ocasionalmente.
Estaba pensando en tener un servicio en segundo plano que mantenga una tabla llamada MenuNutrients ( {MenuId, NutrientId, Value}
) y que llene / actualice esta tabla con los nutrientes efectivos cuando cambie cualquiera de los componentes (Comida, Receta, Ingrediente).
Siento que un GraphDB sería una buena opción para este requisito, pero mi exposición a NoSQL es limitada.
Quiero saber cuáles son las soluciones / enfoques alternativos para este requisito de mostrar los nutrientes de un menú determinado.
Espero que mi descripción del escenario sea clara.