Fundamentos de Banco de Dados: Dados vs. Informação

// Da Matéria Bruta à Sabedoria Processada

Dados: A Matéria Prima

Dados são fatos brutos, símbolos ou valores isolados, sem contexto (ex.: "Mouse", 50.00). Informação é o resultado de processar e contextualizar esses dados (ex.: "Venda de um Mouse por 50.00 em 2025-07-19, classificada como Venda Regular").

data_analysis@db_info:~#
-- Transformando dados em informação
SELECT
  p.nome_produto AS Produto,
  t.valor_venda AS Valor,
  t.data_venda AS Data,
  CASE
    WHEN t.valor_venda > 100 THEN 'Venda de Alto Valor'
    ELSE 'Venda Regular'
  END AS TipoVenda
FROM transacoes t
JOIN produtos p ON t.id_produto = p.id_produto
WHERE t.id_transacao = 101;
-- Resultado: 'Mouse' | 50.00 | '2025-07-19' | 'Venda Regular'
          

Brainstorming em Grupo

Atividade:
1. Como nossas vidas seriam diferentes sem bancos de dados? Cite exemplos de aplicativos/serviços impactados.
2. Em quais setores a segurança de dados é mais crítica? Justifique.

Banco de Dados e SGBD

// A Biblioteca Digital e seu Bibliotecário

O que é um Banco de Dados?

Um Banco de Dados (BD) é uma coleção organizada de dados, como uma biblioteca digital que armazena informações estruturadas (ex.: clientes, produtos).

O que é um SGBD?

O SGBD é o software que gerencia o BD, atuando como um "bibliotecário" que define estruturas, manipula dados, controla acesso e otimiza operações.

sys_admin@db_console:~#
-- Criando um banco e uma tabela
CREATE DATABASE minha_empresa_db;
\c minha_empresa_db
CREATE TABLE Funcionarios (
  id_func SERIAL PRIMARY KEY,
  nome VARCHAR(100) NOT NULL,
  cargo VARCHAR(50),
  data_contratacao DATE DEFAULT CURRENT_DATE
);
-- Exemplo com livraria
CREATE DATABASE bookstore;
\c bookstore
CREATE TABLE books (
  book_id SERIAL PRIMARY KEY,
  title VARCHAR(100) NOT NULL,
  price DECIMAL(10,2)
);
          
Atividade Prática: Insira um funcionário na tabela `Funcionarios` e um livro na tabela `books`, depois consulte os livros com preço acima de 50.

Por Que Usar um SGBD?

// Vantagens para Gerenciamento Moderno

Vantagens do SGBD

  • Gerenciamento de Volume: Lida com grandes quantidades de dados eficientemente.
  • Integridade (ACID): Garante consistência e validade dos dados.
  • Concorrência: Suporta múltiplos usuários sem conflitos.
  • Segurança: Oferece permissões, autenticação e criptografia.
  • Recuperação: Permite restauração após falhas.
  • Compartilhamento: Facilita uso por múltiplas aplicações.
  • Redução de Redundância: Minimiza duplicações desnecessárias.
sql@postgres:~#
-- Exemplo de transação ACID
BEGIN;
INSERT INTO Funcionarios (nome, cargo) VALUES ('João', 'Gerente');
UPDATE Funcionarios SET data_contratacao = CURRENT_DATE WHERE nome = 'João';
COMMIT;
          
Atividade Prática: Adicione uma restrição CHECK para limitar o cargo a 'Analista' ou 'Gerente' e teste uma inserção inválida.

Aplicações no Cotidiano

// Bancos de Dados no Mundo Real

Onde Encontramos Bancos?

  • Redes Sociais: Perfis, posts, conexões.
  • E-commerce: Catálogos, pedidos, pagamentos.
  • Sistemas Bancários: Contas, transações.
  • IoT: Dados de sensores em tempo real.
  • Streaming: Bibliotecas de filmes/músicas, recomendações.
  • Saúde: Registros médicos, agendamentos.
Pense Fora da Caixa: Jogos online, sistemas de tráfego e até eleições dependem de bancos de dados!
sql@mysql:~#
-- Modelando um sistema de e-commerce
CREATE TABLE customers (
  customer_id INT PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  email VARCHAR(100) UNIQUE
);
CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  customer_id INT,
  order_date DATE,
  FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
          
Atividade Prática: Insira um cliente e um pedido, depois consulte os pedidos com o nome do cliente.

Tipos de Bancos: Relacionais e NoSQL

// Escolhas para Diferentes Desafios

Bancos Relacionais (SQL)

Usam tabelas com esquemas fixos e SQL. Ideais para dados estruturados e transações ACID (ex.: PostgreSQL, MySQL, Oracle, SQL Server).

Bancos NoSQL

Flexíveis, sem esquemas fixos, para dados não estruturados. Categorias:

  • Documento: JSON-like (ex.: MongoDB).
  • Chave-Valor: Pares simples (ex.: Redis).
  • Colunar: Para Big Data (ex.: Cassandra).
  • Grafo: Para relações complexas (ex.: Neo4j).

Teorema CAP: Bancos balanceiam consistência, disponibilidade e tolerância a partições.
mongo@db:~#
-- MongoDB (NoSQL)
db.usuarios.insertOne({
  nome: "Alice",
  email: "alice@example.com",
  telefones: ["11987654321", "21998765432"]
});
-- SQL equivalente
CREATE TABLE usuarios (id INT PRIMARY KEY, nome VARCHAR(100), email VARCHAR(100));
          
Atividade Prática: Escolha um cenário (ex.: rede social) e justifique se usaria um banco relacional ou NoSQL.

Teste de Conhecimento

// Valide seus Conceitos

Atividade Prática: Tabela Logs

Insira um evento na tabela `logs` e consulte os eventos de hoje.

sql@postgres:~#
CREATE TABLE logs (
  id SERIAL PRIMARY KEY,
  evento TEXT,
  ts TIMESTAMP DEFAULT now()
);
INSERT INTO logs (evento) VALUES ('Início da sessão de estudo');
SELECT evento, ts FROM logs WHERE DATE(ts) = CURRENT_DATE;
          

Quiz Interativo

Teste seus conhecimentos com as perguntas abaixo.

1. Qual é a principal diferença entre dados e informação?

a) Dados são processados, informação é bruta
b) Dados são brutos, informação é contextualizada
c) Dados e informação são idênticos
d) Dados são temporários, informação é permanente
Resposta Correta: b) Dados são brutos, informação é contextualizada. Dados são fatos crus, enquanto informação é o resultado de seu processamento com contexto.

2. O que é um SGBD?

a) Um conjunto de tabelas
b) Software para gerenciar bancos de dados
c) Um tipo de banco NoSQL
d) Um dispositivo de armazenamento
Resposta Correta: b) Software para gerenciar bancos de dados. O SGBD gerencia operações como criação, consulta e atualização de dados.

3. Qual é uma motivação para usar um SGBD?

a) Aumentar redundâncias
b) Garantir integridade e concorrência
c) Reduzir a segurança
d) Eliminar backups
Resposta Correta: b) Garantir integridade e concorrência. SGBDs utilizam propriedades ACID para garantir dados confiáveis e suporte a múltiplos usuários.

4. Qual é uma aplicação prática de bancos de dados?

a) Edição de vídeos
b) Gerenciamento de transações bancárias
c) Criação de gráficos
d) Programação de jogos
Resposta Correta: b) Gerenciamento de transações bancárias. Bancos de dados são essenciais para gerenciar contas, saldos e transações.

5. Qual é uma característica dos bancos NoSQL?

a) Uso exclusivo de tabelas
b) Suporte a dados não estruturados
c) Esquemas rígidos
d) Apenas para pequenos volumes
Resposta Correta: b) Suporte a dados não estruturados. Bancos NoSQL são flexíveis, ideais para dados variados e escalabilidade horizontal.
db_quiz_results:~#
RUN db_fundamentals_check;
-- Quiz finalizado. Verifique suas respostas acima.
-- Parabéns por consolidar os fundamentos de bancos de dados!