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

Я никогда не использовал это, и я не знаю, правильна ли следующая реализация. Я думаю, это может быть улучшено с большим отрывом.

StackBlitz

По сути, из того, что я понимаю, по умолчанию поведение при установке фильтра заключается в проверке, существует ли это значение в данных.

Но в вашем случае вы хотите проверить различные столбцы и выполнить «множественный» фильтр.

вам нужно предоставить собственную функцию filterPredicate и обработать там свой фильтр

11
задан VirtuosiMedia 28 March 2009 в 23:05
поделиться

4 ответа

Вообще говоря, с базами данных Вы редко удаляете что-либо. Можно отметить его, как удалено, но вообще говоря, Вы сохраняете его в своей базе данных по крайней мере какое-то время.

Существует много причин этого. Некоторые из них законны. У Вас могут быть требования ot, сохраняют данные в течение установленного срока. Некоторые из них являются техническими. Иногда его просто гарантия. Вы, возможно, должны восстановить информацию. Пользователь может запросить, чтобы их учетная запись была вновь открыта, или она, возможно, была заблокирована из-за спама, но это было то, потому что учетная запись была поставлена под угрозу и была теперь восстановлена.

Старые данные могут быть удалены или заархивированы, но это может занять месяцы или даже годы.

Лично я просто даю соответствующим данным столбец состояния (например, 1 = активный, 0 = удаленный) и затем просто изменяю состояние, а не удаляю его 99% времени.

Целостность данных является другой проблемой здесь. Позвольте мне дать Вам пример.

Предположите, что у Вас есть два объекта:

User: id, nick, name, email
Message: id, sender_id, receiver_id, subject, body

Вы хотите удалить конкретного Пользователя. Что Вы делаете о сообщениях, которые они отправили и получили? Те сообщения появятся в чужом ящике входящих сообщений или отправленных объектах, таким образом, Вы не сможете удалить их. Вы устанавливаете соответствующее поле в сообщении к ПУСТОМУ УКАЗАТЕЛЮ? Это не имеет большой смысл или потому что то сообщение действительно прибывало из (или переходило в), кто-то, даже если они больше не активны.

Вы более обеспечены просто маркировка что пользователь, как удалено и имение в наличии их. Это делает это и аналогичные ситуации намного легче иметь дело с.

Вы также упоминаете потоки форума и так далее. Вы не можете удалить их или (если нет другие причины сделать так, такие как спам или злоупотребление), потому что они довольны, что это связано с другим содержанием (например, сообщения форума, которым ответили на).

Единственные данные, которые можно безопасно и обоснованно удалить, являются дочерними данными. Это - действительно различие между агрегированием и составом. Отношения Пользователя и сообщения выше являются агрегированием. Примером состава является Дом и Комната. Вы удаляете Дом, и все комнаты переходят в. Комнаты не могут существовать без Дома. Это - состав или, в терминах связи сущностей, отношениях отцов и детей.

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

20
ответ дан 3 December 2019 в 04:53
поделиться

Вы могли просто отметить пользователя, как удалено и затем каждый раз, когда Вы отображаете любое содержание, вовлекающее того пользователя затем, Вы отображаете имя как, "Экс-пользователь" или что-то.

Это защищает покойные пользовательские идентификационные данные, не уничтожая Ваше содержание.

1
ответ дан 3 December 2019 в 04:53
поделиться

Необходимо сохранить все содержание и просто отметить пользователя, как удалено, таким образом, другие пользователи не смогут видеть его профиль, имя пользователя и т.д. Затем другой пользователь должен смочь зарегистрироваться тем же именем (так как это должно стать свободным).

1
ответ дан 3 December 2019 в 04:53
поделиться

Я думал об этих тех же проблемах в течение достаточно долгого времени. Честно Вы не должны удалять поток, запущенный user-to-be-deleted, если другие люди внесли свое время и усилия к нему. Я помню на одном форуме было правило, Вы не можете удалить свой поток после несколько спустя 11 часов после того, как это было опубликовано. Я предполагаю, что идея позади состоит в том, что Вы не можете забрать свое слово после объявления его.

Так, лучше заблокируйте учетную запись, но сделайте не каскадное удаление что-либо относительно пользователя.

Особенно, так, чтобы они могут удалить свою учетную запись, затем зарегистрироваться под тем же именем и запустить все это снова.

1
ответ дан 3 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: