#php #mysql #sql
#php #mysql #sql
Вопрос:
Я разрабатываю веб-сайт. Существуют заданные ответы, в которых пользователям может нравиться или не нравиться ответ в соответствии с выбором пользователя. Но пользователи могут только один раз понравиться или не понравиться, но не несколько раз, разрешенных пользователю, который не может понравиться или не понравиться. аналогично современным социальным сетям или системе youtube like. Я в замешательстве от того, как каким-то образом спроектировать таблицу базы данных, я знаю, что приведенная ниже таблица может быть создана, но я не знаю, является ли это лучшим решением или нет, или может быть какое-либо лучшее решение
TABLE likes {
user_id
video_id
}
TABLE dislikes {
user_id
video_id
}
Любое лучшее решение может быть для проектирования базы данных, пожалуйста, помогите.
у меня есть еще один вопрос: что делать, если пользователь снова зайдет на эту страницу, а не как отобразить пользователя, которому у вас уже есть лайк или дизлайк поста. Я не понимаю, какой запрос нужно написать, чтобы проверить это. все ответы Заранее благодарю вас.
Я использую Mysql для базы данных, а для серверной части я использую PHP.
Ответ №1:
Хранить оба в одной таблице:
create table likes (
user_id int,
video_id int,
like_or_dislike int,
check (like_or_dislike in (-1, 1)),
unique (user_id, video_id)
);
Ответ №2:
ТАБЛИЦА СОБЫТИЙ()
user_id
video_id
event_type (0 - dislike, 1- like)
- Чтобы не допускать множественного лайка или дизлайка для видео для одного и того же пользователя, есть 2 способа: —
a. Сначала проверьте перед вставкой события, существует ли событие для того же типа, video_id, user_id, чем не вставлять другое.
б. Создайте составной индекс для video_id, введите здесь код user_id, event_type. Таким образом, MySQL не допустит дублирования события. - Запрос, чтобы узнать, нравится ли пользователю уже видео или нет
ВЫБЕРИТЕ event_type из СОБЫТИЯ, где user_id={идентификатор пользователя} и video_id={идентификатор видео}
Этот запрос возвращает все события для конкретного пользователя для конкретного видео, после чего вы можете определить по event_type, нравится или не нравится видео