2009-03-28 12 views
10

En un sitio que tiene una parte justa de contenido generado por el usuario como subprocesos de foro, comentarios de blog, artículos enviados, mensajes privados y públicos, perfiles de usuario, etc. ¿Cuál es la mejor práctica en cuanto a qué hacer con los datos generados por el usuario si un usuario cancela su cuenta?Mejores prácticas para la eliminación de datos en la terminación de cuenta de usuario

No estoy pidiendo asesoramiento legal y no veo esto como una cuestión jurídica sino como una cuestión de lograr un equilibrio entre el usuario, otros usuarios y el sitio porque los términos de uso se pueden elaborar después ese equilibrio se golpea. Algunos de los siguientes escenarios deben ser considerados cuando un usuario elimina su cuenta:

  • mensajes privados entre usuarios - caso de que el rastro de la conversación será eliminado? Si es así, ¿cómo se cuenta para casos de acoso donde se necesita evidencia legal ?
  • Preguntas o respuestas del foro - Si el usuario hizo una pregunta, ¿debería eliminarse el hilo completo ? Si responden una pregunta, , ¿se debe eliminar la respuesta ?

Estoy haciendo esta pregunta porque estoy implementando cuentas de usuario en un CMS. Sé que Facebook se topó recientemente con trouble con sus cambios en sus términos de uso, pero ¿cómo se equilibra el deseo de eliminar con las necesidades y la inversión de los otros usuarios que también participaron?

Respuesta

18

Hablando en general con bases de datos, rara vez se borra algo. Puede marcarlo como eliminado pero, en general, lo mantiene en su base de datos al menos durante un tiempo.

Hay muchas razones para esto. Algunos de ellos son legales. Es posible que tenga requisitos para guardar datos durante un período determinado. Algunos de ellos son técnicos. A veces es solo una salvaguarda. Es posible que deba restaurar la información. El usuario puede solicitar que su cuenta se vuelva a abrir o que se haya bloqueado debido a correo no deseado, pero eso se debió a que la cuenta se había visto comprometida y ahora se ha restaurado.

Los datos antiguos se pueden eliminar o archivar, pero esto puede llevar meses o incluso años.

Personalmente acabo de dar los datos relevantes una columna de estado (por ejemplo, 1 = activo, 0 = eliminado) y luego simplemente cambiar el estado en lugar de eliminarlo el 99% del tiempo.

La integridad de los datos es otro problema aquí. Dejame darte un ejemplo.

Suponga que tiene dos entidades:

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

Usted desea eliminar un usuario en particular. ¿Qué haces con los mensajes que han enviado y recibido? Esos mensajes aparecerán en la bandeja de entrada de otra persona o en elementos enviados para que no pueda eliminarlos. ¿Estableces el campo relevante en Mensaje en NULO? Eso tampoco tiene mucho sentido porque ese mensaje provino de (o se dirige a) alguien, incluso si ya no están activos.

Le conviene marcar a ese usuario como eliminado y mantenerlos. Hace que esta y otras situaciones similares sean mucho más fáciles de tratar.

También menciona los hilos del foro, etc. Tampoco puede eliminarlos (a menos que haya otras razones para hacerlo, como correo no deseado o abuso) porque son contenido relacionado con otro contenido (por ejemplo, mensajes del foro a los que se ha respondido).

Los únicos datos que puede eliminar de forma segura y razonable son los datos secundarios. Esta es realmente la diferencia entre la agregación y la composición. La relación de usuario y mensaje anterior es agregación. Un ejemplo de composición es House and Room. Borras una casa y todas las salas van a. Las habitaciones no pueden existir sin una casa. Esto es composición o, en términos de relación de entidad, una relación padre-hijo.

Pero encontrará más instancias de agregación que de composición (en mi experiencia) por lo que la pregunta es: ¿qué hace con esa información? Es realmente difícil borrar todos los rastros de alguien sin borrar cosas que no debería. Simplemente márcalas como borradas, bloqueadas o inactivas y trátalas de esa manera.

+0

¿Qué ocurre en términos de acceso público a esos datos, particularmente los datos que involucran a otros, como un hilo del foro? ¿Debería permanecer públicamente visible? – VirtuosiMedia

1

Puede simplemente marcar al usuario como eliminado y luego siempre que muestre cualquier contenido que involucre a ese usuario, entonces mostrará el nombre como "Ex-usuario" o algo así.

Esto protege la identidad de los usuarios fallecidos sin destruir su contenido.

1

Debe conservar todo el contenido y simplemente marcar el usuario como eliminado para que otros usuarios no puedan ver su perfil, nombre de usuario, etc. Luego otro usuario debería poder registrarse con el mismo nombre (ya que debería liberarse).

1

He estado pensando en estos mismos problemas durante bastante tiempo. Honestamente, no debería eliminar un hilo iniciado por un usuario a ser eliminado si las otras personas le han aportado su tiempo y esfuerzo. Recuerdo que en un foro había una regla de que no puedes eliminar tu hilo después de aproximadamente 11 horas después de que se haya publicado. Supongo que la idea detrás es que no puedes dejar tu palabra después de haberla pronunciado.

Por lo tanto, mejor cuenta de bloqueo, pero no en cascada: elimine todo lo relacionado con el usuario.

Especialmente, para que puedan eliminar su cuenta, luego registrarse con el mismo nombre y comenzar todo de nuevo.

Cuestiones relacionadas