dzheka3d
@dzheka3d

Как реализовать удаление информации с сайта?

Всем привет! Уже неделю не могу решиться на конкретный способ удаления информации с сохранением целостности данных...
Решил рассуждать по максимуму... т.е. пользователь может удалять любую свою инфу с сайта в любое время (как в социальных сетях).
Перебрал идеи:
- не удаление, а скрытие информации - этот подход наверное самый плохой ибо во всех запроса сайта придется отсеивать эти лишние данные. К тому же, если к статье написан комментарий, то при просмотре своих комментариев пользователь будет видеть часть статьи, но не сможет её открыть. Поэтому лучше удалять все вместе с комментариями.
- каскадное удаление с помощью внешних ключей, не понравилось ибо нельзя создать зависимости от нескольких полей в таблице, актуально для таких таблиц как комментарии, где есть флаг "news", "posts" и т.д..
- триггеры, огромная часть логики ложится в базу, что не удобно, ибо не находится перед глазами и скорее всего через пол года просто забудется, в итоге сама идея целостности данных заранее провальна. При этом при добавлении функционала на сайт придется вспоминать что там и где нужно прописать дополнительно. Скорее всего что-то упустится т.к. опять же - все не перед глазами а где-то там.

И вот сейчас думаю об удалении уже в самих модулях (классах) реализующих вывод или изменение информации. Вот и вопрос... как поступить? какие подводные камни?
- Сделать отдельный класс для удаления любой информации с сайта и как и в триггерах всю логику скрывать именно в этом классе. (каждый метод - удаление из одной таблицы, для связанных данных вызываем другие методы и все так удаляется по цепочке) Это немного удобное чем в триггерах, но смысл тот же - логика отделена от проекта.
Или вот еще.... в основном классе модуля (news, posts и т.д.) делаем метод удаления. Для связанных данных подключаем другие классы и уже там вызываем свой метод удаления.

Большой получился, вопрос, но по-другому не выходит... уже несколько раз в разном контексте задавал этот вопрос, решил уместить все в одном месте с наработанным опытом и мыслями о конкретном методе.
  • Вопрос задан
  • 226 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Стандартный процесс:
  1. При удалении сущности генерируется событие, содержащее информацию о ней.
  2. Отдельно от всей остальной логики приложения на это событие повешены обработчики.
  3. Когда событие создаётся, срабатывают обработчики, каждый из них удаляет свой кусок функциональности.


Таким образом легко управлять процессом и нет никакого класса-монстра со всей логикой, который разваливается при неосторожном чихе.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rastishka
@Rastishka
Не удаление, а скрытие - лучший вариант как раз таки.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽