Abstração de Dados
- Independência de Dados" A["Nível de Visão
(o que cada usuário vê)
← visões do usuário"] B["Nível Lógico
(tabelas + relações)
← modelo geral dos dados"] C["Nível Físico
(discos, blocos, índices)
← como é guardado na máquina"] C -->|Independência Física| B B -->|Independência Lógica| A end
Objetivos
- Compreender o conceito de abstração de dados em SGBD.
- Explorar os três níveis de abstração: físico, lógico e de visão.
- Entender como esses níveis facilitam o uso e gerenciamento de bancos de dados.
Por que a Abstração é Importante?
Em sistemas de banco de dados, a abstração permite que usuários e desenvolvedores interajam com os dados sem precisar conhecer os detalhes técnicos internos. Isso simplifica o trabalho e aumenta a segurança, pois cada nível oculta complexidades desnecessárias.
Um Sistema Gerenciador de Banco de Dados (SGBD) oferece três níveis de abstração para organizar essa interação:
- Nível Físico: Como os dados são armazenados fisicamente.
- Nível Lógico (ou Conceitual): Quais dados existem e suas relações.
- Nível de Visão: O que cada usuário vê, personalizado e seguro.
Nível Físico
Este é o nível mais baixo e técnico. Ele descreve exatamente como os dados são armazenados no hardware — em discos, memória ou outros dispositivos.
Exemplo: Imagine um registro de cliente armazenado em um bloco de 512 bytes no disco rígido. Detalhes como endereços de memória, tamanhos de blocos e algoritmos de compressão são tratados aqui. Usuários comuns não precisam se preocupar com isso; é responsabilidade dos administradores de sistema.
Nível Lógico (Conceitual)
O nível intermediário define quais dados estão no banco e como se relacionam, sem entrar em detalhes físicos.
Exemplo: Usando uma analogia com programação, pense em uma classe Cliente:
class Cliente {
String nome;
float salario;
String cidade;
}
Aqui, descrevemos tabelas, índices, relacionamentos e restrições. É o nível usado por desenvolvedores para modelar o banco de dados.
Nível de Visão
O nível mais alto oferece uma visão personalizada dos dados para cada usuário ou aplicação. Ele restringe o acesso, mostrando apenas o necessário.
Exemplo 1: Visão para Funcionários do RH**
Um funcionário de vendas vê apenas dados de clientes e pedidos, enquanto um gerente acessa relatórios financeiros. Isso garante segurança e simplicidade — ninguém vê dados irrelevantes ou confidenciais.
-- Nível Lógico (tabelas reais)
CREATE TABLE funcionarios (
id SERIAL PRIMARY KEY,
nome VARCHAR(100),
salario DECIMAL(10,2),
departamento VARCHAR(50),
data_contratacao DATE,
cpf VARCHAR(14) UNIQUE,
endereco_privado TEXT
);
-- Nível de Visão: O que um analista do RH vê
CREATE VIEW visao_rh AS
SELECT
id,
nome,
departamento,
data_contratacao,
CASE
WHEN salario > 10000 THEN 'Faixa Alta'
WHEN salario > 5000 THEN 'Faixa Média'
ELSE 'Faixa Básica'
END AS faixa_salarial,
EXTRACT(YEAR FROM AGE(CURRENT_DATE, data_contratacao)) AS anos_empresa
FROM funcionarios
WHERE data_contratacao >= '2020-01-01';
-- O analista do RH usa apenas:
SELECT * FROM visao_rh WHERE departamento = 'TI';
# No código do dashboard, o desenvolvedor só precisa:
import psycopg2
conn = psycopg2.connect("dbname=empresa user=gerente")
cur = conn.cursor()
cur.execute("SELECT * FROM visao_rh WHERE anos_empresa >= %s", ('10',))
# Não precisa saber como as 3 tabelas são unidas ou calculadas!
Benefícios da Abstração
- Simplicidade: Usuários focam no que precisam, não em detalhes técnicos.
- Segurança: Controle de acesso por nível.
- Flexibilidade: Mudanças em um nível não afetam os outros diretamente.
- Manutenibilidade: Facilita atualizações e otimizações.
Em resumo, a abstração transforma bancos de dados complexos em ferramentas acessíveis e eficientes.