Pregunta

Estoy desarrollando una galería que permite a los usuarios publicar fotos, comentarios, votar y hacer muchas otras tareas.

Ahora creo que es correcto que los usuarios puedan darse de baja y eliminar todos sus datos si así lo desean. Sin embargo, es difícil permitir que tal cosa porque se corre el riesgo de romper su aplicación (por ejemplo, ¿qué debo hacer cuando un comentario tiene muchas respuestas? ¿Qué debo hacer con las páginas que tienen muchas revisiones por parte de diferentes usuarios?).

Las fotos se pueden quitar fácilmente, pero para otros datos (es decir, comentarios, revisiones ...) yo pensamos que hay tres posibilidades:

  • asignarlo al administrador
  • asignarlo a un usuario llamado "-usuario eliminado"
  • MANTENER las asociaciones de corriente (es decir, el ID de usuario) y sólo cambiar el nombre de los datos del usuario (por ejemplo, asignar un nuevo nombre de usuario tal como "-usuario eliminado-24" y un inexistente e-mail tales como "noreply de removido-user- 24@mysite.com "

¿Cuáles son las mejores prácticas a seguir cuando permitimos que los usuarios eliminar sus cuentas? ¿Cómo se implementa ellos (sobre todo en los carriles)?

¿Fue útil?

Solución

Lo ideal sería que en un sistema que no le gustaría a "eliminar" dura datos. La mejor forma que conozco y que hemos puesto en marcha en el pasado es "suave Borrar". Mantener una columna de estado en todas las tablas de datos que se refiere idealmente al hecho de si la fila está activa o no. Cualquier fila cuando se crea es "activa" por defecto; sin embargo, como se borren las entradas; que se hacen inactivos.

Todas las consultas de selección que muestran datos sobre resultados de filtro de pantalla para sólo "registros activos". De esta manera se obtiene las siguientes ventajas: 1. Recuperación de Datos es posible. 2. Usted puede tener una tarea programada en el nivel de base de datos, lo que puede hacerse cargo de las eliminaciones de disco de una vez en una forma; si realmente se necesita. (Al igual que un procedimiento de SQL o algo así) 3. Usted puede tener una pantalla de administración para poder decidir lo que representa, entradas, etc usted realmente quiere marcar para borrado 4. Un incapacitante temperory de cuenta también se puede implementar con misma solución.

En los entornos prod donde he trabajado, una eliminación dura es una estricta no-no. Infact auditorías se mantienen para eliminaciones también. Sin embargo, si la aplicación es muy pequeño; que sería hasta el usuario.

Me gustaría volver a sugerir un "virtual de eliminación" o un "borrado suave" con la limpieza periódica del nivel de dB; que será mucho más rápido eficiente y optimizado de limpieza.

Otros consejos

He resuelto lo general este tipo de problema por tener una bandera activa en el usuario, y simplemente ajuste activo en false cuando se elimina el usuario. De esa manera mantener la integridad de referencia en todo el sistema, incluso si un usuario está "borrado". En la capa de negocio que siempre validar un usuario está activo antes de que les permite realizar operaciones. También puedo filtrar los usuarios inactivos cuando se recuperan los datos.

Lo más habitual es que hacer en lugar de eliminarlos de una base de datos, agregue un campo indicador booleano y tiene que ser cierto para los usuarios válidos y no válidos para los usuarios falsa. Tendrá que agregar el código para filtrar en la bandera. También debe eliminar todos los datos relevantes para el usuario que se puede. El propósito principal de esta bandera es mantener intactos los vínculos. Es una variante de los datos del usuario el cambio de nombre, pero la bandera será más fácil de comprobar.

Por lo general no gusta nada a eliminar y en su lugar optar por marcar registros como no publicados que utilizan los estados / borrados (es decir, con la AASM actúa como máquina de estados).

Yo prefiero estados y eventos que simplemente usando banderas como se puede utilizar para actualizar atributos eventos y enviar mensajes de correo electrónico, etc. de una sola falta. A continuación, comprobar los estados para decidir qué hacer después.

HTH.

Yo recomendaría poner en un campo de fecha de eliminación que contiene la fecha / hora que el usuario dado de baja - no sólo para el registro de usuario, sino a toda la información relacionada con ese usuario. La aplicación debe comprobar el campo antes de mostrar nada. A continuación, puede ejecutar eliminar un disco para todos los registros de 30 días (a su elección de tiempo) después de la fecha de supresión. Esto permitirá que la información no debe ser mostrado (es probable que tenga que actualizar la aplicación en algunos lugares), el tiempo para que el usuario pueda volver a suscribirse (accidental o repensar) y un proceso programado para borrar los datos antiguos. Me gustaría eliminar toda la información sobre el miembro y demás observaciones sobre el miembro o los datos publicados anteriores (fotos, etc.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top