@OneTwoThreeFourFive

Как лучше сделать сохранение в базу данных из нескольких запросов для одинаковых полей в базе данных?

Пользователь может отправить несколько запросов для сохранения данных (например, удалить или добавить) и это сохраняется в одно поле в базе данных для этого пользователя. И если быстро удалить или добавить несколько элементов, то какой-то из запросов перезапишет другой.

Я думаю сохранить данные в отдельный файл для каждого запроса, а потом прочитать каждый файл и сохранить один раз все данные, и удалить файлы в общем цикле приложения. Это хороший вариант или есть другие?
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
Fockker
@Fockker
Потомок старинного рода Ипатьевых-Колотитьевых
Это какой-то ужас.
Я не знаю, вопрос звучит как "Мне надо надеть штаны на голову и выйти погулять. Я думаю продеть в штанины руки, зайти в туалет, облиться холодной водой, высохнуть, надеть штаны на голову и идти гулять. Вот только боюсь простудиться, потому что вода холодная".

Весь этот кошмар происходит потому, что вы используете базу данных как микроскоп для колки орехов. Все проблемы тут оттого, что "это" сохраняется в одно поле в базе данных. А должно в разные. Так база данных устроена. Каждая частичка данных хранится в своем поле. Исключения бывают, но именно как исключения, а не как подход по умолчанию, и это явно не ваш случай.

Надо сделать отдельную таблицу, где будут разные поля, которые привязываются к пользователю по его id. И никаких проблем при редактировании этих полей никогда не будет.

Я имею в виду что должна это быть одна таблица, которая линкуется к текущей по связи один-ко-многим: таблица из трех колонок - id, user_id и собственно то значение, которое надо менять. Таким образом подмножество этой таблицы с одним и тем же user_id будет представлять из себя то самое "поле", которые вы пытаетесь редактировать сейчас. Но при этом все элементы будут лежать в отдельных строках, и редактироваться обычными SQL запросами.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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