如何优化膳食规划应用的DB Schema以提升查询性能?
膳食规划应用数据库设计问题
我正在为一款膳食规划应用设计数据库Schema。每个膳食计划由多个阶段块组成(如2个月减脂期、2个月增肌期),每个阶段块包含每日餐食,每顿餐食由多种食物构成。
我设计了规范化的DB Schema,但如果要获取完整膳食计划及其分析数据,查询需要关联超过6张表(MealProgram > MealProgramBlock > DayMeal > DayMealFood > FoodOnDayMealFood > Food > FoodNutrient > Nutrient),这可能在未来导致应用性能下降。然而我暂未找到替代方案。
我了解NoSQL适用于此类场景,但当需要更新特定营养素或食物信息时,需修改所有相关记录,因此不考虑采用NoSQL。
当前DB Schema
Table User { id varchar [primary key] } Table Food { id varchar [primary key] name String } Table FoodNutrient { foodId varchar [ref: > Food.id] nutrientId varchar [ref: > Nutrient.id] amount integer } Table Nutrient { id varchar [primary key] name varchar unitName String } Table MealProgram { id varchar [primary key] name varchar authorId varchar [ref: > User.id] customerId varchar [ref: > User.id] } Table MealProgramBlock { id varchar [primary key] name varchar programId varchar [ref: > MealProgram.id] } Table DayMeal { id varchar [primary key] blockId varchar [ref: > MealProgramBlock.id] name varchar day integer time varchar } Table DayMealFood { id varchar [primary key] dayMealId varchar [ref: > DayMeal.id] } Table FoodOnDayMealFood { id varchar [primary key] dayMealFoodId varchar [ref: > DayMealFood.id] foodId varchar [ref: > Food.id] weight integer unit varchar }
DB Schema示意图

内容的提问来源于stack exchange,提问作者Honza Sedloň
相关产品推荐
相关产品推荐

