@lemonlimelike

Можно ли так сделать в бд?

Привет всем. Делаю на сайте раздел "Закладки", для этого создал таблицу, с полями id, user_id, video_id.
В этом разделе я буду выводить видео, которые добавил пользователь. А добавлять пользователь их будет так: Возле видео будет иконка типа "Добавить в закладки" и по нажатию на эту иконку будет создаваться поле в таблице типа id = 1; user_id = 1; video_id 21; Но а если он будет добавит еще одно видео, в таблице будет создано еще поле типа id = 2; user_id = 1; video_id 22; Это как то будет не очень. Можно сделать ли так чтоб создавалось лишь одно поле, к примеру: id = 1; user_id = 1; video_id = 21; video_id = 22; и так далее.
Как так сделать? Или так будет не правильно?
  • Вопрос задан
  • 178 просмотров
Решения вопроса 2
sanek_os9
@sanek_os9
Работаю с Laravel, Vue, Vuetify, AWS Amazon, Linux
Перед добавлением проверить, а не добавлял ли его пользователь ранее, если нет, до добавить видео в закладки
$count = "SELECT COUNT(*) FROM `table` WHERE `user_id` = '$user_id' AND `video_id` = '$video_id'";
if (!$count) {
    // добавляем видео в закладки
}

PS запрос поместить в вашу ф-цию которую вы используете для обращения к БД
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Неправильно.
Поле `id` здесь лишнее, первичным ключом должна быть пара (`user_id`, `video_id`).
При добавлении видео в закладки добавляется не поле, а строка в таблице, при удалении видео из закладок строка, соответственно, удаляется.
Сами поля должны быть внешними ключами к соответствующим таблицам с параметрами ON DELETE CASCADE ON UPDATE CASCADE.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы