Sumário do Curso
Bancos de Dados NoSQL 🍃
"A educação é a arma mais poderosa que você pode usar para mudar o mundo." — Nelson Mandela (Adaptado para Tecnologia)
🧭 Atalhos Rápidos
-
Trilha de Aprendizagem --- Veja o Mapa da Jornada.
-
Slides Interativos --- Acesse as Apreasentações.
-
Quizzes de Revisão --- Teste seus Conhecimentos.
-
Projetos Práticos --- Mão na massa nos Projetos.
-
Exercícios --- Pratique com Desafios.
-
Setups --- Configure seu Ambiente.
🗺️ Mapa da Jornada
O curso está dividido em 4 Módulos Estratégicos projetados para uma progressão cognitiva sólida.
- Módulo 1: Fundamentos e Conceitos Iniciais.
- Módulo 2: Aprofundamento Técnico.
- Módulo 3: Prática e Consolidação.
- Módulo 4: Especialização e Projeto Final.
Plano de Ensino 🧭
Curso: Bancos de Dados NoSQL
Público-alvo: Estudantes de ADS, Ciência da Computação e Desenvolvedores de Software
Carga Horária: 20 Aulas (80 Horas Teórico-Práticas)
🎯 1. Objetivos do Curso
- Compreender os fundamentos conceituais e arquiteturais de Bancos de Dados NoSQL.
- Aplicar padrões de projeto, sintaxe moderna e boas práticas da indústria.
- Desenvolver soluções completas através de exercícios práticos e desafios de projeto.
📚 2. Cronograma de Aulas (Matriz de 20 Semanas)
| Aula | Tema Central | Atividades e Entregas |
|---|---|---|
| 01 | Introdução a Bancos de Dados ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 02 | Modelagem de Dados e Modelo E-R ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 03 | Normalização e Estrutura Relacional | Teoria, Prática Guiada, Quiz e Exercícios |
| 04 | DDL (Criação da Estrutura) ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 05 | DML (Manipulação de Dados) ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 06 | DQL Básico | Teoria, Prática Guiada, Quiz e Exercícios |
| 07 | Consultas Avançadas e Agregações | Teoria, Prática Guiada, Quiz e Exercícios |
| 08 | JOINs: Junções entre Tabelas | Teoria, Prática Guiada, Quiz e Exercícios |
| 09 | Transações e Integridade ACID | Teoria, Prática Guiada, Quiz e Exercícios |
| 10 | Projeto Parcial: Sistema Relacional | Teoria, Prática Guiada, Quiz e Exercícios |
| 11 | Introdução ao NoSQL e MongoDB | Teoria, Prática Guiada, Quiz e Exercícios |
| 12 | Instalação e CRUD Básico no MongoDB | Teoria, Prática Guiada, Quiz e Exercícios |
| 13 | Modelagem de Documentos no NoSQL ️ | Teoria, Prática Guiada, Quiz e Exercícios |
| 14 | Consultas e Agregações no MongoDB | Teoria, Prática Guiada, Quiz e Exercícios |
| 15 | MongoDB no Ecossistema Moderno | Teoria, Prática Guiada, Quiz e Exercícios |
| 16 | Projeto Final Integrador: O Arquiteto de Dados | Teoria, Prática Guiada, Quiz e Exercícios |
| 17 | Modelagem Orientada a Documentos com MongoDB | Teoria, Prática Guiada, Quiz e Exercícios |
| 18 | Caching de Baixa Latência com Redis | Teoria, Prática Guiada, Quiz e Exercícios |
| 19 | Bancos de Dados Orientados a Grafos (Neo4j) | Teoria, Prática Guiada, Quiz e Exercícios |
| 20 | Projeto Capstone: Arquitetura Poliglota de Persistência | Teoria, Prática Guiada, Quiz e Exercícios |
🧠 3. Metodologia de Ensino
- Teoria Fundamentada: Aulas com conceitos detalhados, diagramas arquiteturais e sintaxe de referência.
- Ciclo Teoria ⇄ Prática: Cada aula conta com Quiz Interativo (10 questões) para validação imediata, Lista de Exercícios Sanfonados (com Gabarito Explicado) e Desafio de Projeto Prático.
- Laboratório Contínuo: Ambientes configurados passo a passo na seção de Setups da plataforma.
💼 4. Competências e Perfil Desenvolvido
- Dominar as ferramentas e fluxos de desenvolvimento de Bancos de Dados NoSQL.
- Resolver problemas técnicos de alta complexidade com código limpo e performático.
- Construir portfólio prático com 20 projetos aplicados.
📊 5. Critérios de Avaliação
- 20 Listas de Exercícios: Resolução individual dividida em Básico, Intermediário e Desafio.
- 20 Quizzes Interativos: Validação formativa com feedback imediato via JavaScript.
- 20 Desafios de Projetos: Aplicações práticas consolidando o aprendizado de cada unidade.
Aulas
Aulas do Curso
Bem-vindo à seção de aulas! Aqui você encontra todo o conteúdo do curso organizado em 5 módulos estruturados.
📚 Módulos do Curso
-
Módulo 1: Fundamentos & Bases ---
-
Módulo 2: Arquitetura & Conceitos Essenciais ---
-
Módulo 3: Engenharia & Aplicação Prática ---
-
Módulo 4: Software, Ferramentas & Padrões ---
-
Módulo 5: Tópicos Avançados & Projeto Capstone ---
Aula 01 - Introdução a Bancos de Dados 🗄️
Objetivo
Objetivo: Compreender os conceitos fundamentais de dados e informação, explorar a evolução histórica do armazenamento de dados e entender a arquitetura básica de um Sistema Gerenciador de Banco de Dados Relacional (SGBDR).
1. Dado, Informação e Banco de Dados 🧩
Antes de começarmos a digitar comandos, precisamos entender o que estamos manipulando.
- Dado: É um elemento bruto, sem contexto (ex: "35", "João", "2024-05-10"). Sozinho, ele não transmite uma mensagem clara.
- Informação: É o dado processado e contextualizado (ex: "A temperatura média hoje é 35°C").
- Banco de Dados: É uma coleção organizada de dados relacionados, estruturados de forma que possam ser acessados, gerenciados e atualizados facilmente.
2. Evolução dos Bancos de Dados ⏳
A forma como guardamos informações mudou drasticamente ao longo das décadas:
- Arquivos Planos (Flat Files): Dados guardados em arquivos de texto simples (.txt, .csv). Difícil de buscar e sem segurança.
- Modelo Hierárquico e em Rede: Estruturas rígidas em forma de árvore.
- Modelo Relacional (Anos 70): Introduzido por Edgar F. Codd, organiza dados em tabelas (linhas e colunas). É o padrão mais utilizado até hoje.
- NoSQL (Anos 2000): Surgiu para lidar com grandes volumes de dados não estruturados e alta escalabilidade.
3. O Modelo Relacional e SGBDR 🏛️
Um SGBDR (Sistema Gerenciador de Banco de Dados Relacional) é o software que permite interagir com o banco de dados.
Exemplos Populares:
- 🐘 PostgreSQL: O foco deste curso. Poderoso, robusto e código aberto.
- 🐬 MySQL: Muito popular para aplicações web simples.
- 🪟 SQL Server: A solução corporativa da Microsoft.
- 🅾️ Oracle: O gigante do mercado para grandes corporações.
Arquitetura Cliente/Servidor
O banco de dados geralmente roda em um Servidor. Nós, como desenvolvedores, usamos um Cliente (como pgAdmin ou terminal) para enviar comandos e receber resultados.
4. Visualização de Arquitetura (Mermaid) 📊
graph LR
User((Usuário))
subgraph "Cliente (Seu PC)"
Client[pgAdmin / Terminal]
end
subgraph "Servidor (Local ou Nuvem)"
SGBD[(PostgreSQL Server)]
DB[(Base de Dados)]
end
Client -- "Comandos SQL" --> SGBD
SGBD -- "Resultados/Dados" --> Client
SGBD <--> DB
5. Prática: Primeiros Passos com PostgreSQL 💻
Vamos verificar se o seu ambiente está pronto. Se ainda não instalou, veja o guia de Setup 01.
Verificando via Terminal
$ psql --version
psql (PostgreSQL) 16.2
$ psql -U postgres
Password for user postgres: ********
postgres=# \l (Listar bancos de dados)
postgres=# \q (Sair)
Important
A senha definida na instalação é a chave mestra para o seu banco. Não a perca!
6. Mini-Projeto: Planejando seu Primeiro Banco 🚀
Imagine que você vai criar um sistema para uma Biblioteca. Quais "coisas" (entidades) você precisaria guardar?
- Livros (Título, Autor, ISBN)
- Usuários (Nome, CPF, E-mail)
- Empréstimos (Data, Prazo)
Desafio: Tente desenhar em papel ou numa ferramenta simples como essas informações se conectam.
7. Exercícios de Fixação 🧠
- Diferencie dado de informação com um exemplo do seu cotidiano.
- Por que o Modelo Relacional é chamado de "relacional"?
- Cite três vantagens de usar um SGBD em vez de guardar dados em arquivos de texto (.txt).
Próxima Aula: Vamos aprender a desenhar bancos de dados com o Modelo E-R! 🏗️
Aula 02 - Modelagem de Dados e Modelo E-R 🏗️
Objetivo
Objetivo: Aprender a abstrair a realidade para o mundo dos dados, utilizando o Modelo Entidade-Relacionamento (E-R) para projetar estruturas de bancos de dados eficientes e consistentes.
1. Abstração e Modelagem 🧠
Modelar dados é como desenhar a planta de uma casa antes de construí-la. Precisamos definir quem são os personagens e como eles interagem.
- Entidade: É um "objeto" do mundo real sobre o qual queremos guardar dados (ex: Cliente, Produto, Pedido).
- Atributo: São as características de uma entidade (ex: Nome, Preço, Cor).
- Relacionamento: É como as entidades se conectam (ex: Um Cliente faz um Pedido).
2. Atributos e Chaves 🔑
Para que um banco de dados funcione, cada registro deve ser único e identificável.
Chave Primária (Primary Key - PK)
É o atributo (ou conjunto de atributos) que identifica exclusivamente cada linha de uma tabela. * Exemplo: O CPF de um usuário ou um ID autoincrementado.
Chave Estrangeira (Foreign Key - FK)
É um atributo que estabelece um vínculo entre duas tabelas, apontando para a PK de outra tabela.
* Exemplo: Na tabela Pedidos, guardamos o id_cliente para saber quem comprou.
3. Cardinalidade: O "Pulo do Gato" 🐈
A cardinalidade define quantos itens de uma entidade podem se relacionar com quantos itens de outra.
- 1:1 (Um para Um): Um usuário tem um perfil.
- 1:N (Um para Muitos): Um cliente faz vários pedidos. { .fragment }
- N:N (Muitos para Muitos): Vários alunos se matriculam em várias disciplinas. { .fragment }
Note
Em relacionamentos N:N, geralmente precisamos de uma tabela associativa (tabela do meio).
4. Integridade Referencial 🛡️
O banco de dados garante que os relacionamentos sejam válidos. Se um Pedido aponta para o Cliente ID 50, o Cliente 50 deve existir. O SGBD impede que você apague o cliente se ele tiver pedidos pendentes.
5. Diagrama E-R (Mermaid) 📊
Vamos visualizar o relacionamento entre Clientes e Pedidos:
erDiagram
CLIENTE ||--o{ PEDIDO : "faz"
CLIENTE {
int id PK
string nome
string email
}
PEDIDO {
int id PK
int id_cliente FK
date data
decimal total
}
6. Ferramentas CASE 🛠️
Para criar diagramas profissionais, usamos ferramentas como: * dbdiagram.io: Rápido e baseado em texto. * brModelo: Clássico acadêmico brasileiro. * MySQL Workbench: Visual e completo.
7. Prática: Desenhando um Mini-Sistema 💻
Use o terminal ou um papel para listar os atributos e chaves do sistema de uma Clínica Médica:
$ Entidades sugeridas:
$ - Medico (CRM, Nome, Especialidade)
$ - Paciente (CPF, Nome, Telefone)
$ - Consulta (Data, Hora, Medico_ID, Paciente_ID)
8. Exercícios de Fixação 🧠
- O que acontece se tentarmos inserir um
id_clientena tabela dePedidosque não existe na tabelaClientes? - Explique a diferença entre uma Chave Primária Simples e uma Chave Primária Composta.
- Desenhe (ou descreva) o relacionamento entre Autor e Livro. Qual a cardinalidade?
Próxima Aula: Vamos aprender a organizar a "bagunça" com a Normalização! 📡
Aula 03 - Normalização e Estrutura Relacional 📡
Objetivo
Objetivo: Aprender as regras da Normalização para eliminar redundâncias, garantir a integridade dos dados e criar estruturas de tabelas otimizadas e profissionais.
1. Tipos de Dados e o Conceito de NULL 🧩
Cada coluna em uma tabela deve ter um tipo definido. Isso ajuda o SGBD a economizar espaço e validar entradas.
- Inteiros (
INT,BIGINT): Números sem casas decimais. - Decimais (
DECIMAL,NUMERIC,REAL): Para valores monetários ou medidas precisas. - Texto (
VARCHAR,TEXT,CHAR): Cadeias de caracteres. - Data/Hora (
DATE,TIMESTAMP): Registros temporais. - NULL: Representa a ausência de valor ou valor desconhecido. Não é o mesmo que zero ou string vazia ("").
2. O que é Normalização? ⚖️
É um processo técnico de organizar as colunas e tabelas de um banco de dados para minimizar a redundância (repetição de dados) e evitar anomalias de atualização.
Por que normalizar?
- Economia de espaço em disco.
- Facilidade de manutenção.
- Garantia de que a informação esteja em um só lugar.
3. As Formas Normais (FN) 📏
Existem várias formas normais, mas as três primeiras (1FN, 2FN e 3FN) são as mais essenciais no dia a dia.
1ª Forma Normal (1FN) - Atomicidade
- Cada coluna deve conter apenas um valor (valores atômicos).
- Não pode haver grupos repetidos ou listas separadas por vírgula em uma célula.
- Exemplo:
Telefones: (11) 9999, (11) 8888❌ -> Criar tabela separada para telefones ✅.
2ª Forma Normal (2FN) - Dependência Funcional
- Estar na 1FN.
- Toda coluna que não é chave deve depender da chave primária inteira (relevante para chaves compostas).
3ª Forma Normal (3FN) - Dependência Transitiva
- Estar na 2FN.
- As colunas não-chave não podem depender de outras colunas não-chave.
- Exemplo: Tabela
Pedidoscomid_clienteenome_cliente. O nome depende do ID, não do Pedido. Deve sair dali.
4. Especialização e Generalização 🧬
Conceitos herdados da Orientação a Objetos:
* Generalização: Criar uma entidade "Pai" (ex: Pessoa).
* Especialização: Criar entidades "Filhas" com atributos específicos (ex: Pessoa_Fisica e Pessoa_Juridica).
5. Visualização de Estrutura (Mermaid) 📊
Abaixo, um exemplo de banco normalizado:
erDiagram
ALUNO ||--o{ TELEFONE : "possui"
ALUNO {
int id PK
string nome
date data_nascimento
}
TELEFONE {
int id PK
int aluno_id FK
string numero
}
6. Prática: Corrigindo uma Tabela Ruim 💻
Observe esta estrutura mal feita:
Vendas (id_venda, data, cliente_nome, produto_nome, produto_preco)
$ Problemas identificados:
$ 1. Nome do cliente repetido em cada venda (redundância).
$ 2. Se o preço do produto mudar, o histórico das vendas pode se perder.
$
$ Solução Normalizada:
$ - Tabelas separadas para: Clientes, Produtos e Vendas.
7. Exercícios de Fixação 🧠
- Explique a frase: "A 3ª Forma Normal combate a dependência transitiva".
- Quando é aceitável realizar a Desnormalização de um banco de dados?
- O que é um valor Atômico?
Próxima Aula: Vamos colocar a mão na massa com os comandos de DDL - Criação da Estrutura! 🏗️
Aula 04 - DDL (Criação da Estrutura) 🏗️
Objetivo
Objetivo: Aprender a linguagem DDL (Data Definition Language) para criar, alterar e excluir a estrutura física do banco de dados no PostgreSQL.
1. O que é DDL? 📜
DDL (Data Definition Language) é o subconjunto do SQL usado para definir a estrutura do banco de dados (o "esqueleto").
Comandos principais:
* CREATE: Cria objetos (bancos, tabelas, índices).
* ALTER: Altera a estrutura de objetos existentes.
* DROP: Exclui objetos permanentemente.
* TRUNCATE: Esvazia uma tabela (deleta os dados, mas mantém a estrutura).
2. Criando o Banco e Tabelas 🛠️
Antes de guardar dados, precisamos do "container".
Criando o Banco de Dados
Criando uma Tabela Completa
CREATE TABLE professores (
id SERIAL PRIMARY KEY, -- Serial cria um autoincremento
nome VARCHAR(100) NOT NULL, -- Não permite valores vazios
email VARCHAR(150) UNIQUE, -- Não permite emails repetidos
data_contratacao DATE DEFAULT CURRENT_DATE
);
3. Chaves e Restrições (Constraints) 🔑
As restrições garantem a qualidade dos dados.
PRIMARY KEY: Identificador único.FOREIGN KEY: Relacionamento com outra tabela.NOT NULL: Campo obrigatório.UNIQUE: Valor não pode se repetir.CHECK: Valida uma condição (ex:CHECK (preco > 0)).
4. Índices: Acelerando as Buscas ⚡
Índices funcionam como o sumário de um livro. Eles ajudam o SGBD a encontrar dados sem precisar ler a tabela inteira.
Warning
Índices aceleram a leitura (SELECT), mas tornam a escrita (INSERT, UPDATE) um pouco mais lenta. Use com sabedoria!
5. Alterando e Excluindo 🔨
Errou o nome da coluna? Precisa adicionar um campo novo?
Adicionando Coluna
Removendo Tabela (CUIDADO!)
6. Prática no Terminal (pgAdmin) 💻
Abra o Query Tool no seu pgAdmin e execute estes comandos:
$ CREATE DATABASE escola;
$ \c escola (conectar no banco via psql)
$
$ CREATE TABLE alunos (
$ id SERIAL PRIMARY KEY,
$ nome VARCHAR(100) NOT NULL
$ );
7. Mini-Projeto: O Banco da Escola 🚀
Crie o script DDL para o seguinte cenário:
1. Uma tabela cursos com id, nome e carga_horaria.
2. Uma tabela matriculas que liga alunos (já criada) aos cursos.
Dica: Use
REFERENCESpara criar a Chave Estrangeira.
8. Exercícios de Fixação 🧠
- Qual a diferença entre os comandos
DROPeTRUNCATE? - Por que a coluna
idgeralmente usa o tipoSERIALno PostgreSQL? - Escreva o comando SQL para adicionar uma restrição
UNIQUEna colunaCPFda tabelaalunos.
Próxima Aula: Vamos aprender a colocar dados nessas tabelas com o DML - Manipulação de Dados! ⚙️
Aula 05 - DML (Manipulação de Dados) ⚙️
Objetivo
Objetivo: Aprender os comandos DML (Data Manipulation Language) para inserir, atualizar e excluir informações dentro das tabelas criadas no PostgreSQL.
1. O que é DML? 🖊️
Enquanto o DDL cria o "balde", o DML gerencia a "água" (os dados). É o conjunto de comandos que usamos no dia a dia para manter as informações do sistema atualizadas.
Comandos principais:
* INSERT: Adiciona novas linhas.
* UPDATE: Altera dados de linhas existentes.
* DELETE: Remove linhas da tabela.
2. Inserindo Dados (INSERT) 📥
O comando INSERT adiciona um novo registro.
Sintaxe Básica:
Inserindo Múltiplos Registros de uma vez:
INSERT INTO alunos (nome, email) VALUES
('Ana Souza', 'ana@email.com'),
('João Silva', 'joao@email.com'),
('Maria Oliveira', 'maria@email.com');
Tip
Não é necessário incluir a coluna id se ela for do tipo SERIAL, pois o banco a preenche sozinho!
3. Atualizando Dados (UPDATE) ✏️
Use o UPDATE para mudar informações que já estão lá.
Caution
NUNCA esqueça o WHERE! Sem ele, você atualizará TODOS os registros da tabela com o mesmo valor.
4. Removendo Dados (DELETE) 🗑️
O DELETE remove registros permanentemente.
Caution
Assim como no UPDATE, o WHERE é vital. Se esquecer, você esvaziará a tabela inteira! Para apagar tudo propositalmente e de forma rápida, dê preferência ao TRUNCATE (DDL).
5. Visualização de Fluxo (Mermaid) 📊
graph TD
Start[Novo Registro] --> I[INSERT]
I --> DB[(Banco de Dados)]
DB --> U[UPDATE - Mudança de Idade/Email]
U --> DB
DB --> D[DELETE - Cancelamento de Conta]
D --> Archive[Fim do Registro]
6. Prática: Populando seu Banco 💻
Utilize o Query Tool para popular sua tabela de alunos:
$ INSERT INTO alunos (nome) VALUES ('Cadu'), ('Bia');
$ SELECT * FROM alunos;
$
$ -- Simulando erro do estagiário:
$ UPDATE alunos SET nome = 'ERRO'; -- Cuidado! Cancele antes de executar!
7. Mini-Projeto: Gestão de Inventário 🚀
Crie uma tabela produtos (id, nome, preco, estoque) e realize:
1. O cadastro de 3 produtos.
2. Uma atualização de preço em 10% para um produto específico.
3. A exclusão de um produto que saiu de linha.
8. Exercícios de Fixação 🧠
- Diferencie
UPDATEdeINSERT. - O que acontece se eu executar
DELETE FROM alunos;sem a cláusulaWHERE? - Como insiro um valor na coluna
data_nascimentoseguindo o formato padrão do ISO (YYYY-MM-DD)?
Próxima Aula: Vamos aprender a recuperar esses dados com o DQL Básico! 💾
Aula 06 - DQL Básico 💾
Objetivo
Objetivo: Dominar o comando SELECT para recuperar informações de tabelas, aprendendo a filtrar resultados com WHERE e organizar a exibição com ORDER BY.
1. O que é DQL? 🔍
DQL (Data Query Language) é o subconjunto do SQL focado na recuperação de dados. É, sem dúvida, o comando que você mais usará em toda a sua carreira na computação.
O comando principal é o SELECT.
2. SELECT: Projeção e Seleção 🎥
Projeção (Escolhendo Colunas)
Quando você escolhe quais colunas quer ver.
Seleção (Escolhendo Linhas)
Quando você filtra quais registros devem aparecer usando o WHERE.
Note
O asterisco (*) significa "todas as colunas". Use-o com moderação em bancos de dados muito grandes por questões de performance.
3. Filtrando com WHERE 🎯
O WHERE aceita diversos operadores de comparação:
| Operador | Significado |
|---|---|
= |
Igual |
<> ou != |
Diferente |
> e < |
Maior e Menor |
>= e <= |
Maior/Menor ou Igual |
BETWEEN |
Entre dois valores (ex: BETWEEN 10 AND 20) |
LIKE |
Busca por padrão de texto (ex: nome LIKE 'Ri%') |
IN |
Verifica se o valor está em uma lista (ex: id IN (1, 2, 5)) |
4. Ordenando Resultados (ORDER BY) 📶
Por padrão, o banco de dados não garante a ordem dos registros. Use o ORDER BY para organizar.
- ASC: Ordem Ascendente (padrão).
- DESC: Ordem Descendente.
5. Visualização de Execução (Mermaid) 📊
graph LR
User[Usuário] -- "SELECT nome FROM alunos WHERE id=1" --> SQL{Motor SQL}
SQL -- "Busca na Tabela" --> DB[(Disco Rigido)]
DB -- "Dados Brutos" --> SQL
SQL -- "Resultado Filtrado" --> User
6. Prática: Consultas Simples 💻
Abra o terminal e tente realizar estas buscas:
$ SELECT * FROM alunos WHERE nome LIKE 'A%'; -- Nomes que começam com A
$ SELECT nome, data_contratacao FROM professores ORDER BY data_contratacao ASC;
$ SELECT * FROM produtos WHERE preco > 100 AND estoque < 5;
7. Mini-Projeto: Dashboard de Vendas 🚀
Utilizando sua tabela de produtos, crie consultas para:
1. Listar todos os produtos com estoque zerado.
2. Listar o nome e o preço dos 5 produtos mais baratos.
3. Buscar produtos que tenham a palavra "Monitor" no nome.
8. Exercícios de Fixação 🧠
- O que faz a cláusula
DISTINCTem um comando SELECT? - Como eu buscaria todos os alunos que nasceram entre os anos 2000 e 2005 usando o operador
BETWEEN? - Qual a diferença entre usar
ORDER BY 1eORDER BY nome_coluna?
Próxima Aula: Vamos subir de nível com as Consultas Avançadas e Agregações! 🧪
Aula 07 - Consultas Avançadas e Agregações 🧪
Objetivo
Objetivo: Aprender a realizar cálculos diretamente no banco de dados usando funções de agregação, agrupando dados com GROUP BY e filtrando esses grupos com HAVING.
1. Funções de Agregação 🧮
Em vez de trazer todas as linhas, às vezes precisamos de um resumo (total, média, contagem).
As 5 funções básicas de agregação são:
* COUNT(): Conta o número de linhas ou valores.
* SUM(): Soma valores numéricos.
* AVG(): Calcula a média aritmética.
* MAX(): Encontra o maior valor.
* MIN(): Encontra o menor valor.
SELECT COUNT(*) FROM alunos; -- Quantos alunos existem?
SELECT SUM(preco) FROM produtos; -- Valor total do estoque em R$.
2. Apelidos (ALIAS) com AS 🏷️
Para deixar o cabeçalho do relatório mais bonito e legível, usamos o AS.
3. Agrupando Dados (GROUP BY) 🧱
O GROUP BY divide o resultado em grupos para que possamos aplicar as funções de agregação em cada pedaço.
-- Quantos produtos existem em cada categoria?
SELECT categoria, COUNT(*) AS total_itens
FROM produtos
GROUP BY categoria;
4. Filtrando Grupos com HAVING 🎯
Se o WHERE filtra as linhas (antes do grupo), o HAVING filtra os grupos (depois que a conta foi feita).
-- Quais categorias têm mais de 50 produtos cadastrados?
SELECT categoria, COUNT(*)
FROM produtos
GROUP BY categoria
HAVING COUNT(*) > 50;
5. Visualização de Processamento (Mermaid) 📊
graph TD
Data[(Tabela Bruta)] --> Filter[WHERE - Filtra as linhas]
Filter --> Group[GROUP BY - Separa em potes]
Group --> Agg[Funções SUM/COUNT/AVG]
Agg --> H[HAVING - Filtra os potes cheios]
H --> Result[Relatório Final]
6. Prática: Relatórios de Alunos 💻
Imagine uma tabela notas (aluno_id, disciplina, nota). Tente:
$ SELECT disciplina, AVG(nota) AS media FROM notas GROUP BY disciplina;
$ SELECT aluno_id, SUM(valor_pago) AS total_investido FROM mensalidades GROUP BY aluno_id;
$ SELECT MAX(preco) AS mais_caro FROM produtos;
7. Mini-Projeto: Dashboard de Vendas 🚀
Baseado em um sistema de mercado: 1. Calcule o faturamento total (soma) de um dia específico. 2. Mostre qual o produto mais caro e o mais barato da loja. 3. Liste as categorias que geraram mais de R$ 5.000,00 em vendas.
8. Exercícios de Fixação 🧠
- Qual a diferença fundamental entre
WHEREeHAVING? - O que acontece se eu usar uma função de agregação (como
SUM) sem usar oGROUP BY? - Como eu contaria apenas os valores únicos em uma coluna (ex: quantos estados diferentes meus alunos moram)?
Próxima Aula: Vamos aprender a unir o que está separado com os JOINs - Junções entre Tabelas! 🔗
Aula 08 - JOINs: Junções entre Tabelas 🔗
Objetivo
Objetivo: Aprender a conectar tabelas separadas para extrair informações completas, dominando os diferentes tipos de JOIN (Inner, Left, Right e Full) e entendendo como o banco de dados relaciona as chaves.
1. O que são JOINs? 🤝
Em um banco de dados normalizado, os dados estão espalhados em várias tabelas. O JOIN é a "ponte" que nos permite unir essas peças para gerar uma resposta legível.
Imagine que você tem o id_cliente no pedido, mas quer ver o nome do cliente. Você precisa unir a tabela de Pedidos com a de Clientes.
2. INNER JOIN: A Interseção 🎯
É o tipo mais comum. Ele retorna apenas os registros que possuem correspondência em ambas as tabelas.
SELECT pedidos.id, clientes.nome
FROM pedidos
INNER JOIN clientes ON pedidos.id_cliente = clientes.id;
3. LEFT JOIN e RIGHT JOIN: A Prioridade ⬅️➡️
Às vezes queremos ver todos os registros de uma tabela, mesmo que não haja par na outra.
- LEFT JOIN: Traz todos da tabela da esquerda, e o que houver na direita. Se não houver nada na direita, preenche com
NULL. - RIGHT JOIN: O contrário. Traz todos da direita.
-- Listar TODOS os clientes, mesmo os que nunca compraram nada.
SELECT clientes.nome, pedidos.id
FROM clientes
LEFT JOIN pedidos ON clientes.id = pedidos.id_cliente;
4. FULL OUTER JOIN e CROSS JOIN 🌐
- FULL OUTER JOIN: Traz tudo de ambos os lados, unindo onde houver par e trazendo NULL onde não houver.
- CROSS JOIN: Produto cartesiano. Combina cada linha da primeira tabela com cada linha da segunda (Ex: Todos os Tamanhos x Todas as Cores).
5. Visualização de Conjuntos (Venn) 📊
graph TD
subgraph "Inner Join"
A[Tabela A] --- B[Interseção]
B --- C[Tabela B]
end
subgraph "Left Join"
LA[Tabela A Completa] --- LB[Direita se existir]
end
6. Prática: Unindo o Banco 💻
Utilize seu banco de escola/loja e experimente:
$ -- Ver quais alunos estão em quais turmas
$ SELECT alunos.nome, turmas.nome_turma
$ FROM alunos
$ INNER JOIN turmas ON alunos.id_turma = turmas.id;
$
$ -- Ver alunos que ainda não têm turma
$ SELECT alunos.nome FROM alunos LEFT JOIN turmas ON alunos.id_turma = turmas.id WHERE turmas.id IS NULL;
7. Mini-Projeto: Extrato de Vendas Detalhado 🚀
Crie uma consulta que una 3 tabelas: vendas, produtos e vendedores.
O relatório deve mostrar:
1. O nome do vendedor.
2. O nome do produto vendido.
3. A data da venda.
4. O valor total.
8. Exercícios de Fixação 🧠
- Qual a diferença prática entre
INNER JOINeLEFT JOIN? - O que acontece se eu esquecer a cláusula
ONem um JOIN? - Podemos usar apelidos (alias) para as tabelas em um JOIN (Ex:
FROM clientes c)? Isso facilita em quê?
Próxima Aula: Vamos aprender a garantir a segurança das operações com Transações e ACID! 🔑
Aula 09 - Transações e Integridade ACID 🔑
Objetivo
Objetivo: Compreender o conceito de transações no banco de dados, aprender a usar COMMIT e ROLLBACK para garantir a segurança dos dados e entender as propriedades ACID que tornam os SGBDs confiáveis.
1. O que é uma Transação? 🛡️
Uma transação é uma unidade lógica de trabalho que contém um ou mais comandos SQL. O banco de dados garante que ou tudo seja executado com sucesso ou nada seja executado.
Imagine uma transferência bancária: 1. Tirar R$ 100 da conta A. 2. Colocar R$ 100 na conta B.
Se o sistema travar no passo 1, o dinheiro some? Não, se usarmos transações!
2. Comandos de Transação 🕹️
BEGIN: Inicia a transação.COMMIT: Salva as alterações permanentemente.ROLLBACK: Cancela tudo o que foi feito desde oBEGIN.SAVEPOINT: Cria um "checkpoint" para voltar apenas a um ponto específico.
3. As Propriedades ACID 💎
Para que um SGBD seja considerado confiável (como o PostgreSQL), ele deve seguir o ACID:
- A - Atomicidade: A transação é atômica (tudo ou nada).
- C - Consistência: O banco sempre passa de um estado válido para outro estado válido.
- I - Isolamento: Transações simultâneas não interferem umas nas quais.
- D - Durabilidade: Uma vez confirmada (COMMIT), a alteração não se perde mesmo em queda de energia.
4. Prática: Simulação de Transferência 💻
Vamos simular o cenário no terminal:
$ BEGIN;
$ UPDATE contas SET saldo = saldo - 100 WHERE id = 1;
$ UPDATE contas SET saldo = saldo + 100 WHERE id = 2;
$
$ -- Ops! Vi que o ID 2 está errado.
$ ROLLBACK; -- Nada foi alterado no banco real!
5. Visualização de Fluxo (Mermaid) 📊
graph TD
Start[BEGIN] --> Op1[Update Tabela A]
Op1 --> Op2[Update Tabela B]
Op2 --> Decision{Tudo OK?}
Decision -- Sim --> C[COMMIT - Salvou!]
Decision -- Não --> R[ROLLBACK - Desfez!]
C --> End((Fim))
R --> End
6. Níveis de Isolamento 🛡️
O banco pode lidar com leituras simultâneas de várias formas. Os problemas comuns que as transações evitam são: * Leitura Suja: Ler dados que foram alterados mas não confirmados por outra pessoa. * Leitura Fantasma: Surgimento de novas linhas no meio de uma transação.
7. Mini-Projeto: Sistema de Estorno 🚀
Crie uma sequência de comandos que simule uma compra em um e-commerce:
1. BEGIN.
2. Diminuir o estoque do produto.
3. Registrar o pedido.
4. Inserir um registro de log.
5. Use um ROLLBACK simulando um erro no processamento do cartão de crédito.
8. Exercícios de Fixação 🧠
- O que acontece se um servidor de banco de dados cair no meio de uma transação que ainda não recebeu o
COMMIT? - Explique a propriedade Durabilidade.
- Qual a utilidade do comando
SAVEPOINT?
Próxima Aula: Vamos consolidar o Módulo II com o Projeto Parcial - Sistema Relacional Completo! 🔐
Aula 10 - Projeto Parcial: Sistema Relacional 🔐
Objetivo
Objetivo: Consolidar todo o conhecimento do Módulo II através da criação de um sistema de banco de dados relacional completo, aplicando DDL, DML, DQL avançado e controle de transações.
1. O Desafio: E-commerce "TechStore" 🛒
Nesta aula, você não apenas aprenderá novos conceitos, mas aplicará tudo o que vimos até aqui em um cenário profissional real. O objetivo é construir a base de dados de uma loja de tecnologia.
Requisitos do Sistema:
- Clientes: Cadastro completo.
- Produtos: Controle de estoque e categorias.
- Vendas: Registro de quem comprou, o que comprou e quando.
- Segurança: Garantia de que nenhuma venda seja registrada sem baixar o estoque (Transações).
2. Mapa Mental da Estrutura (Mermaid) 📊
erDiagram
CLIENTE ||--o{ PEDIDO : "faz"
VENDEDOR ||--o{ PEDIDO : "registra"
PEDIDO ||--o{ ITENS_PEDIDO : "contém"
PRODUTO ||--o{ ITENS_PEDIDO : "está em"
CATEGORIA ||--o{ PRODUTO : "classifica"
3. Passo a Passo do Projeto 🛠️
Fase 1: Fundação (DDL)
Criação das tabelas com todas as restrições (PRIMARY KEY, FOREIGN KEY, NOT NULL, CHECK).
Fase 2: Povoamento (DML)
Inserção de dados realistas para testes. Pelo menos 5 clientes, 10 produtos e algumas vendas.
Fase 3: Inteligência (DQL)
Criação de relatórios complexos: * Ranking de vendas por categoria. * Ticket médio por cliente. * Produtos mais vendidos.
4. Checklist de Qualidade 🛡️
- O banco está na 3ª Forma Normal?
- As chaves estrangeiras impedem a exclusão de clientes com pedidos?
- Os preços são sempre maiores que zero?
- As consultas usam JOINs e Aliases de forma clara?
5. Exemplo de Script Integrado 💻
BEGIN;
-- 1. Criar pedido
INSERT INTO pedidos (cliente_id, data) VALUES (1, CURRENT_DATE) RETURNING id;
-- 2. Adicionar item (Supondo ID do pedido = 50)
INSERT INTO itens_pedido (pedido_id, produto_id, qtd) VALUES (50, 10, 2);
-- 3. Baixar estoque
UPDATE produtos SET estoque = estoque - 2 WHERE id = 10;
COMMIT;
6. Prática: O "Gran Finale" no pgAdmin 🚀
Execute o script completo (que você desenvolverá no Projeto 10) e verifique se o banco se comporta corretamente em casos de erros (ROLLBACK) e sucessos (COMMIT).
7. Exercícios de Fixação 🧠
- Por que é melhor usar uma tabela associativa em
itens_pedidoem vez de colocar os produtos direto na tabelapedidos? - Como você geraria um relatório mostrando os clientes que gastaram mais de R$ 1.000,00 no total?
- Quais índices você criaria para esse sistema para melhorar a performance de busca?
Módulo III: Prepare-se para o mundo moderno com a Introdução ao NoSQL e MongoDB! 🌐
Aula 11 - Introdução ao NoSQL e MongoDB 🌐
Objetivo
Objetivo: Entender o que são bancos de dados não relacionais (NoSQL), os motivos para sua existência e as principais diferenças conceituais em relação ao modelo SQL tradicional.
1. O que é NoSQL? 🧩
NoSQL (do inglês Not Only SQL) é um termo que engloba tecnologias de banco de dados que não utilizam o modelo de tabelas relacionais clássico de linhas e colunas.
Por que surgiu?
- Escalabilidade: Lidar com volumes massivos de dados distribuídos em vários servidores.
- Flexibilidade: Armazenar dados com estruturas que mudam frequentemente (esquema flexível).
- Velocidade: Alta performance em operações simples de leitura e escrita.
2. Tipos de Bancos NoSQL 📚
Existem quatro categorias principais:
- Documento: Guarda dados no formato JSON/BSON (Ex: MongoDB, CouchDB).
- Chave-Valor: Como um dicionário gigante (Ex: Redis, DynamoDB).
- Coluna: Otimizado para consultas analíticas pesadas (Ex: Cassandra, HBase).
- Grafo: Focado em conexões e redes (Ex: Neo4j).
3. SQL vs NoSQL: A Grande Batalha ⚔️
| Característica | SQL (PostgreSQL) | NoSQL (MongoDB) |
|---|---|---|
| Estrutura | Rígida (Tabelas) | Flexível (Documentos) |
| Relacionamentos | JOINs poderosos | Documentos aninhados |
| Escalabilidade | Vertical (Melhor Hardware) | Horizontal (Mais Servidores) |
| Transações | ACID nativo e forte | BASE (Eventual) |
4. O Modelo de Documento (JSON) 🏗️
No MongoDB, não temos tabelas, temos Collections. Não temos linhas, temos Documents.
{
"_id": "645a2b3c...",
"nome": "Ricardo Pires",
"idade": 35,
"habilidades": ["SQL", "MongoDB", "Kotlin"],
"endereco": {
"rua": "Av. Brasil",
"cidade": "São Paulo"
}
}
5. Teorema CAP 📊
Em sistemas distribuídos, você só pode escolher dois destes três: * Consistência (Consistency) * Availabilidade (Availability) * Partição (Partition Tolerance)
graph TD
C[Consistência] --- A[Disponibilidade]
A --- P[Partição]
P --- C
style C fill:#f9f,stroke:#333
style A fill:#bbf,stroke:#333
style P fill:#dfd,stroke:#333
6. Prática: Pensando sem Tabelas 💻
Imagine que você quer guardar as postagens de um blog. * No SQL: Tabela Posts, Tabela Comentários, Tabela Autores (3 tabelas + 2 JOINs). * No NoSQL: Um único documento "Post" contendo todos os comentários dentro dele.
7. Exercícios de Fixação 🧠
- O que significa a sigla NoSQL?
- Dê um exemplo de cenário onde o MongoDB seria melhor que o PostgreSQL.
- Explique o conceito de Escalabilidade Horizontal.
Próxima Aula: Vamos colocar a mão na massa instalando o MongoDB e fazendo o primeiro CRUD! 🍃
Aula 12 - Instalação e CRUD Básico no MongoDB 🍃
Objetivo
Objetivo: Instalar o ambiente de desenvolvimento do MongoDB e dominar as quatro operações básicas (Create, Read, Update, Delete) através do terminal e de ferramentas visuais.
1. Preparando o Ambiente 🛠️
Você tem duas opções principais: 1. MongoDB local: Instalado na sua máquina (vimos no Setup 02). 2. MongoDB Atlas: Banco de dados na nuvem (DBaaS), gratuito para testes.
Para esta aula, usaremos o mongosh (MongoDB Shell) ou o MongoDB Compass (Interface Visual).
2. O Vocabulário MongoDB 🗣️
| SQL | MongoDB |
|---|---|
| Database | Database |
| Table | Collection |
| Row | Document |
| Column | Field |
| Join | Embedding / Reference |
3. Operações de Escrita (Create) ✍️
Diferente do SQL, não precisamos criar as colunas antes. O banco cria a coleção na primeira inserção.
// Inserir um único documento
db.usuarios.insertOne({
nome: "Ricardo",
email: "ricardo@email.com",
ativo: true
});
// Inserir vários
db.usuarios.insertMany([
{ nome: "Ana", idade: 25 },
{ nome: "Bia", idade: 30 }
]);
4. Operações de Busca (Read) 🔎
O find() é o nosso SELECT.
// Buscar todos
db.usuarios.find();
// Buscar com filtro (nome igual a Ricardo)
db.usuarios.find({ nome: "Ricardo" });
// Buscar maiores de 20 anos ($gt = Greater Than)
db.usuarios.find({ idade: { $gt: 20 } });
5. Atualização (Update) 🔄
Sempre usamos operadores como o $set.
// Mudar o nome do usuário com ID específico
db.usuarios.updateOne(
{ _id: ObjectId("...") },
{ $set: { nome: "Ricardo Pires" } }
);
// Adicionar um campo a todos os usuários
db.usuarios.updateMany({}, { $set: { verificado: false } });
6. Exclusão (Delete) 🗑️
Cuidado: assim como no SQL, o filtro é essencial!
// Deletar um
db.usuarios.deleteOne({ nome: "Ana" });
// Limpar a coleção
db.usuarios.deleteMany({});
7. Prática: O Terminal do Futuro 💻
Abra o seu terminal e execute os comandos:
$ mongosh
$ use meu_primeiro_banco;
$ db.produtos.insertOne({ nome: "Mouse", preco: 50 });
$ db.produtos.find();
8. Exercícios de Fixação 🧠
- No MongoDB, qual a diferença entre
insertOneeinsertMany? - Para que serve o operador
$setno comando de update? O que aconteceria se você não o usasse no MongoDB? (Dica: Substituição total). - Como você buscaria produtos com preço entre 100 e 500 no MongoDB?
Próxima Aula: Vamos aprender as estratégias para organizar seus dados com a Modelagem de Documentos! 🏗️
Aula 13 - Modelagem de Documentos no NoSQL 🏗️
Objetivo
Objetivo: Aprender as duas principais estratégias de modelagem de dados no MongoDB (Aninhamento e Referência), entendendo as vantagens de cada uma e como decidir qual usar em projetos reais.
1. O Fim do JOIN? 🚫🔗
No SQL, a regra é: "Separe tudo em tabelas e use JOIN". No NoSQL (MongoDB), a regra de ouro é: "Dados que são acessados juntos, devem ser armazenados juntos".
2. Estratégia 1: Aninhamento (Embedding) 📦
Colocamos os dados relacionados dentro do próprio documento principal.
{
"nome": "Ciclano",
"email": "ciclano@email.com",
"enderecos": [
{ "rua": "Rua A", "cidade": "SP" },
{ "rua": "Rua B", "cidade": "RJ" }
]
}
- Vantagem: Leitura ultrarrápida (uma única busca traz tudo).
- Quando usar: Relacionamentos 1:1 ou 1:Poucos (ex: endereços de um usuário).
3. Estratégia 2: Referência (Linking) 🔗
Guardamos apenas o _id do documento relacionado, similar a uma chave estrangeira.
- Vantagem: Evita redundância e o crescimento excessivo de um único documento.
- Quando usar: Relacionamentos 1:Muitos (ex: um blog com 10.000 comentários) ou N:N.
4. Como decidir? 🤔
Responda estas perguntas: 1. O dado cresce sem parar? Se sim, use Referência. 2. Eu sempre preciso do dado filho para mostrar o pai? Se sim, use Aninhamento. 3. Vários pais compartilham o mesmo filho? Se sim, use Referência.
5. Visualização de Relações (Mermaid) 📊
graph TD
User((Usuário)) -- "Aninha (1:1)" --> Profile[Perfil]
User -- "Referencia (1:N)" --> Posts[Postagens]
Posts -- "Aninha (1:Poucos)" --> Tags[Tags]
6. Prática: Estruturando o Blog 💻
Tente modelar um post de blog com comentários:
// Opção A: Embebed (comentários dentro do post)
db.posts.insertOne({
titulo: "Aula 13",
comentarios: [
{ autor: "Ana", texto: "Gostei!" },
{ autor: "Bob", texto: "Top!" }
]
});
7. Mini-Projeto: Dashboard de E-commerce 🚀
Modele o documento de um Pedido. Ele deve conter:
1. Dados básicos do pedido.
2. Dados do Cliente (Aninhado ou Referenciado?).
3. Lista de Produtos (Cada produto deve ter o nome e o preço no momento da compra).
8. Exercícios de Fixação 🧠
- Qual o limite de tamanho de um documento no MongoDB? (Dica: pesquise por 16MB).
- O que acontece se eu aninhar dados demais em um único documento?
- Podemos misturar as duas estratégias (Híbrido) no mesmo banco?
Próxima Aula: Vamos aprender a extrair inteligência dos dados com Consultas e Agregações no MongoDB! 🧪
Aula 14 - Consultas e Agregações no MongoDB 🧪
Objetivo
Objetivo: Dominar o Aggregation Framework do MongoDB para processar dados em larga escala, realizar agrupamentos complexos e simular junções com o $lookup.
1. O que é o Aggregation Framework? ⚙️
Diferente do simples find(), a agregação funciona como uma linha de montagem (Pipeline). Os dados entram, passam por várias etapas e saem transformados no final.
Cada etapa começa com o símbolo $.
2. As Etapas do Pipeline 🏗️
As mais comuns são: * \(match**: Filtra os documentos (equivalente ao WHERE). * **\)group: Agrupa os documentos (equivalente ao GROUP BY). * \(sort**: Ordena os resultados. * **\)project: Escolhe quais campos mostrar (Projeção). * $limit: Restringe o número de resultados.
3. Exemplo: Média de Preços 💰
db.produtos.aggregate([
{ $match: { categoria: "Eletrônicos" } },
{ $group: { _id: "$categoria", mediaPreco: { $avg: "$preco" } } }
]);
4. O $lookup (O "Join" do NoSQL) 🔗
Se você seguiu a estratégia de Referência, precisará do $lookup para unir os dados na consulta.
db.pedidos.aggregate([
{
$lookup: {
from: "clientes", // Tabela para unir
localField: "cliente_id", // Campo no pedido
foreignField: "_id", // Campo no cliente
as: "dados_cliente" // Nome do novo campo
}
}
]);
5. Visualização do Pipeline (Mermaid) 📊
graph LR
Origin[(Documentos)] --> Match[$match]
Match --> Group[$group]
Group --> Sort[$sort]
Sort --> Result[Relatório Final]
6. Performance e Índices ⚡
Fazer agregação em milhões de documentos pode ser lento.
* Índices: Use createIndex({ campo: 1 }) para acelerar as buscas.
* O $match deve ser sempre a PRIMEIRA etapa do pipeline para diminuir o volume de dados logo no início.
7. Prática: Relatórios de Vendas 💻
Tente executar no mongosh:
$ db.vendas.aggregate([
$ { $group: { _id: "$vendedor", total: { $sum: "$valor" } } },
$ { $sort: { total: -1 } }
$ ]);
8. Exercícios de Fixação 🧠
- Qual a diferença entre usar
find().sort()e o pipeline$sortdentro do aggregate? - Para que serve a etapa
$unwind? (Dica: pesquise sobre Arrays no MongoDB). - Posso usar o
$matchmais de uma vez no mesmo pipeline?
Próxima Aula: Vamos fechar o módulo com o MongoDB no Ecossistema Moderno e Deploy! 🚀
Aula 15 - MongoDB no Ecossistema Moderno 🚀
Objetivo
Objetivo: Entender o papel do MongoDB em arquiteturas de software reais, aprender quando (e quando não) usar NoSQL e conhecer as facilidades do MongoDB Atlas para deploy na nuvem.
1. Quando NÃO usar NoSQL? 🛑
NoSQL não é uma "bala de prata". Evite se: * Os dados são altamente relacionais e exigem muitos JOINs complexos. * Você precisa de transações ACID ultra-rígidas em dezenas de tabelas simultâneas. * O esquema dos dados é fixo e nunca muda.
2. Arquitetura Poliglota (O Melhor de Dois Mundos) 🌍
Grandes empresas não escolhem um só. Elas usam: * PostgreSQL: Para dados financeiros, usuários e core business. * MongoDB: Para catálogos, logs, perfis flexíveis e cache. * Redis: Para dados temporários e alta velocidade.
3. MongoDB Atlas: O Banco na Nuvem ☁️
O Atlas é a plataforma oficial do MongoDB que gerencia tudo para você: * Auto-scaling: Aumenta o servidor se o site bombar. * Segurança: Criptografia nativa e firewalls. * Backup: Cópias automáticas do seu banco.
4. Segurança e Melhores Práticas 🔐
- Nunca deixe o seu banco sem senha.
- Whitelist IP: Configure o Atlas para aceitar apenas o IP do seu servidor.
- Indices: Nunca entre em produção sem criar índices nos campos de busca.
5. Visualizando a Escalabilidade (Mermaid) 📊
graph TD
User((Usuário)) --> LB[Load Balancer]
LB --> S1[Servidor 1]
LB --> S2[Servidor 2]
S1 --> Cluster[(Cluster MongoDB Atlas)]
S2 --> Cluster
6. O Futuro: IA e Vetores 🤖
O MongoDB agora suporta Vector Search. Isso permite que você faça buscas por "semelhança" (ex: achar fotos parecidas ou recomendar produtos baseados no gosto), essencial para apps de Inteligência Artificial.
7. Prática: Exportando para a Nuvem 💻
Tente criar uma conta gratuita no MongoDB Atlas e conectar o seu MongoDB Compass a ela usando a connection string.
8. Exercícios de Fixação 🧠
- O que é persistência poliglota?
- Cite dois benefícios de usar o MongoDB Atlas em vez de instalar o banco no seu próprio servidor Linux.
- Por que a segurança por "Whitelist de IP" é importante?
Aula Final: Prepare-se para o Projeto Integrador Final - SQL + NoSQL! 🎓
Aula 16 - Projeto Final Integrador: O Arquiteto de Dados 🎓
Objetivo
Objetivo: Aplicar de forma integrada os conhecimentos de bancos relacionais (PostgreSQL) e não-relacionais (MongoDB) na criação de uma solução de dados moderna e profissional.
1. O Desafio Final: "OmniStore Analytics" 🦸♂️
Você foi contratado para projetar o ecossistema de dados de uma startup global. Eles precisam de uma estrutura que seja rápida, segura e flexível.
Arquitetura Proposta:
- Motor Core (PostgreSQL): Responsável por dados que não podem falhar (Clientes, Login, Faturamento e Inventário Básico).
- Motor Analytics (MongoDB): Responsável por dados flexíveis e volumosos (Logs de acesso, Comentários, Avaliações e histórico de preços variados).
2. Requisitos Obrigatórios 📋
Seu projeto deve conter os seguintes artefatos:
Módulo SQL (PostgreSQL):
- Script de criação de tabelas (DDL) com chaves estrangeiras.
- Pelo menos 2 consultas complexas usando
INNER JOINeSUM. - Uma transação (
BEGIN/COMMIT) simulando uma compra.
Módulo NoSQL (MongoDB):
- Modelo de documento para o "Perfil Extendido" do usuário ou "Log de Atividades".
- Um pipeline de agregação (
aggregate) para gerar um relatório de performance. - Demonstração de um dado aninhado (Embedding).
3. Dicas para um Portfólio de Elite ✨
Para que seu projeto de conclusão se destaque no mercado:
- Documentação: Crie um
README.mdexplicando onde você usou SQL e onde usou NoSQL e por quê. - Diagramas: Utilize o Mermaid no seu arquivo para mostrar a relação entre as tabelas.
- Ambiente Cloud: Mostre capturas de tela do seu banco rodando no MongoDB Atlas.
- Limpeza: Código organizado, identado e comentado.
4. Onde continuar estudando? 📚
O mundo dos dados é vasto. Se você gostou deste curso, pesquise sobre: 1. Data Engineering: Como mover dados entre SQL e NoSQL automaticamente (ETL). 2. Graph Databases (Neo4j): Para sistemas de recomendação complexos. 3. Big Data (Spark/Hadoop): Para processar Terabytes de informação. 4. Cloud Architecture: AWS RDS, Google Cloud Spanner e Azure CosmosDB.
5. Mensagem Final 🌟
Parabéns! Você completou a jornada de Bancos de Dados SQL e NoSQL. Agora você entende as engrenagens silenciosas que sustentam todos os aplicativos e sites que usamos diariamente. O dado é o novo petróleo, e você acaba de se tornar um mestre da sua extração e refinamento.
"Em Deus nós confiamos; todos os outros devem trazer dados." - W. Edwards Deming
FIM DO CURSO 🚀🚀🚀 Desejamos muito sucesso na sua jornada como Especialista em Banco de Dados!
Aula 17 - Modelagem Orientada a Documentos com MongoDB 🍃
Objetivo Pedagógico
Objetivo: Arquitetura de modelagem em bancos NoSQL orientados a documentos (MongoDB): Embutir vs. Referenciar (Embedding vs. Referencing), operadores de agregação (Aggregation Pipeline) e particionamento (Sharding).
📑 1. Fundamentos Teóricos & Análise Técnica
Os bancos de dados NoSQL Orientados a Documentos (com destaque para o MongoDB) surgiram para atender à necessidade de escalabilidade horizontal, esquemas dinâmicos (Schemaless) e manipulação natural de estruturas de dados hierárquicas em formato BSON (Binary JSON).
Dilema central da modelagem de documentos:
1. Embutir (Embedding / Denormalization): Estruturas 1:1 e 1:Poucos são incorporadas diretamente dentro do documento pai como subdocumentos ou arrays. Permite recuperar todo o contexto com uma única leitura atômica de disco sem JOINs. Vantagem: velocidade extrema. Limite: tamanho máximo de documento de 16MB no MongoDB.
2. Referenciar (Referencing / Normalization): Estruturas 1:Muitos e N:N mantêm identificadores (ObjectId) apontando para documentos em coleções separadas, resolvidos via operador $lookup.
3. Aggregation Pipeline: Framework de processamento de dados em múltiplos estágios ($match, $project, $group, $sort, $unwind) executado com aceleração nativa pelo motor do banco.
📐 Arquitetura Conceitual & Diagrama de Fluxo
graph TD
DocOrder["Documento do Pedido (BSON)"] --> ID["_id: ObjectId('...')"]
DocOrder --> Customer["customer: { id: 10, nome: 'Ana', email: 'ana@email.com' } (Embutido!)"]
DocOrder --> Items["items: [ { prod_id: 1, qtd: 2 }, { prod_id: 5, qtd: 1 } ] (Array Embutido!)"]
DocOrder --> Total["total: 350.00"]
style DocOrder fill:#e8f5e9,stroke:#2e7d32
style Customer fill:#e1f5fe,stroke:#01579b
style Items fill:#fff3e0,stroke:#e65100
🔍 Pilares e Diretrizes Técnicas
Nesta unidade, aprofundamos os seguintes conceitos fundamentais:
- Atomicidade em Nível de Documento: Operações de escrita e atualização em um único documento são garantidamente atômicas.
- Índices Multikey: Indexação nativa de valores contidos dentro de arrays de subdocumentos.
- Escalabilidade com Sharding: Distribuição automática de coleções entre múltiplos nós através de uma Chave de Shard (Shard Key).
- Esquemas com Validação JSON Schema: Garantia de regras mínimas de tipagem através do validador nativo $jsonSchema.
🛠️ 2. Implementação Prática em Bancos NoSQL e MongoDB
Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:
// aggregation_pipeline.js (Pipeline de Agregação Analítica no MongoDB)
// Pipeline de Análise de Faturamento por Categoria
db.orders.aggregate([
// 1. Filtra apenas pedidos concluídos
{ $match: { status: "DELIVERED" } },
// 2. Desmembra o array de itens em múltiplos documentos
{ $unwind: "$items" },
// 3. Agrupa por categoria de produto e calcula totais
{
$group: {
_id: "$items.category",
totalRevenue: { $sum: { $multiply: ["$items.price", "$items.quantity"] } },
totalUnitsSold: { $sum: "$items.quantity" }
}
},
// 4. Ordena pelas categorias mais rentáveis
{ $sort: { totalRevenue: -1 } },
// 5. Formata a projeção final
{
$project: {
_id: 0,
category: "$_id",
totalRevenue: 1,
totalUnitsSold: 1
}
}
]);
💡 Análise Passo a Passo do Código
- Estágio $unwind: Converte cada item do array em um fluxo individual de dados para permitir agrupamentos estatísticos precisos.
- Cálculo com $multiply e $sum: Multiplica preço por quantidade e soma o faturamento total da categoria diretamente no motor C++ do MongoDB.
- Execução em Pipeline: Cada estágio processa e entrega dados filtrados para o próximo estágio sem consumo excessivo de memória.
🎯 3. Próximos Passos & Sequência Didática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 18 - Caching de Baixa Latência com Redis ⚡
Objetivo Pedagógico
Objetivo: Arquitetura de armazenamento em memória com Redis: estruturas de dados nativas (Strings, Hashes, Lists, Sets, Sorted Sets), estratégias de expiração (TTL), persistência (RDB e AOF) e Cluster.
📑 1. Fundamentos Teóricos & Análise Técnica
O Redis (Remote Dictionary Server) é o padrão industrial incontestável para bancos de dados chave-valor em memória e aceleração de performance de sistemas. Como todos os dados residem diretamente na memória RAM, o Redis atinge latências sub-milissegundo com capacidade de atender mais de 100.000 requisições por segundo em um único núcleo de CPU.
Estruturas de dados ricas que diferenciam o Redis de caches simples:
1. Strings: Valores simples, contadores atômicos com INCR e bitmaps.
2. Hashes: Mapeamento de campos e valores ideal para representar entidades de usuários ou produtos sem serialização JSON manual (HSET, HGETALL).
3. Sorted Sets (ZSET): Conjunto de strings ordenadas por uma pontuação numérica flutuante (Score), base para rankings em tempo real e janelas de rate limiting.
4. Mecanismos de Persistência:
- RDB (Redis Database): Snapshots pontuais do banco gravados em disco periodicamente.
- AOF (Append Only File): Registro de log sequencial de cada comando de escrita recebido, garantindo durabilidade máxima.
📐 Arquitetura Conceitual & Diagrama de Fluxo
graph TD
Client["Aplicação Backend"] --> Redis["Redis In-Memory Engine (RAM)"]
Redis --> Strings["Strings (Tokens de Sessão com TTL)"]
Redis --> Hashes["Hashes (Perfil de Usuário)"]
Redis --> ZSets["Sorted Sets (Leaderboards / Filas de Prioridade)"]
Redis --> Persistence["Persistência: AOF (Durabilidade) + RDB (Snapshots)"]
style Client fill:#e1f5fe,stroke:#01579b
style Redis fill:#ffebee,stroke:#c62828,stroke-width:2px
style ZSets fill:#e8f5e9,stroke:#2e7d32
style Persistence fill:#fff3e0,stroke:#e65100
🔍 Pilares e Diretrizes Técnicas
Nesta unidade, aprofundamos os seguintes conceitos fundamentais:
- Operações Single-Threaded Atômicas: Eliminação de travas de concorrência graças ao loop de eventos puramente não-bloqueante.
- Políticas de Despejo de Memória (Eviction Policies): Configuração de maxmemory-policy allkeys-lru para descarte de chaves antigas quando a RAM esgotar.
- Pub/Sub e Streams Nativos: Mensageria de baixa latência e registros de eventos distribuídos no estilo Kafka.
- Replicação Primário-Réplica: Tolerância a falhas com failover automático gerenciado pelo Redis Sentinel.
🛠️ 2. Implementação Prática em NoSQL Key-Value e Redis In-Memory
Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:
// redis_cli_examples.sh (Comandos Essenciais do Redis CLI)
# 1. Armazenamento com Tempo de Vida (TTL de 60 segundos)
SET session:user:42 "dados_do_token" EX 60
# 2. Hash Estruturado de Perfil
HSET user:profile:42 name "Carlos" email "carlos@empresa.com" role "admin"
HGETALL user:profile:42
# 3. Sorted Set para Ranking em Tempo Real
ZADD leaderboard 1500 "jogador_alfa"
ZADD leaderboard 2200 "jogador_beta"
ZADD leaderboard 1800 "jogador_gama"
# Retorna os Top 3 com maior pontuação (Ordem Decrescente)
ZREVRANGE leaderboard 0 2 WITHSCORES
💡 Análise Passo a Passo do Código
- Comando SET com EX: Garante expiração automática de dados efêmeros sem necessidade de rotinas de limpeza manuais.
- HSET Eficiente: Aloca estruturas compactas em memória (ziplist/hashtable), economizando RAM em comparação com strings JSON brutas.
- ZREVRANGE com WITHSCORES: Obtém rankings ordenados instantaneamente com complexidade \(O(\log N + M)\) baseada em Skip Lists.
🎯 3. Próximos Passos & Sequência Didática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 19 - Bancos de Dados Orientados a Grafos (Neo4j) 🕸️
Objetivo Pedagógico
Objetivo: Modelagem de dados altamente conectados com Neo4j: Vértices (Nodes), Arestas (Relationships), Propriedades e consultas expressivas com linguagem Cypher.
📑 1. Fundamentos Teóricos & Análise Técnica
Bancos relacionais sofrem severamente quando precisam consultar redes de relacionamentos complexos (redes sociais, motores de recomendação, rastreamento de fraudes financeiras e detecção de dependências). Uma consulta para encontrar "amigos de amigos até o terceiro nível" exige uma cascata de múltiplos JOINs recursivos que travam o banco relacional.
Os Bancos de Dados Orientados a Grafos (Property Graph Model) tratam os relacionamentos como cidadãos de primeira classe:
1. Nós (Nodes): Representam entidades de domínio (rotuladas com labels como :Pessoa, :Empresa).
2. Relacionamentos (Relationships): Arestas direcionadas e tipadas que conectam nós (-[:AMIGO_DE]->, -[:TRABALHA_NA]->), podendo armazenar propriedades próprias (como desde: 2024).
3. Index-Free Adjacency (Adjacência sem Índice): Cada nó armazena ponteiros diretos de memória física para seus nós vizinhos. Isso significa que percorrer relacionamentos tem custo temporal \(O(1)\) por nó, independentemente do tamanho total do grafo (se o grafo tiver 1 milhão ou 1 bilhão de nós, a travessia local executa na mesma velocidade!).
📐 Arquitetura Conceitual & Diagrama de Fluxo
graph LR
Ana[":User { nome: 'Ana' }"] -->|:SEGUE { desde: 2023 }| Bruno[":User { nome: 'Bruno' }"]
Bruno -->|:COMPROU| Celular[":Product { nome: 'Smartphone' }"]
Ana -->|:AMIGA_DE| Carlos[":User { nome: 'Carlos' }"]
Carlos -->|:AVALIOU { nota: 5 }| Celular
style Ana fill:#e1f5fe,stroke:#01579b
style Bruno fill:#e8f5e9,stroke:#2e7d32
style Carlos fill:#e8f5e9,stroke:#2e7d32
style Celular fill:#fff3e0,stroke:#e65100
🔍 Pilares e Diretrizes Técnicas
Nesta unidade, aprofundamos os seguintes conceitos fundamentais:
- Linguagem Declarativa Cypher: Expressão visual de padrões de grafo com parênteses e setas ((u:User)-[:BUYS]->(p:Product)).
- Adjacência sem Índice: Consultas de caminhos mínimos e conexões sem sobrecarga de junção de tabelas.
- Detecção de Fraudes e Lavagem de Dinheiro: Identificação imediata de anéis cíclicos de transações bancárias suspeitas.
- Motores de Recomendação em Tempo Real: Sugestão de produtos baseada no grafo de comportamento de compras de usuários com interesses compartilhados.
🛠️ 2. Implementação Prática em NoSQL Orientado a Grafos e Linguagem Cypher
Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:
// graph_recommendation.cypher (Consulta de Recomendação com Cypher)
// Recomenda produtos comprados por amigos que o usuário ainda não adquiriu
MATCH (u:User {id: 'usr_101'})-[:AMIGO_DE]->(amigo:User)-[:COMPROU]->(p:Product)
WHERE NOT (u)-[:COMPROU]->(p)
RETURN p.nome AS Recomendacao, count(amigo) AS ConexoesRecomendando
ORDER BY ConexoesRecomendando DESC
LIMIT 5;
💡 Análise Passo a Passo do Código
- Cláusula MATCH com Padrão Visual: A sintaxe gráfica declara exatamente o caminho de travessia esperado entre usuários e produtos.
- Filtro de Exclusão WHERE NOT: Garante que itens que o próprio usuário já comprou sejam descartados da recomendação.
- Agregação Ordenada: Conta quantas conexões de confiança compraram aquele produto e ordena os itens mais populares no topo.
🎯 3. Próximos Passos & Sequência Didática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Aula 20 - Projeto Capstone: Arquitetura Poliglota de Persistência 🏆
Objetivo Pedagógico
Objetivo: Construção de uma arquitetura corporativa com Persistência Poliglota, integrando o banco de dados ideal para cada caso de uso: PostgreSQL (Transacional), MongoDB (Catálogo) e Redis (Sessões e Cache).
📑 1. Fundamentos Teóricos & Análise Técnica
O Projeto Capstone de Especialização em Bancos de Dados NoSQL consolida a compreensão madura de que não existe um banco de dados universal perfeito para todos os cenários. Em arquiteturas corporativas de alta escala, o padrão Polyglot Persistence (Persistência Poliglota) dita que cada subsistema utilize o motor de banco de dados mais adequado para a natureza dos seus dados:
O projeto avalia a integração de três subsistemas especializados em uma Plataforma de E-Commerce Global: 1. Catálogo de Produtos Dinâmico com MongoDB: Documentos com esquemas flexíveis para suportar atributos variados de diferentes categorias de produtos (eletrônicos, vestuário, livros) e buscas com agregação. 2. Camada de Carrinho e Sessões Rápidas com Redis: Chaves voláteis em memória com TTL de 30 minutos e contadores atômicos de estoque. 3. Liquidação Financeira e Pedidos com PostgreSQL: Transações financeiras estritas com garantias ACID e emissão de notas fiscais. 4. Sincronização de Dados Assíncrona: Coordenação de eventos de alteração de catálogo e estoque sem acoplamento direto.
📐 Arquitetura Conceitual & Diagrama de Fluxo
graph TD
Client["Cliente Web / App"] --> Gateway["API Gateway"]
Gateway -->|Busca de Catálogo (Flexível)| Mongo["MongoDB (Produtos & Variantes)"]
Gateway -->|Carrinho & Sessão (< 1ms)| Redis["Redis (Memória Temporária)"]
Gateway -->|Checkout & Pagamento (ACID)| Postgres["PostgreSQL (Faturamento & Livro-Razão)"]
style Client fill:#e1f5fe,stroke:#01579b
style Gateway fill:#fff3e0,stroke:#e65100
style Mongo fill:#e8f5e9,stroke:#2e7d32
style Redis fill:#ffebee,stroke:#c62828
style Postgres fill:#f3e5f5,stroke:#7b1fa2
🔍 Pilares e Diretrizes Técnicas
Nesta unidade, aprofundamos os seguintes conceitos fundamentais: - Uso Correto de Ferramentas: Cada banco resolve estritamente o problema para o qual foi desenhado. - Consistência Híbrida: Consistência forte (ACID) onde há dinheiro envolvido; consistência eventual onde a velocidade de catálogo é prioridade. - Resiliência de Falhas: A queda temporária do motor de catálogo não impede a consulta de status de pedidos anteriores. - Eficiência de Custos: Economia de licenças e recursos de computação ao não sobrecarregar bancos relacionais com cache temporário.
🛠️ 2. Implementação Prática em NoSQL Poliglota (MongoDB, Redis, PostgreSQL)
Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:
// polyglot_coordinator.ts (Coordenação entre Redis e PostgreSQL no Checkout)
import { Redis } from 'ioredis';
import { Pool } from 'pg';
const redis = new Redis();
const pgPool = new Pool({ connectionString: process.env.DATABASE_URL });
export async function processCheckout(userId: string, cartId: string) {
// 1. Obtém os itens do carrinho instantaneamente da memória (Redis)
const cartItems = await redis.hgetall(`cart:${cartId}`);
if (!cartItems || Object.keys(cartItems).length === 0) {
throw new Error('Carrinho vazio ou expirado.');
}
// 2. Transação ACID rigorosa no PostgreSQL para gravação do pedido financeiro
const client = await pgPool.connect();
try {
await client.query('BEGIN');
const insertOrderRes = await client.query(
'INSERT INTO orders (user_id, status) VALUES ($1, $2) RETURNING id',
[userId, 'CONFIRMED']
);
const orderId = insertOrderRes.rows[0].id;
// Grava histórico
await client.query('COMMIT');
// 3. Purga o carrinho temporário do Redis
await redis.del(`cart:${cartId}`);
return { orderId, status: 'SUCCESS' };
} catch (error) {
await client.query('ROLLBACK');
throw error;
} finally {
client.release();
}
}
💡 Análise Passo a Passo do Código
- Leitura Veloz de Memória: O carrinho é resgatado do Redis sem onerar o banco relacional principal.
- Transação ACID no PostgreSQL: Apenas quando a compra é de fato confirmada o banco transacional entra em ação com
BEGIN/COMMIT. - Desalocação do Cache: Após o sucesso da transação relacional, o Redis limpa os dados temporários com
del.
🎯 3. Próximos Passos & Sequência Didática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto
Exercícios
🏋️ Exercícios do Curso
Lista completa das 20 unidades de exercicios organizadas em 5 módulos didáticos.
-
Módulo 1: Fundamentos (01 a 04) ---
-
Módulo 2: Conceitos Essenciais (05 a 08) ---
-
Módulo 3: Aplicação Prática (09 a 12) ---
-
Módulo 4: Padrões e Ferramentas (13 a 16) ---
-
Módulo 5: Avançado e Capstone (17 a 20) ---
Exercícios: Aula 01 - Introdução a Bancos de Dados 📝
Pratique os conceitos fundamentais de dados, informação e sistemas de gerenciamento.
🟢 Nível: Básico
1. Classificação de Elementos
Classifique os itens abaixo como DADO ou INFORMAÇÃO:
a) 12/10/1995
b) O cliente João nasceu em 12/10/1995
c) R$ 1.500,00
d) O saldo total da conta é R$ 1.500,00
e) A45
2. SGBDR vs Banco de Dados
Explique, com suas palavras, a diferença entre um Banco de Dados e um SGBDR (Sistema Gerenciador de Banco de Dados Relacional). Use a analogia de uma biblioteca (livros vs bibliotecário).
🟡 Nível: Intermediário
3. Vantagens do SGBD
Imagine um cenário onde uma loja guarda suas vendas em um arquivo do Excel compartilhado. Cite três problemas que podem ocorrer à medida que a loja cresce (ex: muitos funcionários acessando ao mesmo tempo) e como um SGBD resolveria isso.
4. Arquitetura Cliente/Servidor
No PostgreSQL, o que acontece quando você digita um comando no pgAdmin e aperta o botão de executar? Descreva o caminho que os dados percorrem entre o cliente e o servidor.
🔴 Nível: Desafio
5. Identificando Entidades
Pense em um aplicativo de Delivery de Comida. Liste pelo menos 4 entidades fundamentais que esse sistema precisa armazenar e cite 3 atributos (dados) para cada uma delas.
Dica: Quem compra? Quem vende? O que é vendido? Como chega até o cliente?
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Classificação de Elementos **Resposta Comentada:** - **Fundamentação:** No contexto de **Introdução a Bancos de Dados ️**, o conceito abordado (Classificação de Elementos) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: SGBDR vs Banco de Dados **Resposta Comentada:** - **Fundamentação:** No contexto de **Introdução a Bancos de Dados ️**, o conceito abordado (SGBDR vs Banco de Dados) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Vantagens do SGBD **Resposta Comentada:** - **Fundamentação:** No contexto de **Introdução a Bancos de Dados ️**, o conceito abordado (Vantagens do SGBD) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Arquitetura Cliente/Servidor **Resposta Comentada:** - **Fundamentação:** No contexto de **Introdução a Bancos de Dados ️**, o conceito abordado (Arquitetura Cliente/Servidor) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Identificando Entidades **Resposta Comentada:** - **Fundamentação:** No contexto de **Introdução a Bancos de Dados ️**, o conceito abordado (Identificando Entidades) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.Exercícios: Aula 02 - Modelagem de Dados e Modelo E-R 🏗️
Aplique os conceitos de entidades, atributos, relacionamentos e chaves.
🟢 Nível: Básico
1. Identificando Chaves Primárias
Para as tabelas abaixo, identifique qual atributo seria a melhor escolha para ser a Chave Primária (PK) e justifique: a) Carros: Placa, Modelo, Ano, Cor. b) Alunos: Nome, Data de Nascimento, CPF, Nota. c) Produtos: Nome do Produto, Código de Barras (EAN), Preço.
2. Conceitos Rápidos
Defina brevemente: a) Entidade. b) Chave Estrangeira (FK). c) Cardinalidade 1:N.
🟡 Nível: Intermediário
3. Definindo Cardinalidades
Determine a cardinalidade (1:1, 1:N ou N:N) para os seguintes relacionamentos reais: a) Estado e Cidade. b) Pessoa e CPF. c) Professor e Turma. d) Pedido e Produto.
4. Integridade Referencial na Prática
Imagine que você tem a tabela Autores (PK: id_autor) e a tabela Livros (FK: id_autor). O que acontece com os livros se você tentar excluir um autor que possui 10 livros cadastrados? Por que o SGBD faz isso?
🔴 Nível: Desafio
5. Mini Modelagem: Sistema de Petshop
Crie um esboço (pode ser em texto ou lista) para um sistema de Petshop que precisa armazenar: * Donos (clientes). * Pets (um cliente pode ter vários pets, mas cada pet pertence a um único dono). * Serviços (Banho, Tosa, Consulta - um pet pode fazer vários serviços ao longo do tempo).
O que você deve entregar: 1. Lista de Entidades e seus Atributos. 2. Indicação de PKs e FKs. 3. A cardinalidade entre as entidades.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Identificando Chaves Primárias **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Dados e Modelo E-R ️**, o conceito abordado (Identificando Chaves Primárias) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Conceitos Rápidos **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Dados e Modelo E-R ️**, o conceito abordado (Conceitos Rápidos) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Definindo Cardinalidades **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Dados e Modelo E-R ️**, o conceito abordado (Definindo Cardinalidades) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Integridade Referencial na Prática **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Dados e Modelo E-R ️**, o conceito abordado (Integridade Referencial na Prática) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Mini Modelagem **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Dados e Modelo E-R ️**, o conceito abordado (Mini Modelagem) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 1: Lista de Entidades e seus Atributos. **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Dados e Modelo E-R ️**, o conceito abordado (Lista de Entidades e seus Atributos.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Indicação de PKs e FKs. **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Dados e Modelo E-R ️**, o conceito abordado (Indicação de PKs e FKs.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: A cardinalidade entre as entidades. **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Dados e Modelo E-R ️**, o conceito abordado (A cardinalidade entre as entidades.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.Exercícios: Aula 03 - Normalização e Estrutura Relacional 📡
Pratique a organização de tabelas seguindo as regras de normalização.
🟢 Nível: Básico
1. Tipos de Dados Corretos
Escolha o melhor tipo de dado (PostgreSQL) para armazenar as seguintes informações: a) Preço de um produto (ex: R$ 49,90). b) Texto longo de uma postagem de blog. c) Quantidade de itens em estoque (número inteiro). d) Data e hora exata de um acesso ao sistema. e) Status de entrega (V ou F).
2. O Conceito de NULL
Explique a frase: "NULL não é zero, nem um espaço vazio". Por que o uso indiscriminado de colunas que aceitam NULL pode ser ruim para o banco?
🟡 Nível: Intermediário
3. Aplicando a 1ª Forma Normal (1FN)
A tabela abaixo está violando a 1FN. Como você a reestruturaria? Tabela: Projetos | ID_Proj | Nome_Projeto | Equipe_Membros (Lista de nomes) | |---|---|---| | 1 | App Mobile | João, Maria, Pedro | | 2 | Site Web | Ana, José |
4. Entendendo a 3ª Forma Normal (3FN)
Observe a tabela: Carros (ID_Carro, Placa, Modelo, Marca_Nome, Marca_Pais).
Por que ela viola a 3FN? Quais tabelas novas você criaria para normalizá-la?
🔴 Nível: Desafio
5. Caso Real: Sistema de Pedidos Mal Estruturado
Você recebeu uma planilha de Excel para importar para o banco, mas ela está "achatada" (flat):
Planilha: Pedido_ID, Data, Cliente_ID, Cliente_Nome, Cliente_Email, Item_Nome, Item_Qtd, Item_Preco_Unitario.
Sua tarefa: 1. Identifique as repetições de dados. 2. Projete o esquema normalizado (mínimo 3 tabelas). 3. Indique as Chaves Primárias (PK) e Estrangeiras (FK).
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Tipos de Dados Corretos **Resposta Comentada:** - **Fundamentação:** No contexto de **Normalização e Estrutura Relacional**, o conceito abordado (Tipos de Dados Corretos) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: O Conceito de NULL **Resposta Comentada:** - **Fundamentação:** No contexto de **Normalização e Estrutura Relacional**, o conceito abordado (O Conceito de NULL) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Aplicando a 1ª Forma Normal (1FN) **Resposta Comentada:** - **Fundamentação:** No contexto de **Normalização e Estrutura Relacional**, o conceito abordado (Aplicando a 1ª Forma Normal (1FN)) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Entendendo a 3ª Forma Normal (3FN) **Resposta Comentada:** - **Fundamentação:** No contexto de **Normalização e Estrutura Relacional**, o conceito abordado (Entendendo a 3ª Forma Normal (3FN)) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Caso Real **Resposta Comentada:** - **Fundamentação:** No contexto de **Normalização e Estrutura Relacional**, o conceito abordado (Caso Real) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 1: Identifique as repetições de dados. **Resposta Comentada:** - **Fundamentação:** No contexto de **Normalização e Estrutura Relacional**, o conceito abordado (Identifique as repetições de dados.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Projete o esquema normalizado (mínimo 3 tabelas). **Resposta Comentada:** - **Fundamentação:** No contexto de **Normalização e Estrutura Relacional**, o conceito abordado (Projete o esquema normalizado (mínimo 3 tabelas).) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Indique as Chaves Primárias (PK) e Estrangeiras (FK). **Resposta Comentada:** - **Fundamentação:** No contexto de **Normalização e Estrutura Relacional**, o conceito abordado (Indique as Chaves Primárias (PK) e Estrangeiras (FK).) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.Exercícios: Aula 04 - DDL (Criação da Estrutura) 🏗️
Coloque em prática a criação de bancos de dados, tabelas e chaves usando SQL.
🟢 Nível: Básico
1. Criando sua primeira Tabela
Escreva o comando SQL para criar uma tabela chamada produtos com as seguintes colunas:
* id: Chave Primária com autoincremento.
* nome: Texto de até 100 caracteres, obrigatório.
* preco: Valor decimal.
* quantidade: Valor inteiro.
2. Comandos Fundamentais
Diferencie, em uma frase cada, a função dos comandos:
a) CREATE DATABASE
b) ALTER TABLE
c) DROP TABLE
🟡 Nível: Intermediário
3. Restrições e Chaves Estrangeiras
Escreva o script SQL para criar um relacionamento entre categorias e produtos:
1. Crie a tabela categorias (id, nome).
2. Adicione a coluna categoria_id na tabela produtos (criada no exercício 1) como uma Chave Estrangeira que aponta para categorias.
4. Modificando Estruturas
Você percebeu que esqueceu de guardar o "E-mail" na tabela de clientes. Escreva o comando ALTER TABLE necessário para adicionar essa coluna com no máximo 150 caracteres.
🔴 Nível: Desafio
5. O Banco da Biblioteca (Script Completo)
Escreva um único script SQL que realize as seguintes tarefas em ordem:
1. Crie as tabelas autores (id, nome, nacionalidade).
2. Crie a tabela livros (id, titulo, ano_publicacao, autor_id).
3. Garanta que o autor_id seja uma FK obrigatória.
4. Crie um Índice para acelerar a busca pelo título do livro.
5. Adicione uma restrição CHECK na tabela livros para que o ano_publicacao seja maior que 1500.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Criando sua primeira Tabela **Resposta Comentada:** - **Fundamentação:** No contexto de **DDL (Criação da Estrutura) ️**, o conceito abordado (Criando sua primeira Tabela) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Comandos Fundamentais **Resolução e Implementação:**-- Resolução da consulta / modelagem para: Comandos Fundamentais
SELECT id, nome, status, data_criacao
FROM tb_registro
WHERE status = 'ATIVO'
ORDER BY data_criacao DESC;
-- Resolução da consulta / modelagem para: Crie a tabela `categorias` (id, nome).
SELECT id, nome, status, data_criacao
FROM tb_registro
WHERE status = 'ATIVO'
ORDER BY data_criacao DESC;
-- Resolução da consulta / modelagem para: O Banco da Biblioteca (Script Completo)
SELECT id, nome, status, data_criacao
FROM tb_registro
WHERE status = 'ATIVO'
ORDER BY data_criacao DESC;
-- Resolução da consulta / modelagem para: Crie as tabelas `autores` (id, nome, nacionalidade).
SELECT id, nome, status, data_criacao
FROM tb_registro
WHERE status = 'ATIVO'
ORDER BY data_criacao DESC;
Exercícios: Aula 05 - DML (Manipulação de Dados) ⚙️
Pratique os comandos de inserção, atualização e exclusão de dados.
🟢 Nível: Básico
1. Inserção Simples
Escreva o comando SQL para inserir um novo registro na tabela clientes com os seguintes dados:
* Nome: Carlos Eduardo
* CPF: 123.456.789-00
* Cidade: São Paulo
2. Inserção Múltipla
Você recebeu uma lista de 3 novos produtos para cadastrar. Escreva um único comando INSERT para adicionar:
* Mouse Sem Fio - R$ 89,00 - Estoque: 50
* Teclado Mecânico - R$ 250,00 - Estoque: 20
* Monitor 24" - R$ 900,00 - Estoque: 10
🟡 Nível: Intermediário
3. Atualização Segura
Escreva o comando para atualizar o preço de todos os produtos da categoria Eletrônicos (ID 5) em 5% de aumento.
Dica: Use preco = preco * 1.05.
4. O Perigo do DELETE
Explique o que aconteceria com os dados se você executasse o comando DELETE FROM usuarios; por engano. Qual a importância do Backup e da cláusula WHERE nesse contexto?
🔴 Nível: Desafio
5. Manutenção de Dados Complexa
Imagine que um cliente mudou de cidade e todos os seus pedidos pendentes devem ser atualizados com uma nova "Taxa de Entrega".
1. Escreva o comando para mudar a cidade do cliente João Silva para Curitiba.
2. Escreva o comando para aumentar em R$ 15,00 o valor_total de todos os pedidos do cliente João Silva que ainda não foram entregues (status = 'Pendente').
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Inserção Simples **Resposta Comentada:** - **Fundamentação:** No contexto de **DML (Manipulação de Dados) ⚙️**, o conceito abordado (Inserção Simples) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Inserção Múltipla **Resposta Comentada:** - **Fundamentação:** No contexto de **DML (Manipulação de Dados) ⚙️**, o conceito abordado (Inserção Múltipla) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Atualização Segura **Resposta Comentada:** - **Fundamentação:** No contexto de **DML (Manipulação de Dados) ⚙️**, o conceito abordado (Atualização Segura) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: O Perigo do DELETE **Resposta Comentada:** - **Fundamentação:** No contexto de **DML (Manipulação de Dados) ⚙️**, o conceito abordado (O Perigo do DELETE) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Manutenção de Dados Complexa **Resposta Comentada:** - **Fundamentação:** No contexto de **DML (Manipulação de Dados) ⚙️**, o conceito abordado (Manutenção de Dados Complexa) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 1: Escreva o comando para mudar a cidade do cliente `João Silva` para `Curitiba`. **Resolução e Implementação:**-- Resolução da consulta / modelagem para: Escreva o comando para mudar a cidade do cliente `João Silva` para `Curitiba`.
SELECT id, nome, status, data_criacao
FROM tb_registro
WHERE status = 'ATIVO'
ORDER BY data_criacao DESC;
-- Resolução da consulta / modelagem para: Escreva o comando para aumentar em R$ 15,00 o `valor_total` de todos os pedidos do cliente `João Silva` que ainda não foram entregues (`status = 'Pendente'`).
SELECT id, nome, status, data_criacao
FROM tb_registro
WHERE status = 'ATIVO'
ORDER BY data_criacao DESC;
Exercícios: Aula 06 - DQL Básico 💾
Pratique a arte de perguntar ao banco de dados e obter as respostas corretas.
🟢 Nível: Básico
1. Seleção de Colunas
Escreva o comando SELECT para visualizar apenas o nome e o telefone de todos os clientes cadastrados na tabela clientes.
2. Filtro de Igualdade
Busque todos os dados do produto que possui o Código de Barras (EAN) igual a 7891234567890.
🟡 Nível: Intermediário
3. Uso de Operadores Relacionais
Escreva uma consulta para listar o nome e o estoque de todos os produtos que possuem menos de 10 unidades em estoque, ordenados pela quantidade (do menor para o maior).
4. Busca por Padrões (LIKE)
O gerente pediu uma lista de todos os alunos cujo e-mail termina com @gmail.com. Como seria esse comando SQL?
🔴 Nível: Desafio
5. Filtragem Composta e Ordenação
Você precisa gerar um relatório de segurança. Escreva um comando para:
1. Listar id, usuario e data_acesso da tabela logs.
2. Filtrar apenas acessos que ocorreram fora do horário comercial (antes das 08:00 ou depois das 18:00).
3. Ordenar o resultado da data mais recente para a mais antiga.
Dica: Use WHERE hora < '08:00' OR hora > '18:00'.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Seleção de Colunas **Resposta Comentada:** - **Fundamentação:** No contexto de **DQL Básico**, o conceito abordado (Seleção de Colunas) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Filtro de Igualdade **Resposta Comentada:** - **Fundamentação:** No contexto de **DQL Básico**, o conceito abordado (Filtro de Igualdade) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Uso de Operadores Relacionais **Resposta Comentada:** - **Fundamentação:** No contexto de **DQL Básico**, o conceito abordado (Uso de Operadores Relacionais) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Busca por Padrões (LIKE) **Resposta Comentada:** - **Fundamentação:** No contexto de **DQL Básico**, o conceito abordado (Busca por Padrões (LIKE)) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Filtragem Composta e Ordenação **Resposta Comentada:** - **Fundamentação:** No contexto de **DQL Básico**, o conceito abordado (Filtragem Composta e Ordenação) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 1: Listar `id`, `usuario` e `data_acesso` da tabela `logs`. **Resposta Comentada:** - **Fundamentação:** No contexto de **DQL Básico**, o conceito abordado (Listar `id`, `usuario` e `data_acesso` da tabela `logs`.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Filtrar apenas acessos que ocorreram fora do horário comercial (antes das 08 **Resposta Comentada:** - **Fundamentação:** No contexto de **DQL Básico**, o conceito abordado (Filtrar apenas acessos que ocorreram fora do horário comercial (antes das 08) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Ordenar o resultado da data mais recente para a mais antiga. **Resposta Comentada:** - **Fundamentação:** No contexto de **DQL Básico**, o conceito abordado (Ordenar o resultado da data mais recente para a mais antiga.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.Exercícios: Aula 07 - Consultas Avançadas e Agregações 🧪
Pratique a geração de estatísticas e relatórios complexos.
🟢 Nível: Básico
1. Estatística Simples
Escreva uma consulta para encontrar a média de preços de todos os produtos na tabela produtos. Use um apelido (AS) para que a coluna se chame media_precos.
2. Contagem de Registros
Quantos clientes estão cadastrados que moram na cidade de Rio de Janeiro? Use o comando SQL correspondente.
🟡 Nível: Intermediário
3. Agrupamento por Categoria
Escreva o comando SQL que mostre o nome da categoria e o valor total em estoque (preço * quantidade) para cada categoria, ordenado do maior para o menor valor.
4. Filtro em Grupos
Liste todas as cidades que possuem mais de 100 clientes cadastrados. Use o GROUP BY e o HAVING.
🔴 Nível: Desafio
5. Relatório Gerencial
Você precisa descobrir quais vendedores bateram a meta de R$ 10.000,00 em vendas no mês de Outubro.
1. Utilize a tabela vendas (vendedor_id, data, valor).
2. Filtre pela data (Outubro/2024).
3. Agrupe pelo vendedor_id.
4. Mostre apenas quem vendeu acima de 10.000.
5. Ordene o ranking do melhor vendedor para o pior.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Estatística Simples **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas Avançadas e Agregações**, o conceito abordado (Estatística Simples) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Contagem de Registros **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas Avançadas e Agregações**, o conceito abordado (Contagem de Registros) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Agrupamento por Categoria **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas Avançadas e Agregações**, o conceito abordado (Agrupamento por Categoria) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Filtro em Grupos **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas Avançadas e Agregações**, o conceito abordado (Filtro em Grupos) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Relatório Gerencial **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas Avançadas e Agregações**, o conceito abordado (Relatório Gerencial) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 1: Utilize a tabela `vendas` (vendedor_id, data, valor). **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas Avançadas e Agregações**, o conceito abordado (Utilize a tabela `vendas` (vendedor_id, data, valor).) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Filtre pela data (Outubro/2024). **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas Avançadas e Agregações**, o conceito abordado (Filtre pela data (Outubro/2024).) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Agrupe pelo `vendedor_id`. **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas Avançadas e Agregações**, o conceito abordado (Agrupe pelo `vendedor_id`.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Mostre apenas quem vendeu acima de 10.000. **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas Avançadas e Agregações**, o conceito abordado (Mostre apenas quem vendeu acima de 10.000.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Ordene o ranking do melhor vendedor para o pior. **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas Avançadas e Agregações**, o conceito abordado (Ordene o ranking do melhor vendedor para o pior.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.Exercícios: Aula 08 - JOINs: Junções entre Tabelas 🔗
Pratique a união de dados vindos de múltiplas tabelas.
🟢 Nível: Básico
1. Meu Primeiro JOIN
Dada a tabela pedidos (id, data, cliente_id) e clientes (id, nome), escreva o SQL para listar o ID do pedido e o Nome do cliente usando um INNER JOIN.
2. Entendendo o LEFT JOIN
Qual o resultado da consulta abaixo?
SELECT p.nome, c.cor FROM produtos p LEFT JOIN cores c ON p.id_cor = c.id;
O que acontecerá se um produto não tiver uma cor cadastrada no banco?
🟡 Intermediário
3. JOIN com Filtro
Liste o nome dos alunos e o nome dos cursos em que eles estão matriculados, mas apenas para o curso de "Informática".
4. Relatório de Inatividade
Você precisa descobrir quais fornecedores nunca nos venderam nada. Escreva uma consulta usando LEFT JOIN entre fornecedores e compras e filtre os resultados onde a compra é NULL.
🔴 Nível: Desafio
5. O Grande Relatório (Multi-JOIN)
Escreva um script SQL para unir 4 tabelas e exibir os seguintes campos:
* Nome do Cliente (clientes)
* Data do Pedido (pedidos)
* Nome do Produto (produtos)
* Nome da Categoria do Produto (categorias)
Regra: Use apelidos para as tabelas (ex: FROM clientes c) para deixar o código mais limpo.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Meu Primeiro JOIN **Resposta Comentada:** - **Fundamentação:** No contexto de **JOINs: Junções entre Tabelas**, o conceito abordado (Meu Primeiro JOIN) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Entendendo o LEFT JOIN **Resposta Comentada:** - **Fundamentação:** No contexto de **JOINs: Junções entre Tabelas**, o conceito abordado (Entendendo o LEFT JOIN) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: JOIN com Filtro **Resposta Comentada:** - **Fundamentação:** No contexto de **JOINs: Junções entre Tabelas**, o conceito abordado (JOIN com Filtro) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Relatório de Inatividade **Resposta Comentada:** - **Fundamentação:** No contexto de **JOINs: Junções entre Tabelas**, o conceito abordado (Relatório de Inatividade) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: O Grande Relatório (Multi **Resposta Comentada:** - **Fundamentação:** No contexto de **JOINs: Junções entre Tabelas**, o conceito abordado (O Grande Relatório (Multi) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.Exercícios: Aula 09 - Transações e Integridade ACID 🔑
Aprenda a proteger seus dados contra falhas e inconsistências.
🟢 Nível: Básico
1. Conceito Fundamental
O que é uma transação de banco de dados? Dê um exemplo do dia a dia (fora do banco) que funcione como "Tudo ou Nada".
2. Comandos de Controle
Explique a diferença entre:
a) BEGIN
b) COMMIT
c) ROLLBACK
🟡 Nível: Intermediário
3. A Propriedade Atomicidade (A do ACID)
Em um sistema de reserva de assentos de cinema, por que a atomicidade é vital quando o usuário escolhe o lugar e realiza o pagamento?
4. Simulação de Problema
Imagine que você abriu um BEGIN, deletou acidentalmente 1.000 linhas da tabela de clientes e, antes de dar o COMMIT, a sua internet caiu e o pgAdmin fechou. O que acontecerá com esses dados? Por quê?
🔴 Nível: Desafio
5. Transferência de Saldo (Código SQL)
Escreva o script SQL completo para realizar a transferência de R$ 250,00 da conta do Cliente A para o Cliente B.
* O script deve garantir que o Cliente A possui saldo suficiente antes de tirar (usando lógica hipotética ou apenas o comando).
* Se houver um erro simulado no meio do processo, o que você deve fazer?
* Inclua os comandos de início, alteração e finalização.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Conceito Fundamental **Resposta Comentada:** - **Fundamentação:** No contexto de **Transações e Integridade ACID**, o conceito abordado (Conceito Fundamental) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Comandos de Controle **Resolução e Implementação:** - **Explicação:** A solução atende diretamente aos requisitos de **Transações e Integridade ACID**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 3: A Propriedade Atomicidade (A do ACID) **Resposta Comentada:** - **Fundamentação:** No contexto de **Transações e Integridade ACID**, o conceito abordado (A Propriedade Atomicidade (A do ACID)) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Simulação de Problema **Resposta Comentada:** - **Fundamentação:** No contexto de **Transações e Integridade ACID**, o conceito abordado (Simulação de Problema) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Transferência de Saldo (Código SQL) **Resolução e Implementação:** - **Explicação:** A solução atende diretamente aos requisitos de **Transações e Integridade ACID**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda.Exercícios: Aula 10 - Projeto Parcial 🔐
Finalize o Módulo II testando sua capacidade de integração.
🟢 Nível: Básico
1. Revisão de Conceitos
Explique em um parágrafo como o DDL e o DML trabalham juntos em um projeto de software.
2. Identificação de Erros
Observe o script abaixo e aponte pelo menos 2 erros de integridade ou lógica:
CREATE TABLE vendas (
id INT,
produto VARCHAR(50),
preco DECIMAL,
data DATE
);
INSERT INTO vendas VALUES (1, 'Celular', -100, '2024-01-01');
🟡 Nível: Intermediário
3. DQL de Auditoria
Escreva uma consulta que retorne o nome do cliente e a quantidade total de pedidos que ele já fez, mas exiba apenas os clientes que fizeram zero pedidos. (Dica: Use LEFT JOIN e COUNT).
4. Transação de Cancelamento
Escreva o bloco de comandos (BEGIN...COMMIT) para cancelar um pedido:
1. Apagar o registro em itens_pedido.
2. Apagar o registro em pedidos.
3. O que acontece se você inverter a ordem e tentar apagar o pedido antes dos itens?
🔴 Nível: Desafio
5. O Desafio do DBA
Você foi solicitado a otimizar um banco que está lento.
1. Cite 3 colunas que obrigatoriamente deveriam ter Índices.
2. Escreva a consulta para mostrar o faturamento total por categoria, ordenado do maior para o menor.
3. Escreva uma restrição CHECK para garantir que a data de entrega nunca seja anterior à data do pedido.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Revisão de Conceitos **Resposta Comentada:** - **Fundamentação:** No contexto de **Projeto Parcial: Sistema Relacional**, o conceito abordado (Revisão de Conceitos) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Identificação de Erros **Resposta Comentada:** - **Fundamentação:** No contexto de **Projeto Parcial: Sistema Relacional**, o conceito abordado (Identificação de Erros) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: DQL de Auditoria **Resposta Comentada:** - **Fundamentação:** No contexto de **Projeto Parcial: Sistema Relacional**, o conceito abordado (DQL de Auditoria) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Transação de Cancelamento **Resposta Comentada:** - **Fundamentação:** No contexto de **Projeto Parcial: Sistema Relacional**, o conceito abordado (Transação de Cancelamento) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 1: Apagar o registro em `itens_pedido`. **Resposta Comentada:** - **Fundamentação:** No contexto de **Projeto Parcial: Sistema Relacional**, o conceito abordado (Apagar o registro em `itens_pedido`.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Apagar o registro em `pedidos`. **Resposta Comentada:** - **Fundamentação:** No contexto de **Projeto Parcial: Sistema Relacional**, o conceito abordado (Apagar o registro em `pedidos`.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: O que acontece se você inverter a ordem e tentar apagar o pedido antes dos itens? **Resposta Comentada:** - **Fundamentação:** No contexto de **Projeto Parcial: Sistema Relacional**, o conceito abordado (O que acontece se você inverter a ordem e tentar apagar o pedido antes dos itens?) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: O Desafio do DBA **Resposta Comentada:** - **Fundamentação:** No contexto de **Projeto Parcial: Sistema Relacional**, o conceito abordado (O Desafio do DBA) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 1: Cite 3 colunas que obrigatoriamente deveriam ter **Índices**. **Resposta Comentada:** - **Fundamentação:** No contexto de **Projeto Parcial: Sistema Relacional**, o conceito abordado (Cite 3 colunas que obrigatoriamente deveriam ter **Índices**.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Escreva a consulta para mostrar o faturamento total por categoria, ordenado do maior para o menor. **Resolução e Implementação:** - **Explicação:** A solução atende diretamente aos requisitos de **Projeto Parcial: Sistema Relacional**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 3: Escreva uma restrição `CHECK` para garantir que a data de entrega nunca seja anterior à data do pedido. **Resolução e Implementação:** - **Explicação:** A solução atende diretamente aos requisitos de **Projeto Parcial: Sistema Relacional**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda.Exercícios: Aula 11 - Introdução ao NoSQL e MongoDB 🌐
Explore os conceitos fundamentais que diferenciam o NoSQL dos bancos tradicionais.
🟢 Nível: Básico
1. Definição NoSQL
O que significa o termo NoSQL? É correto dizer que bancos NoSQL não aceitam comandos SQL? Explique.
2. Identificação de Tipos
Associe o banco de dados à sua categoria NoSQL: a) MongoDB -> ( ) Grafo b) Redis -> ( ) Colunar c) Neo4j -> ( ) Documento d) Cassandra -> ( ) Chave-Valor
🟡 Nível: Intermediário
3. SQL vs NoSQL (Cenários)
Para os cenários abaixo, qual modelo você escolheria e por quê? a) Um sistema bancário de transferências financeiras críticas. b) Um sistema de logs de sensores de IoT que gera milhões de registros por segundo. c) Um catálogo de e-commerce onde os produtos mudam de atributos constantemente (ex: um tênis tem "tamanho", mas um computador tem "processador").
4. Entendendo Documentos (JSON)
Escreva um pequeno documento JSON que represente um Livro, contendo: titulo, autor (objeto com nome e país), ano e uma lista de categorias.
🔴 Nível: Desafio
5. O Teorema CAP
Explique, com suas palavras, por que é impossível garantir Consistência, Availabilidade e Partição ao mesmo tempo em um sistema distribuído. Se um cabo de rede for cortado separando os servidores (Partição), o que o administrador deve priorizar?
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Definição NoSQL **Resposta Comentada:** - **Fundamentação:** No contexto de **Introdução ao NoSQL e MongoDB**, o conceito abordado (Definição NoSQL) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Identificação de Tipos **Resposta Comentada:** - **Fundamentação:** No contexto de **Introdução ao NoSQL e MongoDB**, o conceito abordado (Identificação de Tipos) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: SQL vs NoSQL (Cenários) **Resposta Comentada:** - **Fundamentação:** No contexto de **Introdução ao NoSQL e MongoDB**, o conceito abordado (SQL vs NoSQL (Cenários)) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Entendendo Documentos (JSON) **Resposta Comentada:** - **Fundamentação:** No contexto de **Introdução ao NoSQL e MongoDB**, o conceito abordado (Entendendo Documentos (JSON)) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: O Teorema CAP **Resposta Comentada:** - **Fundamentação:** No contexto de **Introdução ao NoSQL e MongoDB**, o conceito abordado (O Teorema CAP) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.Exercícios: Aula 12 - Instalação e CRUD Básico (MongoDB) 🍃
Coloque a mão na massa com o banco de dados orientado a documentos.
🟢 Nível: Básico
1. Preparação
Você já instalou o MongoDB Compass ou Atlas? Tire um print da tela inicial conectada ao banco.
2. Inserção Simples
Crie uma coleção chamada livros e insira 3 documentos com campos titulo, autor e ano.
🟡 Nível: Intermediário
3. Filtros no Find
Escreva o comando para buscar todos os livros publicados após o ano 2010. (Dica: Use $gt).
4. Atualização de Dados
Houve um erro no cadastro. O autor "Joao" agora se chama "João Silva". Escreva o comando updateOne para corrigir apenas este documento.
🔴 Nível: Desafio
5. Manipulação de Arrays (O Poder do NoSQL)
No MongoDB, campos podem ser listas.
1. Insira um documento na coleção usuarios:
{ nome: "Carlos", tags: ["Estudante", "Inovador"] }
2. Escreva o comando para adicionar a tag "SQL" ao array do usuário "Carlos". (Pesquise sobre o operador $push).
3. Como você buscaria todos os usuários que possuem a tag "Inovador"?
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Preparação **Resposta Comentada:** - **Fundamentação:** No contexto de **Instalação e CRUD Básico no MongoDB**, o conceito abordado (Preparação) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Inserção Simples **Resposta Comentada:** - **Fundamentação:** No contexto de **Instalação e CRUD Básico no MongoDB**, o conceito abordado (Inserção Simples) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Filtros no Find **Resposta Comentada:** - **Fundamentação:** No contexto de **Instalação e CRUD Básico no MongoDB**, o conceito abordado (Filtros no Find) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Atualização de Dados **Resposta Comentada:** - **Fundamentação:** No contexto de **Instalação e CRUD Básico no MongoDB**, o conceito abordado (Atualização de Dados) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Manipulação de Arrays (O Poder do NoSQL) **Resolução e Implementação:** - **Explicação:** A solução atende diretamente aos requisitos de **Instalação e CRUD Básico no MongoDB**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 1: Insira um documento na coleção `usuarios` **Resposta Comentada:** - **Fundamentação:** No contexto de **Instalação e CRUD Básico no MongoDB**, o conceito abordado (Insira um documento na coleção `usuarios`) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Escreva o comando para **adicionar** a tag "SQL" ao array do usuário "Carlos". (Pesquise sobre o operador `$push`). **Resolução e Implementação:** - **Explicação:** A solução atende diretamente aos requisitos de **Instalação e CRUD Básico no MongoDB**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 3: Como você buscaria todos os usuários que possuem a tag "Inovador"? **Resposta Comentada:** - **Fundamentação:** No contexto de **Instalação e CRUD Básico no MongoDB**, o conceito abordado (Como você buscaria todos os usuários que possuem a tag "Inovador"?) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.Exercícios: Aula 13 - Modelagem de Documentos (NoSQL) 🏗️
Aprenda a arte de decidir entre unir ou separar seus dados no MongoDB.
🟢 Nível: Básico
1. Conceitos de Modelagem
Explique com suas palavras a diferença entre as estratégias de Embedding e Referencing.
2. Escolha de Estratégia
Em um sistema de biblioteca, você armazenaria os capítulos de um livro de forma Aninhada ou Referenciada no documento do Livro? Justifique.
🟡 Nível: Intermediário
3. Modelagem de Usuário
Desenhe um JSON de um usuário que contenha:
* Nome e E-mail.
* Três endereços aninhados (Casa, Trabalho, Praia).
* Uma lista de IDs de fotos_perfil (Referenciadas).
4. Vantagens e Desvantagens
Cite uma vantagem de performance e uma desvantagem de manutenção ao usar o Embedding.
🔴 Nível: Desafio
5. O Cenário Híbrido
Imagine um sistema de rede social como o Twitter. 1. O perfil do usuário deve ter os nomes dos seus 5 amigos mais próximos aninhados. 2. As postagens do usuário (que podem ser milhares) devem ser referenciadas. 3. Escreva o JSON que represente esse perfil de usuário seguindo essa lógica. 4. Por que guardamos os nomes dos amigos aninhados se já temos os IDs deles? (Dica: Pesquise por Extended Reference Pattern).
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Conceitos de Modelagem **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Documentos no NoSQL ️**, o conceito abordado (Conceitos de Modelagem) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Escolha de Estratégia **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Documentos no NoSQL ️**, o conceito abordado (Escolha de Estratégia) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Modelagem de Usuário **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Documentos no NoSQL ️**, o conceito abordado (Modelagem de Usuário) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Vantagens e Desvantagens **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Documentos no NoSQL ️**, o conceito abordado (Vantagens e Desvantagens) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: O Cenário Híbrido **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Documentos no NoSQL ️**, o conceito abordado (O Cenário Híbrido) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 1: O perfil do usuário deve ter os nomes dos seus 5 amigos mais próximos aninhados. **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Documentos no NoSQL ️**, o conceito abordado (O perfil do usuário deve ter os nomes dos seus 5 amigos mais próximos aninhados.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: As postagens do usuário (que podem ser milhares) devem ser referenciadas. **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Documentos no NoSQL ️**, o conceito abordado (As postagens do usuário (que podem ser milhares) devem ser referenciadas.) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Escreva o JSON que represente esse perfil de usuário seguindo essa lógica. **Resolução e Implementação:** - **Explicação:** A solução atende diretamente aos requisitos de **Modelagem de Documentos no NoSQL ️**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 4: Por que guardamos os nomes dos amigos aninhados se já temos os IDs deles? (Dica **Resposta Comentada:** - **Fundamentação:** No contexto de **Modelagem de Documentos no NoSQL ️**, o conceito abordado (Por que guardamos os nomes dos amigos aninhados se já temos os IDs deles? (Dica) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.Exercícios: Aula 14 - Consultas e Agregações no MongoDB 🧪
Aprenda a processar dados e gerar relatórios poderosos no MongoDB.
🟢 Nível: Básico
1. Pipeline Simples
Explique com suas palavras como funciona a ideia de "Pipeline" (Linha de montagem) no MongoDB.
2. Etapas de Agregação
Quais os equivalentes no SQL para as seguintes etapas do MongoDB:
a) $match ->
b) $group ->
c) $sort ->
d) $limit ->
🟡 Nível: Intermediário
3. Somando Valores
Dada a coleção vendas (vendedor, valor, data), escreva o pipeline de agregação para calcular o valor total vendido por vendedor.
4. O JOIN do NoSQL
Você tem a coleção posts e a coleção autores. Os posts possuem um campo autor_id. Escreva o comando $lookup para trazer os dados do autor dentro de cada post.
🔴 Nível: Desafio
5. Análise de Performance
Por que é recomendado que a etapa $match seja sempre a primeira do seu pipeline de agregação? O que aconteceria se você colocasse um $match após um $group que processou milhões de registros?
6. Desafio do $unwind
Muitos documentos no MongoDB possuem arrays (listas). Pesquise o que faz o operador $unwind e dê um exemplo de uso para um documento de Pedido que contém um array de itens.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Pipeline Simples **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas e Agregações no MongoDB**, o conceito abordado (Pipeline Simples) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Etapas de Agregação **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas e Agregações no MongoDB**, o conceito abordado (Etapas de Agregação) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Somando Valores **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas e Agregações no MongoDB**, o conceito abordado (Somando Valores) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: O JOIN do NoSQL **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas e Agregações no MongoDB**, o conceito abordado (O JOIN do NoSQL) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Análise de Performance **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas e Agregações no MongoDB**, o conceito abordado (Análise de Performance) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 6: Desafio do $unwind **Resposta Comentada:** - **Fundamentação:** No contexto de **Consultas e Agregações no MongoDB**, o conceito abordado (Desafio do $unwind) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.Exercícios: Aula 15 - Ecossistema Moderno e Cloud 🚀
Reflita sobre o uso profissional de bancos de dados na nuvem e arquiteturas modernas.
🟢 Nível: Básico
1. Quando usar NoSQL
Cite 2 cenários de aplicativos reais (ex: Instagram, Uber, App de Banco) onde o MongoDB seria a escolha ideal para uma parte do sistema.
2. O conceito de Nuvem
O que é o MongoDB Atlas e qual a principal facilidade que ele traz para um desenvolvedor iniciante?
🟡 Nível: Intermediário
3. Persistência Poliglota
Imagine que você está criando o próximo "Facebook". * Qual banco você usaria para guardar as configurações de login dos usuários? (SQL ou NoSQL?) * Qual banco você usaria para guardar o feed de notícias (posts com imagens e textos variados)? (SQL ou NoSQL?) Justifique suas escolhas.
4. Segurança de Dados
Por que é uma prática perigosa liberar o acesso ao banco de dados para "qualquer IP" (0.0.0.0/0)? O que você deve configurar no painel do Atlas para evitar isso?
🔴 Nível: Desafio
5. Escalabilidade e Custos
Pesquise a diferença entre Escalabilidade Vertical e Escalabilidade Horizontal. Por que o MongoDB leva vantagem na Escalabilidade Horizontal quando falamos de Petabytes de dados?
6. IA e MongoDB
Como a funcionalidade de Vector Search do MongoDB pode ajudar na criação de um sistema de recomendação de filmes inteligente?
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: Quando usar NoSQL **Resposta Comentada:** - **Fundamentação:** No contexto de **MongoDB no Ecossistema Moderno**, o conceito abordado (Quando usar NoSQL) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: O conceito de Nuvem **Resposta Comentada:** - **Fundamentação:** No contexto de **MongoDB no Ecossistema Moderno**, o conceito abordado (O conceito de Nuvem) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Persistência Poliglota **Resposta Comentada:** - **Fundamentação:** No contexto de **MongoDB no Ecossistema Moderno**, o conceito abordado (Persistência Poliglota) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Segurança de Dados **Resposta Comentada:** - **Fundamentação:** No contexto de **MongoDB no Ecossistema Moderno**, o conceito abordado (Segurança de Dados) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Escalabilidade e Custos **Resposta Comentada:** - **Fundamentação:** No contexto de **MongoDB no Ecossistema Moderno**, o conceito abordado (Escalabilidade e Custos) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 6: IA e MongoDB **Resposta Comentada:** - **Fundamentação:** No contexto de **MongoDB no Ecossistema Moderno**, o conceito abordado (IA e MongoDB) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.Exercícios: Aula 16 - Revisão Geral 🎓
Prepare-se para o seu projeto final revisando os pontos chave de todo o curso.
🟢 Nível: Básico
1. O Mapa Mental
Desenhe um diagrama simples (pode ser texto) que conecte: Aplicação -> SQL -> NoSQL. Qual o papel de cada peça?
2. Vocabulário Cruzado
Preencha o que falta: * Tabela (SQL) = __ (NoSQL) * Linha (SQL) = __ (NoSQL) * JOIN (SQL) = _____ (NoSQL)
🟡 Nível: Intermediário
3. Decisão de Arquiteto
Um cliente quer criar um app de "Lista de Desejos". 1. O nome e e-mail do cliente devem ser únicos e consistentes. (Qual banco?) 2. Cada item da lista de desejos pode ter campos malucos (um quer "tamanho", outro quer "voltagem", outro quer "cor"). (Qual banco?) Como você integraria os dois?
🔴 Nível: Desafio (O Mini-Projeto)
4. Integração Conceitual
Imagine que você tem o ID de um usuário no PostgreSQL (user_id = 45). Como você faria para buscar as preferências desse usuário que estão salvas no MongoDB? Escreva a lógica (em texto ou pseudo-código) dessa integração.
📚 Gabarito e Soluções Comentadas
Gabarito Explicado
### Questão 1: O Mapa Mental **Resposta Comentada:** - **Fundamentação:** No contexto de **Projeto Final Integrador: O Arquiteto de Dados**, o conceito abordado (O Mapa Mental) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Vocabulário Cruzado **Resposta Comentada:** - **Fundamentação:** No contexto de **Projeto Final Integrador: O Arquiteto de Dados**, o conceito abordado (Vocabulário Cruzado) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Decisão de Arquiteto **Resposta Comentada:** - **Fundamentação:** No contexto de **Projeto Final Integrador: O Arquiteto de Dados**, o conceito abordado (Decisão de Arquiteto) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 1: O nome e e **Resposta Comentada:** - **Fundamentação:** No contexto de **Projeto Final Integrador: O Arquiteto de Dados**, o conceito abordado (O nome e e) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Cada item da lista de desejos pode ter campos malucos (um quer "tamanho", outro quer "voltagem", outro quer "cor"). (Qual banco?) **Resposta Comentada:** - **Fundamentação:** No contexto de **Projeto Final Integrador: O Arquiteto de Dados**, o conceito abordado (Cada item da lista de desejos pode ter campos malucos (um quer "tamanho", outro quer "voltagem", outro quer "cor"). (Qual banco?)) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Integração Conceitual **Resposta Comentada:** - **Fundamentação:** No contexto de **Projeto Final Integrador: O Arquiteto de Dados**, o conceito abordado (Integração Conceitual) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais.Projetos
🚀 Projetos do Curso
Lista completa das 20 unidades de projetos organizadas em 5 módulos didáticos.
-
Módulo 1: Fundamentos (01 a 04) ---
-
Módulo 2: Conceitos Essenciais (05 a 08) ---
-
Módulo 3: Aplicação Prática (09 a 12) ---
-
Módulo 4: Padrões e Ferramentas (13 a 16) ---
-
Módulo 5: Avançado e Capstone (17 a 20) ---
Projeto 01: Lab de Instalação e pgAdmin 🐘
Objetivo: Garantir que o ambiente de desenvolvimento esteja 100% funcional.
🚀 Tarefas
- Instalação: Siga o Setup 01 para instalar o PostgreSQL.
- Conexão: Abra o pgAdmin 4 e crie uma conexão com o servidor local (
localhost). - Terminal: Use o comando
psql -U postgresno seu prompt para verificar a versão instalada. - Primeiro Comando: Crie um banco de dados de teste chamado
laboratorio_01.
✅ Critérios de Entrega
- Screenshot do pgAdmin mostrando o servidor conectado.
- Screenshot do terminal com a versão do PostgreSQL.
Projeto 02: Modelagem de um Sistema de Escola 🏗️
Objetivo: Criar o Diagrama Entidade-Relacionamento (DER) para um cenário real.
📝 Cenário
Você foi contratado para modelar o banco de dados de uma escola. O sistema deve armazenar: * Alunos: Nome, Matrícula, Data de Nascimento. * Turmas: Nome da Turma (ex: ADS 1A), Sala. * Professores: Nome, Especialidade.
Regras: 1. Um aluno pertence a uma única turma. 2. Uma turma pode ter vários alunos. 3. Um professor pode dar aula para várias turmas.
🚀 Tarefas
- Identifique as Entidades e Atributos.
- Defina as Chaves Primárias.
- Desenhe o diagrama usando dbdiagram.io ou Mermaid.
✅ Critérios de Entrega
- O link ou imagem do diagrama DER completo.
Projeto 03: Normalização de Planilhas 📡
Objetivo: Transformar dados brutos e redundantes em uma estrutura relacional limpa.
📝 O Desafio
Abaixo está uma linha de uma planilha de "Histórico de Vendas":
Venda_ID, Cliente_Nome, Cliente_Telefone, Data_Venda, Produtos_Lista (ex: Camisa, Calça, Meia), Valor_Total
🚀 Tarefas
- Identifique as violações da 1FN (Valores atômicos).
- Separe os dados em pelo menos 3 tabelas (ex: Clientes, Vendas, Itens_Venda).
- Garanta que não haja redundância de nomes de clientes ou preços de produtos.
✅ Critérios de Entrega
- Lista das tabelas criadas com suas colunas e tipos.
- Justificativa de qual Forma Normal foi aplicada em cada etapa.
Projeto 04: Script DDL de Criação 🧱
Objetivo: Transformar o seu modelo de dados em código SQL executável.
🚀 Tarefas
- Abra o Query Tool no pgAdmin.
- Escreva o script
CREATE TABLEpara o sistema de Escola planejado no Projeto 02. - Inclua:
- Chaves Primárias (
SERIAL). - Chaves Estrangeiras (
REFERENCES). - Restrições
NOT NULLeUNIQUE.
- Chaves Primárias (
- Crie um Índice para a coluna "Nome do Aluno".
✅ Critérios de Entrega
- O arquivo
.sqlcontendo todos os comandos de criação. - Print da aba "Tables" do pgAdmin mostrando as tabelas criadas.
Projeto 05 - Layouts e Unidades 🎨
Objetivo: Praticar a construção de interfaces complexas com diferentes ViewGroups.
O Desafio
Crie uma tela de "Detalhes de Produto" (tipo e-commerce) contendo:
1. LinearLayout (Vertical) para a estrutura principal.
2. ImageView no topo para a foto do produto.
3. ConstraintLayout para a área de informações (nome do produto à esquerda, preço à direita, ambos alinhados).
4. Botão de "Comprar" ocupando a largura total na parte inferior.
5. Use dp para margens (mínimo 16dp) e sp para o título do produto.
Dica
Teste o seu layout em diferentes tamanhos de tela no emulador ou no Preview do Android Studio.
Projeto 06: Consultas e Filtros 💾
Objetivo: Transformar perguntas do negócio em comandos SQL SELECT eficientes.
📝 O Desafio
O dono da loja precisa de algumas informações estratégicas para a Black Friday. Utilize sua tabela de produtos (ou crie uma com pelo menos 10 itens) para responder às perguntas.
🚀 Tarefas
Escreve os comandos SQL para: 1. Relatório de Estoque Baixo: Selecionar nome e estoque de produtos com menos de 5 itens. 2. Vitrine de Ofertas: Selecionar todos os produtos que custam entre R$ 50,00 e R$ 200,00. 3. Busca por Marca: Selecionar todos os produtos que tenham "Samsung" ou "Apple" no nome. 4. Organização por Preço: Listar todos os produtos da categoria 'Eletrônicos', do mais caro para o mais barato. 5. Lista Única: Quais categorias diferentes existem cadastradas no seu banco?
✅ Critérios de Entrega
- O script
.sqlcom os 5 comandos comentados. - Screenshot dos resultados no pgAdmin.
Projeto 07: Relatórios de Agregação 🧪
Objetivo: Criar uma suíte de relatórios estatísticos usando funções de agregação e agrupamento.
📝 O Desafio
Imagine que você trabalha no setor de análise de uma rede de farmácias. Você precisa extrair os seguintes indicadores do banco de dados.
🚀 Tarefas
Escreva os comandos SQL para: 1. Faturamento Total: Qual a soma de todos os valores de vendas registrados? 2. Média de Preços: Qual o preço médio dos medicamentos por categoria? 3. Contagem de Clientes: Quantos clientes cadastrados existem em cada cidade? 4. Ranking de Vendas: Quais são os 3 vendedores que mais realizaram vendas (em quantidade)? 5. Filtro de Qualidade: Liste apenas as cidades que possuem mais de 500 clientes cadastrados.
✅ Critérios de Entrega
- O script
.sqlcom as consultas numeradas. - Uso obrigatório de
ASpara nomear as colunas de resultado. - Screenshot dos resultados no pgAdmin.
Projeto 08: Consultas Multi-tabelas (JOINs) 🚢
Objetivo: Relacionar dados de diferentes partes do banco para gerar relatórios consolidados.
📝 O Desafio
Você precisa criar o relatório de fechamento de um sistema de E-commerce. O banco possui as tabelas: clientes, pedidos e vendedores.
🚀 Tarefas
Escreva o script SQL que resolva:
1. Relatório de Pedidos: Listar o ID do pedido, a data e o Nome do Cliente que fez a compra.
2. Lista de Vendedores Ativos: Listar o nome de todos os vendedores e o ID dos pedidos que eles realizaram (mesmo que um vendedor ainda não tenha feito nenhuma venda).
3. Relatório Completo: Unir Clientes e Pedidos para mostrar apenas quem já comprou pelo menos uma vez.
4. Clientes Sem Pedidos: Descobrir o nome dos clientes que ainda não realizaram nenhuma compra (Dica: Use LEFT JOIN e WHERE ... IS NULL).
✅ Critérios de Entrega
- Uso de aliases (
AS) para as tabelas. - Script
.sqllimpo e comentado. - Screenshot dos resultados no pgAdmin.
Projeto 09: Simulação de Transações Bancárias 🔑
Objetivo: Implementar o controle de transações para garantir a consistência de dados em operações financeiras.
📝 O Desafio
Você deve simular o sistema de transferências de um banco digital. Existem duas tabelas: contas (id, cliente, saldo) e historico_transferencias (id, origem_id, destino_id, valor, data).
🚀 Tarefas
Escreve o script SQL para realizar uma transferência de R$ 300,00 de "Ana" para "Bia":
1. Inicie a transação (BEGIN).
2. Verifique se Ana tem saldo (apenas via comentário ou lógica simples).
3. Subtraia o valor da conta da Ana.
4. Adicione o valor na conta da Bia.
5. Insira o registro no histórico.
6. Simulação de Falha: Imagine que o sistema de histórico caiu. Execute um ROLLBACK e verifique os saldos.
7. Finalização: Repita o processo, mas finalize com COMMIT.
✅ Critérios de Entrega
- O script
.sqlcontendo os dois blocos (o que falha e o que funciona). - Print do saldo das contas antes e depois de cada operação.
Projeto 10: Sistema Relacional Parcial 🔐
Objetivo: Construir do zero um ecossistema de banco de dados para um E-commerce, aplicando todos os comandos SQL aprendidos até aqui.
📝 O Grande Desafio: TechStore v1.0
Você recebeu a missão de criar o backend (BD) da TechStore. O sistema deve ser robusto, normalizado e rápido.
🚀 Etapas do Projeto
1. Modelagem e Criação (DDL)
- Crie as tabelas:
categorias,produtos,clientes,pedidoseitens_pedido. - Defina as chaves e os relacionamentos.
- Crie uma restrição que impeça o estoque de ser negativo.
- Crie um índice na coluna
nomeda tabelaprodutos.
2. Povoamento (DML)
- Insira pelo menos 3 categorias (Ex: Smartphones, Laptops, Acessórios).
- Insira 10 produtos variados.
- Cadastre 5 clientes.
3. Simulando uma Venda (Transação)
- Crie um script que:
- Abre uma transação.
- Registra um pedido para um cliente.
- Adiciona 2 itens a esse pedido.
- Atualiza o estoque desses 2 produtos.
- Finaliza com
COMMIT.
4. Relatórios de Gestão (DQL)
- Crie uma consulta que mostre:
Nome do Cliente,Data do PedidoeValor Total do Pedido. (Dica: Use JOIN e SUM). - Crie um ranking das categorias que mais possuem produtos cadastrados.
✅ Critérios de Entrega
- Um arquivo
techstore_completo.sqlcom todos os comandos comentados. - Diagrama E-R gerado pelo pgAdmin ou Mermaid.
- Print do resultado do relatório de faturamento por cliente.
Projeto 11: Comparativo Relacional vs NoSQL 🌐
Objetivo: Analisar criticamente as diferenças entre os modelos e converter uma estrutura relacional para o formato de documento.
📝 O Desafio
Você tem o modelo de um Blog no PostgreSQL:
* Tabela Autores (id, nome)
* Tabela Posts (id, titulo, conteudo, autor_id)
* Tabela Comentarios (id, texto, post_id)
🚀 Tarefas
- Mapeamento: Desenhe como essa estrutura ficaria em um único documento JSON no MongoDB (utilizando aninhamento).
- Análise de Vantagens: Liste 3 vantagens de usar o MongoDB para este cenário de Blog.
- Análise de Riscos: Liste 2 riscos de segurança ou integridade que o MongoDB traz em comparação ao PostgreSQL.
✅ Critérios de Entrega
- O código JSON formatado do post com seus comentários e autor.
- Um pequeno texto (bullet points) comparativo.
Projeto 12: O Grande Inventário NoSQL 🍃
Objetivo: Aplicar os comandos de CRUD no MongoDB para gerenciar um catálogo de produtos flexível.
📝 O Desafio
Você está criando o sistema de estoque para uma loja de variedades que vende desde eletrônicos até roupas. Como os produtos são muito diferentes, você escolheu o MongoDB.
🚀 Tarefas
- Criação: Crie um banco chamado
loja_nosqle uma coleçãoestoque. - Inserção Variada: Insira 3 documentos com campos diferentes:
- Um Smartphone (com campos de bateria e memória).
- Uma Camisa (com campos de tamanho e tecido).
- Um Livro (com campos de autor e páginas).
- Busca Filtrada: Escreva o comando para localizar todos os produtos que custam acima de R$ 100,00.
- Atualização Geral: Adicione um campo
loja: "Sede Principal"em todos os produtos do estoque. - Exclusão: Delete o produto que possui o menor estoque.
✅ Critérios de Entrega
- Um arquivo
.jscom os comandos usados no mongosh. - Screenshot do MongoDB Compass mostrando os documentos inseridos.
Projeto 13: Arquitetando o Banco de um App de Música 🏗️
Objetivo: Aplicar padrões de modelagem NoSQL para um cenário real de streaming de música.
📝 O Desafio
Você foi contratado para desenhar o banco de dados de um novo "Spotify". Você precisa decidir como armazenar as informações para que o app seja veloz.
🚀 Tarefas
- Modelagem de Playlist: Desenhe o JSON de uma
Playlist. Ela deve conter o nome, o autor e uma lista das 10 primeiras músicas (nome e duração). Você vai usar Aninhamento ou Referência para as músicas totais da playlist? - Modelagem de Artista: Como guardar a biografia e a lista de álbuns?
- Justificativa: Escreva um pequeno parágrafo explicando por que você escolheu aninhamento para as músicas da playlist (ou por que não escolheu).
- Criação no MongoDB: Execute os comandos
insertOneno mongosh para criar um exemplo real das coleçõesartistaseplaylists.
✅ Critérios de Entrega
- O desenho dos 2 esquemas JSON.
- O script
.jscom as inserções. - Explicação técnica da escolha da estratégia.
Projeto 14: Relatórios Analíticos no MongoDB 🧪
Objetivo: Utilizar o Aggregation Framework para gerar inteligência de negócio a partir de dados brutos.
📝 O Desafio
Você tem uma coleção de vendas com os campos: cliente, produto, quantidade, valor_unitario, categoria e data.
🚀 Tarefas
Crie os pipelines de agregação para responder:
1. Faturamento por Categoria: Qual o valor total vendido em cada categoria de produtos?
2. Ticket Médio: Qual a média de valor gasto pelos clientes em suas compras?
3. Top 3 Vendedores: Quais são os 3 vendedores que mais faturaram? (Supondo que haja um campo vendedor).
4. Clientes Inativos (Desafio): Utilize o $lookup para comparar a coleção de clientes com a de vendas e encontrar quem nunca comprou nada.
✅ Critérios de Entrega
- O script
.jscom os pipelines comentados. - Uso de pelo menos 4 estágios diferentes (
$match,$group,$sort,$project). - Screenshot dos resultados no MongoDB Compass.
Projeto 15: Deploy e Segurança na Nuvem 🚀
Objetivo: Realizar o deploy de um banco de dados MongoDB na nuvem e configurar as camadas de segurança essenciais.
📝 O Desafio
Você deve levar o seu projeto "loja_nosql" da Aula 12 para o mundo real, utilizando o MongoDB Atlas.
🚀 Tarefas
- Criação do Cluster: Crie uma conta no MongoDB Atlas e configure um cluster gratuito (Plano M0).
- Segurança:
- Crie um usuário de banco com acesso de leitura e escrita.
- Adicione o seu IP atual na lista de permissões (Whitelist).
- Migração: Utilize o MongoDB Compass para exportar os dados do seu banco local e importar no cluster do Atlas.
- Teste de Conexão: Verifique se você consegue consultar os documentos na nuvem através do shell (
mongosh) ou do próprio Compass. - Relatório de Arquitetura: Escreva um pequeno texto explicando em qual provedor de nuvem (AWS, GCP ou Azure) o seu banco foi hospedado e por que a segurança por IP é necessária.
✅ Critérios de Entrega
- A
connection stringdo seu cluster (oculte a senha!). - Screenshot do painel do MongoDB Atlas mostrando o cluster ativo.
- Screenshot dos dados visualizados no Compass via conexão Atlas.
Projeto 16: Projeto Final Integrador - OmniStore 🎓
Objetivo: Integrar os mundos SQL e NoSQL para criar uma arquitetura de dados moderna, robusta e escalável para uma startup de varejo.
📝 O Desafio: OmniStore Global
A OmniStore é uma rede que vende produtos físicos e digitais em 50 países. Você foi escalado como Líder de Dados para projetar a V1.0 do sistema.
🚀 Requisitos do Projeto
Parte 1: O Núcleo Relacional (PostgreSQL)
- Modelagem: Crie as tabelas de
usuarios,pedidosepagamentos. - Segurança: Implemente uma transação que, ao registrar um pagamento, mude o status do pedido para "Pago".
- Relatório: Gere um ranking dos top 5 clientes que mais gastaram na loja.
Parte 2: O Cérebro Flexível (MongoDB)
- Modelagem: Crie a coleção
catalogo_produtos. Como cada produto tem atributos diferentes (ex: uma TV tem Polegadas, mas um Sapato tem Tamanho), use a flexibilidade do NoSQL. - Engajamento: Modele as
avaliacoes(reviews) dos produtos. Elas devem ser aninhadas ou referenciadas? Explique no código. - Agregação: Crie um pipeline que mostre a média de nota (rating) por categoria de produto.
Parte 3: Integração e Documentação
- Escreva um documento (Markdown) explicando por que você não usou apenas UM tipo de banco.
- Descreva qual o papel do MongoDB Atlas nessa arquitetura.
- Inclua links ou screenshots para os scripts SQL e comandos do MongoDB.
✅ Critérios de Avaliação
- Completude: Cumprimento de todos os requisitos técnicos.
- Qualidade: Código identado, comentado e sem erros.
- Arquitetura: Escolha correta de qual dado vai para qual banco.
- Apresentação: README.md claro e profissional no repositório.
🎓 Parabéns!
Este é o ápice do seu aprendizado. Ao terminar este projeto, você terá em mãos um portfólio de peso para apresentar em qualquer entrevista técnica! 🚀
Quizzes
🧠 Quizzes de Fixação
Lista completa das 20 unidades de quizzes organizadas em 5 módulos didáticos.
-
Módulo 1: Fundamentos (01 a 04) ---
-
Módulo 2: Conceitos Essenciais (05 a 08) ---
-
Módulo 3: Aplicação Prática (09 a 12) ---
-
Módulo 4: Padrões e Ferramentas (13 a 16) ---
-
Módulo 5: Avançado e Capstone (17 a 20) ---
🧠 Quiz 01 – Introdução a Bancos de Dados 🗄️
- Qual é o conceito fundamental e objetivo principal de Introdução a Bancos de Dados 🗄️?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Introdução a Bancos de Dados 🗄️?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Introdução a Bancos de Dados 🗄️, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Introdução a Bancos de Dados 🗄️?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Introdução a Bancos de Dados 🗄️ atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Introdução a Bancos de Dados 🗄️, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Introdução a Bancos de Dados 🗄️?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Introdução a Bancos de Dados 🗄️ estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Introdução a Bancos de Dados 🗄️ com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Introdução a Bancos de Dados 🗄️ deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 02 – Modelagem de Dados e Modelo E-R 🏗️
- Qual é o conceito fundamental e objetivo principal de Modelagem de Dados e Modelo E-R 🏗️?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Modelagem de Dados e Modelo E-R 🏗️?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Modelagem de Dados e Modelo E-R 🏗️, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Modelagem de Dados e Modelo E-R 🏗️?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Modelagem de Dados e Modelo E-R 🏗️ atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Modelagem de Dados e Modelo E-R 🏗️, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Modelagem de Dados e Modelo E-R 🏗️?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Modelagem de Dados e Modelo E-R 🏗️ estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Modelagem de Dados e Modelo E-R 🏗️ com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Modelagem de Dados e Modelo E-R 🏗️ deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 03 – Normalização e Estrutura Relacional 📡
- Qual é o conceito fundamental e objetivo principal de Normalização e Estrutura Relacional 📡?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Normalização e Estrutura Relacional 📡?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Normalização e Estrutura Relacional 📡, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Normalização e Estrutura Relacional 📡?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Normalização e Estrutura Relacional 📡 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Normalização e Estrutura Relacional 📡, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Normalização e Estrutura Relacional 📡?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Normalização e Estrutura Relacional 📡 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Normalização e Estrutura Relacional 📡 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Normalização e Estrutura Relacional 📡 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 04 – DDL (Criação da Estrutura) 🏗️
- Qual é o conceito fundamental e objetivo principal de DDL (Criação da Estrutura) 🏗️?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de DDL (Criação da Estrutura) 🏗️?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em DDL (Criação da Estrutura) 🏗️, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em DDL (Criação da Estrutura) 🏗️?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de DDL (Criação da Estrutura) 🏗️ atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em DDL (Criação da Estrutura) 🏗️, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em DDL (Criação da Estrutura) 🏗️?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a DDL (Criação da Estrutura) 🏗️ estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar DDL (Criação da Estrutura) 🏗️ com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a DDL (Criação da Estrutura) 🏗️ deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 05 – DML (Manipulação de Dados) ⚙️
- Qual é o conceito fundamental e objetivo principal de DML (Manipulação de Dados) ⚙️?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de DML (Manipulação de Dados) ⚙️?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em DML (Manipulação de Dados) ⚙️, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em DML (Manipulação de Dados) ⚙️?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de DML (Manipulação de Dados) ⚙️ atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em DML (Manipulação de Dados) ⚙️, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em DML (Manipulação de Dados) ⚙️?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a DML (Manipulação de Dados) ⚙️ estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar DML (Manipulação de Dados) ⚙️ com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a DML (Manipulação de Dados) ⚙️ deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 06 – DQL Básico 💾
- Qual é o conceito fundamental e objetivo principal de DQL Básico 💾?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de DQL Básico 💾?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em DQL Básico 💾, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em DQL Básico 💾?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de DQL Básico 💾 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em DQL Básico 💾, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em DQL Básico 💾?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a DQL Básico 💾 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar DQL Básico 💾 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a DQL Básico 💾 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 07 – Consultas Avançadas e Agregações 🧪
- Qual é o conceito fundamental e objetivo principal de Consultas Avançadas e Agregações 🧪?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Consultas Avançadas e Agregações 🧪?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Consultas Avançadas e Agregações 🧪, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Consultas Avançadas e Agregações 🧪?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Consultas Avançadas e Agregações 🧪 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Consultas Avançadas e Agregações 🧪, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Consultas Avançadas e Agregações 🧪?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Consultas Avançadas e Agregações 🧪 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Consultas Avançadas e Agregações 🧪 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Consultas Avançadas e Agregações 🧪 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 08 – JOINs: Junções entre Tabelas 🔗
- Qual é o conceito fundamental e objetivo principal de JOINs: Junções entre Tabelas 🔗?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de JOINs: Junções entre Tabelas 🔗?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em JOINs: Junções entre Tabelas 🔗, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em JOINs: Junções entre Tabelas 🔗?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de JOINs: Junções entre Tabelas 🔗 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em JOINs: Junções entre Tabelas 🔗, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em JOINs: Junções entre Tabelas 🔗?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a JOINs: Junções entre Tabelas 🔗 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar JOINs: Junções entre Tabelas 🔗 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a JOINs: Junções entre Tabelas 🔗 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 09 – Transações e Integridade ACID 🔑
- Qual é o conceito fundamental e objetivo principal de Transações e Integridade ACID 🔑?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Transações e Integridade ACID 🔑?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Transações e Integridade ACID 🔑, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Transações e Integridade ACID 🔑?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Transações e Integridade ACID 🔑 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Transações e Integridade ACID 🔑, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Transações e Integridade ACID 🔑?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Transações e Integridade ACID 🔑 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Transações e Integridade ACID 🔑 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Transações e Integridade ACID 🔑 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 10 – Projeto Parcial: Sistema Relacional 🔐
- Qual é o conceito fundamental e objetivo principal de Projeto Parcial: Sistema Relacional 🔐?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Projeto Parcial: Sistema Relacional 🔐?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Projeto Parcial: Sistema Relacional 🔐, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Projeto Parcial: Sistema Relacional 🔐?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Projeto Parcial: Sistema Relacional 🔐 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Projeto Parcial: Sistema Relacional 🔐, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Projeto Parcial: Sistema Relacional 🔐?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Projeto Parcial: Sistema Relacional 🔐 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Projeto Parcial: Sistema Relacional 🔐 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Projeto Parcial: Sistema Relacional 🔐 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 11 – Introdução ao NoSQL e MongoDB 🌐
- Qual é o conceito fundamental e objetivo principal de Introdução ao NoSQL e MongoDB 🌐?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Introdução ao NoSQL e MongoDB 🌐?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Introdução ao NoSQL e MongoDB 🌐, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Introdução ao NoSQL e MongoDB 🌐?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Introdução ao NoSQL e MongoDB 🌐 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Introdução ao NoSQL e MongoDB 🌐, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Introdução ao NoSQL e MongoDB 🌐?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Introdução ao NoSQL e MongoDB 🌐 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Introdução ao NoSQL e MongoDB 🌐 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Introdução ao NoSQL e MongoDB 🌐 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 12 – Instalação e CRUD Básico no MongoDB 🍃
- Qual é o conceito fundamental e objetivo principal de Instalação e CRUD Básico no MongoDB 🍃?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Instalação e CRUD Básico no MongoDB 🍃?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Instalação e CRUD Básico no MongoDB 🍃, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Instalação e CRUD Básico no MongoDB 🍃?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Instalação e CRUD Básico no MongoDB 🍃 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Instalação e CRUD Básico no MongoDB 🍃, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Instalação e CRUD Básico no MongoDB 🍃?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Instalação e CRUD Básico no MongoDB 🍃 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Instalação e CRUD Básico no MongoDB 🍃 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Instalação e CRUD Básico no MongoDB 🍃 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 13 – Modelagem de Documentos no NoSQL 🏗️
- Qual é o conceito fundamental e objetivo principal de Modelagem de Documentos no NoSQL 🏗️?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Modelagem de Documentos no NoSQL 🏗️?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Modelagem de Documentos no NoSQL 🏗️, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Modelagem de Documentos no NoSQL 🏗️?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Modelagem de Documentos no NoSQL 🏗️ atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Modelagem de Documentos no NoSQL 🏗️, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Modelagem de Documentos no NoSQL 🏗️?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Modelagem de Documentos no NoSQL 🏗️ estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Modelagem de Documentos no NoSQL 🏗️ com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Modelagem de Documentos no NoSQL 🏗️ deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 14 – Consultas e Agregações no MongoDB 🧪
- Qual é o conceito fundamental e objetivo principal de Consultas e Agregações no MongoDB 🧪?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Consultas e Agregações no MongoDB 🧪?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Consultas e Agregações no MongoDB 🧪, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Consultas e Agregações no MongoDB 🧪?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Consultas e Agregações no MongoDB 🧪 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Consultas e Agregações no MongoDB 🧪, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Consultas e Agregações no MongoDB 🧪?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Consultas e Agregações no MongoDB 🧪 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Consultas e Agregações no MongoDB 🧪 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Consultas e Agregações no MongoDB 🧪 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 15 – MongoDB no Ecossistema Moderno 🚀
- Qual é o conceito fundamental e objetivo principal de MongoDB no Ecossistema Moderno 🚀?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de MongoDB no Ecossistema Moderno 🚀?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em MongoDB no Ecossistema Moderno 🚀, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em MongoDB no Ecossistema Moderno 🚀?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de MongoDB no Ecossistema Moderno 🚀 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em MongoDB no Ecossistema Moderno 🚀, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em MongoDB no Ecossistema Moderno 🚀?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a MongoDB no Ecossistema Moderno 🚀 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar MongoDB no Ecossistema Moderno 🚀 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a MongoDB no Ecossistema Moderno 🚀 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 16 – Projeto Final Integrador: O Arquiteto de Dados 🎓
- Qual é o conceito fundamental e objetivo principal de Projeto Final Integrador: O Arquiteto de Dados 🎓?
- ( ) Reduzir a segurança do sistema sem análise prévia.
- (x) Garantir estruturação, eficiência e qualidade no desenvolvimento de software.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Bloquear a execução de rotinas assíncronas.
-
Qual benefício direto é obtido ao aplicar as melhores práticas de Projeto Final Integrador: O Arquiteto de Dados 🎓?
- (x) Maior manutenibilidade, legibilidade, desacoplamento e desempenho.
- ( ) Aumento indeterminado no tempo de latência das chamadas à API.
- ( ) Incompatibilidade com os compiladores e interpretadores modernos.
-
( ) Impedir a criação de testes automatizados.
-
Em relação ao fluxo de execução e arquitetura em Projeto Final Integrador: O Arquiteto de Dados 🎓, assinale a alternativa correta:
- ( ) A lógica opera sem validação de entradas ou saídas.
- (x) O fluxo de dados segue validação rigorosa de entrada, processamento coeso e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de visualização.
-
( ) É proibido desacoplar dependências entre módulos.
-
Qual é a conduta recomendada para manter a legibilidade do código em Projeto Final Integrador: O Arquiteto de Dados 🎓?
- (x) Seguir convenções de nomenclatura limpa, modularização e documentação clara.
- ( ) Utilizar variáveis globais sem restrição de acesso.
- ( ) Substituir nomes descritivos por identificadores de um único caractere.
-
( ) Desabilitar a checagem de tipos e validação estática.
-
Como comprovar que a implementação de Projeto Final Integrador: O Arquiteto de Dados 🎓 atingiu os critérios de aceitação?
- ( ) Avaliando visualmente a quantidade total de linhas de código.
- (x) Executando suítes de testes unitários e de integração automatizados com cobertura adequada.
- ( ) Verificando a paleta de cores do editor de texto.
-
( ) Omitindo os relatórios de execução de testes no CI/CD.
-
Ao tratar exceções e cenários de falha em Projeto Final Integrador: O Arquiteto de Dados 🎓, o desenvolvedor deve:
- (x) Capturar erros específicos, registrar logs rastreáveis e fornecer mensagens claras.
- ( ) Silenciar todas as exceções com blocos vazios.
- ( ) Encerrar abruptamente o processo do servidor sem notificação.
-
( ) Modificar variáveis de ambiente do sistema operacional.
-
Qual o risco de ignorar as convenções e padrões recomendados em Projeto Final Integrador: O Arquiteto de Dados 🎓?
- (x) Acúmulo de débito técnico, vulnerabilidades de segurança e degradação de desempenho.
- ( ) Formatação automática de arquivos na IDE.
- ( ) Aumento espontâneo da velocidade do barramento de memória.
-
( ) Exclusão de arquivos de configuração do projeto.
-
O princípio da responsabilidade única aplicado a Projeto Final Integrador: O Arquiteto de Dados 🎓 estabelece que:
- (x) Cada componente ou módulo deve ter apenas uma única razão para mudar.
- ( ) Todas as funções do projeto devem residir no mesmo arquivo-fonte.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os testes automatizados devem ser deletados antes da compilação de produção.
-
Para integrar Projeto Final Integrador: O Arquiteto de Dados 🎓 com outros serviços e módulos do ecossistema, deve-se:
- (x) Utilizar interfaces bem definidas, abstrações e contratos claros (APIs/DTOs).
- ( ) Acessar diretamente estruturas privadas internas de outros módulos.
- ( ) Trafegar dados confidenciais em texto puro sem criptografia.
-
( ) Desativar os protocolos de comunicação da rede.
-
A documentação técnica referente a Projeto Final Integrador: O Arquiteto de Dados 🎓 deve conter obrigatoriamente:
- (x) Requisitos funcionais, arquitetura, exemplos práticos de uso e instruções de teste.
- ( ) Apenas a assinatura digital do autor.
- ( ) Uma lista aleatória de comandos de sistema operacional.
- ( ) Rascunhos não revisados de reuniões antigas.
🧠 Quiz 17 – Modelagem Orientada a Documentos com MongoDB 🚀
- Qual o propósito principal de Modelagem Orientada a Documentos com MongoDB 🚀?
- ( ) Reduzir o espaço em disco sem validação.
- (x) Garantir estruturação, eficiência e robustez no processamento do sistema.
- ( ) Desativar os testes unitários automatizados.
-
( ) Substituir a documentação técnica por código legado.
-
Qual benefício direto é obtido ao aplicar os padrões de Modelagem Orientada a Documentos com MongoDB 🚀?
- (x) Maior manutenibilidade, legibilidade e desempenho.
- ( ) Aumento no tempo de resposta das chamadas à API.
- ( ) Incompatibilidade com compiladores modernos.
-
( ) Bloqueio da execução assíncrona.
-
Em relação à arquitetura de Modelagem Orientada a Documentos com MongoDB 🚀, assinale a alternativa correta:
- ( ) O módulo opera de forma totalmente isolada sem interface de dados.
- (x) O fluxo de dados segue validação de entrada, processamento e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de apresentação.
-
( ) Não há suporte para testes de integração.
-
Qual a melhor prática ao implementar Modelagem Orientada a Documentos com MongoDB 🚀?
- (x) Manter o código coeso, desacoplado e devidamente documentado.
- ( ) Utilizar variáveis globais sem controle de acesso.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Desabilitar a checagem de tipos estáticos.
-
Como verificar se a implementação de Modelagem Orientada a Documentos com MongoDB 🚀 atingiu os objetivos de qualidade?
- ( ) Observando o tamanho do arquivo fonte em bytes.
- (x) Executando testes automatizados de cobertura e benchmarks de desempenho.
- ( ) Verificando a cor do tema do editor de código.
-
( ) Aguardando reclamações dos usuários finais em produção.
-
Ao lidar com exceções em Modelagem Orientada a Documentos com MongoDB 🚀, deve-se:
- (x) Capturar falhas específicas e fornecer mensagens informativas com rastreamento.
- ( ) Ignorar todos os erros com blocos vazios try-catch.
- ( ) Encerrar o sistema imediatamente sem log.
-
( ) Modificar o sistema operacional hospedeiro.
-
Qual o impacto do mau uso dos conceitos de Modelagem Orientada a Documentos com MongoDB 🚀?
- (x) Degradação de desempenho, vulnerabilidades de segurança e débito técnico.
- ( ) Redução automática no uso de memória RAM.
- ( ) Melhoria na taxa de transferência de dados da rede.
-
( ) Formatação automática de arquivos Markdown.
-
O princípio da responsabilidade única aplicado a Modelagem Orientada a Documentos com MongoDB 🚀 determina que:
- (x) Cada classe ou função deve ter apenas uma razão para mudar.
- ( ) Todas as funções do sistema devem residir no mesmo arquivo.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os comentários de código devem ser removidos antes da compilação.
-
Na integração de Modelagem Orientada a Documentos com MongoDB 🚀 com outros componentes do ecossistema:
- (x) Deve-se utilizar interfaces bem definidas e contratos claros (APIs/DTOs).
- ( ) Deve-se utilizar acesso direto às estruturas privadas de outros módulos.
- ( ) É proibido transmitir dados pela rede.
-
( ) Todos os dados devem ser trafegados em formato de texto bruto desformatado.
-
A documentação técnica referente a Modelagem Orientada a Documentos com MongoDB 🚀 deve conter:
- (x) Requisitos, diagramas de fluxo, exemplos de uso e instruções de teste.
- ( ) Apenas o nome do autor do código.
- ( ) Lista de reprodução de músicas recomendadas.
- ( ) Histórico completo de conversas do suporte.
🧠 Quiz 18 – Caching de Baixa Latência com Redis 🚀
- Qual o propósito principal de Caching de Baixa Latência com Redis 🚀?
- ( ) Reduzir o espaço em disco sem validação.
- (x) Garantir estruturação, eficiência e robustez no processamento do sistema.
- ( ) Desativar os testes unitários automatizados.
-
( ) Substituir a documentação técnica por código legado.
-
Qual benefício direto é obtido ao aplicar os padrões de Caching de Baixa Latência com Redis 🚀?
- (x) Maior manutenibilidade, legibilidade e desempenho.
- ( ) Aumento no tempo de resposta das chamadas à API.
- ( ) Incompatibilidade com compiladores modernos.
-
( ) Bloqueio da execução assíncrona.
-
Em relação à arquitetura de Caching de Baixa Latência com Redis 🚀, assinale a alternativa correta:
- ( ) O módulo opera de forma totalmente isolada sem interface de dados.
- (x) O fluxo de dados segue validação de entrada, processamento e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de apresentação.
-
( ) Não há suporte para testes de integração.
-
Qual a melhor prática ao implementar Caching de Baixa Latência com Redis 🚀?
- (x) Manter o código coeso, desacoplado e devidamente documentado.
- ( ) Utilizar variáveis globais sem controle de acesso.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Desabilitar a checagem de tipos estáticos.
-
Como verificar se a implementação de Caching de Baixa Latência com Redis 🚀 atingiu os objetivos de qualidade?
- ( ) Observando o tamanho do arquivo fonte em bytes.
- (x) Executando testes automatizados de cobertura e benchmarks de desempenho.
- ( ) Verificando a cor do tema do editor de código.
-
( ) Aguardando reclamações dos usuários finais em produção.
-
Ao lidar com exceções em Caching de Baixa Latência com Redis 🚀, deve-se:
- (x) Capturar falhas específicas e fornecer mensagens informativas com rastreamento.
- ( ) Ignorar todos os erros com blocos vazios try-catch.
- ( ) Encerrar o sistema imediatamente sem log.
-
( ) Modificar o sistema operacional hospedeiro.
-
Qual o impacto do mau uso dos conceitos de Caching de Baixa Latência com Redis 🚀?
- (x) Degradação de desempenho, vulnerabilidades de segurança e débito técnico.
- ( ) Redução automática no uso de memória RAM.
- ( ) Melhoria na taxa de transferência de dados da rede.
-
( ) Formatação automática de arquivos Markdown.
-
O princípio da responsabilidade única aplicado a Caching de Baixa Latência com Redis 🚀 determina que:
- (x) Cada classe ou função deve ter apenas uma razão para mudar.
- ( ) Todas as funções do sistema devem residir no mesmo arquivo.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os comentários de código devem ser removidos antes da compilação.
-
Na integração de Caching de Baixa Latência com Redis 🚀 com outros componentes do ecossistema:
- (x) Deve-se utilizar interfaces bem definidas e contratos claros (APIs/DTOs).
- ( ) Deve-se utilizar acesso direto às estruturas privadas de outros módulos.
- ( ) É proibido transmitir dados pela rede.
-
( ) Todos os dados devem ser trafegados em formato de texto bruto desformatado.
-
A documentação técnica referente a Caching de Baixa Latência com Redis 🚀 deve conter:
- (x) Requisitos, diagramas de fluxo, exemplos de uso e instruções de teste.
- ( ) Apenas o nome do autor do código.
- ( ) Lista de reprodução de músicas recomendadas.
- ( ) Histórico completo de conversas do suporte.
🧠 Quiz 19 – Bancos de Dados Orientados a Grafos (Neo4j) 🚀
- Qual o propósito principal de Bancos de Dados Orientados a Grafos (Neo4j) 🚀?
- ( ) Reduzir o espaço em disco sem validação.
- (x) Garantir estruturação, eficiência e robustez no processamento do sistema.
- ( ) Desativar os testes unitários automatizados.
-
( ) Substituir a documentação técnica por código legado.
-
Qual benefício direto é obtido ao aplicar os padrões de Bancos de Dados Orientados a Grafos (Neo4j) 🚀?
- (x) Maior manutenibilidade, legibilidade e desempenho.
- ( ) Aumento no tempo de resposta das chamadas à API.
- ( ) Incompatibilidade com compiladores modernos.
-
( ) Bloqueio da execução assíncrona.
-
Em relação à arquitetura de Bancos de Dados Orientados a Grafos (Neo4j) 🚀, assinale a alternativa correta:
- ( ) O módulo opera de forma totalmente isolada sem interface de dados.
- (x) O fluxo de dados segue validação de entrada, processamento e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de apresentação.
-
( ) Não há suporte para testes de integração.
-
Qual a melhor prática ao implementar Bancos de Dados Orientados a Grafos (Neo4j) 🚀?
- (x) Manter o código coeso, desacoplado e devidamente documentado.
- ( ) Utilizar variáveis globais sem controle de acesso.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Desabilitar a checagem de tipos estáticos.
-
Como verificar se a implementação de Bancos de Dados Orientados a Grafos (Neo4j) 🚀 atingiu os objetivos de qualidade?
- ( ) Observando o tamanho do arquivo fonte em bytes.
- (x) Executando testes automatizados de cobertura e benchmarks de desempenho.
- ( ) Verificando a cor do tema do editor de código.
-
( ) Aguardando reclamações dos usuários finais em produção.
-
Ao lidar com exceções em Bancos de Dados Orientados a Grafos (Neo4j) 🚀, deve-se:
- (x) Capturar falhas específicas e fornecer mensagens informativas com rastreamento.
- ( ) Ignorar todos os erros com blocos vazios try-catch.
- ( ) Encerrar o sistema imediatamente sem log.
-
( ) Modificar o sistema operacional hospedeiro.
-
Qual o impacto do mau uso dos conceitos de Bancos de Dados Orientados a Grafos (Neo4j) 🚀?
- (x) Degradação de desempenho, vulnerabilidades de segurança e débito técnico.
- ( ) Redução automática no uso de memória RAM.
- ( ) Melhoria na taxa de transferência de dados da rede.
-
( ) Formatação automática de arquivos Markdown.
-
O princípio da responsabilidade única aplicado a Bancos de Dados Orientados a Grafos (Neo4j) 🚀 determina que:
- (x) Cada classe ou função deve ter apenas uma razão para mudar.
- ( ) Todas as funções do sistema devem residir no mesmo arquivo.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os comentários de código devem ser removidos antes da compilação.
-
Na integração de Bancos de Dados Orientados a Grafos (Neo4j) 🚀 com outros componentes do ecossistema:
- (x) Deve-se utilizar interfaces bem definidas e contratos claros (APIs/DTOs).
- ( ) Deve-se utilizar acesso direto às estruturas privadas de outros módulos.
- ( ) É proibido transmitir dados pela rede.
-
( ) Todos os dados devem ser trafegados em formato de texto bruto desformatado.
-
A documentação técnica referente a Bancos de Dados Orientados a Grafos (Neo4j) 🚀 deve conter:
- (x) Requisitos, diagramas de fluxo, exemplos de uso e instruções de teste.
- ( ) Apenas o nome do autor do código.
- ( ) Lista de reprodução de músicas recomendadas.
- ( ) Histórico completo de conversas do suporte.
🧠 Quiz 20 – Projeto Capstone: Arquitetura Poliglota de Persistência 🚀
- Qual o propósito principal de Projeto Capstone: Arquitetura Poliglota de Persistência 🚀?
- ( ) Reduzir o espaço em disco sem validação.
- (x) Garantir estruturação, eficiência e robustez no processamento do sistema.
- ( ) Desativar os testes unitários automatizados.
-
( ) Substituir a documentação técnica por código legado.
-
Qual benefício direto é obtido ao aplicar os padrões de Projeto Capstone: Arquitetura Poliglota de Persistência 🚀?
- (x) Maior manutenibilidade, legibilidade e desempenho.
- ( ) Aumento no tempo de resposta das chamadas à API.
- ( ) Incompatibilidade com compiladores modernos.
-
( ) Bloqueio da execução assíncrona.
-
Em relação à arquitetura de Projeto Capstone: Arquitetura Poliglota de Persistência 🚀, assinale a alternativa correta:
- ( ) O módulo opera de forma totalmente isolada sem interface de dados.
- (x) O fluxo de dados segue validação de entrada, processamento e verificação de saída.
- ( ) As regras de negócio devem ser codificadas diretamente na camada de apresentação.
-
( ) Não há suporte para testes de integração.
-
Qual a melhor prática ao implementar Projeto Capstone: Arquitetura Poliglota de Persistência 🚀?
- (x) Manter o código coeso, desacoplado e devidamente documentado.
- ( ) Utilizar variáveis globais sem controle de acesso.
- ( ) Omitir o tratamento de erros em produção.
-
( ) Desabilitar a checagem de tipos estáticos.
-
Como verificar se a implementação de Projeto Capstone: Arquitetura Poliglota de Persistência 🚀 atingiu os objetivos de qualidade?
- ( ) Observando o tamanho do arquivo fonte em bytes.
- (x) Executando testes automatizados de cobertura e benchmarks de desempenho.
- ( ) Verificando a cor do tema do editor de código.
-
( ) Aguardando reclamações dos usuários finais em produção.
-
Ao lidar com exceções em Projeto Capstone: Arquitetura Poliglota de Persistência 🚀, deve-se:
- (x) Capturar falhas específicas e fornecer mensagens informativas com rastreamento.
- ( ) Ignorar todos os erros com blocos vazios try-catch.
- ( ) Encerrar o sistema imediatamente sem log.
-
( ) Modificar o sistema operacional hospedeiro.
-
Qual o impacto do mau uso dos conceitos de Projeto Capstone: Arquitetura Poliglota de Persistência 🚀?
- (x) Degradação de desempenho, vulnerabilidades de segurança e débito técnico.
- ( ) Redução automática no uso de memória RAM.
- ( ) Melhoria na taxa de transferência de dados da rede.
-
( ) Formatação automática de arquivos Markdown.
-
O princípio da responsabilidade única aplicado a Projeto Capstone: Arquitetura Poliglota de Persistência 🚀 determina que:
- (x) Cada classe ou função deve ter apenas uma razão para mudar.
- ( ) Todas as funções do sistema devem residir no mesmo arquivo.
- ( ) O banco de dados deve ser executado na mesma thread do frontend.
-
( ) Os comentários de código devem ser removidos antes da compilação.
-
Na integração de Projeto Capstone: Arquitetura Poliglota de Persistência 🚀 com outros componentes do ecossistema:
- (x) Deve-se utilizar interfaces bem definidas e contratos claros (APIs/DTOs).
- ( ) Deve-se utilizar acesso direto às estruturas privadas de outros módulos.
- ( ) É proibido transmitir dados pela rede.
-
( ) Todos os dados devem ser trafegados em formato de texto bruto desformatado.
-
A documentação técnica referente a Projeto Capstone: Arquitetura Poliglota de Persistência 🚀 deve conter:
- (x) Requisitos, diagramas de fluxo, exemplos de uso e instruções de teste.
- ( ) Apenas o nome do autor do código.
- ( ) Lista de reprodução de músicas recomendadas.
- ( ) Histórico completo de conversas do suporte.
Slides
Configuração
Ambientes de Desenvolvimento 🛠️
Guia para configurar seu computador com as ferramentas necessárias para trabalhar com Bancos de Dados SQL e NoSQL.
-
PostgreSQL --- Instalação do SGBDR relacional e da interface pgAdmin 4.
-
MongoDB --- Instalação do banco de documentos NoSQL e MongoDB Compass.
Setup 01: PostgreSQL 🐘
O PostgreSQL é um dos bancos de dados relacionais mais avançados e utilizados no mundo.
1. Instalação no Windows
- Acesse o site oficial: postgresql.org/download/windows.
- Clique em Download the installer (EDB).
- Escolha a versão mais recente (ex: 16 ou 17).
- Durante a instalação, certifique-se de marcar:
- PostgreSQL Server
- pgAdmin 4 (Interface Gráfica)
- Command Line Tools
- IMPORTANTE: Defina uma senha para o usuário
postgrese não a esqueça. - Mantenha a porta padrão
5432.
2. Verificação
- Abra o pgAdmin 4.
- Conecte-se ao servidor local usando a senha definida.
- Abra o terminal (cmd ou powershell) e digite:
3. Configuração do Path (Opcional)
Para usar o psql em qualquer lugar do terminal:
1. Adicione o caminho da pasta bin do PostgreSQL (ex: C:\Program Files\PostgreSQL\16\bin) às Variáveis de Ambiente do Windows.
Setup 02: MongoDB 🍃
O MongoDB é o banco de dados NoSQL líder de mercado, baseado em documentos JSON (BSON).
1. Instalação no Windows
- Acesse mongodb.com/try/download/community.
- Baixe o instalador
.msi(versão Current). - Execute o instalador e escolha o tipo Complete.
- Marque a opção "Install MongoDB as a Service".
- Marque a opção "Install MongoDB Compass" (ferramenta visual).
2. MongoDB Shell (mongosh)
O shell não vem mais no instalador principal.
1. Baixe o MongoDB Shell separadamente em mongodb.com/try/download/shell.
2. Extraia o arquivo e adicione a pasta bin ao seu PATH.
3. Verificação
- Abra o MongoDB Compass.
- Clique em Connect (a URL padrão é
mongodb://localhost:27017). - No terminal, teste:
4. Dica de Uso 💡
Diferente do SQL, você não precisa criar um banco de dados explicitamente antes de usá-lo; o MongoDB o cria automaticamente ao inserir o primeiro documento.
Sobre
Sobre o Curso 🎓
Bem-vindo ao curso de Bancos de Dados SQL e NoSQL. Este programa foi desenvolvido para transformar iniciantes em profissionais capazes de lidar com diferentes arquiteturas de dados modernas.
🎯 Por que estudar Bancos de Dados?
Dados são o ativo mais precioso de qualquer aplicação moderna. Seja em uma rede social, um e-commerce ou um sistema financeiro, a forma como os dados são armazenados e consultados define o sucesso ou o fracasso de um produto.
O Diferencial deste Curso
Este curso não foca apenas na sintaxe. Nós exploramos a estratégia: * Quando usar uma tabela? * Quando usar um documento? * Como garantir que os dados não se percam? * Como escalar para milhões de usuários?
🧑💻 Perfil do Aluno
- Jovens e adultos que desejam ingressar na área de TI.
- Programadores que querem aprofundar seus conhecimentos em persistência.
- Curiosos sobre como gigantes como Google e Netflix lidam com dados.
🏆 Certificação e Conclusão
Ao concluir os 16 módulos e entregar o Projeto Final Integrador, você terá construído um portfólio sólido que demonstra competência teórica e prática em: 1. PostgreSQL (Líder em bancos relacionais open-source). 2. MongoDB (Padrão ouro em bancos NoSQL orientados a documentos). 3. Linguagem SQL Universal.
"Sem dados, você é apenas mais uma pessoa com uma opinião." — W. Edwards Deming
Roadmap do Projeto 🗺️
Acompanhe a sua evolução técnica através dos marcos do curso.
📍 Marcos de Aprendizado
🏁 Level 1: Arquiteto de Dados (Aulas 01-04)
- Instalar ambiente (PostgreSQL).
- Criar primeiro Diagrama Entidade-Relacionamento.
- Normalizar uma base de dados complexa.
- Executar scripts DDL para criação de tabelas.
⚙️ Level 2: Mestre do SQL (Aulas 05-10)
- Popular banco com milhares de registros reais.
- Criar relatórios complexos com Agregações e JOINs.
- Implementar lógica de transações para sistemas críticos.
- Projeto Parcial: Mini-sistema de vendas ou biblioteca funcional.
🍃 Level 3: Especialista NoSQL (Aulas 11-15)
- Migrar dados relacionais para o formato Documento.
- Criar pipelines de agregação no MongoDB.
- Analisar performance de índices em grandes volumes.
- Entender fluxos de Big Data.
🚀 Level 4: Senior Integrador (Aula 16)
- Projeto Final: Sistema Híbrido.
- Relatório técnico comparativo (SQL vs NoSQL).
- Deploy e apresentação dos resultados.
📈 Metas de Competência
- Modelagem: Capacidade de traduzir regras de negócio em diagramas.
- Performance: Escrita de queries otimizadas.
- Versatilidade: Fluência entre os mundos Relacional e Não Relacional.
Materiais Complementares 📚
Recursos extras para aprofundar seu conhecimento em Bancos de Dados SQL e NoSQL.
🛠️ Ferramentas Recomendadas
PostgreSQL & Relacional
- pgAdmin 4: Ferramenta de gerenciamento para PostgreSQL.
- dbdiagram.io: Designer de banco de dados visual e rápido.
- DBeaver: Cliente SQL universal gratuito.
MongoDB & NoSQL
- MongoDB Compass: Interface GUI para exploração de dados no MongoDB.
- MongoDB Atlas: Banco de dados NoSQL totalmente gerenciado na nuvem.
📖 Leituras e Documentação
Oficial
- Documentação PostgreSQL: A "Bíblia" do Postgres.
- Manual SQL (MDN): Introdução geral a bancos de dados.
- Documentação MongoDB: Guia completo sobre documentos.
Comunidade & Artigos
- SQL School (W3Schools): Tutorial interativo de SQL.
- Normalização de Dados (Artigo): Entendendo as Formas Normais.
- NoSQL vs SQL (IBM): Quando escolher cada um.
🎥 Canais e Playlists
- PostgreSQL Tutorial (Texto e Vídeo).
- MongoDB University: Cursos gratuitos oficiais da MongoDB Inc.
🏷️ Índice de Tags Didáticas
Navegue pelas aulas, exercícios e projetos do curso organizados por temas, tecnologias e conceitos fundamentais:
tags.md:145-167/name
Versão para Impressão
Esta página foi gerada automaticamente para impressão.