Visão Geral do Módulo
Neste módulo, você aprenderá os conceitos fundamentais de bancos de dados relacionais, com foco no PostgreSQL. Vamos explorar desde a modelagem de dados até a implementação de consultas SQL e a integração com aplicações Node.js, utilizando como base o modelo de dados do nosso projeto prático de sistema de vendas.
Conteúdo Programático
1. Introdução a Bancos de Dados Relacionais
- O que são bancos de dados e sua importância
- Conceito de banco de dados relacional
- Tabelas, colunas, linhas e tipos de dados
- Sistemas de Gerenciamento de Bancos de Dados (SGBD) Relacionais
- Visão geral do PostgreSQL: características e vantagens
- Outros SGBDs relacionais (SQL Server, Oracle, etc. - menção breve)
2. Modelagem de Dados Relacionais
- Conceitos básicos de modelagem de dados
- Modelo Entidade-Relacionamento (ER)
- Entidades (Ex: Cliente, Produto, Pedido)
- Atributos (Ex: nome_cliente, descricao_produto)
- Relacionamentos (Ex: um Cliente faz muitos Pedidos)
- Cardinalidade (1:1, 1:N, N:M)
- Diagrama Entidade-Relacionamento (DER)
- Normalização de dados (conceito e importância)
- Primeira Forma Normal (1FN)
- Segunda Forma Normal (2FN)
- Terceira Forma Normal (3FN)
- Chaves
- Chave primária (PK)
- Chave estrangeira (FK)
- Chave candidata
- Chave composta
- Integridade referencial
- Aplicação da modelagem no script `script_vendas.sql`
3. Linguagem SQL (Structured Query Language)
- Introdução ao SQL
- Tipos de dados em PostgreSQL
- DDL (Data Definition Language) - Linguagem de Definição de Dados
CREATE TABLE(Ex: criando as tabelas cliente, produto)ALTER TABLE(Ex: adicionando uma coluna)DROP TABLE(Ex: removendo uma tabela)
- DML (Data Manipulation Language) - Linguagem de Manipulação de Dados
SELECT(Consultando dados de produtos, clientes)INSERT INTO(Inserindo um novo vendedor)UPDATE(Atualizando o endereço de um cliente)DELETE FROM(Removendo um pedido)
- Consultas SQL Fundamentais
WHERE(Filtrando clientes por cidade)ORDER BY(Ordenando produtos por preço)LIMIT/OFFSET(Paginação de resultados)- Funções agregadas (
COUNT,SUM,AVG,MIN,MAX) GROUP BY(Agrupando itens de pedido por pedido)HAVING(Filtrando grupos)
- Junções (JOINs)
INNER JOIN(Combinando pedido com cliente e vendedor)LEFT JOIN/RIGHT JOIN(Listando todos os clientes e seus pedidos, mesmo sem pedidos)FULL OUTER JOIN(Menção)
- Subconsultas (Consultas aninhadas)
4. PostgreSQL na Prática
- Instalação e configuração do PostgreSQL
- Ferramentas de administração
- pgAdmin (Interface gráfica)
- psql (Linha de comando)
- DBeaver (Cliente universal)
- Criação de bancos de dados e schemas
- Executando o script `script_vendas.sql`
- Gerenciamento de tabelas e constraints (PK, FK, UNIQUE)
- Realizando consultas e manipulação de dados (INSERT, UPDATE, DELETE, SELECT)
- Backup e restauração básicos (pg_dump, pg_restore)
- Gerenciamento de usuários e permissões (GRANT, REVOKE)
- Introdução a Índices: criação e impacto no desempenho de consultas
- Introdução a Visões (Views)
5. Integração com Node.js
- Visão geral de ORMs e Query Builders (Sequelize, Knex.js - menção)
- Utilizando o driver `pg` para Node.js
- Configurando a conexão com o PostgreSQL na aplicação Node.js
- Executando consultas SQL (SELECT, INSERT, UPDATE, DELETE) a partir do Node.js
- Tratamento de resultados e erros
- Prevenção de SQL Injection (Consultas parametrizadas)
- Gerenciamento de pool de conexões
- Exemplos práticos: CRUD de Produtos na API do projeto
Objetivos de Aprendizagem
Ao final deste módulo, você será capaz de:
- Explicar os conceitos fundamentais de bancos de dados relacionais.
- Modelar um banco de dados relacional usando o Modelo Entidade-Relacionamento.
- Interpretar e aplicar os conceitos de normalização.
- Escrever consultas SQL para criar, ler, atualizar e deletar dados (CRUD).
- Utilizar JOINs para combinar dados de múltiplas tabelas.
- Instalar, configurar e administrar um banco de dados PostgreSQL básico.
- Integrar uma aplicação Node.js com um banco de dados PostgreSQL.
- Executar consultas SQL de forma segura a partir do Node.js.
Próximo Módulo
Continue sua jornada no desenvolvimento backend explorando Metodologias Ágeis e Scrum.