Frontend vs Backend, часть 2

Программирование

Автор: admin

Пример 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 и выборка будет вестись только по доступным товарам, не тратя время и ресурсы на отфильтровывание удаленных товаров.

Продолжение следует …

Комментарии:

Оставить комментарий