Задать вопрос
Serezhka
@Serezhka

Можно ли уместить сложную логику в один запрос БД?

Привет!
Я в образовательных целях делаю некоторую приложеньку.
Суть - есть автор, автор пишет пост, пост можно просмотреть другим и прокомментировать.
Посмотреть и прокомментировать могут либо все, либо определенные (зарегистрированные) участники объединенные в группы.
Задача - определить - можно ли показывать\принимать комментарии от конкретного пользователя.
(приложенька работает через REST, поэтому комментарии надо проверять отдельно от самого поста)

Примерная структура БД:
User
id | name | token

Post
id | text | authorID

Group
id | name | authorID

GroupUser
id | userID | groupID

PostAllowGroup
id | postID | groupID

Comment
id | text | authorID | postID

Дальше алгоритм такой:
1 получаем запрос от клиента с токеном и postID (на комменты)
2 идем в User и берем id которому соответствует токен
3 идем в PostAllowGroup и выбираем те groupID, в которых есть наш postID
4 идем в GroupUser и смотрим, есть ли поля где groupID соответствует userID из второго пункта
5 если все ок, то отдаем коммент(ы) по postID сделав JOIN c User по authorID

Можно ли всю эту логику уместить в один запрос к базе?
И будет ли это быстрее, чем делать много простых запросов?
Просто на данный момент мне ума хватает всю эту логику я реализовать цепочкой запросов (как в алгоритме)
База данных MySQL или Postgres
Спасибо!
  • Вопрос задан
  • 1323 просмотра
Подписаться 3 2 комментария
Подписчики вопроса 3 К ответам на вопрос (4)