Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 13
    • Issues 13
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Projeto Focus
  • Wiki
  • Wiki
  • banco_dados

Last edited by Gustavo Santos SIlva Jun 12, 2023
Page history

banco_dados

Home Escopo e Cronograma Processos Design Configuração Arquitetura Código Banco de Dados Qualidade Gestão

Banco de Dados

image

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

  • Esquema Entidade-Relacionamento

image

  • Esquema-Lógico

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.

Clone repository
  • 1º Encontro com Stakeholder
  • Gerenciamento do Projeto
  • Mocks
  • Planing Poker
  • User Stories
  • arquitetura
  • banco_dados
  • codigo
  • configuracao
  • design
  • escopo e cronograma
  • Home
  • horarios
  • instalacao
  • processos
View All Pages