Возникла потребность построить график изменения рейтинга поста за месяц и за все время. На данный момент надумал такой алгоритм:
- Каждый день в 00.00 считаем среднеарифметическое всех оценок, выставленных посту с самого первого, до текущего (нового дня)
- Получаем какое-то значение рейтинга для текущего дня
- Сохраняем значение в таблицу в виде: дата - значение
Возник вопрос, в каком виде лучше хранить?
1 вариант:
| post_id | avg_rating | date |
|---------|------------|------------|
| 1 | 5 | 10/12/2020 |
| 1 | 4 | 09/12/2020 |
| 2 | 3 | 10/12/2020 |
| 2 | 2 | 09/12/2020 |
2 вариант в json полем:
| post_id | json |
|---------|----------------------------------------------------------------------------------------------|
| 1 | { { date: 10/12/2020, avg_rating: 5 } } |
| 2 | { { date: 10/12/2020, avg_rating: 5 }, { date: 09/12/2020, avg_rating: 4 } } |
В качестве БД использую PostgreSQL, в качестве php-фреймворка - Laravel.
Задача: из полученной таблицы строить координаты для вывода графика в формате:
[{ x: 10/12/2020, y: 5 }]