Ну, я думаю, это не совсем ответ на ваш вопрос ...
Я бы ожидал, что какая-то модель данных будет такой:
- ингредиент (ингридиент_добавок, имя_ ингредиента, калории), жир, ...)
- еда (еде_ид, имя еды)
- еду_компонент (еду_ид, ингредиент_ид, количество)
За еду вы затем рассчитаете:
select mi.meal_id, sum(i.calories * mi.amount), sum(i.fat * mi.amount)
from ingredient
join meal_ingredient mi on mi.ingredient_id = i.ingredient_id
group by mi.meal_id;
Для лиц, употребляющих пищу:
- персона (person_id, имя)
- person_meal (person_id, еды_id, потребление_дата, потребление_ количество)
И запрос для ежедневного потребления людей:
select
pm.person_id, pm.consume_date,
sum(i.calories * mi.amount * pm.consume_amount),
sum(i.fat * mi.amount * pm.consume_amount)
from ingredient
join meal_ingredient mi on mi.ingredient_id = i.ingredient_id
join person_meal pm on pm.meal_id, mi.meal_id
group by pm.person_id, pm.consume_date
order by pm.person_id, pm.consume_date;
Мы не будем хранить результаты избыточно, так как мы всегда можем написать запросы, чтобы получить их из таблиц.В конце концов, это и есть SQL.