Как я могу создать Корзину для приложения базы данных?
-
20-09-2019 - |
Вопрос
У меня есть приложение базы данных, я хочу разрешить пользователю восстанавливать удаленные записи из базы данных, например, в Windows у нас есть Корзина для файлов, я хочу сделать то же самое, но для записей базы данных предположим, что у меня есть много связанных таблиц, в которых много полей.
Редактировать:
допустим, что у меня есть следующие структуры:
Таблица отчетов
- Первичный ключ RepName
- Отчетные данные
Таблица пользователей
- Идентификатор первичного ключа
- Имя
Таблица пользовательских отчетов
- Первичный ключ RepName
- Первичный ключ userId
- Удален
теперь, если я помещу поле isdeleted в таблицу UserReports, пользователь не сможет снова добавить ту же запись, если она помечена как удаленная, потому что запись уже есть, и это приведет к дублированию.
Решение
Примечание:Я всегда использую суррогатный первичный ключ.
Добавьте столбец метки времени 'deleted_at'.Когда пользователь удаляет запись, укажите там текущее время.Сделайте это ключевой частью вашего ограничения.
В каждом запросе не забывайте искать только записи, которые имеют значение null в поле deleted_at.
Некоторые фреймворки (например, ActiveRecord) делают это тривиальным.