¿Cómo desnormalizar / normalizar la estructura de datos para la base de datos en tiempo real de Firebase?

Estoy tratando de entender cómo estructurar mis datos para la base de datos en tiempo real de Firebase. yo leo eldocs y algunas otras preguntas sobre SO para encontrar los siguientes consejos:

los datos deben ser lo más planos posibleser costoso en escrituras para tener lecturas baratasevitar anidar datosla duplicación de datos puede estar bien

Teniendo esto en cuenta, permítanme describir mi caso de uso específico. Frist hayusuario con los siguientes atributos:

Primer nombreApellidoFoto de perfil (grande)Foto de perfil (pequeña)

Un usuario puede crear una historia, que consta de los siguientes atributos:

UsuarioTextoMarca de tiempo

La representación visual de una historia puede verse así:

Mi pregunta es, ¿cómo asociaría la información del usuario (nombre, apellido, foto de perfil pequeña) con una historia?

Lo que pensé:

ponga un user_id en la historia que contiene la identificación foránea para el usuario específico. Para cargar la historia, tendríamos que hacer dos solicitudes a la base de datos, una para obtener la historia y otra para el usuario.

{user_id: 'XYZ', texto: 'foobar', marca de tiempo: ...}

poner nombre, apellido y pequeña foto de perfil en la historia. Solo una solicitud sería necesaria para mostrar la historia. Pero tendríamos que actualizar la historia de cada usuario, cuando p. La imagen de perfil cambia.

{user_id: 'XYZ', nombre: 'sandra', apellido: 'adams', smallProfilePicutre: '...', texto: 'foobar', marca de tiempo: ...}

Entonces, cuando se crean pocas historias y la mayoría de las veces solo hay lecturas, el enfoque 1. sería costoso, porque pagamos dos lecturas para mostrar una historia. El enfoque 2. sería más rentable.

Me gustaría presentar aquí sus pensamientos e ideas sobre esto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta