Pracuję nad projektem hobby o nazwie Menu / Recipe Management.
Tak wyglądają moje byty i ich relacje.
A Nutrient
ma właściwości Code
iValue
An Ingredient
ma kolekcjęNutrients
A Recipe
ma kolekcję Ingredients
i czasami może mieć kolekcję innychrecipes
A Meal
ma kolekcję Recipes
iIngredients
A Menu
ma kolekcjęMeals
Relacje można przedstawić jako
Na jednej ze stron, dla wybranego menu muszę wyświetlić informacje o skutecznych składnikach odżywczych obliczonych na podstawie jego składników (posiłków, przepisów, składników i odpowiednich składników odżywczych).
W tej chwili używam SQL Server do przechowywania danych i nawiguję łańcuch z mojego kodu C #, zaczynając od każdego posiłku w menu, a następnie agregując wartości odżywcze.
Myślę, że nie jest to skuteczny sposób, ponieważ obliczenia są przeprowadzane za każdym razem, gdy strona jest żądana, a składniki czasami się zmieniają.
Myślałem o posiadaniu usługi w tle, która utrzymuje tabelę o nazwie MenuNutrients ( {MenuId, NutrientId, Value}
) i będzie wypełniać / aktualizować tę tabelę skutecznymi składnikami odżywczymi, gdy którykolwiek ze składników (posiłek, przepis, składnik) zmieni się.
Wydaje mi się, że GraphDB dobrze pasuje do tego wymogu, ale moja ekspozycja na NoSQL jest ograniczona.
Chcę wiedzieć, jakie są alternatywne rozwiązania / podejścia do tego wymogu wyświetlania składników odżywczych w danym menu.
Mam nadzieję, że mój opis scenariusza jest jasny.