es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema de diseño de base de datos SQL en Android Room DB.

Estoy construyendo una aplicación que recupera publicaciones de la línea de tiempo (como en una aplicación de redes sociales) desde el servidor, las guarda en una base de datos local de room y las muestra en la interfaz de usuario a través de paging. Mi problema es en qué criterio debo recuperar las publicaciones de la base de datos local.

Enfoque que he intentado:
1. Recuperar las publicaciones basadas en el id de la publicación (clave primaria) descendente, pero falla en el siguiente caso:

Supongamos que el usuario A tiene 2 publicaciones. Más tarde, el usuario B crea 2 publicaciones (por lo tanto, teniendo un postId más reciente). Ahora, cuando el usuario B sigue al usuario A, el backend devolverá las publicaciones en este formato: 2 publicaciones del usuario A + 2 publicaciones del usuario B. Pero (guardar y) recuperar las publicaciones de la base de datos local basadas en postId descendente haría que la publicación del usuario B aparezca debajo de la publicación del usuario A en la línea de tiempo del usuario A, lo que parece incorrecto. Lo mismo se podría pensar para el orden ascendente en el caso inverso.
2. Usar una columna de marca de tiempo en la base de datos correspondiente al momento de la inserción de la publicación y recuperar las publicaciones basadas en la marca de tiempo. Pero todas las publicaciones en la inserción por lotes obtienen el mismo valor, ya sea Instant.now() o System.currentTimeMillis().

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener publicaciones de la base de datos local en una aplicación de redes sociales, hay algunos criterios que se pueden considerar:

    1. Obtener publicaciones basadas en el tiempo en que se crearon: En lugar de utilizar el ID de la publicación, se puede utilizar una columna de timestamp en la base de datos para almacenar la hora de inserción de cada publicación. Las publicaciones pueden ser obtenidas y ordenadas basándose en la columna de timestamp en orden ascendente o descendente. Este enfoque asegura que las publicaciones más recientes se muestren primero.
    2. Usar una columna separada para seguir al creador de la publicación: otro enfoque es utilizar una columna separada en la base de datos para almacenar el creador de cada publicación. De esta manera, al buscar publicaciones en la base de datos, las publicaciones pueden ser ordenadas primero por creador y después por timestamp. Esto asegura que las publicaciones del mismo creador se muestren juntas.

    3. Combinar ambos enfoques: se puede utilizar una combinación de los dos enfoques anteriores. Las publicaciones pueden ser ordenadas primero por creador y después por timestamp dentro de cada grupo de creador. Esto asegura que las publicaciones del mismo creador se muestren juntas y que las publicaciones más recientes se muestren primero dentro de cada grupo.

    En general, el enfoque dependerá de las necesidades específicas de la aplicación y de cómo se estructura la línea de tiempo.

Comments are closed.