Você está na página 1de 58

Modelagem de Dados Não Relacionais

Modelagem NoSQL no Firebase na prática


Modelagem de Dados
1. Fundamentos NoSQL

2.Firebase como banco NoSQL (na prática)

3. Formas de desenhar seu modelo

4. Modelagem NoSQL

4.1 Metodologia Modelagem

4.2 Estratégias

4.3 Relações

5. Criando um App do zero com FlutterFlow


Pré Requisito - Entendimento SQL

1 2 3 4

ANÁLISE DE MODELO MODELO MODELO


REQUISITOS CONCEITUAL LÓGICO FÍSICO

Levantamento e Entendimento geral Detalhamento das Implementação do


análise de requisitos de dos dados do negócio entidades, atributos e banco de dados em
negócio do software (visão alto nível) relacionamentos. SGBD por meio de SQL

CREATE TABLE alunos(


aluno_id integer NOT NULL,
nome_aluno varchar(200) NOT NULL,
email_aluno varchar(50) NOT NULL,
Primary Key (aluno_id)
);
Modelagem Final Banco Relacional
O que vamos aprender
Modelagem Banco de Dados NoSQL

Fundamentos Essenciais NoSQL


Conceitos importantes sobre NoSQL

Formas de modelar
Design de banco não relacionais

Firebase - BaaS
Conhecendo por dentro da ferramenta NoSQL - Documentos

Modelagem na Prática no Firebase


Construção dos schemas e relações na prática

FlutterFlow como Frontend


Visualizando os dados por meio de uma ferramenta nocode
1. Fundamentos NoSQL
Conceitos essenciais Bancos Não Relacionais (Not Only SQL)
Bancos de Dados NoSQL (Not Only SQL)

Documento Grafos Chave-Valor Colunar


NoSQL - Documentos

Tabelas Coleções

Linhas Documentos
NoSQL - Documentos
Coleções de Dados = "Tabelas" Documentos (formato json)

{
"alunos":{
"id_aluno": "0001",
"nome_cliente": "Matheus Castelo",
"idade": 29,
"email": "castelo@gmail.com",
cursos alunos "celular": "489999-9999"
}
}
campo valor

Cada documento é um aluno


Dentro deste documento, há dados do aluno.

professores
vendas
Bancos de dados do mercado (NoSQL)
SQL e NoSQL

SQL NoSQL
Banco de dados relacional Banco de dados não relacional

Schema definidos (Rígido); Schema Dinâmico (Flexível);


Focado em relações; Permite relações, mas não é o foco;
Bom para queries complexas e Joins; Ruim para queries complexas e Joins;
Menos indicado para performance. Ótimo para performance (Big Data)
2. Firebase com banco NoSQL
Serviço de Backend As a Service
O que é o firebase?
Empresas que usam o firebase
Preços Firebase
Planos gratuitos com ótimo custo benefício!
Vantagens e desvantagens Firebase

Vantagens Pontos a considerar

- Dados em tempo real; - Exige maior conhecimento técnico;


- Autenticação; - Utiliza NoSQL
- Push Notifications;
- Segurança;
- Analytics do app;
- Aplicativos com perfomance e escaláveis;
- Plano Gratuito muito completo!
Bora pra prática! Aqui vai ser mão na massa
Criar conta Firebase
Overview Geral
Banco de Dados Firestore
Coleções e documentos
Subcoleções
Data Types
3. Modelagem em NoSQL
Desenho do banco de dados não relacional
Podemos desenhar dessa forma?

Cuidado!

Utilizar a modelagem relacional pode ser


um problema em bancos não relacionais.
NoSQL não possui schemas definidos.

Geralmente buscamos:
- Pensar estrategicamente em quais
consultas faremos;
- Agregar dados quando possível, pois
fazer joins não é adequado em NoSQL.
NoSQL é flexível
NoSQL SQL
"alunos" : {
"aluno_id": 0001,
"nome_aluno": "Carol",
"email_aluno": "carol@gmail.com"
}

"cursos": {
{
"curso_id": C001,
"nome_curso": "Formação FlutterFlow",
"curso_duracao": 20,
"aluno_id": 0001
},
{
"curso_id": C002,
"nome_curso": "Formação Bubble",
"curso_duracao": 20,
"aluno_id": 0001
"ultima_atualização": 12-06-2023
}
}
Formas de Modelar
Como fazer o design do Banco de Dados
Diagrama UML ER

Fonte: Dataedo.com
Mapa Mental

Fonte: When Relational-Based Applications Go to NoSQL Databases: A Survey


Documento - Coleções

Viagens Usuários

Documentos Documentos
Design Padrão No-Code Start-Up
alunos {
"alunos":{
"id_aluno": "0001",
"nome_cliente": "Matheus Castelo",
"idade": 29,
aluno1 aluno2 aluno3 "email": "castelo@gmail.com",
"celular": "489999-9999"
}
Coleções Documentos }

aluno4 aluno5 aluno6

aluno7 aluno8
Modelagem Aplicativo de Viagens
Modelagem Aplicativo Delivery
4. Modelagem na prática
Passo a passo para modelar seu banco de dados NoSQL
Metodologia de Modelagem

1 2 3 4

ANÁLISE DE MODELO MODELO MODELO


REQUISITOS CONCEITUAL LÓGICO FÍSICO

Levantamento e Entendimento geral Detalhamento das Implementação do


análise de requisitos de dos dados do negócio coleções, documentos banco de dados em
negócio do software (visão alto nível) e relacionamentos SGBD NoSQL

Entendimento de quais
"perguntas" você fará para o
seu banco
Modelagem NoSQL - Documentos

Princípios Importantes

Queries estratégicas e rápidas


Consultas devem ser pensadas: Quais informações vou precisar?

Coleções podem ser grandes, mas documentos pequenos


Documentos não podem ter mais que 1MB
Quando queremos 1 dado do documento, todos os dados são carregados

Duplicação de dados é permitido


Duplicar dados pode melhorar seu banco NoSQL. Não é necessário Normalizar.
Foque em conseguir o dado sem usar múltiplas consultas.

Agregue dados ao invés de usar joins


Aproveite a flexibilidade dos banco NoSQL para agregar dados
Quais consultas você irá precisar?

Para realizar modelagem NoSQL você deve se perguntar quais


queries (consultas) irá precisar fazer.

Isso geralmente é realizado na etapa de Análise de Requisitos, onde


entendemos o que o usuário irá precisar e assim teremos uma lista dos
dados e informações que precisaremos puxar do banco de dados.
Modelagem na Prática
Formações No-Code Start-Up

No-Code Start-Up oferece capacitações no


mundo no-code, ensinando a criar
aplicativos robustos sem precisar
programar.

Os alunos podem comprar variados cursos


para aprender a criar aplicativos sem
código e como monetizar seu negócio.

Os professores atuais são Celso Neto e


Matheus Castelo.
Estratégias para Modelagem
Como criar coleções, documentos e conectar as informações
Exemplo Prático
Formação No-Code Start-Up

Alunos realizam avaliação do curso,


com nota e descrição.

Como modelar esse dado em nosso


banco NoSQL?
Estratégia 1 Ideal para poucos dados e
quando não é necessário
realizar queries entre
Incorporar dados no documento (map) coleções.

Exemplo: Top 5 avaliações


Pontos positivos
- Os dados já estão conectados ao
documento em questão.

Pontos a considerar
- Má Performance
Ao carregarmos uma lista completa
dos cursos, se houver muitas
avaliações, isso impactará a
performance pois muitos dados serão
carregados ao mesmo tempo.

- Limitação de consulta
Como fazer uma query para consultar
as avaliações de todos cursos mais
recentes?

- Segurança e privacidade
Se há dados sensíveis, é melhor
separar em coleções diferentes.
Ideal para consultas que não

Estratégia 2 tenham relação com documentos


(pais) diferentes

Utilizar subcoleções Ex: Exibir na Tela Detalhes


Curso todas avaliações daquele
curso

Pontos positivos
- Os dados já estão conectados ao
documento em questão
- Melhor performance, pois
utilizamos coleções e não grandes
documentos
- Mais seguro pois os dados estão
em coleções diferentes.

Pontos a considerar
- Limitação de consulta
Como fazer uma query para
consultar as avaliações de
todos cursos mais recentes?
Estratégia 3 Cenário ideal para
grande quantidade de
Criar novas coleções com relações dados já agregados

Pontos positivos
- Melhor performance, pois utilizamos
coleções e não grandes documentos
- Mais adequado para consultas
- Seguro

Pontos a considerar
- Os dados não estão conectados ao
documento em questão
- Pode acontecer de ter que fazer
várias queries diferentes, isso pode
afetar a performance.

Obs: Duplicação é permitido! :)


Caso queira puxar mais informações do curso
em questão, poderia repetir os dados no
mesmo documento.
Relações
Relacionamento dentro de documentos e coleções
Relações - 1:1
1 1
Professores possui cursos

Opção 1) Relacionamento
Conectar os documentos por meio de
relações via ID

Opção 2) Agregação
Juntar os dados de acordo com a
estratégia 1, onde incorporamos dados
no próprio documento.
Relações - 1:muitos
1 n
Cursos possui Vendas

Dados <1Mb Estratégia 1


Incorporar dados no documento
Você sempre fará uma "Quais são os Top 5 dias que mais venderam do curso A?"
consulta conectada com
o documento pai?
Dados >1Mb Estratégia 2
Utilizar subcoleções
"Qual foi o mês que mais vendeu do curso A?'

Você precisará fazer Estratégia 3


Sim Novas Coleções
Não consultas entre
coleções? "Qual é o total de vendas de todos os cursos em
Janeiro pelo Professor Castelo? "
Relações - muitos:muitos SQL

n n
Alunos possui Cursos
Nova tabela
Relações - muitos:muitos NoSQL
Relações - muitos:muitos NoSQL
Exemplo Instagram Já aproveita para
nos seguir :)

Usuário tem posts

1 n
Users possui Posts

Curtidas

n n
Users Likes Posts
Exemplo Instagram
Bora pra prática! Mão na massa!

1) No Miro
Desenho final da modelagem
NoSQL

2) No Firebase
Modelar banco de dados da
Formação e suas relações
Modelagem Final
O que aprendemos até aqui?

Formas de Desenhar Metodologia Modelagem Princípios


Como fazer o design de um banco Passo a passo para modelagem Princípios importantes para
NoSQL e suas relações de Bancos Não Relacionais realizar a modelagem NoSQL

Estratégias NoSQL Relações em NoSQL Firebase na prática


3 estratégias para organizar as Como fazer as relação 1:1, 1:n e Construção do banco de dados do
coleções e documentos. n:n na modelagem do seu banco zero no Firebase.
5. FlutterFlow como frontend
Modelando dados no Firebase
O poder do FlutterFlow
Ferramenta No Code para construir apps

Aplicativos nativos Multiplataforma


Crie apps para celular e para Web

Design de alto nível


Faça telas rapidamente com templates prontos.

Apps com lógicas complexas


Crie ações e dê inteligência ao seu aplicativo.

Conectividade com APIs e banco de dados


Integrado de forma nativa com backends.
Conexão completa via APIs.
O código é seu!
Exporte o código do seu app

Código Dart em suas mãos


Personalize o código da maneira que preferir
Publique nas lojas oficias Play Store e Apple Play
FlutterFlow - Frontend/Backend
Frontend Backend

SGBD Tradicionais

Backends Low Code Backends NoCode


Formação FlutterFlow - Web App do zero
Design responsivo do zero - Modelagem Banco de Dados NoSQL - Publicação e Segurança
Telas do Aplicativo
https://app.flutterflow.io/project/cursos-no-code-start-up-fnoe6p
Mídias para o App

Clique aqui para abrir a planilha


Matheus Castelo Neto Camarano

@mat_castelo

/in/matheuscastelobranco @netocamarano

57
Referências e links importantes
Get to know Cloud Firestore, Youtube Firebase
https://www.youtube.com/playlist?list=PLl-K7zZEsYLluG5MCVEzXAQ7ACZBCuZgZ

Firebase Database para Desenvolvedores SQL


https://www.youtube.com/watch?v=WacqhiI-g_o&list=PLl-K7zZEsYLlP-k-RKFa7RyNPa9_wCH2s

NoSQL Database Modeling, Linkedin Learning


https://www.linkedin.com/learning/nosql-data-modeling-essential-training

MongoDb University
https://learn.mongodb.com/

Firestore NoSQL Modeling, Fireship


https://fireship.io/lessons/firestore-nosql-data-modeling-by-example/

How to draw Nosql Diagram


https://www.techighness.com/post/how-to-draw-no-sql-data-model-diagram/

Projeto de banco de Dados NoSQL - UFF


https://www.youtube.com/watch?v=RdvpUhlrkwk

How to draw UML diagram for NoSQL


https://stackoverflow.com/questions/38616623/how-to-draw-uml-diagram-for-nosql-like-mongodb

What is API first design?


https://blog.postman.com/what-is-api-first-design/

Você também pode gostar