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").
-- 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
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.
-- 1. Sem bancos de dados: -- - App de Delivery (iFood): Inviável, sem armazenamento de menus, pedidos ou endereços. -- - App de Banco (Nubank): Impossível gerenciar saldos, transações ou extratos. -- - Streaming (Netflix): Sem biblioteca de filmes ou recomendações personalizadas. -- 2. Setores com segurança crítica: -- - Aviação: Dados de voo errados podem causar acidentes. -- - Saúde: Privacidade de dados médicos é vital para pacientes. -- - Eleitoral: Integridade dos votos garante a democracia.
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.
-- 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) );
INSERT INTO Funcionarios (nome, cargo) VALUES ('Ana', 'Analista'); INSERT INTO books (title, price) VALUES ('SQL Guide', 60.00); SELECT title, price FROM books WHERE price > 50; -- Resultado: SQL Guide | 60.00
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.
-- 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;
ALTER TABLE Funcionarios ADD CONSTRAINT chk_cargo CHECK (cargo IN ('Analista', 'Gerente')); INSERT INTO Funcionarios (nome, cargo) VALUES ('Maria', 'Estagiário'); -- Erro: CHECK constraint violated
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.
-- 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) );
INSERT INTO customers (customer_id, name, email) VALUES (1, 'Maria', 'maria@email.com'); INSERT INTO orders (order_id, customer_id, order_date) VALUES (1, 1, '2025-07-19'); SELECT c.name, o.order_date FROM orders o JOIN customers c ON o.customer_id = c.customer_id; -- Resultado: Maria | 2025-07-19
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).
-- 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));
Para redes sociais, NoSQL (ex.: MongoDB) é ideal para dados não estruturados (posts, conexões) e escalabilidade horizontal.
Teste de Conhecimento
// Valide seus Conceitos
Atividade Prática: Tabela Logs
Insira um evento na tabela `logs` e consulte os eventos de hoje.
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?
2. O que é um SGBD?
3. Qual é uma motivação para usar um SGBD?
4. Qual é uma aplicação prática de bancos de dados?
5. Qual é uma característica dos bancos NoSQL?
RUN db_fundamentals_check; -- Quiz finalizado. Verifique suas respostas acima. -- Parabéns por consolidar os fundamentos de bancos de dados!