@SemihalDevs

Как спроектировать БД для публикации новостей?

Добрый вечер, знатоки и коллеги, проектируя базу данных у меня родилось парочку вопросов:
  1. Каждый пользователь может публиковать новости на сайте, количество новостей через какое-то время может стать достаточно большим. Так вот, каждому пользователю нужно выводить количество опубликованных им записей - постоянно их подсчитывать в виде SELECT COUNT(...) или же добавить дополнительное поле в таблицу пользователей и инкрементировать значение?
  2. Как поступить так же со всеми новостями? Держать общее количество новостей от всех пользователей в какой то записи таблицы, или постоянно подсчитывать в виде SELECT COUNT(...)?

Прошу прощения за глупые вопросы, новичок в этом деле и нуждаюсь в помощи специалистов.
  • Вопрос задан
  • 441 просмотр
Решения вопроса 1
orlov0562
@orlov0562
I'm cool!
1) У каждого пользователя, поле в таблице, в которое записывать SELECT COUNT WHERE user_id в момент обновления им новости (добавил/удалил/изменил статус). При простых условиях, можно сделать тригер в бд, который это будет делать сам. Не забудь сделать индекс по user_id

2) Да, лучше кешировать это значение. Делается это разными способами, но смысл один - снизить кол-во вызовов SELECT COUNT

SELECT COUNT(id) и даже SELECT COUNT(id) WHERE user_id = на небольшой посещалке не самая тяжелая операция.. Однако, если ты например решишь отсортировать пользователей по кол-ву новостей, например выбрать top 50, то имея доп. поле с кол-вом новостей, сделать это будет гораздо проще..

В общем, ты правильно мыслишь.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы