Mundos
Mundo Dados

Banco de dados relacional: o que é e como funciona

Carregando avaliações… — visitas
Resposta rápida

Banco de dados relacional é um banco que organiza a informação em tabelas, formadas por linhas e colunas, e liga uma tabela à outra por meio de chaves. Você consulta e altera esses dados com SQL (Structured Query Language, a linguagem desse tipo de banco). Esse é o modelo relacional, usado em cadastros, pedidos e sistemas de empresas.

Rápido: em um banco relacional, cada assunto tem a sua tabela, e uma coluna de ligação (a chave) conecta as tabelas. Você escreve consultas em SQL para juntar os dados quando precisar.

Ler artigo completo

Versão de demonstração: os dados deste texto ainda passam por revisão de fatos.

Neste artigo
  1. O que é um banco de dados relacional
  2. Como funciona: um exemplo com duas tabelas
  3. Banco de dados SQL e banco de dados relacional
  4. Quando um banco relacional faz sentido
  5. Limites do modelo
  6. Erros comuns
  7. Próximo passo

O que é um banco de dados relacional

O manual do PostgreSQL define o PostgreSQL como um sistema de gerenciamento de banco de dados relacional. Isso quer dizer que ele gerencia dados guardados em relações. O mesmo manual explica que relação é essencialmente um termo matemático para tabela.

Um SGBD (sistema gerenciador de banco de dados) é o programa que guarda, protege e entrega os dados. Se você ainda não viu o conceito geral, comece pelo guia de banco de dados e volte aqui.

O modelo relacional trabalha com poucas peças:

  • Tabela: um conjunto nomeado de linhas, como a tabela de clientes.
  • Linha: um registro, como um cliente específico.
  • Coluna: um campo com tipo definido, como nome, data ou valor.
  • Chave primária: a coluna que identifica cada linha de forma única.
  • Chave estrangeira: a coluna que aponta para a chave primária de outra tabela.

Segundo o manual do PostgreSQL, todas as linhas de uma tabela têm o mesmo conjunto de colunas, e cada coluna é de um tipo de dado específico. É isso que dá ordem ao modelo: você sabe de antemão que campos cada registro terá.

Chave primária e chave estrangeira

A chave primária indica que uma coluna, ou um grupo de colunas, pode servir de identificador único das linhas. Os valores precisam ser únicos e não podem ficar vazios. Cada tabela tem no máximo uma.

A chave estrangeira faz o oposto: ela exige que os valores de uma coluna existam em uma linha de outra tabela. O manual chama isso de integridade referencial. Na prática, o banco recusa um pedido que cite um cliente inexistente.

Como funciona: um exemplo com duas tabelas

Considere uma loja pequena. Em vez de repetir o nome do cliente em cada pedido, você cria duas tabelas. A tabela clientes guarda quem é cada pessoa. A tabela pedidos guarda o código do cliente e o valor.

Tabela clientes:

id nome
1 Ana Souza
2 Bruno Lima

Tabela pedidos:

id cliente_id valor
10 1 120.00
11 1 45.50
12 2 80.00

A coluna id de clientes é a chave primária. A coluna cliente_id de pedidos é a chave estrangeira: ela guarda o id do cliente. Se o nome da Ana mudar, você altera uma linha só, e todos os pedidos dela acompanham.

Para criar essas tabelas, o SQL abaixo declara a FOREIGN KEY no fim da definição. Essa forma de declarar chave primária e chave estrangeira segue os manuais do PostgreSQL e do MySQL.

CREATE TABLE clientes (
  id INTEGER PRIMARY KEY,
  nome VARCHAR(100)
);

CREATE TABLE pedidos (
  id INTEGER PRIMARY KEY,
  cliente_id INTEGER,
  valor NUMERIC(10,2),
  FOREIGN KEY (cliente_id) REFERENCES clientes (id)
);

Para juntar os dados, você usa um JOIN. O manual do PostgreSQL descreve essas consultas como as que combinam linhas de uma tabela com linhas de outra, pareando as que têm valores iguais.

SELECT clientes.nome, pedidos.valor
FROM pedidos JOIN clientes ON pedidos.cliente_id = clientes.id;

A página sobre SQL explica os grupos de comandos. Aqui, o que importa é a ideia: os dados ficam separados e a chave os reúne na hora da consulta. Para pedir o nome de cada cliente ao lado do valor do pedido, o JOIN acima faz esse pareamento.

Dois cuidados de dialeto:

  • No MySQL, o manual diz que tabela pai e tabela filha precisam usar o mesmo mecanismo de armazenamento. Nos exemplos do manual, esse mecanismo é o InnoDB, então confira na sua instalação.
  • No SQLite, a documentação oficial diz que as chaves estrangeiras vêm desligadas por padrão e precisam ser ativadas em cada conexão com PRAGMA foreign_keys = ON;.

Banco de dados SQL e banco de dados relacional

Quando alguém fala em banco de dados SQL, em banco de dados em SQL ou em banco de dados e SQL, quase sempre se refere ao banco relacional. A razão é simples: o SQL é a linguagem desses bancos. O manual do PostgreSQL diz que o SQL é a linguagem que ele e a maior parte dos outros bancos relacionais usam como linguagem de consulta.

Os termos não são idênticos. Relacional descreve como os dados são organizados. SQL é a linguagem que você escreve para pedir e alterar esses dados. Quer entender a linguagem em si? Veja o guia sobre o que é SQL.

Os sistemas relacionais mais citados em tutoriais são o PostgreSQL, o MySQL e o SQLite. Os três usam tabelas e SQL, com pequenas diferenças de sintaxe.

Quando um banco relacional faz sentido

O modelo costuma servir bem quando:

  • seus dados cabem em tabelas com colunas definidas, como cadastros, estoques e pedidos;
  • as informações se relacionam entre si, como cliente e pedido, aluno e curso;
  • você precisa de regras que impeçam dados inconsistentes, como a chave estrangeira;
  • um conjunto de alterações precisa acontecer junto ou não acontecer.

O último ponto tem base em transações. O manual do PostgreSQL explica que uma transação agrupa passos em uma operação de tudo ou nada: se algo falha no meio, nenhum passo altera o banco. Uma transferência entre contas, que tira de uma e soma na outra, é o exemplo clássico.

Limites do modelo

O banco relacional não resolve todos os casos. Alguns limites aparecem na prática:

  • Estrutura fixa: mudar as colunas de uma tabela exige alterar a tabela, o que pede planejamento.
  • Dados sem formato definido: textos longos, arquivos e informações que mudam de forma a cada registro podem pedir outro tipo de banco. A classificação por tipos de bancos de dados é tema de outro guia do silo.
  • Consultas com junções demais: quanto mais tabelas você junta, mais cuidado a consulta pede.

Esses pontos são cuidados gerais de projeto, não uma regra. Cada projeto pesa o que importa mais: consistência, flexibilidade ou facilidade de começar.

Erros comuns

  • Repetir o mesmo dado em cada tabela, em vez de guardar uma vez e ligar por chave.
  • Esquecer de declarar a chave estrangeira e acabar com pedidos apontando para clientes que não existem.
  • Usar um nome ou um e-mail como chave primária, valores que podem mudar. Um código numérico costuma ser mais estável.
  • No SQLite, esquecer de ativar PRAGMA foreign_keys = ON; e achar que o banco está validando as ligações.
  • Confundir banco de dados com o programa que o gerencia. O banco guarda os dados, e o SGBD é o sistema que os administra.

Próximo passo

Para seguir neste assunto, a resposta sobre a linguagem SQL é a continuação natural deste texto. Os demais guias ficam na resposta do silo de banco de dados, e outros temas do MundoBla começam na resposta da página inicial.

Para praticar, escolha um banco simples, como o SQLite, e um cliente gráfico como o DBeaver, que mostra as tabelas e as chaves na tela. Crie as duas tabelas do exemplo, insira três linhas e rode o JOIN.

Fonte: manuais oficiais do PostgreSQL, do MySQL e do SQLite, listados em Fontes. Verificado em 28 de outubro de 2026.

Perguntas frequentes

O que é um banco de dados relacional?

Banco de dados relacional é um banco que guarda a informação em tabelas ligadas entre si por chaves. Cada tabela tem linhas e colunas. Você consulta os dados com SQL, a linguagem desse tipo de banco, e cruza tabelas sem repetir o mesmo dado em todo lugar.

O que significa relacional?

Relacional vem de relação, que é o termo matemático para tabela. O manual do PostgreSQL diz que relation é essencialmente um termo matemático para table. O nome não fala de ligação entre tabelas, mas de como o modelo organiza os dados: em tabelas com colunas fixas.

O que é uma tabela em banco de dados?

Tabela é um conjunto nomeado de linhas. Cada linha tem as mesmas colunas, e cada coluna guarda um tipo de dado, como texto, número ou data. Uma tabela de clientes, por exemplo, tem uma linha por cliente e colunas como código, nome e e-mail.

O que é chave primária?

Chave primária é a coluna, ou o grupo de colunas, que identifica cada linha da tabela de forma única. Os valores não podem se repetir nem ficar vazios. Uma tabela tem no máximo uma chave primária, e ela costuma ser um código numérico.

O que é chave estrangeira?

Chave estrangeira é uma coluna que aponta para a chave primária de outra tabela. Ela obriga os valores a existirem na tabela de origem. Assim, um pedido só pode citar um cliente que está cadastrado, e o banco recusa o registro que não bate.

Como criar um banco de dados relacional?

Você instala um sistema gerenciador de banco de dados (SGBD) relacional, como PostgreSQL, MySQL ou SQLite, cria o banco e escreve os comandos CREATE TABLE para definir tabelas e chaves. Para começar sem instalar nada, o SQLite é a opção mais simples, e um cliente como o DBeaver ajuda a ver as tabelas.

Preciso saber SQL para usar um banco relacional?

Para criar tabelas e consultar dados direto no banco, sim, é preciso o básico de SQL. Sistemas prontos, como um site em WordPress, usam o banco por baixo e dispensam o SQL no dia a dia. A página sobre SQL mostra os grupos de comandos.

Como ligar duas tabelas?

Você coloca na segunda tabela uma coluna que guarda a chave primária da primeira e a declara como chave estrangeira. Na consulta, usa JOIN para combinar as linhas em que os valores coincidem. O manual do PostgreSQL chama essas consultas de join queries.

Como saber se meu projeto precisa de um banco relacional?

Pergunte se seus dados cabem em tabelas com colunas definidas e se eles se relacionam, como clientes, pedidos e produtos. Se a conclusão for sim, o modelo relacional costuma servir. Se os dados mudam de formato a cada registro, vale comparar com outros tipos de banco antes de decidir.

É preciso instalar algum programa para praticar?

Não necessariamente. Você pode praticar em um editor de SQLite no navegador, sem instalar nada. Quando quiser um banco no seu computador, instale o PostgreSQL ou o MySQL pelo site oficial de cada um e use um cliente gráfico para ver as tabelas.

Banco de dados SQL e banco de dados relacional são a mesma coisa?

Na prática, as pessoas usam os dois nomes para o mesmo tipo de banco. Relacional descreve como os dados são organizados, em tabelas. SQL é a linguagem usada para consultá-los. Por isso se diz banco SQL para o banco relacional, embora SQL seja só a linguagem.

Qual a diferença entre banco relacional e NoSQL?

O relacional guarda dados em tabelas com colunas definidas e usa SQL. NoSQL é um nome amplo para bancos que seguem outros modelos, como documentos ou chave e valor. Nenhum serve para todo caso: a escolha depende do formato dos dados e de como você vai consultá-los.

PostgreSQL, MySQL e SQLite são bancos relacionais?

Os três guardam dados em tabelas e usam SQL, então seguem o modelo relacional. Eles diferem no jeito de funcionar: PostgreSQL e MySQL rodam como servidor, e o SQLite fica dentro da própria aplicação, em um arquivo. A escolha depende do tamanho e do uso do projeto.

O que acontece se eu apagar uma linha que outra tabela usa?

Com chave estrangeira ativa, o banco impede a exclusão ou aplica a regra que você definiu, como apagar também as linhas ligadas. Sem chave estrangeira, ficam registros órfãos, que apontam para um dado que não existe mais. Por isso vale declarar a chave.

Por que o SQLite às vezes aceita dado que não bate com a chave estrangeira?

No SQLite, as chaves estrangeiras vêm desligadas por padrão, por compatibilidade, e cada conexão precisa ativá-las com PRAGMA foreign_keys = ON. Se você esquecer esse comando, o banco aceita linhas que apontam para registros inexistentes. Confira na documentação oficial.

Onde conferir a definição oficial de banco relacional?

Uma boa fonte é o manual do PostgreSQL, na seção de conceitos do tutorial, que define relação, tabela, linha e coluna. Para a sintaxe de chaves, consulte também o manual do MySQL e a página de chaves estrangeiras do SQLite. Todos estão nos sites oficiais de cada projeto.

Banco de dados relacional garante que meus dados não se percam?

Nenhum banco garante isso sozinho. O modelo relacional ajuda com regras, como chaves e transações, que cancelam um conjunto de passos se algo falhar. Mesmo assim, você precisa de cópias de segurança (backup) e de uma configuração correta no servidor.

Referências

  • PostgreSQL, documentação: 2.2. Concepts. Disponível em: https://www.postgresql.org/docs/current/tutorial-concepts.html.
  • PostgreSQL, documentação: Constraints (chave primária e chave estrangeira). Disponível em: https://www.postgresql.org/docs/current/ddl-constraints.html.
  • PostgreSQL, documentação: Foreign Keys. Disponível em: https://www.postgresql.org/docs/current/tutorial-fk.html.
  • PostgreSQL, documentação: Joins Between Tables. Disponível em: https://www.postgresql.org/docs/current/tutorial-join.html.
  • PostgreSQL, documentação: PL/pgSQL Overview (SQL como linguagem de consulta dos bancos relacionais). Disponível em: https://www.postgresql.org/docs/current/plpgsql-overview.html.
  • PostgreSQL, documentação: Transactions. Disponível em: https://www.postgresql.org/docs/current/tutorial-transactions.html.
  • MySQL 8.4 Reference Manual: FOREIGN KEY Constraints. Disponível em: https://dev.mysql.com/doc/refman/8.4/en/create-table-foreign-keys.html.
  • SQLite: Foreign Key Support. Disponível em: https://www.sqlite.org/foreignkeys.html.

Fontes conferidas em 28 de outubro de 2026.

Escrito por

Redação MundoBlá

Equipe editorial

Equipe que pesquisa, escreve e revisa os guias do MundoBlá. Todo conteúdo cita fontes oficiais e mostra a data da última conferência. Perfis de especialistas reais entram aqui só quando houver pessoa verificada.