Modelagem de
Banco de Dados
Relacional e
NoSQL
CONCEITOS, MODELAGEM E ADMINISTRAÇÃO DE
BANCOS DE DADOS.
Introdução ao Banco de
Dados
Um banco de dados é um sistema que armazena
e organiza dados para facilitar sua consulta e
manipulação.
Os principais tipos são Relacional (SQL) e NoSQL.
SQL é estruturado e organizado em tabelas,
enquanto NoSQL é mais flexível.
diferença entre banco de dados relacional
(tabelas) e NoSQL (documentos)
Instalação do MySQL
MySQL é um dos sistemas de gerenciamento de
banco de dados mais usados.
Para instalá-lo:
- Baixe e instale o MySQL Server.
- Configure o MySQL Workbench para gerenciar os
bancos de dados graficamente.
Captura de tela do MySQL Workbench ou do processo de
instalação do MySQL Server.
Estrutura do Banco de Dados
Um banco de dados relacional é composto por
esquemas e tabelas.
- As tabelas possuem colunas e linhas, onde cada
coluna representa um campo de dado.
- As chaves primárias identificam de forma única
cada registro.
- As chaves estrangeiras estabelecem relações
entre tabelas.
Diagrama de um banco de dados relacional com tabelas
conectadas por chaves primárias e estrangeiras.
Criando e Manipulando
Tabelas
Para criar e alterar tabelas no MySQL, usamos
comandos como:
- CREATE TABLE: Cria uma nova tabela.
- ALTER TABLE: Modifica a estrutura da tabela.
- DROP TABLE: Exclui uma tabela do banco de
dados.
Exemplo de código SQL criando uma tabela (CREATE TABLE...)
Manipulação de Dados no
MySQL
Para inserir e alterar dados usamos os seguintes
comandos:
- INSERT: Adiciona novos registros.
- UPDATE: Modifica registros existentes.
- DELETE: Remove registros.
- SELECT: Consulta dados na tabela.
Captura de tela do MySQL Workbench mostrando uma tabela sendo preenchida com dados.
Consultas e Filtros
Comando SELECT permite recuperar dados do
banco.
- Filtrar com WHERE (exemplo: WHERE idade >
18).
- Ordenar resultados com ORDER BY.
- Agrupar com GROUP BY para sumarizar dados.
Exemplo de uma consulta SQL com SELECT, WHERE
e ORDER BY, destacando os filtros aplicados.
Relacionamento entre Tabelas
O relacionamento entre tabelas pode ser:
- 1 para 1: Um registro de uma tabela
corresponde a um único da outra.
- 1 para Muitos: Um registro pode estar
relacionado a vários registros de outra tabela.
- Muitos para Muitos: Necessita de uma tabela
intermediária.
Diagrama ER mostrando as conexões entre diferentes tabelas de um banco de dados
Unindo Tabelas com JOIN
Os JOINs permitem unir dados de múltiplas
tabelas:
- INNER JOIN: Retorna apenas os registros
correspondentes.
- LEFT JOIN: Retorna todos os registros da tabela à
esquerda e os correspondentes da direita.
- RIGHT JOIN: Retorna todos os registros da tabela
à direita e os correspondentes da esquerda.
Ilustração visual do funcionamento do INNER JOIN, LEFT JOIN e RIGHT JOIN, mostrando quais dados são
incluídos
Funções Avançadas do SQL
SQL permite realizar cálculos e agregar
informações:
- COUNT(): Conta registros.
- SUM(): Soma valores.
- AVG(): Calcula média.
- HAVING: Filtra resultados após agrupamento.
Tabela destacando funções SQL como SUM(), AVG(),
COUNT(), HAVING
Procedures e Triggers
Stored Procedures são blocos de código SQL
armazenados para execução posterior.
Triggers são procedimentos automáticos
acionados antes ou depois de eventos como
inserções e atualizações.
Exemplo de código SQL de uma procedure e um trigger em funcionamento
Administração do Banco de
Dados
O DBA (Database Administrator) gerencia o banco
de dados garantindo segurança, desempenho e
integridade.
Principais funções:
- Criar e gerenciar usuários.
- Configurar backups.
- Otimizar consultas para melhor desempenho.
DBA (Database Administrator) e suas
responsabilidades
Segurança no Banco de
Dados
A segurança dos bancos de dados inclui:
- Controle de acesso e permissões.
- Criptografia de dados sensíveis.
- Auditoria e logs para rastreamento de atividades
suspeitas.
Trabalhando com JSON no
MySQL
JSON é um formato de dados utilizado para
armazenar informações estruturadas.
MySQL permite armazenar e manipular JSON
diretamente, possibilitando consultas específicas
com funções JSON.
Exemplo de uma coluna JSON dentro de uma tabela MySQL e uma consulta acessando seus dados
Introdução ao PostgreSQL
PostgreSQL é um banco de dados relacional
avançado, concorrente do MySQL.
Diferenciais:
- Suporte a JSON e XML.
- Melhor controle de concorrência.
- Consultas complexas e eficientes.
NoSQL e MongoDB
Bancos NoSQL são mais flexíveis e escaláveis,
ideais para grandes volumes de dados não
estruturados.
MongoDB é um banco NoSQL baseado em
documentos JSON.
Diferente dos relacionais, ele usa coleções ao
invés de tabelas.
Comparação entre SQL e NoSQL, mostrando a diferença entre tabelas e documentos JSON
SQL vs NoSQL (JSON):
1. Estrutura de Dados:
SQL: Utiliza tabelas com linhas e colunas (esquema fixo).
NoSQL: Utiliza documentos JSON (estruturas flexíveis, sem esquema fixo).
2. Flexibilidade:
SQL: Estrutura rígida, precisa de alterações manuais para mudanças no esquema.
NoSQL: Mais flexível, documentos podem ter campos diferentes.
3. Escalabilidade:
SQL: Escala verticalmente (melhoria de hardware).
NoSQL: Escala horizontalmente (distribuindo dados entre múltiplos servidores).
4. Consultas e Relacionamentos:
SQL: Suporta relacionamentos complexos com JOINs.
NoSQL: Não foca em relacionamentos, dados são frequentemente aninhados nos documentos.
Consultas no MongoDB
Para buscar e manipular dados no MongoDB,
utilizamos:
- find(): Pesquisa documentos.
- updateOne(), updateMany(): Atualiza
documentos.
- deleteOne(), deleteMany(): Remove documentos.
Exemplo de um documento JSON e uma consulta db.collection.find() no MongoDB.
Banco de Dados na Nuvem
Os bancos de dados podem ser gerenciados na
nuvem com AWS e Google BigQuery.
- AWS RDS permite criar bancos MySQL e
PostgreSQL.
- DynamoDB gerencia dados NoSQL escaláveis.
- BigQuery processa grandes volumes de dados
rapidamente.
BigQuery e Análise de Dados
BigQuery é um banco de dados do Google
otimizado para análise de grandes volumes de
dados.
- Suporte a consultas SQL para grandes datasets.
- Integração com outras ferramentas do Google
Cloud.
- Processamento rápido e eficiente de dados
estruturados e semiestruturados.
Comparação: SQL vs NoSQL
Principais diferenças entre SQL e NoSQL:
- SQL: Estruturado, ideal para dados relacionais.
- NoSQL: Flexível, ideal para grandes volumes de
dados distribuídos.
- SQL usa tabelas, NoSQL usa coleções e
documentos.
SQL x NoSQL
Conclusão
O slide abordou a modelagem de bancos de dados
relacionais e NoSQL, com foco no MySQL,
PostgreSQL, MongoDB, AWS e BigQuery. Aprendi a
instalar, configurar e manipular dados nesses
bancos, além de realizar consultas avançadas,
gerenciar usuários e otimizar o desempenho. O
conteúdo também incluiu o uso de JSON no
MySQL, administração de bancos de dados na
AWS, e a exploração de bancos NoSQL, como o
MongoDB. Esses conhecimentos são essenciais
para a criação e gestão eficiente de bancos de
dados em diferentes ambientes e aplicações.