Início

Database Design for Apps

UA1 — Introdução a Banco de Dados

Banco de dados é uma coleção organizada de informações gerenciada por um SGBD. Esta UA abrange conceito, tipos (relacional, hierárquico, em rede, objeto-relacional) e linguagens SQL (DDL, DML e DCL).

O que é um banco de dados

Um banco de dados é uma coleção de informações organizadas para que possam ser facilmente acessadas, gerenciadas e atualizadas. Os dados são estruturados em tabelas compostas por:

  • Colunas (atributos): identificam a categoria do dado (ex.: nome, salário, departamento).
  • Linhas (registros): cada linha representa uma instância única desses dados.
  • Índices: estruturas que aceleram buscas, evitando varredura completa da tabela.

Os bancos de dados são indexados para facilitar a localização de informações relevantes e suportam operações de inserção, atualização, exclusão e consulta.

Um sistema gerenciador de banco de dados (SGBD) é o software que intermedia o acesso dos usuários e aplicações ao banco. Ele fornece controle de leitura/gravação, geração de relatórios e procedimentos de análise.

Abstração de dados

Para o usuário final, o banco de dados deve parecer simples — os detalhes físicos de armazenamento ficam ocultos. Essa transparência é organizada em três níveis:

NívelDescrição
Visão do usuárioO que o usuário enxerga: formulários, relatórios, consultas
Conceitual (lógico)Estrutura das tabelas, relacionamentos e restrições
FísicoComo os dados são armazenados em disco (blocos, arquivos, índices)
Guia Prático de Bancos de Dados
Conceito, abstração, tipos de BD e linguagens SQL (DDL, DML, DCL) — visão geral

Modelo relacional e projeto de banco de dados

O modelo mais usado é o relacional: tabelas se relacionam entre si por meio de chaves. Cada tabela contém informações específicas de um único conjunto de dados — misturar entidades distintas em uma mesma tabela viola o projeto correto.

Exemplo prático (clínica veterinária):

TabelaCampos principais
Pacientesid_paciente, nome, tipo
Proprietáriosid_proprietário, nome, endereço, telefone
Visitasid_visita, id_paciente, data, hora
Faturamentoid_faturamento, id_visita, id_paciente, valor, forma_pagamento

A tabela Pacientes é vinculada à Proprietários pelo id_paciente. O relacionamento permite consultas cruzadas sem duplicar dados.

Regra de ouro do projeto relacional

Cada tabela deve conter no máximo um conjunto de informações. O projeto deve ser baseado nos requisitos de negócio compreendidos antes da implementação.

Tipos de banco de dados

Relacional

Funciona como uma coleção de relações (tabelas). Cada linha representa fatos do mundo real. É fácil de criar, acessar e estender — novas categorias de dados podem ser adicionadas sem modificar os aplicativos existentes.

Hierárquico

Usa níveis de dados que seguem um padrão de árvore. Os registros são vinculados apenas à tabela imediatamente acima ou abaixo. Útil quando os dados seguem uma hierarquia rígida e só podem ser acessados por um único caminho (ex.: organograma empresarial).

Em rede

Permite que vários registros sejam vinculados ao mesmo arquivo proprietário — relação muitos para muitos. É mais flexível que o hierárquico, pois um membro pode estar vinculado a múltiplos proprietários.

Objeto-relacional

Combina o modelo relacional com recursos de orientação a objetos. Oferece:

  • Expansibilidade: novos tipos de dados definidos pelo usuário.
  • Tipos complexos: combinação de tipos existentes em estruturas compostas.
  • Herança: objetos e tabelas que herdam propriedades de outros objetos.
TipoEstruturaFlexibilidadeExemplo de uso
RelacionalTabelas planasAltaSistemas transacionais
HierárquicoÁrvore (pai → filhos)BaixaOrganograma, sistema de arquivos
Em redeGrafo (muitos para muitos)MédiaRedes de telecomunicações
Objeto-relacionalTabelas + herança/tiposMuito altaSistemas com dados complexos

Linguagens de banco de dados

O SQL (Structured Query Language) é a linguagem padrão para interação com bancos de dados relacionais. Suas instruções se dividem em três categorias:

DDL — Data Definition Language (Definição)

Define a estrutura do banco de dados: cria, altera e remove objetos.

InstruçãoFunção
CREATECria banco de dados ou tabela
ALTERAltera a estrutura de um objeto
DROPDescarta (remove) um objeto
TRUNCATERemove todos os registros de uma tabela
RENAMERenomeia um objeto

DML — Data Manipulation Language (Manipulação)

Opera sobre os dados dentro das estruturas criadas pela DDL.

InstruçãoFunção
SELECTBusca (consulta) registros
INSERTInsere novos registros
UPDATEAtualiza registros existentes
DELETEExclui registros

DCL — Data Control Language (Controle)

Gerencia permissões de acesso ao banco.

InstruçãoFunção
GRANTConcede privilégios a um usuário
REVOKERevoga privilégios concedidos

SQL na prática

DDL e DML não são linguagens separadas no dia a dia — fazem parte do mesmo SQL. Um comando CREATE TABLE (DDL) define a estrutura; um INSERT (DML) popula os dados. Já GRANT e REVOKE (DCL) controlam quem pode fazer o quê.

Práticas Modernas

  • SGBDs relacionais dominantes: PostgreSQL, MySQL e SQLite são os mais usados no desenvolvimento moderno. O PostgreSQL é considerado o mais robusto para produção; o SQLite é ideal para aplicativos locais e testes.
  • Bancos NoSQL: para dados não estruturados ou de alta escala, surgem alternativas ao modelo relacional — MongoDB (documentos), Redis (chave-valor), Cassandra (colunar wide), Neo4j (grafos). Cada um resolve um problema específico melhor que o relacional.
  • ORMs: ferramentas como Prisma, Hibernate e SQLAlchemy abstraem o SQL e mapeiam tabelas para objetos de código — reduzem erros e aceleram o desenvolvimento, mas exigem entender o SQL gerado por baixo.
  • Migrações de banco: em projetos profissionais, alterações de estrutura (DDL) são feitas por arquivos de migração versionados (ex.: Flyway, Liquibase, Prisma Migrate) — nunca manualmente em produção.
  • Chaves primárias modernas: além do INT AUTO_INCREMENT, o padrão atual usa UUIDs (v4 ou v7) ou ULIDs para identificadores únicos distribuídos — evitam colisão entre servidores e facilitam replicação.

Dicas para a Prova

  • SGBD fornece controle de leitura/gravação, relatórios e análise — não é só um “repositório de arquivos”.
  • Em uma tabela relacional: colunas = atributos; linhas = registros.
  • Banco hierárquico = dados acessíveis por um único caminho em estrutura de árvore.
  • Banco em rede = relação muitos para muitos entre registros.
  • SELECT é DML (manipulação de dados), não DDL.
  • ALTER é DDL (definição de estrutura), não DML.
  • GRANT e REVOKE são DCL (controle de acesso).
  • O modelo mais usado nos sistemas de informação modernos é o relacional.
  • O projeto do banco deve ser baseado nos requisitos de negócio levantados antes da implementação.
  • Cada tabela deve conter informações de um único conjunto de dados — misturar entidades é erro de projeto.

Referências bibliográficas desta UA

  • CÓRDOVA JÚNIOR, R. Fundamentos Computacionais. Porto Alegre: SAGAH, 2018. Cap. Banco de dados.
  • ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. São Paulo: Pearson, 2005.
  • GEREMIA, J. Tutorial de introdução a banco de dados. 2010.