メニュー/レシピ管理という趣味のプロジェクトに取り組んでいます。
これは私の実体とそれらの関係がどのように見えるかです。
AにNutrient
はプロパティがCode
あり、Value
のIngredient
コレクションを持っていますNutrients
A Recipe
にはコレクションがIngredients
あり、時々他のコレクションを持つことができますrecipes
Aは、Meal
のコレクションを持っているRecipes
し、Ingredients
A Menu
のコレクションがありますMeals
関係は次のように表すことができます
いずれかのページで、選択したメニューについて、その構成要素(食事、レシピ、成分、および対応する栄養素)に基づいて計算された有効栄養素情報を表示する必要があります。
現在、SQL Serverを使用してデータを格納しています。メニューの各食事から始めて栄養素の値を集計して、C#コードからチェーンを移動しています。
この計算はページがリクエストされ、構成要素が時々変更されるたびに行われるため、これは効率的な方法ではないと思います。
MenuNutrients({MenuId, NutrientId, Value}
)と呼ばれるテーブルを維持し、コンポーネント(食事、レシピ、成分)のいずれかが変更されたときに、このテーブルに有効な栄養素を追加/更新するバックグラウンドサービスがあることを考えていました。
GraphDBはこの要件に適していると思いますが、NoSQLへの私の露出は限られています。
特定のメニューの栄養素を表示するというこの要件に対する代替の解決策/アプローチは何ですか?
シナリオの説明が明確であることを願っています。