Рекомендации по удалению данных при прекращении действия учетной записи пользователя

StackOverflow https://stackoverflow.com/questions/693725

  •  22-08-2019
  •  | 
  •  

Вопрос

На сайте, на котором имеется значительная доля пользовательского контента, такого как темы форума, комментарии в блогах, отправленные статьи, частные и публичные сообщения, профили пользователей и т. д.;Какова наилучшая практика в отношении того, что делать с данными, сгенерированными пользователем, если пользователь удаляет свою учетную запись?

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

  • Частные сообщения между пользователями - следует ли удалить след разговора?Если да, то как вы учитываете случаи преследования, когда необходимы юридические доказательства?
  • Вопросы или ответы на форуме - Если пользователь задал вопрос, должен ли весь поток быть удален?Если они отвечают на вопрос, должен ли ответ быть удален?

Я задаю этот вопрос, когда внедряю учетные записи пользователей в CMS.Я знаю, что Facebook недавно столкнулся с беда с их изменениями в условиях использования, но как сбалансировать желание удалить с потребностями и вкладами других пользователей, которые также участвовали?

Это было полезно?

Решение

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

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

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

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

Целостность данных — еще одна проблема.Позволь мне привести пример.

Предположим, у вас есть две сущности:

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

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

Лучше просто пометить этого пользователя как удаленного и оставить его при себе.Это значительно упрощает решение этой и подобных ситуаций.

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

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

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

Другие советы

Вы можете просто пометить пользователя как удаленного, а затем всякий раз, когда вы отображаете какой-либо контент, связанный с этим пользователем, вы отображаете имя как «Бывший пользователь» или что-то в этом роде.

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top