0% acharam este documento útil (0 voto)
11 visualizações26 páginas

Curso Completo de Banco de Dados para Iniciantes PDF

O curso aborda os fundamentos de dados e bancos de dados, destacando a diferença entre dados e informação, e a importância dos bancos de dados nas aplicações modernas. O módulo inicial define um banco de dados como uma coleção organizada de informações, comparando-o a uma biblioteca e enfatizando o papel do Sistema de Gerenciamento de Banco de Dados (SGBD) na manipulação e segurança dos dados. Os bancos de dados são essenciais para a escalabilidade, integridade, segurança e análise de dados em diversos contextos, desde e-commerce até sistemas bancários.

Enviado por

Renato Pessoa
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
11 visualizações26 páginas

Curso Completo de Banco de Dados para Iniciantes PDF

O curso aborda os fundamentos de dados e bancos de dados, destacando a diferença entre dados e informação, e a importância dos bancos de dados nas aplicações modernas. O módulo inicial define um banco de dados como uma coleção organizada de informações, comparando-o a uma biblioteca e enfatizando o papel do Sistema de Gerenciamento de Banco de Dados (SGBD) na manipulação e segurança dos dados. Os bancos de dados são essenciais para a escalabilidade, integridade, segurança e análise de dados em diversos contextos, desde e-commerce até sistemas bancários.

Enviado por

Renato Pessoa
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Curso Completo de Banco de Dados: Do

Zero ao Profissional
Módulo 1: Fundamentos de Dados e Bancos de Dados
Este módulo inaugural estabelece os alicerces essenciais para a compreensão do universo dos
bancos de dados. Antes de mergulhar em tecnologias e comandos, é crucial entender os
conceitos fundamentais que motivam a existência e a importância dessas ferramentas.
Abordaremos a distinção vital entre dados e informação, definiremos o que é um banco de
dados através de analogias do mundo real e exploraremos seu papel indispensável nas
aplicações modernas.

1.1 A Diferença Crucial: Dados vs. Informação


No cerne de qualquer sistema de banco de dados está a transformação de elementos brutos
em insights valiosos. Para compreender plenamente o propósito de um banco de dados, é
imperativo primeiro distinguir entre "dados" e "informação", termos frequentemente usados de
forma intercambiável, mas que representam conceitos distintos.
Dados são fatos brutos, não organizados e desprovidos de contexto. Podem ser números,
textos, símbolos ou imagens que, isoladamente, não carregam um significado específico. Por
exemplo, a sequência de números "100, 150, 200" ou a palavra "Silva" são exemplos de dados.
Eles são a matéria-prima, os blocos de construção fundamentais que são coletados e
armazenados. Por si sós, os dados brutos são insuficientes para a tomada de decisões
estratégicas.
Informação, por outro lado, é o resultado do processamento, organização e contextualização
dos dados. Quando os dados brutos são analisados e estruturados, eles adquirem significado e
se tornam úteis. Utilizando o exemplo anterior, se contextualizarmos os números como "As
vendas do produto X nos últimos três meses foram de 100, 150 e 200 unidades", eles se
transformam em informação. Da mesma forma, "Silva" se torna informação quando
apresentado como "O sobrenome do cliente com o maior volume de compras é Silva". A
informação é o produto final que possui valor inerente, pois permite a compreensão, a análise
e, mais importante, a tomada de decisões informadas.
O processo de transformação de dados em informação é o propósito fundamental de um
sistema de gerenciamento de banco de dados. Um banco de dados não é meramente um
repositório passivo para armazenar bytes (dados); ele é um motor ativo de contextualização.
Através de estruturas como tabelas, relacionamentos e linguagens de consulta, um banco de
dados fornece as ferramentas necessárias para organizar o caos dos dados brutos e extrair a
clareza da informação útil, que pode então ser usada por organizações para operar de forma
mais eficiente e estratégica.
Tabela 1.1: Comparativo Detalhado: Dados vs. Informação
Característica Dados Informação Exemplo Prático
Definição Fatos brutos, não Dados processados, Dado: 37.5.
processados e não organizados e Informação: A
organizados. apresentados em um temperatura média de
Característica Dados Informação Exemplo Prático
contexto significativo. hoje foi de 37.5 graus
Celsius.
Formato Aparece como Geralmente Dado: Uma lista de
números, texto, apresentado em datas de nascimento.
símbolos, imagens. formatos interpretáveis, Informação: Um
como relatórios, gráfico de distribuição
gráficos ou frases. de idade dos clientes.
Contexto Geralmente carece de Possui contexto e Dado: 10/12/2023.
contexto e significado relevância, o que lhe Informação: Data de
por si só. confere significado. vencimento do pedido
nº 54321.
Dependência Independente. Existe Dependente de dados. A informação sobre a
por si só. É derivado da análise e "venda média"
processamento de depende dos dados de
dados. "vendas individuais".
Utilidade para Insuficiente para a Essencial e suficiente Dados de vendas não
Decisão tomada de decisões. para a tomada de ajudam muito; a
decisões. informação sobre "qual
produto vende mais"
orienta o estoque.
Unidade de Medida Medido em unidades Medido em unidades Dado: 1 megabyte de
técnicas como bits e significativas como registros de log.
bytes. tempo, quantidade, Informação: 3 horas
moeda. de tempo de
inatividade do sistema.
1.2 O Que é um Banco de Dados? Uma Analogia com o Mundo Real
Com a distinção entre dados e informação estabelecida, podemos definir o que é um banco de
dados. Em sua essência, um banco de dados é uma coleção organizada de informações
estruturadas, ou dados, tipicamente armazenada eletronicamente em um sistema de
computador. É uma ferramenta projetada para coletar, organizar e gerenciar informações de
forma eficiente.
Para desmistificar esse conceito, podemos usar algumas analogias. A mais completa é a de
uma biblioteca meticulosamente organizada.
● O banco de dados como um todo é a biblioteca.
● As tabelas dentro do banco de dados são como os livros nas prateleiras. Cada livro trata
de um assunto específico (ex: um livro sobre "Clientes", outro sobre "Produtos").
● As linhas (ou registros) em uma tabela são como as páginas de um livro. Cada página
contém informações sobre um item único (ex: a página de um cliente específico).
● As colunas (ou campos) são como os capítulos ou seções de um livro, categorizando a
informação (ex: capítulos sobre "Nome", "Endereço", "Telefone").
● O Sistema de Gerenciamento de Banco de Dados (SGBD), o software que controla o
banco de dados, é o bibliotecário. Ele sabe exatamente onde cada livro está, como
encontrar informações específicas rapidamente e como as informações em diferentes
livros se relacionam entre si.
Outra analogia comum, especialmente para quem está começando, é a de uma planilha.
Muitas bases de dados começam como simples listas em um programa de planilha. Uma
planilha pode ser vista como uma única tabela, com suas linhas e colunas. No entanto, essa
analogia tem limitações que revelam a verdadeira força de um banco de dados. Enquanto uma
planilha é adequada para listas pequenas e simples, os bancos de dados são projetados para
gerenciar coleções massivas de informações, às vezes bilhões de registros, permitindo que
múltiplos usuários acessem e consultem os dados simultaneamente com lógica complexa. A
principal diferença reside em como os dados são organizados para evitar redundâncias, um
processo chamado normalização, que é fundamental para a integridade dos dados, algo que as
planilhas não conseguem garantir de forma robusta.
Portanto, um sistema de banco de dados é mais do que apenas os dados em si; é um
ecossistema que inclui os dados, o SGBD (o software que gerencia tudo) e as aplicações que
interagem com ele.

1.3 Por Que os Bancos de Dados São Essenciais para Aplicações


Modernas?
No cenário digital atual, os bancos de dados são a espinha dorsal da grande maioria das
aplicações e serviços que utilizamos diariamente. Desde plataformas de e-commerce e redes
sociais até sistemas bancários e de saúde, quase toda aplicação moderna é construída sobre
um banco de dados para armazenar e gerenciar informações críticas, como detalhes de
usuários, produtos, pedidos e interações.
A importância dos bancos de dados pode ser resumida em quatro benefícios chave:
1. Escalabilidade Eficiente: As aplicações modernas precisam lidar com volumes de
dados que crescem exponencialmente. Os bancos de dados são projetados para
gerenciar grandes quantidades de dados, escalando para milhões ou até bilhões de
registros, algo impossível de se fazer com sistemas de arquivos simples ou planilhas.
Essa capacidade de escalar garante que a aplicação continue performática à medida que
a base de usuários e o volume de dados aumentam.
2. Integridade dos Dados: A precisão e a consistência dos dados são cruciais. Bancos de
dados impõem a integridade dos dados através de regras e restrições embutidas, como
tipos de dados específicos para cada coluna e relacionamentos que garantem que os
dados permaneçam consistentes e confiáveis em todo o sistema. Isso evita a ocorrência
de dados corrompidos ou inconsistentes.
3. Segurança dos Dados: Os dados são um dos ativos mais valiosos de uma organização.
Os bancos de dados oferecem mecanismos de segurança robustos para proteger
informações sensíveis contra acesso não autorizado. Isso inclui sistemas de autenticação
(login e senha), controle de acesso granular (onde diferentes usuários têm diferentes
níveis de permissão, como somente leitura), e criptografia de dados.
4. Análise de Dados e Tomada de Decisão: Além de armazenar dados operacionais, os
bancos de dados são fundamentais para a análise de negócios (Business Intelligence).
Eles permitem que as organizações executem consultas complexas para analisar dados,
identificar tendências, padrões e fazer previsões. Essa capacidade de análise de dados
ajuda as empresas a tomar decisões de negócios mais inteligentes e baseadas em
evidências.
Exemplos práticos de sua aplicação são vastos e variados, incluindo sistemas de detecção de
fraude em transações financeiras, gerenciamento de inventário em tempo real para varejistas,
sistemas de reserva de viagens, e o gerenciamento de milhões de jogadores simultâneos em
jogos online.

1.4 Conhecendo o Gerenciador: O Papel do SGBD (Sistema de


Gerenciamento de Banco de Dados)
Um banco de dados não funciona sozinho. Ele é controlado por um software abrangente
conhecido como Sistema de Gerenciamento de Banco de Dados (SGBD), ou DBMS
(Database Management System) em inglês. O SGBD atua como uma interface entre o banco
de dados físico (os arquivos onde os dados estão armazenados) e os usuários finais ou as
aplicações. Em vez de interagir diretamente com arquivos complexos no disco, os usuários e
desenvolvedores interagem com o SGBD, que lida com toda a complexidade subjacente.
As funções principais de um SGBD incluem:
● Definição de Dados: Permitir a criação, modificação e remoção de objetos que definem
a organização dos dados (como tabelas e índices).
● Manipulação de Dados: Fornecer os meios para inserir, atualizar, excluir e recuperar
dados do banco de dados. Essas operações são comumente conhecidas pelo acrônimo
CRUD (Create, Read, Update, Delete).
● Controle de Acesso e Segurança: Gerenciar as permissões dos usuários, garantindo
que apenas pessoas autorizadas possam acessar ou modificar os dados.
● Controle de Concorrência: Gerenciar o acesso simultâneo de múltiplos usuários ao
banco de dados, evitando que as ações de um usuário interfiram nas de outro.
● Backup e Recuperação: Fornecer mecanismos para criar cópias de segurança
(backups) dos dados e restaurá-los em caso de falha do sistema, garantindo a
durabilidade das informações.
Existem muitos SGBDs disponíveis, que são geralmente categorizados em dois grandes
grupos:
● SGBDs Relacionais (SQL): Baseados no modelo relacional, que organiza os dados em
tabelas. Eles utilizam a Linguagem de Consulta Estruturada (SQL) para manipulação e
consulta de dados. Exemplos populares incluem MySQL, PostgreSQL, Oracle
Database e Microsoft SQL Server.
● SGBDs Não Relacionais (NoSQL): Projetados para modelos de dados mais flexíveis,
como documentos, pares chave-valor, colunas largas ou grafos. Exemplos incluem
MongoDB, Redis e Apache Cassandra.

Módulo 2: O Modelo Relacional - A Arquitetura


Clássica dos Dados
O modelo relacional, introduzido por Ted Codd em 1970, tornou-se a base dominante para
sistemas de banco de dados por décadas devido à sua simplicidade, robustez e fundamentos
matemáticos. Este módulo explora a arquitetura fundamental dos bancos de dados relacionais,
detalhando como os dados são estruturados e como as conexões entre eles são estabelecidas
para garantir consistência e integridade.

2.1 Organizando Dados: Tabelas, Colunas (Campos) e Linhas


(Registros)
A estrutura central de um banco de dados relacional é a tabela. Uma tabela é uma coleção de
dados relacionados sobre um assunto específico, organizada em um formato de linhas e
colunas, muito semelhante a uma planilha. Em um banco de dados bem projetado, cada tabela
armazena informações sobre uma única entidade, como "Clientes", "Produtos" ou "Pedidos",
para evitar redundância de dados.
Os componentes de uma tabela são:
● Colunas (também chamadas de Campos ou Atributos): As colunas representam as
diferentes propriedades ou características da entidade que a tabela descreve. Elas
correm verticalmente na tabela. Por exemplo, em uma tabela chamada "Funcionários", as
colunas podem ser ID_Funcionario, PrimeiroNome, Sobrenome, Cargo e
DataContratacao. Cada coluna é definida para armazenar um tipo de dado específico,
como texto (VARCHAR), número (INT), data (DATE), etc. Essa definição de tipo de dado
é uma regra fundamental que garante a integridade dos dados, impedindo, por
exemplo, que um texto seja inserido em uma coluna destinada a armazenar salários.
● Linhas (também chamadas de Registros ou Tuplas): As linhas representam uma
única ocorrência ou instância da entidade. Elas correm horizontalmente na tabela. Cada
linha na tabela "Funcionários" conteria as informações de um funcionário específico. Por
exemplo, uma linha poderia ter os valores: 101, 'João', 'Silva', 'Analista de Dados',
'2022-08-15'. Uma linha é uma forma significativa e consistente de combinar informações
sobre um único item.
● Célula (ou Campo): A interseção de uma linha e uma coluna é chamada de célula ou
campo. Ela contém um único valor de dado. Por exemplo, na linha do funcionário João
Silva, a célula na interseção com a coluna Cargo conteria o valor "Analista de Dados".
Essa estrutura tabular é a base sobre a qual todo o modelo relacional é construído, fornecendo
uma maneira lógica e intuitiva de organizar e acessar dados.

2.2 As Chaves do Reino: Entendendo Chaves Primárias e


Estrangeiras
Se as tabelas são os blocos de construção de um banco de dados relacional, as chaves são o
cimento que as une. As chaves são colunas especiais que desempenham papéis cruciais na
identificação única de registros e na criação de relacionamentos entre tabelas, garantindo a
integridade e a consistência do banco de dados.

Chave Primária (Primary Key - PK)

A chave primária é uma coluna (ou um conjunto de colunas) cujo valor identifica unicamente
cada linha em uma tabela. Pense nela como o número de CPF para uma pessoa ou o número
de chassi para um veículo; é um identificador que garante que não existem dois registros
idênticos.
As propriedades fundamentais de uma chave primária são:
● Unicidade: Cada valor na coluna da chave primária deve ser único. Não pode haver
duas linhas com o mesmo valor de chave primária.
● Não Nulidade (NOT NULL): A coluna da chave primária não pode conter valores nulos
(NULL). Cada registro deve ter um identificador válido.
Por exemplo, em uma tabela Alunos, a coluna Matricula seria uma excelente candidata a chave
primária. Em uma tabela Produtos, seria a coluna CodigoProduto. A sintaxe básica para definir
uma chave primária ao criar uma tabela é:
CREATE TABLE Alunos (
Matricula INT PRIMARY KEY,
Nome VARCHAR(100) NOT NULL,
Email VARCHAR(100)
);

Chave Estrangeira (Foreign Key - FK)

Enquanto a chave primária garante a unicidade dentro de uma tabela, a chave estrangeira é o
que cria uma ponte entre duas tabelas. Uma chave estrangeira é uma coluna (ou um conjunto
de colunas) em uma tabela que se refere à chave primária de outra tabela. Ela estabelece um
link, ou relacionamento, entre os dados das duas tabelas.
A principal função da chave estrangeira é impor a integridade referencial. Isso significa que
um valor inserido na coluna da chave estrangeira deve corresponder a um valor existente na
coluna da chave primária da tabela referenciada. Isso evita "registros órfãos" — por exemplo,
um pedido que não está associado a nenhum cliente existente.
Continuando o exemplo, imagine uma tabela Pedidos. Para saber qual cliente fez cada pedido,
adicionamos uma coluna ID_Cliente na tabela Pedidos. Essa coluna ID_Cliente será uma
chave estrangeira que referencia a coluna ID_Cliente (a chave primária) na tabela Clientes.
● Tabela Clientes (Tabela Pai):
○ ID_Cliente (PK)
○ Nome
● Tabela Pedidos (Tabela Filha):
○ ID_Pedido (PK)
○ DataPedido
○ ID_Cliente (FK que referencia Clientes.ID_Cliente)
A sintaxe para definir uma chave estrangeira é:
CREATE TABLE Pedidos (
ID_Pedido INT PRIMARY KEY,
DataPedido DATE,
ID_Cliente INT,
FOREIGN KEY (ID_Cliente) REFERENCES Clientes(ID_Cliente)
);

A combinação de chaves primárias e estrangeiras é o mecanismo que transforma coleções


isoladas de tabelas em uma rede coesa e interconectada de informações, permitindo a
execução de consultas complexas que cruzam dados de múltiplas entidades.

2.3 Construindo Conexões: Relacionamentos Um-para-Um,


Um-para-Muitos e Muitos-para-Muitos
Os relacionamentos definidos por chaves estrangeiras podem ser classificados com base na
cardinalidade, que descreve o número de instâncias em uma entidade que podem estar
associadas a instâncias em outra entidade. Existem três tipos principais de relacionamentos.
● Relacionamento Um-para-Um (1:1): Este é o tipo menos comum de relacionamento.
Ocorre quando uma linha na Tabela A pode estar associada a, no máximo, uma linha na
Tabela B, e vice-versa.
○ Exemplo: Um relacionamento entre Pessoas e Passaportes. Uma pessoa pode ter
apenas um passaporte, e um passaporte pertence a apenas uma pessoa.
○ Implementação: Geralmente, a chave primária de uma tabela é incluída como
chave estrangeira na outra, com uma restrição de unicidade (UNIQUE) aplicada a
essa chave estrangeira.
● Relacionamento Um-para-Muitos (1:N): Este é o tipo de relacionamento mais comum
em bancos de dados. Ocorre quando uma linha na Tabela A pode estar relacionada a
muitas linhas na Tabela B, mas cada linha na Tabela B está relacionada a apenas uma
linha na Tabela A.
○ Exemplo: O relacionamento entre Clientes e Pedidos. Um cliente pode fazer
muitos pedidos, mas cada pedido pertence a um único cliente. Outro exemplo é
uma Mãe e seus Filhos.
○ Implementação: É implementado colocando a chave primária da tabela do lado
"um" (Tabela A, Clientes) como uma chave estrangeira na tabela do lado "muitos"
(Tabela B, Pedidos).
● Relacionamento Muitos-para-Muitos (N:M): Este relacionamento ocorre quando muitas
linhas na Tabela A podem estar relacionadas a muitas linhas na Tabela B, e vice-versa.
○ Exemplo: O relacionamento entre Alunos e Disciplinas. Um aluno pode se
inscrever em muitas disciplinas, e uma disciplina pode ter muitos alunos
matriculados.
○ Implementação: Relacionamentos muitos-para-muitos não podem ser
implementados diretamente entre duas tabelas. Eles exigem a criação de uma
terceira tabela, conhecida como tabela de junção, tabela associativa ou tabela
de ligação. Essa tabela intermediária (por exemplo, Matriculas) contém, no
mínimo, duas chaves estrangeiras, uma para a chave primária da Tabela A
(ID_Aluno) e outra para a chave primária da Tabela B (ID_Disciplina). A
combinação dessas duas chaves estrangeiras geralmente forma a chave primária
da tabela de junção.
Compreender esses tipos de relacionamento é fundamental para projetar um banco de dados
que modele com precisão as regras de negócio do mundo real.

Módulo 3: Projetando seu Primeiro Banco de Dados


Projetar um banco de dados é uma tarefa que combina arte e ciência. Um bom design não
apenas armazena dados de forma eficiente, mas também garante sua integridade, facilita a
recuperação e permite que o sistema evolua com o tempo. Este módulo aborda o processo de
design de banco de dados, desde a concepção inicial até a estruturação lógica e a organização
otimizada através da normalização.

3.1 Do Rascunho à Realidade: Modelagem Conceitual, Lógica e Física


O design de um banco de dados é um processo de tradução progressiva, que transforma os
requisitos de negócio em uma implementação técnica funcional. Esse processo é tipicamente
dividido em três estágios de modelagem, cada um com um nível crescente de detalhe e um
público-alvo diferente.
1. Modelo Conceitual: Este é o primeiro e mais abstrato estágio. Ele oferece uma visão de
alto nível do sistema, focando em capturar os requisitos de negócio sem se preocupar
com detalhes técnicos de implementação. O objetivo é identificar as principais entidades
(os "o quês" do sistema, como Cliente, Produto) e os relacionamentos entre elas. Este
modelo é frequentemente criado por analistas de negócios em colaboração com as
partes interessadas e pode ser comparado a um rascunho em um quadro branco. Ele
serve como uma ferramenta de comunicação para garantir que todos tenham uma
compreensão compartilhada do escopo do sistema.
2. Modelo Lógico: O modelo lógico é uma versão mais refinada e detalhada do modelo
conceitual. Nesta fase, as entidades e relacionamentos são elaborados com mais rigor.
São definidos os atributos (as propriedades de cada entidade, como Nome e Endereço
para um Cliente), as chaves primárias e as chaves estrangeiras. Uma característica
fundamental do modelo lógico é que ele é independente de tecnologia; ele descreve a
estrutura dos dados sem especificar um SGBD particular (como MySQL ou Oracle). Este
modelo é tipicamente criado por arquitetos de dados e serve como um "contrato"
detalhado entre a equipe de negócios e a equipe técnica.
3. Modelo Físico: Este é o estágio final, onde o modelo lógico é traduzido em uma
implementação concreta para um SGBD específico. O modelo físico define todos os
detalhes técnicos necessários para a criação do banco de dados, incluindo os tipos de
dados exatos para cada coluna (VARCHAR(100), INT, DATETIME), os índices que
serão criados para otimizar o desempenho das consultas, e outras restrições específicas
da plataforma. Este modelo é criado por administradores de banco de dados (DBAs) e
desenvolvedores e serve como o projeto final para a construção do banco de dados.
Seguir essa progressão de modelagem garante que o design do banco de dados esteja
firmemente alinhado com as necessidades do negócio, ao mesmo tempo em que é
tecnicamente sólido e otimizado para a plataforma escolhida. Pular etapas, especialmente as
iniciais, frequentemente leva a um design fraco, difícil de manter e que não atende
adequadamente aos requisitos.

3.2 Desenhando o Mapa: Um Guia Passo a Passo para Criar


Diagramas de Entidade-Relacionamento (DER)
Um Diagrama de Entidade-Relacionamento (DER), ou ERD (Entity-Relationship Diagram), é
a representação visual de um modelo de dados, mais comumente do modelo lógico. Ele serve
como um mapa que ilustra a estrutura lógica de um banco de dados, mostrando as entidades,
seus atributos e como elas se inter-relacionam.
Os componentes principais de um DER, usando uma notação comum como a de "Pé de
Galinha" (Crow's Foot), são:
● Entidades: Representadas por retângulos, nomeadas com substantivos no singular (ex:
Cliente, Produto). Elas são os objetos ou conceitos sobre os quais queremos armazenar
informações.
● Atributos: Listados dentro do retângulo da entidade, representam as propriedades dessa
entidade (ex: Nome, Preço). O atributo que serve como chave primária é geralmente
sublinhado ou marcado com "PK".
● Relacionamentos: Representados por linhas que conectam as entidades. O tipo de
relacionamento é descrito por um verbo (ex: um Cliente faz um Pedido).
● Cardinalidade: Símbolos nas extremidades das linhas de relacionamento que indicam
as regras numéricas da associação. A notação "Pé de Galinha" é muito intuitiva: um pé
de galinha (três traços) significa "muitos", e um único traço perpendicular significa "um".
O processo para criar um DER pode ser dividido nos seguintes passos:
1. Identificar as Entidades: Analise os requisitos do sistema e liste os principais
"substantivos" ou conceitos. Estes se tornarão os retângulos no seu diagrama. Por
exemplo, em um sistema universitário, as entidades seriam Aluno, Curso, Professor.
2. Definir os Atributos: Para cada entidade, determine quais informações precisam ser
armazenadas. Estes serão os atributos. Para a entidade Aluno, os atributos poderiam ser
Matricula, Nome, Email. Identifique e marque a chave primária para cada entidade.
3. Estabelecer os Relacionamentos: Pense em como as entidades interagem umas com
as outras. Quais são os "verbos" que as conectam? Um Professor leciona um Curso. Um
Aluno se inscreve em um Curso. Desenhe linhas para conectar as entidades
relacionadas.
4. Especificar a Cardinalidade: Para cada relacionamento, defina as regras. Um Professor
pode lecionar muitos Cursos (1:N). Um Aluno pode se inscrever em muitos Cursos, e um
Curso pode ter muitos Alunos (N:M). Adicione os símbolos de cardinalidade apropriados
nas extremidades das linhas.
Seguir esses passos resulta em um diagrama claro e organizado que serve como um guia
essencial para desenvolvedores e DBAs na implementação do banco de dados.

3.3 A Arte da Organização: Normalização de Banco de Dados (1FN,


2FN, 3FN)
A normalização de banco de dados é um processo sistemático de organização das colunas e
tabelas em um banco de dados relacional para minimizar a redundância de dados e melhorar a
integridade dos dados. Um banco de dados não normalizado pode sofrer de problemas
conhecidos como anomalias de dados, que complicam o gerenciamento das informações :
● Anomalia de Inserção: Ocorre quando não é possível adicionar um novo registro porque
faltam dados para outras colunas. Por exemplo, não se pode adicionar um novo curso
que ainda não tem alunos, se as informações do curso e do aluno estiverem na mesma
tabela.
● Anomalia de Atualização: Acontece quando a mesma informação é armazenada em
vários locais. Se essa informação precisar ser atualizada, ela deve ser alterada em todos
os lugares. Esquecer de atualizar um dos locais leva a uma inconsistência no banco de
dados.
● Anomalia de Exclusão: Ocorre quando a exclusão de um registro leva à perda não
intencional de outras informações. Por exemplo, se o último aluno de um curso for
removido de uma tabela que armazena dados de alunos e cursos juntos, as informações
sobre o curso em si podem ser perdidas.
Para resolver esses problemas, aplicamos um conjunto de regras chamadas Formas Normais.
As três primeiras são as mais importantes e comumente utilizadas.

Primeira Forma Normal (1FN)

Uma tabela está na 1FN se atender aos seguintes critérios:


● Atomicidade: Cada célula da tabela deve conter um único valor (atômico e indivisível).
Não são permitidas listas ou conjuntos de valores em uma única célula.
● Chave Primária: A tabela deve ter uma chave primária para identificar unicamente cada
linha.
● Sem Grupos Repetidos: Não deve haver colunas repetidas, como Telefone1, Telefone2,
Telefone3.
Exemplo: Uma tabela com uma coluna Assuntos contendo "Matemática, Física" em uma única
célula viola a 1FN. Para normalizar, criaríamos linhas separadas para cada assunto.

Segunda Forma Normal (2FN)

Uma tabela está na 2FN se:


● Já estiver na 1FN.
● Não tiver dependências parciais. Isso significa que todos os atributos não-chave
devem depender funcionalmente da chave primária inteira, e não apenas de uma parte
dela. Esta regra é relevante principalmente para tabelas com chaves primárias
compostas (formadas por mais de uma coluna).
Exemplo: Considere uma tabela Matriculas com uma chave primária composta (ID_Aluno,
ID_Disciplina). Se essa tabela também contiver a coluna Nome_Aluno, essa coluna dependeria
apenas de ID_Aluno, que é parte da chave primária. Isso é uma dependência parcial. Para
alcançar a 2FN, a coluna Nome_Aluno deve ser movida para a tabela Alunos.

Terceira Forma Normal (3FN)

Uma tabela está na 3FN se:


● Já estiver na 2FN.
● Não tiver dependências transitivas. Uma dependência transitiva ocorre quando um
atributo não-chave depende de outro atributo não-chave, que por sua vez depende da
chave primária.
Exemplo: Considere uma tabela Funcionarios com as colunas ID_Funcionario (PK),
ID_Departamento e Nome_Gerente_Departamento. Aqui, Nome_Gerente_Departamento
depende de ID_Departamento, que por sua vez depende de ID_Funcionario. Isso é uma
dependência transitiva. Para alcançar a 3FN, a coluna Nome_Gerente_Departamento deve ser
movida para uma tabela separada de Departamentos, que teria ID_Departamento como sua
chave primária.
A aplicação dessas formas normais resulta em um banco de dados com múltiplas tabelas
menores e bem estruturadas, onde cada peça de informação é armazenada apenas uma vez,
eliminando redundâncias e melhorando a integridade geral do sistema.

Módulo 4: Falando a Língua dos Dados - Um Mergulho


Profundo em SQL
SQL (Structured Query Language) é a linguagem padrão para interagir com bancos de dados
relacionais. Ela permite definir a estrutura do banco de dados, manipular os dados contidos
nele e realizar consultas complexas para recuperar informações. Os comandos SQL são
categorizados em subconjuntos com base em sua função. Este módulo aborda os três mais
importantes para iniciantes: DDL, DML e DQL.
4.1 DDL (Linguagem de Definição de Dados): Estruturando seu Banco
A Linguagem de Definição de Dados (DDL) é usada para criar, modificar e excluir a estrutura
dos objetos do banco de dados, como tabelas, índices e views. Esses comandos definem o
"esquema" do banco de dados, mas não manipulam os dados em si.
● CREATE TABLE: Este comando é usado para criar uma nova tabela no banco de dados.
Ao criar uma tabela, você deve especificar seu nome, os nomes das colunas e os tipos
de dados para cada coluna, além de quaisquer restrições, como chaves primárias.
○ Sintaxe: CREATE TABLE nome_tabela (coluna1 tipo_dado [restrições], coluna2
tipo_dado [restrições],...);.
○ Exemplo: Para criar uma tabela para armazenar informações sobre produtos:
CREATE TABLE Produtos (
ID_Produto INT PRIMARY KEY,
Nome_Produto VARCHAR(255) NOT NULL,
Preco DECIMAL(10, 2),
Estoque INT
);

● ALTER TABLE: Este comando é usado para modificar a estrutura de uma tabela
existente. Com ele, é possível adicionar, excluir ou modificar colunas, bem como
adicionar ou remover restrições.
○ Sintaxe (Adicionar Coluna): ALTER TABLE nome_tabela ADD nome_coluna
tipo_dado;.
○ Exemplo: Para adicionar uma coluna Data_Cadastro à tabela Produtos:
ALTER TABLE Produtos ADD Data_Cadastro DATE;

● DROP TABLE: Este comando exclui permanentemente uma tabela, incluindo toda a sua
estrutura, dados e índices associados. É uma operação destrutiva e deve ser usada com
extrema cautela, pois os dados não podem ser recuperados após a sua execução.
○ Sintaxe: DROP TABLE nome_tabela;.
○ Exemplo: Para remover completamente a tabela Produtos:
DROP TABLE Produtos;

4.2 DML (Linguagem de Manipulação de Dados): Gerenciando os


Dados
A Linguagem de Manipulação de Dados (DML) é usada para gerenciar os dados dentro das
tabelas. Esses comandos permitem inserir, atualizar e excluir os registros (linhas).
● INSERT INTO: Adiciona uma ou mais novas linhas de dados a uma tabela.
○ Sintaxe: INSERT INTO nome_tabela (coluna1, coluna2,...) VALUES (valor1,
valor2,...);.
○ Exemplo: Para adicionar um novo produto à tabela Produtos:
INSERT INTO Produtos (ID_Produto, Nome_Produto, Preco,
Estoque)
VALUES (101, 'Laptop Modelo X', 4500.00, 50);
● UPDATE: Modifica os dados em linhas existentes que correspondem a uma condição
especificada. A cláusula WHERE é fundamental neste comando; se omitida, todas as
linhas da tabela serão atualizadas, o que raramente é o desejado.
○ Sintaxe: UPDATE nome_tabela SET coluna1 = novo_valor1, coluna2 =
novo_valor2 WHERE condicao;.
○ Exemplo: Para atualizar o preço do produto com ID_Produto 101:
UPDATE Produtos SET Preco = 4350.00 WHERE ID_Produto = 101;

● DELETE FROM: Remove linhas de uma tabela que correspondem a uma condição
especificada. Assim como no UPDATE, a cláusula WHERE é crucial. Se omitida, todas
as linhas da tabela serão excluídas.
○ Sintaxe: DELETE FROM nome_tabela WHERE condicao;.
○ Exemplo: Para remover o produto com ID_Produto 101:
DELETE FROM Produtos WHERE ID_Produto = 101;

4.3 DQL (Linguagem de Consulta de Dados): Dominando o SELECT


A Linguagem de Consulta de Dados (DQL) é, na prática, composta principalmente pelo
comando SELECT, que é o comando mais utilizado em SQL. Sua função é recuperar dados de
uma ou mais tabelas. O resultado de uma consulta SELECT é um conjunto de resultados,
também chamado de result set, que é uma tabela temporária.
A estrutura de uma consulta SELECT pode ser simples ou extremamente complexa,
envolvendo várias cláusulas para filtrar, agrupar e ordenar os dados.
● Seleção Básica: Para selecionar colunas específicas ou todas as colunas (*) de uma
tabela.
○ Exemplo: SELECT Nome_Produto, Preco FROM Produtos;.
● WHERE: Filtra os registros com base em uma condição, retornando apenas as linhas
que atendem ao critério.
○ Exemplo: SELECT * FROM Produtos WHERE Estoque < 20;.
● GROUP BY: Agrupa linhas que têm os mesmos valores em colunas especificadas em
uma linha de resumo. É quase sempre usado com funções de agregação (como
COUNT(), SUM(), AVG(), MAX(), MIN()) para realizar cálculos sobre cada grupo.
○ Exemplo: Para contar quantos produtos existem em cada categoria (supondo uma
coluna Categoria):
SELECT Categoria, COUNT(*) AS Total_Produtos
FROM Produtos
GROUP BY Categoria;

● HAVING: Filtra os resultados após a agregação realizada pelo GROUP BY. Enquanto
WHERE filtra linhas individuais antes do agrupamento, HAVING filtra os grupos já
formados.
○ Exemplo: Para mostrar apenas as categorias com mais de 10 produtos:
SELECT Categoria, COUNT(*) AS Total_Produtos
FROM Produtos
GROUP BY Categoria
HAVING COUNT(*) > 10;
● ORDER BY: Ordena o conjunto de resultados com base em uma ou mais colunas, em
ordem ascendente (ASC, padrão) ou descendente (DESC).
○ Exemplo: SELECT * FROM Produtos ORDER BY Preco DESC;.
É crucial entender a ordem lógica em que o SGBD processa essas cláusulas, que difere da
ordem em que são escritas:
1. FROM (e JOINs)
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
6. ORDER BY
Essa ordem de processamento explica por que, por exemplo, não é possível usar um alias de
coluna definido na cláusula SELECT dentro da cláusula WHERE (pois WHERE é processado
antes de SELECT), mas é possível usá-lo na cláusula ORDER BY (que é processada depois).
Tabela 4.1: Resumo dos Comandos SQL Essenciais
Categoria Comando Propósito Principal Exemplo de Sintaxe
Simples
DDL CREATE TABLE Cria uma nova tabela. CREATE TABLE
Clientes (ID INT, Nome
VARCHAR(50));
DDL ALTER TABLE Modifica a estrutura de ALTER TABLE Clientes
uma tabela existente. ADD Email
VARCHAR(100);
DDL DROP TABLE Exclui DROP TABLE Clientes;
permanentemente uma
tabela.
DML INSERT INTO Adiciona novas linhas a INSERT INTO Clientes
uma tabela. (ID, Nome) VALUES (1,
'Ana');
DML UPDATE Modifica dados em UPDATE Clientes SET
linhas existentes. Nome = 'Ana Silva'
WHERE ID = 1;
DML DELETE FROM Remove linhas de uma DELETE FROM
tabela. Clientes WHERE ID =
1;
DQL SELECT Recupera dados de SELECT Nome, Email
uma ou mais tabelas. FROM Clientes
WHERE ID > 10;
Módulo 5: Garantindo Confiabilidade e Velocidade
Um banco de dados eficaz não apenas armazena dados, mas também garante que eles sejam
confiáveis e acessíveis rapidamente. Este módulo aborda dois conceitos fundamentais que
sustentam essas capacidades: as transações e as propriedades ACID, que garantem a
integridade dos dados, e a indexação, que otimiza drasticamente o desempenho das consultas.

5.1 Transações e Propriedades ACID: A Garantia de Integridade dos


Dados
Em um sistema de banco de dados, muitas operações consistem em múltiplos passos que
devem ser executados em conjunto. Por exemplo, uma transferência bancária envolve debitar
de uma conta e creditar em outra. Se apenas uma dessas etapas for concluída, o banco de
dados ficará em um estado inconsistente. Para resolver isso, os SGBDs utilizam o conceito de
transação.
Uma transação é uma sequência de uma ou mais operações de banco de dados que são
executadas como uma única unidade lógica de trabalho. A principal característica de uma
transação é o seu princípio de "tudo ou nada": ou todas as operações dentro dela são
concluídas com sucesso e permanentemente salvas (um processo chamado commit), ou, se
qualquer operação falhar, todas as alterações feitas até aquele ponto são desfeitas (um
processo chamado rollback), retornando o banco de dados ao seu estado original.
Para garantir a confiabilidade das transações, mesmo em cenários de falhas de sistema ou
acesso concorrente por múltiplos usuários, os bancos de dados relacionais aderem a um
conjunto de quatro propriedades conhecidas pelo acrônimo ACID.
● A - Atomicidade (Atomicity): Garante que a transação seja tratada como uma unidade
indivisível. Ou todas as suas operações são executadas, ou nenhuma delas é. Não existe
um estado "parcialmente concluído". No exemplo da transferência bancária, se o sistema
falhar após o débito, mas antes do crédito, a atomicidade garante que a operação de
débito seja revertida, como se nunca tivesse acontecido.
● C - Consistência (Consistency): Assegura que uma transação só pode levar o banco
de dados de um estado válido para outro estado válido. Todas as regras de integridade
definidas, como restrições de chave primária, chave estrangeira e tipos de dados, devem
ser satisfeitas ao final da transação. A consistência impede que dados corrompidos ou
inválidos sejam escritos no banco de dados.
● I - Isolamento (Isolation): Determina como as transações concorrentes (executadas ao
mesmo tempo) interagem entre si. O isolamento garante que as operações de uma
transação não sejam visíveis para outras transações até que a primeira seja concluída
(commit). Isso evita problemas como "leituras sujas" (ler dados de uma transação não
concluída) e garante que o resultado final seja o mesmo como se as transações tivessem
sido executadas uma após a outra, em série.
● D - Durabilidade (Durability): Garante que, uma vez que uma transação tenha sido
confirmada (commit), suas alterações são permanentes e sobreviverão a qualquer falha
subsequente do sistema, como uma queda de energia ou um crash do servidor. Essas
alterações são armazenadas em um meio não volátil (como um disco rígido).
As propriedades ACID são a base da confiabilidade em sistemas transacionais, como os
utilizados em bancos, e-commerce e sistemas de reserva, onde a integridade dos dados é
absolutamente crítica.

5.2 Otimizando Consultas: Como a Indexação Acelera o Acesso aos


Dados
À medida que uma tabela cresce para milhares, milhões ou bilhões de linhas, encontrar um
registro específico pode se tornar uma tarefa extremamente lenta. Sem um mecanismo de
otimização, o SGBD teria que realizar uma varredura completa da tabela (full table scan), ou
seja, ler cada linha, uma por uma, do início ao fim, para encontrar os dados que correspondem
à sua consulta. Isso é ineficiente e consome muitos recursos.
Para resolver esse problema, os bancos de dados utilizam índices. Um índice de banco de
dados é uma estrutura de dados especial que melhora a velocidade das operações de
recuperação de dados em uma tabela. A analogia mais comum e eficaz é o índice remissivo
de um livro: em vez de ler o livro inteiro para encontrar um tópico, você consulta o índice, que
lista os tópicos em ordem alfabética e aponta para as páginas exatas onde eles se encontram.
Da mesma forma, um índice de banco de dados armazena os valores de uma ou mais colunas
em uma ordem específica (geralmente usando uma estrutura de dados eficiente como uma
Árvore B) e mantém um "ponteiro" para a localização da linha original na tabela. Quando você
executa uma consulta com uma cláusula WHERE em uma coluna indexada, o SGBD pode usar
o índice para localizar rapidamente os registros desejados, evitando a varredura completa da
tabela e melhorando drasticamente o desempenho da consulta.
No entanto, a indexação vem com um custo. Embora os índices acelerem significativamente as
operações de leitura (SELECT), eles podem retardar as operações de escrita (INSERT,
UPDATE, DELETE). Isso ocorre porque, sempre que um dado é adicionado, modificado ou
removido da tabela, o índice correspondente também precisa ser atualizado para manter sua
consistência. Além disso, os índices consomem espaço de armazenamento adicional.
Por causa desse trade-off, a decisão de criar um índice deve ser criteriosa. Geralmente, as
colunas que são boas candidatas para indexação são aquelas frequentemente usadas em
cláusulas WHERE e JOIN, e que possuem alta seletividade (ou seja, muitos valores distintos).

Módulo 6: Explorando o Universo NoSQL


Embora o modelo relacional (SQL) tenha dominado o mundo dos bancos de dados por
décadas, o surgimento da internet em larga escala, do Big Data e das aplicações que exigem
alta flexibilidade e escalabilidade massiva levou ao desenvolvimento de uma nova categoria de
bancos de dados: os NoSQL. O termo "NoSQL" é frequentemente traduzido como "Not Only
SQL" (Não Apenas SQL), indicando que eles oferecem uma alternativa aos modelos relacionais
tradicionais.

6.1 A Grande Decisão: SQL vs. NoSQL - Estrutura vs. Flexibilidade


A escolha entre um banco de dados SQL e um NoSQL é uma das decisões de arquitetura mais
importantes no desenvolvimento de software moderno. A diferença fundamental entre eles
reside em seus modelos de dados, esquemas, escalabilidade e modelos de consistência.
● Bancos de Dados SQL (Relacionais):
○ Modelo de Dados: Estruturado, baseado em tabelas com linhas e colunas, com
relacionamentos bem definidos entre elas.
○ Esquema: Rígido e pré-definido. A estrutura da tabela (colunas e tipos de dados)
deve ser definida antes que os dados sejam inseridos. Isso é conhecido como
schema-on-write.
○ Escalabilidade: Tradicionalmente, escalam verticalmente. Isso significa aumentar
a capacidade de um único servidor (adicionando mais CPU, RAM, SSD). Embora a
escalabilidade horizontal seja possível, ela é geralmente mais complexa de
implementar.
○ Consistência: Priorizam a consistência forte, geralmente garantindo
conformidade com as propriedades ACID. Isso garante que os dados estejam
sempre em um estado consistente e confiável após cada transação.
● Bancos de Dados NoSQL (Não Relacionais):
○ Modelo de Dados: Variado e flexível, incluindo documentos, pares chave-valor,
colunas largas e grafos. São ideais para dados não estruturados ou
semi-estruturados, como posts de redes sociais, dados de sensores ou arquivos
JSON.
○ Esquema: Dinâmico e flexível. Não há necessidade de um esquema pré-definido;
a estrutura pode variar de um registro para outro dentro da mesma coleção. Isso é
conhecido como schema-on-read.
○ Escalabilidade: Projetados para escalar horizontalmente. Isso significa distribuir
a carga de dados e de trabalho por múltiplos servidores (um cluster). Adicionar
mais servidores é uma maneira simples de aumentar a capacidade.
○ Consistência: Geralmente, priorizam a disponibilidade e a tolerância a
partições em detrimento da consistência forte, seguindo o modelo BASE
(Basically Available, Soft state, Eventually consistent). Isso significa que o sistema
pode ficar em um estado temporariamente inconsistente, mas acabará por atingir a
consistência (consistência eventual).
Tabela 6.1: Comparativo Abrangente: SQL vs. NoSQL
Característica Bancos de Dados SQL Bancos de Dados NoSQL (Não
(Relacionais) Relacionais)
Modelo de Dados Tabelas com linhas e colunas Documentos, Chave-Valor,
(estruturado). Colunar, Grafo (não
estruturado/semi-estruturado).
Estrutura do Esquema Rígido e pré-definido Dinâmico e flexível
(schema-on-write). (schema-on-read).
Escalabilidade Principalmente Vertical Principalmente Horizontal
(aumentar a potência de um (adicionar mais servidores).
servidor).
Consistência Forte consistência (geralmente Consistência eventual (modelo
compatível com ACID). BASE), priorizando
disponibilidade.
Linguagem de Consulta SQL (Structured Query Varia por banco de dados (ex:
Language). MQL para MongoDB, Cypher
para Neo4j).
Casos de Uso Típicos Sistemas financeiros, ERPs, Big Data, redes sociais, IoT,
aplicações transacionais, gerenciamento de conteúdo,
dados estruturados. análise em tempo real.
6.2 Quando Usar Cada Um: Casos de Uso
A escolha entre SQL e NoSQL depende inteiramente dos requisitos da aplicação. Não existe
uma "melhor" solução universal; existe a ferramenta certa para o trabalho certo.
Use um banco de dados SQL (Relacional) quando:
● A estrutura dos seus dados é bem definida e não muda com frequência. Se você
está lidando com dados altamente estruturados, como transações financeiras, registros
de clientes ou pedidos de e-commerce, o modelo relacional oferece uma estrutura
robusta e previsível.
● A integridade dos dados e a conformidade com ACID são absolutamente críticas.
Para aplicações onde a consistência transacional é inegociável (ex: sistemas bancários),
a garantia ACID dos bancos de dados SQL é essencial.
● Você precisa executar consultas complexas que envolvem a junção (JOIN) de
múltiplas tabelas. Os bancos de dados relacionais são otimizados para esse tipo de
operação.
Use um banco de dados NoSQL (Não Relacional) quando:
● Você está lidando com grandes volumes de dados não estruturados ou
semi-estruturados. Se os seus dados não se encaixam facilmente em um formato de
tabela, como posts de mídia social, artigos, vídeos ou leituras de sensores de IoT, a
flexibilidade do esquema NoSQL é uma grande vantagem.
● A escalabilidade horizontal e a alta disponibilidade são as principais prioridades.
Para aplicações que precisam atender a milhões de usuários e ter um tempo de atividade
próximo de 100%, a arquitetura distribuída dos bancos de dados NoSQL é ideal.
● O desenvolvimento rápido e iterativo é um requisito. A natureza sem esquema
(schema-less) dos bancos de dados NoSQL permite que os desenvolvedores modifiquem
a estrutura dos dados rapidamente, sem a necessidade de migrações de esquema
complexas, o que se alinha bem com metodologias de desenvolvimento ágil.

6.3 Os Quatro Tipos de Bancos de Dados NoSQL


O universo NoSQL não é monolítico; ele é composto por diferentes tipos de bancos de dados,
cada um com um modelo de dados otimizado para um tipo específico de problema.
● Bancos de Dados de Documento (Document Store): Armazenam dados em
documentos, que são estruturas flexíveis e auto-descritivas, geralmente no formato
JSON ou BSON (JSON binário). Cada documento pode ter uma estrutura diferente. São
excelentes para gerenciamento de conteúdo (CMS), catálogos de produtos de
e-commerce e perfis de usuário. Exemplos: MongoDB, Couchbase.
● Bancos de Dados Chave-Valor (Key-Value Store): Este é o modelo NoSQL mais
simples. Os dados são armazenados como um grande dicionário ou hash map, onde
cada item tem uma chave única e um valor associado. São extremamente rápidos para
operações de leitura e escrita simples, tornando-os ideais para caching, gerenciamento
de sessões de usuário e leaderboards de jogos. Exemplos: Redis, Amazon DynamoDB.
● Bancos de Dados Colunares (Wide-Column Store): Armazenam dados em colunas em
vez de linhas. Isso os torna extremamente eficientes para consultas analíticas que
precisam agregar dados de um pequeno subconjunto de colunas em um grande número
de linhas. São amplamente utilizados em aplicações de Big Data, sistemas de log e
análise de séries temporais. Exemplos: Apache Cassandra, HBase.
● Bancos de Dados de Grafo (Graph Database): Projetados especificamente para
armazenar e navegar por relacionamentos. Os dados são modelados como nós
(entidades) e arestas (os relacionamentos entre as entidades). São ideais para dados
altamente conectados, como redes sociais ("amigos de amigos"), sistemas de
recomendação, detecção de fraudes e gerenciamento de redes. Exemplos: Neo4j,
Amazon Neptune.
Tabela 6.2: Visão Geral dos Tipos de Banco de Dados NoSQL
Tipo de BD Estrutura de Principais Casos de Uso Exemplos de
NoSQL Dados Vantagens Comuns Tecnologia
Documento Documentos Esquema flexível, Gerenciamento de MongoDB,
Tipo de BD Estrutura de Principais Casos de Uso Exemplos de
NoSQL Dados Vantagens Comuns Tecnologia
flexíveis desenvolvimento conteúdo, perfis Couchbase.
(JSON/BSON). rápido, consultas de usuário,
ricas. catálogos.
Chave-Valor Pares de chave e Extrema Caching, Redis, Amazon
valor. simplicidade, gerenciamento de DynamoDB.
latência muito sessões,
baixa, alta leaderboards.
performance.
Colunar Famílias de Alta escalabilidade IoT, sistemas de Apache
colunas; dados de escrita, ideal log, séries Cassandra,
otimizados para para cargas de temporais, Big HBase.
leitura de colunas. trabalho analíticas. Data.
Grafo Nós, arestas e Otimizado para Redes sociais, Neo4j, Amazon
propriedades. consultas de detecção de Neptune.
relacionamento, fraudes, sistemas
navegação rápida de recomendação.
em dados
conectados.
Módulo 7: Um Guia Prático para Bancos de Dados
NoSQL Populares
Depois de entender as diferenças conceituais entre os tipos de bancos de dados NoSQL, este
módulo oferece um mergulho prático em quatro das tecnologias mais populares do mercado.
Cada uma delas foi projetada para resolver um conjunto específico de problemas que os
bancos de dados relacionais tradicionais não abordam com a mesma eficiência, fornecendo um
framework para escolher a ferramenta certa para cada desafio.

7.1 MongoDB: A Flexibilidade dos Documentos


O MongoDB é o banco de dados de documentos mais popular e um excelente ponto de partida
para o mundo NoSQL. Ele foi projetado para resolver o problema do esquema rígido dos
bancos de dados relacionais.
● Modelo de Dados: O MongoDB armazena dados em documentos BSON (Binary JSON),
que são estruturas de dados flexíveis e hierárquicas, muito parecidas com objetos em
linguagens de programação como JavaScript. Isso permite que os desenvolvedores
armazenem dados complexos e aninhados em um único registro, sem a necessidade de
JOINs.
● Esquema Flexível: Uma das maiores vantagens do MongoDB é seu esquema dinâmico.
Documentos dentro da mesma "coleção" (o equivalente a uma tabela) não precisam ter a
mesma estrutura. Isso é ideal para aplicações cujos requisitos de dados evoluem
rapidamente, alinhando-se perfeitamente com metodologias de desenvolvimento ágil.
● Casos de Uso Comuns: É amplamente utilizado em sistemas de gerenciamento de
conteúdo (CMS), catálogos de produtos de e-commerce com atributos variados, perfis de
usuário, aplicações móveis e análise de dados em tempo real.
● Escalabilidade: O MongoDB escala horizontalmente através de um processo chamado
sharding, que distribui os dados por múltiplos servidores, permitindo que ele lide com
grandes volumes de dados e altas cargas de tráfego.

7.2 Redis: A Velocidade em Memória


Redis (Remote Dictionary Server) é um banco de dados chave-valor conhecido por sua
performance excepcional. Ele foi projetado para resolver o problema da latência, ou seja, o
tempo de resposta para acessar os dados.
● Modelo de Dados: Embora seja fundamentalmente um banco de dados chave-valor, o
Redis se destaca por suportar uma variedade de estruturas de dados como valores,
incluindo strings, listas, hashes, conjuntos (sets) e conjuntos ordenados (sorted sets).
Isso o torna muito mais versátil do que um simples cache.
● Armazenamento em Memória: A principal característica do Redis é que ele armazena a
maior parte de seus dados na memória RAM do servidor, em vez de no disco. O acesso
à RAM é ordens de magnitude mais rápido do que o acesso ao disco, o que resulta em
latências de sub-milissegundos para operações de leitura e escrita.
● Casos de Uso Comuns: Devido à sua velocidade, o Redis é a escolha ideal para:
○ Caching: Armazenar resultados de consultas de banco de dados ou respostas de
API para acelerar o acesso futuro.
○ Gerenciamento de Sessões: Armazenar dados de sessão de usuários em
aplicações web.
○ Leaderboards em Tempo Real: Manter rankings de jogos ou competições
atualizados instantaneamente.
○ Filas de Mensagens e Pub/Sub: Facilitar a comunicação assíncrona entre
diferentes partes de uma aplicação (microserviços).

7.3 Apache Cassandra: A Escalabilidade Colunar


Apache Cassandra é um banco de dados colunar distribuído, projetado desde o início para
escalabilidade massiva e alta disponibilidade, resolvendo o desafio de lidar com enormes
volumes de dados de escrita.
● Modelo de Dados: Cassandra organiza os dados em um modelo colunar, o que o torna
extremamente eficiente para cargas de trabalho com muitas escritas e consultas que
leem colunas específicas em vez de linhas inteiras.
● Arquitetura Distribuída e sem Mestre (Masterless): Diferente de muitos sistemas,
Cassandra não tem um servidor mestre central, o que elimina qualquer ponto único de
falha. Todos os nós no cluster são iguais. Os dados são replicados automaticamente por
vários nós (e até mesmo por vários data centers), garantindo que o sistema permaneça
operacional mesmo que alguns servidores falhem. Isso proporciona altíssima
disponibilidade e tolerância a falhas.
● Casos de Uso Comuns: É a escolha preferida para aplicações que geram terabytes de
novos dados continuamente, como:
○ Aplicações de IoT: Coleta de dados de milhões de sensores.
○ Sistemas de Log e Monitoramento: Armazenamento de logs de eventos e
métricas.
○ Plataformas de Mensagens e Redes Sociais: Gerenciamento de feeds de
atividades e mensagens.
○ Análise de Séries Temporais: Rastreamento de eventos ao longo do tempo.

7.4 Neo4j: O Poder das Conexões


Neo4j é o banco de dados de grafo líder de mercado, projetado para resolver um problema que
é notoriamente complexo e lento em bancos de dados relacionais: a consulta de
relacionamentos profundos e complexos.
● Modelo de Dados: Neo4j utiliza um modelo de grafo nativo, composto por Nós (que
representam entidades como Pessoa ou Produto) e Relacionamentos (que representam
as conexões entre os nós, como AMIGO_DE ou COMPROU). Tanto os nós quanto os
relacionamentos podem ter propriedades.
● Desempenho em Relacionamentos: A grande vantagem do Neo4j é que os
relacionamentos são armazenados como elementos de primeira classe. Isso permite
atravessar milhões de conexões por segundo com desempenho constante, sem a
necessidade de JOINs caros, que se tornam impraticáveis em bancos de dados
relacionais à medida que a profundidade da consulta aumenta (ex: "encontrar os amigos
dos amigos dos meus amigos que compraram o mesmo produto").
● Linguagem de Consulta Cypher: Neo4j usa uma linguagem de consulta declarativa e
visual chamada Cypher, projetada para expressar padrões de grafo de forma intuitiva.
● Casos de Uso Comuns: É ideal para cenários onde os relacionamentos entre os dados
são tão importantes quanto os próprios dados:
○ Detecção de Fraude: Identificação de anéis de fraude complexos e padrões de
conluio em tempo real.
○ Sistemas de Recomendação: Fornecimento de recomendações personalizadas
em tempo real (ex: "clientes que compraram isso também compraram aquilo").
○ Redes Sociais e Gerenciamento de Identidade: Mapeamento de redes de
contatos e controle de acesso.
○ Grafos de Conhecimento e IA Generativa: Organização de informações
complexas para fornecer contexto a modelos de IA.

Módulo 8: Introdução à Administração de Bancos de


Dados (DBA)
A existência de um banco de dados robusto e performático não acontece por acaso. Por trás de
sistemas de dados eficientes e seguros, há um profissional ou uma equipe dedicada à sua
gestão: o Administrador de Banco de Dados (DBA). Este módulo final oferece uma visão
geral sobre o papel crucial do DBA e suas responsabilidades fundamentais para a saúde e a
continuidade de uma organização baseada em dados.

8.1 O Guardião dos Dados: O Papel e as Responsabilidades de um


DBA
Um Administrador de Banco de Dados (DBA) é o profissional responsável por manter, proteger,
operar e garantir o desempenho dos sistemas de gerenciamento de banco de dados (SGBD)
de uma organização. Eles são os guardiões dos dados, garantindo que as informações estejam
seguras, organizadas e acessíveis quando necessário.
As principais responsabilidades de um DBA abrangem todo o ciclo de vida do banco de dados
e incluem:
● Design e Implementação: Colaborar com desenvolvedores e arquitetos para projetar e
implementar a estrutura do banco de dados, garantindo que ela atenda aos requisitos de
negócio e seja escalável.
● Instalação, Configuração e Atualização: Instalar e configurar o software do SGBD,
aplicar patches e realizar atualizações para manter o sistema seguro e com as
funcionalidades mais recentes.
● Monitoramento de Desempenho e Otimização (Tuning): Monitorar continuamente o
desempenho do banco de dados, identificar gargalos (como consultas lentas) e realizar
ajustes (tuning), como a criação de índices, para garantir que o sistema responda
rapidamente.
● Segurança dos Dados: Implementar e gerenciar políticas de segurança para proteger
os dados contra acesso não autorizado, violações e outras ameaças cibernéticas.
● Backup e Recuperação: Desenvolver e executar estratégias de backup para criar
cópias regulares dos dados e garantir que eles possam ser restaurados rapidamente em
caso de falha ou desastre.
● Gerenciamento de Acesso e Permissões: Controlar quem pode acessar o banco de
dados e que nível de permissão cada usuário tem (leitura, escrita, etc.), geralmente
através de um sistema de controle de acesso baseado em função (RBAC).
● Solução de Problemas (Troubleshooting): Diagnosticar e resolver problemas que
possam surgir no banco de dados, como falhas, corrupção de dados ou degradação de
desempenho.
Com a ascensão da computação em nuvem, o papel do DBA tem evoluído. Muitas tarefas de
gerenciamento de infraestrutura (como instalação e aplicação de patches) são agora
automatizadas ou gerenciadas pelos provedores de nuvem (como AWS e Azure). Isso está
transformando o DBA de um administrador de infraestrutura para um estrategista de dados,
liberando-o para se concentrar em tarefas de maior valor, como análise de dados, otimização
de custos na nuvem, cibersegurança e colaboração direta com as equipes de negócio para
extrair o máximo valor dos dados da organização.

8.2 Pilares da Administração: Segurança, Backup e Recuperação


Entre as muitas responsabilidades de um DBA, três áreas são absolutamente críticas para a
continuidade e a resiliência do negócio: segurança, backup e recuperação.

Segurança

Proteger os dados é uma das principais prioridades de um DBA. Isso envolve uma abordagem
em camadas:
● Controle de Acesso: A medida de segurança mais fundamental é garantir que apenas
usuários autorizados possam acessar os dados. O Controle de Acesso Baseado em
Função (RBAC) é uma prática comum, onde as permissões são concedidas com base
na função do usuário na organização, seguindo o princípio do menor privilégio (conceder
apenas o acesso estritamente necessário para o trabalho).
● Criptografia: Os dados devem ser criptografados tanto em trânsito (enquanto viajam
pela rede) quanto em repouso (enquanto armazenados no disco) para protegê-los contra
interceptação ou roubo físico dos servidores.
● Auditoria e Monitoramento: Os DBAs configuram sistemas para registrar e monitorar as
atividades no banco de dados. Isso ajuda a detectar atividades suspeitas em tempo real
e a investigar violações de segurança após o ocorrido.

Backup

Um backup é uma cópia dos dados do banco de dados, armazenada separadamente, que pode
ser usada para restaurar o sistema em caso de perda de dados. A perda de dados pode
ocorrer por várias razões: falha de hardware, erro humano, corrupção de software ou um
ataque malicioso. A estratégia de backup define com que frequência e de que forma os dados
são copiados. As estratégias mais comuns são:
● Backup Completo (Full Backup): Copia todos os dados do banco de dados. É o mais
simples de restaurar, mas consome mais tempo e espaço.
● Backup Incremental (Incremental Backup): Copia apenas os dados que foram
alterados desde o último backup (seja ele completo ou incremental). É rápido e
economiza espaço, mas a restauração pode ser mais complexa.
● Backup Diferencial (Differential Backup): Copia os dados que foram alterados desde o
último backup completo. A restauração é mais simples que a incremental, pois requer
apenas o último backup completo e o último diferencial.

Recuperação

A recuperação é o processo de restaurar o banco de dados a um estado funcional e


consistente a partir dos backups após um incidente. Ter backups não é suficiente; é essencial
ter um plano de recuperação bem definido e testado. Este plano é parte de uma estratégia
maior chamada Plano de Recuperação de Desastres (DRP - Disaster Recovery Plan), que
documenta os procedimentos para retomar as operações de TI após um desastre. Os DBAs
são responsáveis por testar regularmente os procedimentos de recuperação para garantir que
os backups sejam válidos e que a restauração possa ser concluída dentro do tempo esperado
pelo negócio.
Em suma, o trabalho de um DBA é essencial para garantir que o ativo de dados de uma
organização seja não apenas funcional e performático, mas também seguro, protegido e
resiliente a falhas.

Works cited

1. Difference Between Data and Information - BYJU'S,


[Link] 2. Data vs Information vs
Knowledge: What Are The Differences? - Tettra,
[Link] 3. 10 Difference between Data and
Information - Hero Vired,
[Link] 4. 5
Important Difference Between Data And Information Explained! - Unstop,
[Link] 5. DBMS Tutorial – Learn
Database Management System - GeeksforGeeks, [Link]
6. Difference Between Data and Information - [Link],
[Link] 7. What Is a
Database? | Oracle, [Link] 8. What is a
Database? - Cloud Databases Explained - AWS, [Link] 9.
What is a database: A beginner's guide | [Updated 2025] - Stackby,
[Link] 10. [Link],
[Link]
be,help%20us%20make%20some%20decisions. 11. Database basics - Microsoft Support,
[Link]
7c204 12. Relational Database Analogy (Information Concept) - RelationalDBDesign,
[Link] 13.
Structured data, SQL, and relational databases - Launch School,
[Link] 14. What is a Database? - Uses, How it
Works & Components | Nutanix, [Link] 15. Databases in Web
Application Development | Ramotion Agency,
[Link] 16. What Is a Database
Application? A Complete Guide - Tadabase,
[Link] 17. What is a Database? | IBM,
[Link] 18. Database - Wikipedia,
[Link] 19. Database Basics: Concepts & Examples for
Beginners - [Link], [Link] 20. Database design basics -
Microsoft Support,
[Link]
d4f9c9ca1f5 21. Tables and Table Clusters - Oracle Help Center,
[Link]
html 22. Primary Key vs. Foreign Key: 9 Important Differences - Astera Software,
[Link] 23. Difference between Primary
Key and Foreign Key - GeeksforGeeks,
[Link] 24.
Mastering Primary Key and Foreign Key in Relational Databases | by DataWithSantosh,
[Link]
abases-0f57c5cc49e9 25. Differences between a Primary Key and a Foreign Key | Secoda,
[Link] 26.
Mastering Primary and Foreign Keys in SQL for Data Integrity - OWOX,
[Link] 27. SQL FOREIGN KEY
Constraint - GeeksforGeeks, [Link]
28. Can someone explain Foreign and Primary keys in the simplest way possible? Many thanks!
- Reddit,
[Link]
_and_primary_keys_in/ 29. sql - Difference between one-to-many and many-to-one relationship
- Stack Overflow,
[Link]
-relationship 30. How to Create an ER Diagram in 7 Steps| A Detailed Guide,
[Link] 31. Learn One-to-One and
Many-to-Many | Relational Database - Codefinity,
[Link]
5d-ad0e-5f76d28ca0af/7992cacf-81b2-4169-b8e9-6d2e322daf07 32. One-To-One and
Many-to-Many Database Relationships - The Support Group Blog,
[Link]
-many-relationships 33. Many to many, one to many, many to one : r/SQL - Reddit,
[Link]
34. inJPA : One-To-Many, Many-To-One And Many-To-Many Relationships - Sohail Shah,
[Link]
s-74ba20f7d3b1 35. Logical vs Physical Data Model - Difference in Data Modeling - AWS,
[Link] 36.
Data Modeling Explained: Conceptual, Physical, Logical - Couchbase,
[Link] 37. Is my definition
of a "data model" vs "database schema" correct? - Reddit,
[Link]
atabase/ 38. [Link],
[Link]
20the%20main%20difference,structure%20specific%20to%20a%20DBMS. 39. How to Create
an Entity Relationship Diagram (ERD) - Bridging the Gap,
[Link] 40. Entity Relationship
Diagram (ERD) - What is an ER Diagram? - SmartDraw,
[Link] 41. What Is an Entity Relationship
Diagram (ERD)? - Creately, [Link] 42. How to Draw
Entity Relationship Diagrams (ERDs) - Gliffy,
[Link] 43. Entity Relationship
Diagram (ERD) Tutorial - Part 1 - YouTube, [Link] 44.
Database Normalization – Normal Forms 1nf 2nf 3nf Table Examples - freeCodeCamp,
[Link] 45.
Database Normalization: 1NF, 2NF, 3NF & BCNF Examples - DigitalOcean,
[Link] 46. Database
Normalization: A Step-By-Step-Guide With Examples,
[Link] 47. Introduction to Data Normalization:
Database Design 101, [Link] 48. Learn Database
Normalization Fast | 1NF, 2NF, 3NF Explained Simply (2025) - YouTube,
[Link] 49. SQL DDL: The Definitive Guide on Data
Definition Language - DbVisualizer,
[Link] 50. DDL
Statements in SQL: Create, Alter, and Drop Explained - Imarticus Learning,
[Link] 51. A Guide to the SQL CREATE TABLE Statement -
DbVisualizer, [Link] 52. SQL
ALTER TABLE - GeeksforGeeks, [Link]
53. SQL CRUD: CREATE, READ, UPDATE, DELETE, DROP, and ALTER in SQL - DataLemur,
[Link] 54. SQL DDL Commands |
CREATE, ALTER, DROP | #SQL Course 5 - YouTube,
[Link] 55. Chapter 16 SQL Data Manipulation
Language – Database Design - BC Open Textbooks,
[Link] 56. A complete guide to DML and
how it works in dbt | dbt Labs, [Link] 57. SQL Commands
(DDL, DML, DQL, DCL, TCL) with Examples - Great Learning,
[Link] 58. SQL Data Manipulation Language
(DML) Operations: Insert, Update, Delete - DZone,
[Link] 59. SQL DML
Commands: Mastering Data Manipulation in SQL - DataCamp,
[Link] 60.
LS-10EN. SQL DML. INSERT, UPDATE, DELETE, SELECT Statements Overview. - DBS,
[Link] 61. SQL SELECT Query -
GeeksforGeeks, [Link] 62. How To Use GROUP
BY and ORDER BY in SQL: A Complete Guide | DigitalOcean,
[Link] 63.
SQL GROUP BY - GeeksforGeeks, [Link] 64.
Everything You Need to Know When Assessing Transactions and ACID Properties Skills,
[Link]
65. An Overview of Transactions and ACID Properties for Relational Databases with AlgoJS,
[Link] 66.
ACID Properties in DBMS - GeeksforGeeks,
[Link] 67. [Link],
[Link]
%20that,operations%20are%20called%20transactional%20systems. 68. ACID Properties of a
Database: The Key to Strong Data Consistency - YugabyteDB,
[Link] 69. What Are ACID Transactions? A
Complete Guide for Beginners - DataCamp, [Link]
70. Indexing Essentials in SQL - Atlassian,
[Link] 71. The impact of database indexing on
query execution time | by Maryam Noor | Medium,
[Link]
0af4370a4d 72. Boost Query Performance with Database Indexing: Expert Strategies -
Acceldata,
[Link] 73.
What is a database index and why is it important? - Secoda,
[Link] 74. How does
indexing improve query performance? - Milvus,
[Link] 75.
Understanding SQL vs NoSQL Databases - MongoDB,
[Link] 76. What
Is NoSQL? NoSQL Databases Explained - MongoDB,
[Link] 77. SQL vs NoSQL
Databases: Key Differences and Practical Insights - DataCamp,
[Link] 78. SQL vs. NoSQL: The Differences
Explained + When to Use Each - Coursera, [Link] 79.
SQL vs. NoSQL Today: Databases, Differences & When To Use Which | Splunk,
[Link] 80. SQL vs. NoSQL Databases:
What's the Difference? - IBM, [Link] 81. SQL vs. NoSQL
Explained (in 4 Minutes) - YouTube, [Link] 82.
Relational vs Nonrelational Databases - Difference Between,
[Link]
es/ 83. What Is a NoSQL Database? | IBM, [Link]
84. Why Use MongoDB And When To Use It?,
[Link] 85. Types of
NoSQL Databases - GeeksforGeeks,
[Link] 86. Types of NoSQL databases
- AWS Documentation,
[Link]
[Link] 87. Non-relational data and NoSQL - Azure Architecture Center - Microsoft
Learn,
[Link] 88.
The Top 10 Real-World MongoDB Use Cases You Should Know in 2024,
[Link] 89. What Is MongoDB? Key Concepts, Use
Cases, and Best Practices - DataCamp, [Link] 90.
What are common use cases for MongoDB? - Milvus,
[Link] 91. What is Redis
Explained? | IBM, [Link] 92. 14 Redis Use Cases Every
Software Engineer Should Know (with [Link] Examples),
[Link]
w-with-node-js-examples-c30084087da6 93. Redis Cache and its use cases for Modern
Application,
[Link] 94.
When to and When Not to Use Cassandra - System Design - GeeksforGeeks,
[Link]
sandra/ 95. Top 10 Apache Cassandra Use Cases: When It's the Right Choice (and When It's
Not), [Link] 96. What Is Cassandra?
| IBM, [Link] 97. Case Studies - Apache Cassandra,
[Link] 98. Neo4j AuraDB: Fully Managed Graph
Database, [Link] 99. Graph Database Use Cases & Solutions -
Neo4j, [Link] 100. Customer Stories - Graph Database & Analytics -
Neo4j, [Link] 101. What Does a Database Administrator Do? Key
Responsibilities - University of the Potomac,
[Link] 102. What is a database
administrator (DBA)? - Oracle, [Link] 103. What Does
a Database Administrator Do? - CompTIA,
[Link] 104. Database
Administrator (DBA) Roles and Responsibilities in the Big Data Age,
[Link] 105. DBA Full Form - Database
Administrator - GeeksforGeeks, [Link] 106. What
Are the Responsibilities of Backup Admin? | Storware BLOG,
[Link]

Você também pode gostar