Home | Escopo e Cronograma | Processos | Design | Configuração | Arquitetura | Código | Banco de Dados | Qualidade | Gestão |
---|
Banco de Dados
Descrição
O Firebase é uma plataforma de desenvolvimento de aplicativos fornecida pela Google. Ela inclui um banco de dados em tempo real chamado Firebase Realtime Database, que é uma solução NoSQL altamente escalável. O Firebase Realtime Database armazena dados como um grande objeto JSON, permitindo que os desenvolvedores criem aplicativos em tempo real com atualizações automáticas.
Nesta documentação, vamos explorar a estrutura do banco de dados Firebase, juntamente com os schemas para as coleções Objective e User.
Modelagem do Banco de Dados
Estrutura do Banco de Dados Firebase
O Firebase Realtime Database organiza os dados em uma estrutura de árvore, onde cada nó é identificado por uma chave exclusiva. Os nós podem conter outros nós e/ou valores primitivos.
Estrutura da Árvore de Dados
/users
/<user_id>
name: "Nome do Usuário"
notificationTime: 12
dailyGoal: 5
/objectives
/<objective_id>
name: "Nome do Objetivo"
/phrases
/<phrase_id>
text: "Texto da Frase"
/phrases
/<phrase_id>
text: "Texto da Frase"
Na estrutura acima, temos um nó raiz chamado users, que contém nós filhos identificados por IDs de usuário (<user_id>). Cada nó de usuário possui os seguintes atributos:
- name: O nome do usuário (String).
- notificationTime: O horário de notificação do usuário (int).
- dailyGoal: A meta diária do usuário (int).
- objectives: Um nó que armazena os objetivos do usuário.
- phrases: Um nó que armazena as frases do usuário.
Dentro do nó objectives, encontramos nós identificados por IDs de objetivo (<objective_id>). Cada nó de objetivo possui os seguintes atributos:
- name: O nome do objetivo (String).
- phrases: Um nó que armazena as frases relacionadas ao objetivo.
Dentro do nó phrases, encontramos nós identificados por IDs de frase (<phrase_id>). Cada nó de frase possui o seguinte atributo:
- text: O texto da frase (String).
Schemas das Coleções
A seguir, apresentamos os schemas das classes 'Objective' e 'User' em Dart, que representam a estrutura de dados mencionada acima.
Objective
class Objective {
String name;
List<Phrase> phrases;
Objective({required this.name, required this.phrases});
Map<String, dynamic> toJson() {
List phrasesJson = phrases.map((e) => e.toJson()).toList();
return {
'name': name,
'phrases': phrasesJson,
};
}
}
class Phrase {
String text;
Phrase({required this.text});
Map<String, dynamic> toJson() {
return {'text': text};
}
}
User
import 'objective.dart';
import 'phrase.dart';
class User {
final String? name;
final int? notificationTime;
final int? dailyGoal;
final List<Objective>? objectives;
final List<Phrase>? phrases;
const User({
this.name,
this.notificationTime,
this.dailyGoal,
this.objectives,
this.phrases,
});
Map<String, dynamic> toJson() {
List objectivesJson = objectives!.map((e) => e.toJson()).toList();
List phrasesJson = phrases!.map((e) => e.toJson()).toList();
return {
'name': name,
'notificationTime': notificationTime,
'dailyGoal': dailyGoal,
'objectives': objectivesJson,
'phrases': phrasesJson,
};
}
}
Os schemas acima definem as classes Objective e Phrase, que representam as estruturas de dados dos objetivos e frases, respectivamente. A classe User contém os atributos correspondentes aos dados do usuário, incluindo listas de objetivos e frases.
Conclusões
Esta documentação forneceu uma visão geral do banco de dados Firebase e apresentou os schemas para as coleções Objective e User. Com essas informações, os desenvolvedores podem entender a estrutura do banco de dados e como os dados são organizados no Firebase Realtime Database.