Como desnormalizar / normalizar a estrutura de dados do banco de dados em tempo real do firebase?
Estou tentando entender como estruturar meus dados para o banco de dados em tempo real do firebase. Eu li odocs e algumas outras perguntas sobre como encontrar os seguintes conselhos:
os dados devem ser o mais planos possíveisser caro em gravações para ter leituras baratasEvite aninhar dadosduplicação de dados pode estar bemTendo isso em mente, deixe-me descrever meu caso de uso específico. Primeiro, hádo utilizador com os seguintes atributos:
Primeiro nomeÚltimo nomeFoto do perfil (grande)Foto do perfil (pequena)Um usuário pode criar uma história, que consiste nos seguintes atributos:
Do utilizadorTextoRegistro de data e horaA representação visual de uma história pode ser assim:
Minha pergunta é: como você associaria as informações do usuário (nome, sobrenome, foto pequena do perfil) a uma história?
O que eu pensei sobre:
coloque um user_id na história que contém o ID estrangeiro para o usuário específico. Para carregar a história, teríamos que fazer duas solicitações ao banco de dados, uma para obter a história e outra para o usuário.
{user_id: 'XYZ', texto: 'foobar', registro de data e hora: ...}
coloque nome, sobrenome e pequena imagem de perfil na história. Apenas uma solicitação seria necessária para exibir a história. Mas teríamos que atualizar a história de cada usuário, quando por exemplo a imagem do perfil muda.
{user_id: 'XYZ', nome: 'sandra', sobrenome: 'adams', smallProfilePicutre: '...', texto: 'foobar', registro de data e hora: ...}
Portanto, quando há poucas histórias criadas e na maioria das vezes há apenas leituras, a abordagem 1. seria cara, porque pagamos duas leituras para exibir uma história. A abordagem 2. seria mais econômica.
Gostaria de aqui seus pensamentos e idéias sobre isso.