В настоящее время я отслеживаю изменения через 3 таблицы, но я не уверен, что это лучший способ сделать это.
Я в основном собираю некоторую информацию из API и сохраняю ее в MySQL.
Первая таблица - "stati c", она захватывает информацию один раз и никогда не обновляется (если элемент не будет удален), а затем другие 2 обновляются ежедневно.
1-я таблица:
ID | added_date | removed_date | url | status
---|------------------|------------------|-------------|-------
1 | 15/01/2020 21:00 | NULL | http://xxx | 1
2 | 25/01/2020 18:00 | 29/01/2020 15:00 | http://xxx2 | 2
3 | 17/02/2020 10:00 | NULL | http://xxx3 | 1
Status 1 = Active
Status 2 = Inactive
Если что-то изменится, следующие 2 таблицы обновляются по мере необходимости. Это включает в себя изменения в заголовке / описании, новом количестве просмотров / рейтинге / комментариях или добавленных / удаленных тегах
2-я таблица: (хранить почти всю дополнительную информацию)
ID | mid | last_update | title | description | views | rating | comments
---|-----|------------------|----------------|--------------------|-------|--------|---------
1 | 1 | 15/01/2020 21:00 | First Title | Description.. | 1 | 1 | 0
2 | 2 | 25/01/2020 18:00 | Second Title | Desc.. | 1 | 1 | 0
3 | 1 | 11/01/2020 20:00 | First Title | Description update | 15 | 3 | 2
4 | 1 | 12/01/2020 20:00 | 1st Title | Description update | 30 | 5 | 4
5 | 3 | 17/02/2020 10:00 | 3rd Title | Descript! | 3 | 1 | 1
mid = main's table ID
У меня есть у меня есть таблица тегов, в которой я храню все возможные теги, и в следующей таблице я просто сопоставляю tag_id с серединой и записываю вниз при добавлении или удалении.
3-я таблица:
ID | mid | tag_id | added_date | removed_date
---|-----|--------|------------------|------------------
1 | 1 | 2 | 15/01/2020 21:00 | NULL
2 | 1 | 3 | 16/01/2020 16:30 | 18/01/2020 13:00
3 | 2 | 3 | 25/01/2020 18:00 | NULL
4 | 3 | 5 | 17/02/2020 10:00 | NULL
5 | 1 | 5 | 11/02/2020 17:00 | NULL