Mysql защита счетчика лайков на постах от повторного нажатия одним и тем же пользователем

Всем привет, есть задача создать систему лайков в постах при помощи mysql, у меня есть таблица под названием users_posts в ней есть такие столбцы


id | ownerId | authorId | text | date | time | likes


хочу добавить столбец likes что будет отвечать за количество лайков на посте при этом нужно предотвратить поведение, что позволяет пользователю лайкнуть пост 2 раза подряд или 10 раз подряд, тоесть у пользователя должна быть возможность лайкнуть только 1 раз или убрать свой лайк, каким образом это может быть реализовано, есть у кого идеи?


я думал над вариантом когда при нажатии на кнопку like будет добавляться +1 лайк но это делает невозможным сценарий в котором при втором нажатии на лайк система будет убирать лайк с поста, проблема в том что если постоянно записывать в likes новый лайк то пользователь сможет залайкать пост до невероятного количества лайков, соответственно нужно каким то образом где то сохранять имя пользователя что лайкнул пост для предотвращения повторного лайка, стоит ли создавать новую таблицу в которой хранить отдельно лайки пользователей привязанные к id поста и имени пользователя.


Так же можна логично предположить что количество лайков относится к конкретному посту, что если записывать пользователей что лайкнули в формате json внутри likes в самом посте? не будет ли mysql или серверу напряжно отправить такой json с десятками тысяч лайков что будут хранится в форме имен пользователей?

кто уже опытный в этом деле, буду признателен получить от вас совета


Ответы (0 шт):