12
Frontend vs Backend, часть 2
Программирование
Пример 4
Исходные данные: есть товары, которые создаются в админке и ложаться в таблицу БД products. В случае удаления товара, по заданию, мы не можем его удалять из БД, а можем лишь сделать невидимым для всех кроме суперадмина. Какие варианты???
Ну первым делом в мыслях крутиться: а что если создать еще одно дополнительное поле deleted в таблице products и если оно равно 0, то этот товар считается не удаленным, если 1 то наоборот. Само собой есть еще в таблице признак активности, но он служит другим целям.
Но хорошо подумав понимаешь, что если магазин крупный и часто происходит удаление товаров, то этот подход неприемлим, так как при выборке из таблицы, нам придется отфильтровать удаленные товары, а их со временем может быть столько же сколько и активных товаров. Если допустим записей всего 10000 из них 4000 удаленных товаров, так зачем же каждый раз фильтровать эти 4000 товаров. Поэтому предлагаю такой вид работы с удаленными товарами.
Для начала создаем таблицу для удаленных товаров products_deleted. У нее будут точно такие же поля как и в таблице products, за исключением того, что id уже будет не primary и не auto increment и добавиться еще несколько полей. Например поля delete_date (время удаления) и user(id пользователя, удалившего данный продукт).
Дальше все просто. При удалении товара мы копируем его в таблицу для удаленных товаров products_deleted. А из таблицы products его удаляем. Теперь если суперадмин захочет восстановить товар, скрипт должен будет сделать обратные действия.
Теперь, имея те же 10000 записей, 4000 будут находиться в таблице products_deleted, а остальные 6000 будут в таблице products и выборка будет вестись только по доступным товарам, не тратя время и ресурсы на отфильтровывание удаленных товаров.
Продолжение следует …
для этого есть другие программы
Какие еще программы. Вы что бот???
Хорошая подборка, спасибо, почитал с удовольствием