Base de datos SQLite para aplicaciones de Android con múltiples usuarios potenciales

Tengo una aplicación con una base de datos SQLite para almacenar información para la cuenta de un usuario. Diseñé la base de datos en el supuesto de que la aplicación sólo tendría un usuario. Como tal, el ID del usuario no se almacena en la base de datos (pero se almacena en una base de datos central en un servidor). Sin embargo, es posible desconectarse de la aplicación y permitir que otro usuario inicie sesión, pero el problema con esto es en este momento, sus datos se descargan y se añaden a los datos del otro usuario. Esto no es lo que quiero que suceda, pero no estoy seguro de la mejor manera de cambiar el diseño de la base de datos para resolver esto. He pensado en:

  1. Una base de datos por usuario. Podría resultar en almacenamiento de datos no necesario si un usuario acaba de iniciar sesión una vez en el teléfono de su amigo y nunca más. También supongo que esto podría ser difícil de manejar.
  2. Agregue una columna de ID de usuario a todas las tablas, por lo que agregar no causa ningún problema. Todavía tiene la cuestión de datos no necesaria que (1) tiene, y pierde la modularidad de 1.
  3. Limpie la base de datos cuando el usuario cierra la sesión. Si el usuario tiene una gran cantidad de datos en el servidor, tardará mucho tiempo en sincronizar los datos cuando se inicie la aplicación (esto se hará en otro hilo, pero sigue siendo un dolor).

¿Uno de estos enfoques es bueno? ¿O hay una mejor manera de hacer esto?

Me gustaría ir a la opción 1. Mantenerlo como un archivo separado se asegurará de que no habrá ninguna implicación de rendimiento en absoluto por tener múltiples bases de datos.

Puede agregar el ID de usuario al nombre de archivo de la base de datos. Usted podría tener algún tipo de sistema LRU donde automáticamente eliminar la base de datos más antigua si tiene más de 4 (o si se excede una cierta cantidad de datos).

Los detalles de esta elección dependerán de usted, ya que sabe cuánto almacenamiento de datos desea utilizar y cuántos usuarios podrían utilizar la aplicación en el mismo dispositivo.

Eso es realmente depende de sus necesidades, sin embargo la tercera opción no parece muy práctico. Si desea hacer esto, es lo mismo que desinstalar y volver a instalar su aplicación.

Probablemente estaría más inclinado a usar la opción 2, pero depende de lo que quiera hacer dentro de su base de datos. Por ejemplo, si desea estadísticas o consultas en todos los usuarios en lugar de un individuo y si hay datos comunes que se comparten entre los usuarios.

Si está preocupado tamaño de almacenamiento, a continuación, escribir un servicio que purga los datos pertenecientes a cualquier usuario que no ha iniciado sesión con un determinado marco de tiempo.

  • ¿Qué diferencia hay entre SQLite y SQL?
  • SQLite, ¿cómo obtener todos los nombres de tablas en la base de datos?
  • ¿Es necesario cerrar una base de datos abierta con window.openDatabase?
  • SQLiteException no se captura
  • Cómo obtener los nombres de todas las tablas presentes en una base de datos en Android lite de SQL
  • Cómo convertir MDB a SQLite en Android
  • No se pudo asignar CursorWindow
  • Android.database.sqlite.SQLiteDatabase.rawQuery () no está actualizando una columna DATETIME con una función SQLite datetime ()
  • Error en sqlite "DROP TABLE IF EXISTS" android
  • Arrastrar y soltar RecyclerView que se rellena desde SQLiteDatabase
  • Devolver datos de AsyncTask Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.