Pular para o conteúdo principal

Chave estrangeira SQL: Mantenha suas relações de banco de dados sob controle

Descubra como as chaves estrangeiras conectam tabelas, impedem a entrada de dados inválidos e ajudam a manter a consistência do seu banco de dados.
Atualizado 3 de dez. de 2025  · 13 min lido

Em bancos de dados relacionais, os dados geralmente ficam espalhados por várias tabelas, cada uma guardando uma parte específica de um sistema maior. Essa separação é uma boa escolha de design, mas traz um desafio, pois os dados podem rapidamente se tornar difíceis de interpretar.

Para resolver esse desafio, os bancos de dados relacionais usam regras que garantem as relações entre as tabelas. Um dos mecanismos mais importantes para manter essa estrutura e confiabilidade é o uso de chaves estrangeiras, que são usadas para garantir que os dados relacionados fiquem alinhados.

Neste tutorial, vou explicar como as chaves estrangeiras funcionam. Se você está começando como engenheiro de banco de dados, recomendo fazer nossos cursos Introdução a Bancos de Dados Relacionais em SQL e Design de Bancos de Dados para aprender a criar relações ao definir o esquema do seu banco de dados.

Chave primária vs. Chave estrangeira

Tanto a chave primária, sobre a qual temos outro artigo, quanto a chave estrangeira ajudam a manter a estrutura e a integridade de um banco de dados relacional. Deixa eu explicar os dois:

O que é uma chave estrangeira?

Uma chave estrangeira é um campo ou conjunto de campos em uma tabela que se refere à chave primária em outra tabela. Essa chave estrangeira cria uma ligação entre tabelas para garantir que os dados na tabela de referência correspondam às entradas válidas na tabela referenciada.

Vamos supor que você tem um banco de dados com uma tabela users e uma tabela orders. A tabela ` orders ` pode ter uma coluna ` user_id `, que precisa combinar com um ` user_id ` que já existe na tabela ` users `. A restrição de chave estrangeira garante que você não possa criar um pedido vinculado a um usuário que não existe.

Entender as chaves estrangeiras também exige entender as chaves primárias, já que as chaves estrangeiras dependem das chaves primárias para criar e manter essas relações.

O que é uma chave primária?

Uma chave primária é uma coluna ou combinação de colunas que identifica de forma única cada registro em uma tabela. Nenhuma linha pode ter o mesmo valor de chave primária, e ela nunca pode ser um NULL. Então, uma tabela precisa ter uma chave primária, que é o identificador único que faz referência a todas as chaves estrangeiras em outras tabelas.

Por exemplo, a consulta abaixo cria a tabela users, com a coluna user_id como chave primária:

-- Create users table with user_id as primary key
CREATE TABLE users (
    user_id INT PRIMARY KEY, 
    username VARCHAR(100),
    email VARCHAR(255)
);

As principais diferenças entre chaves primárias e chaves estrangeiras

Resumi as diferenças entre as chaves primárias e estrangeiras na tabela abaixo:

Aspecto

Chave primária

Chave estrangeira

Objetivo

Identifica de forma única cada registro dentro de uma tabela

Cria uma relação referenciando uma chave primária em outra tabela.

Exclusividade

Tem que ser único

Pode ter valores duplicados

Valores NULL

Não pode ser NULL

Pode ser NULL (a menos que restrito)

Localização

Definido na mesma tabela

Faz referência à chave primária de outra tabela

Pela explicação acima, vemos que as chaves primárias e estrangeiras são importantes para criar bancos de dados estruturados e confiáveis. Eles trabalham juntos para garantir que os dados sejam consistentes, as relações sejam mantidas e a integridade do banco de dados seja preservada.

Criando e gerenciando chaves estrangeiras no SQL

Agora que você já entendeu o que são chaves estrangeiras e por que elas são importantes nos bancos de dados, vamos aprender como definir, gerenciar e controlar o comportamento delas ao projetar seu banco de dados.

Definindo chaves estrangeiras com SQL

Você pode configurar uma chave estrangeira no SQL de duas maneiras: quando criar a tabela ou adicioná-la posteriormente, se a tabela já existir.

O exemplo abaixo mostra a primeira opção de como definir uma chave estrangeira ao criar uma tabela no SQL Server.

-- Create parent table: users
CREATE TABLE users (
    user_id INT IDENTITY(1,1) PRIMARY KEY,
    username NVARCHAR(100),
    email NVARCHAR(255)
);

-- Create child table: orders
CREATE TABLE orders (
    order_id INT IDENTITY(1,1) PRIMARY KEY,
    user_id INT,
    order_date DATE,
    CONSTRAINT fk_orders_users FOREIGN KEY (user_id)
        REFERENCES users(user_id)
);

A sintaxe é a mesma para o PostgreSQL, embora usemos SERIAL para autoincrementos para a chave primária.

-- Create parent table: users
CREATE TABLE users (
    user_id SERIAL PRIMARY KEY,   -- SERIAL auto-increments
    username VARCHAR(100),
    email VARCHAR(255)
);

-- Create child table: orders
CREATE TABLE orders (
    order_id SERIAL PRIMARY KEY,
    user_id INT,
    order_date DATE,
    CONSTRAINT fk_orders_users FOREIGN KEY (user_id)
        REFERENCES users(user_id)
);

Ao configurar uma chave estrangeira no MySQL, você precisa usar InnoDB, como mostrado abaixo.

-- Create parent table: users
CREATE TABLE users (
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(100),
    email VARCHAR(255)
) ENGINE=InnoDB;   -- Must use InnoDB for FK support

-- Create child table: orders
CREATE TABLE orders (
    order_id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    order_date DATE,
    CONSTRAINT fk_orders_users FOREIGN KEY (user_id)
        REFERENCES users(user_id)
) ENGINE=InnoDB;

Se você estiver usando um banco de dados Oracle, pode definir a chave estrangeira, mas certifique-se de que os tipos de dados correspondam exatamente para ambas as tabelas.

-- Create parent table: users
CREATE TABLE users (
    user_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    username VARCHAR2(100),
    email VARCHAR2(255)
);

-- Create child table: orders
CREATE TABLE orders (
    order_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    user_id NUMBER,
    order_date DATE,
    CONSTRAINT fk_orders_users FOREIGN KEY (user_id)
        REFERENCES users(user_id)
);

Para adicionar uma chave estrangeira a uma tabela já existente, use a seguinte consulta:

-- Assuming orders table already exists
ALTER TABLE orders
ADD CONSTRAINT fk_orders_users
FOREIGN KEY (user_id)
REFERENCES users(user_id);

Recomendo fazer nossos cursos Introdução ao SQL Server e Criação de bancos de dados PostgreSQL para aprender mais sobre as diferenças entre os dialetos SQL na hora de criar bancos de dados.

Gerenciando restrições e convenções de nomenclatura

Chaves estrangeiras são um tipo de restrição, uma regra aplicada pelo sistema de gerenciamento de banco de dados (DBMS) para validar dados durante operações como inserções, atualizações e exclusões. Quando uma restrição de chave estrangeira está ativa, o banco de dados garante que qualquer valor inserido na coluna da chave estrangeira já exista na coluna da chave primária referenciada.

Uma prática comum é nomear restrições seguindo o padrão fk__. Nos nossos exemplos, a chave estrangeira passa a ser fk_orders_users. Se você nomear suas chaves estrangeiras dessa forma, isso tornará os esquemas legíveis, ajudará na depuração de violações de restrições e funcionará bem com ferramentas de migração. A validação de restrições funciona se você fizer o seguinte:

  • INSERT: Rejeita uma linha se o valor pai referenciado não existir.

  • UPDATE: Impede modificações que poderiam quebrar as relações.

  • DELETE: Bloqueia as operações de exclusão quando existem linhas filhas dependentes.

Integridade referencial e ações em cascata

A integridade referencial é o princípio básico que a restrição de chave estrangeira faz valer. As chaves estrangeiras ajudam a garantir isso, evitando registros órfãos, que acontecem quando as linhas em uma tabela filha apontam para linhas que não existem na tabela pai.

O SQL também permite configurar ações em cascata. São instruções automáticas que dizem ao sistema de gerenciamento de banco de dados (DBMS) exatamente como lidar com as alterações feitas no registro que está sendo consultado. Por exemplo, você pode usar essas operações em cascata para fazer coisas como:

Ação

Comportamento

ON DELETE CASCADE

Apaga as linhas secundárias quando a linha principal for apagada.

ON UPDATE CASCADE

Atualize a chave secundária quando a chave principal mudar.

SET NULL

A chave estrangeira secundária passa a ser NULL

SET DEFAULT

A criança recebe o valor padrão

NO ACTION / RESTRICT

Evite mudanças que prejudiquem os relacionamentos

Por exemplo, a consulta a seguir adiciona as operações em cascata para excluir um registro de usuário se ele remover seu pedido e atualiza automaticamente se seu user_id mudar.

-- Adds cascading rules to enforce hierarchical cleanup
ALTER TABLE orders
ADD CONSTRAINT fk_orders_users
FOREIGN KEY (user_id)
REFERENCES users(user_id)
ON DELETE CASCADE     -- deleting a user deletes their orders
ON UPDATE CASCADE;    -- if user_id changes, update automatically

Projetando relações entre tabelas

Chaves estrangeiras são os blocos de construção usados na modelagem de dados que definem as relações entre tabelas em um banco de dados. Nesta seção, vamos ver os diferentes métodos pelos quais as chaves estrangeiras garantem a consistência dos dados ao conectar tabelas.

Relações um-para-muitos e muitos-para-muitos

Em uma relação um-para-muitos (1:N), uma linha em uma tabela pai pode ser ligada a muitos registros em uma tabela filho. Essa relação é reforçada colocando a chave primária da tabela pai, como users.user_id, como uma chave estrangeira na tabela filho, como orders.customer_id.

Por exemplo, um usuário pode ter muitos pedidos, ou um departamento pode ter muitos funcionários.

Exemplo de relação um-para-muitos.

Exemplo de relação um-para-muitos. Imagem do autor.

Por outro lado, uma relação muitos-para-muitos (M:N) rola quando vários registros em uma tabela podem estar ligados a vários registros em outra tabela. Como não dá pra implementar diretamente uma relação muitos-para-muitos em um banco de dados normalizado, a gente usa uma tabela de junção (tabela ponte) com duas chaves estrangeiras.

Exemplo de relação muitos-para-muitos.

Exemplo de relação muitos-para-muitos. Imagem do autor.

Chaves estrangeiras compostas e autorreferenciadas

Uma chave composta é formada por duas ou mais colunas que identificam um registro de forma única e precisam ser referenciadas juntas. Esse padrão é usado quando a chave natural abrange vários campos ou se você quiser evitar relações duplicadas. Por exemplo, você pode ter uma oferta de curso identificada por (course_id, semester) ou uma tabela de junção com student_id e course_id como a chave primária composta.

-- Defines courses table
CREATE TABLE course_offerings (
    course_id INT,
    semester VARCHAR(10),
    
    -- Composite primary key ensures a course can only be offered once per semester
    PRIMARY KEY (course_id, semester) 
);

-- Create enrollment table
CREATE TABLE enrollment (
    student_id INT,
    course_id INT,
    semester VARCHAR(10),

    -- This foreign key links enrollment records to a valid course offering
    FOREIGN KEY (course_id, semester)
        REFERENCES course_offerings(course_id, semester)
);

Uma chave estrangeira autorreferencial ou chave estrangeira recursiva é uma chave estrangeira que faz referência à chave primária dentro da mesma tabela. Esse padrão é comum em dados hierárquicos como Funcionário → Gerente. Isso permite representar relações recursivas sem criar tabelas adicionais.

Na consulta abaixo, o campo “ manager_id ” faz referência ao campo “ employee_id ” na mesma tabela.

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    name VARCHAR(100),

    -- manager_id references employee_id in the same table
    manager_id INT,
    FOREIGN KEY (manager_id) REFERENCES employees(employee_id)
);

Trabalhando com dados e garantindo a integridade

Agora sabemos que as chaves estrangeiras são usadas para garantir a integridade dos dados nos bancos de dados. Nesta seção, vamos ver as considerações práticas ao trabalhar com chaves estrangeiras para operações SQL, desafios comuns e como gerenciar restrições.

Operações INSERT, UPDATE e DELETE

Vamos ver como essas operações interagem com chaves estrangeiras.

Inserir operações com chaves estrangeiras

Para inserir um registro filho, o valor pai referenciado precisa existir. Se não funcionar, a inserção falha. Por exemplo, a consulta abaixo vai inserir o registro na tabela ` orders ` se a tabela ` users ` tiver um registro onde ` user_id ` for ` 1`.

-- users table contains user_id = 1
INSERT INTO orders (order_id, user_id, order_date)
VALUES (100, 1, '2024-02-01');

Se você tentar inserir um registro para um usuário que não existe na tabela pai, vai aparecer um erro mostrando uma violação da restrição de chave estrangeira.

-- user_id = 999 does NOT exist in users table
INSERT INTO orders (order_id, user_id, order_date)
VALUES (101, 999, '2024-02-01');
ERROR: insert or update on table "orders" violates foreign key constraint "fk_orders_users"

Operações de atualização e comportamento em cascata

As atualizações podem afetar tanto a tabela de chaves estrangeiras quanto a tabela de chaves primárias. Por exemplo, se você atualizar a chave estrangeira na tabela de pedidos, isso só vai dar certo se a chave primária existir na tabela pai. Por exemplo, a atualização abaixo só vai funcionar se users.user_id = 5 exists.

-- updating foreign key value
UPDATE orders
SET user_id = 5
WHERE order_id = 100;

Pelo exemplo acima, você não pode atualizar a chave primária sem um " ON UPDATE CASCADE " porque as linhas secundárias ainda fazem referência a 1. Para evitar isso, primeiro removemos a restrição de chave estrangeira existente e, em seguida, a recriamos com a opção “ ON UPDATE CASCADE ” ativada. Com esse método, os valores relacionados orders.user_id são atualizados automaticamente.

-- Drop existing foreign key constraint
ALTER TABLE orders
DROP CONSTRAINT fk_orders_users;

-- Recreate FK with ON UPDATE CASCADE enabled
ALTER TABLE orders
ADD CONSTRAINT fk_orders_users
FOREIGN KEY (user_id)
    REFERENCES users(user_id)
    ON UPDATE CASCADE;   -- Automatically update child rows when parent key changes
UPDATE users
SET user_id = 500
WHERE user_id = 1;

Excluir operações e cascatas

Se você tentar remover uma linha pai sem nenhuma regra em cascata, a exclusão vai falhar e você vai receber uma mensagem de erro. Quando você adiciona uma cláusula “ ON DELETE CASCADE ”, ela diz ao banco de dados para remover automaticamente todas as linhas filhas relacionadas quando o registro pai for excluído, para manter tudo consistente.

No exemplo abaixo, criamos uma chave estrangeira em orders.user_id que faz referência a users.user_id. Com o comando ` ON DELETE CASCADE`, se um usuário for excluído da tabela de usuários, todos os pedidos relacionados serão excluídos automaticamente.

-- Add a new foreign key constraint to the orders table
ALTER TABLE orders
ADD CONSTRAINT fk_orders_users
FOREIGN KEY (user_id)
    REFERENCES users(user_id)
    ON DELETE CASCADE;             -- Delete orders automatically when user is deleted

Às vezes, você pode querer que o banco de dados lide com as exclusões automaticamente. Você pode fazer isso com um ON DELETE SET NULL ao criar a tabela. Isso vai definir as colunas de chave estrangeira na tabela filho como " NULL " se o registro pai for alterado ou excluído.

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,               -- FK referencing users.user_id
    order_date DATE,
    FOREIGN KEY (user_id)
        REFERENCES users(user_id)
        ON DELETE SET NULL     -- If a user is deleted, set user_id in orders to NULL
);

Lidando com desafios comuns

Ao projetar bancos de dados complexos, é provável que você encontre desafios com as chaves estrangeiras. A seguir estão os problemas comuns que eu já tive com chaves estrangeiras e soluções práticas para cada um deles.

  • Tipos de dados incompatíveis: Se a sua chave estrangeira e as colunas da chave primária referenciada tiverem tipos de dados incompatíveis, a restrição não poderá ser criada. Para evitar isso, sempre padronize os tipos nas tabelas relacionadas.

  • Dependências circulares: Acontece quando duas tabelas se referem uma à outra, podendo causar impasses de inserção. Pra resolver isso, você deve repensar o design do esquema ou criar a tabela sem chaves estrangeiras primeiro, carregar os dados básicos e, depois, usar o comando ` ALTER TABLE ` pra adicionar as restrições.

  • Chaves estrangeiras pendentes: Esse problema rola quando a chave estrangeira de uma criança aponta para uma tabela pai que não existe. Para resolver isso, use ações em cascata para validar os dados durante as operações de exclusão e atualização.

Gerenciando modificações e eliminando restrições

Às vezes, você pode querer mudar as restrições de chave estrangeira ao refazer o esquema do seu banco de dados. Aqui estão algumas maneiras de remover a chave estrangeira com pequenas variações de sintaxe entre os diferentes dialetos SQL.

Nos bancos de dados PostgreSQL, SQL Server e Oracle, a gente usa a instrução ` DROP CONSTRAINT `.

-- Drop foreign key
ALTER TABLE orders
DROP CONSTRAINT fk_orders_users;

Mas, no MySQL, a gente usa a instrução ` DROP FOREIGN KEY ` pra tirar a chave estrangeira.

-- Drop foreign key
ALTER TABLE orders
DROP FOREIGN KEY fk_orders_users;

É bom lembrar que, ao tirar uma restrição de chave estrangeira, você também tira a aplicação da integridade referencial do banco de dados. Depois de remover, você pode inserir ou atualizar dados que não seguem a relação, o que pode causar inconsistência nos dados.

Desempenho e otimização

A partir dos exemplos acima, vimos como as chaves estrangeiras garantem um design de dados eficaz, mantendo a integridade dos dados. Mas é bom entender como otimizar as chaves estrangeiras pra melhorar o desempenho dos seus bancos de dados. Abaixo estão algumas dicas que achei úteis ao trabalhar com chaves estrangeiras:

Desempenho de indexação e consulta

Quando você indexa uma chave estrangeira, o banco de dados pode validar rapidamente as alterações durante as operações de inserção, atualização ou exclusão, localizando as chaves correspondentes na tabela pai. Da mesma forma, os índices aceleram as operações de junção que conectam tabelas filhas e tabelas de pai, permitindo que o mecanismo do banco de dados combine linhas com base nos valores das chaves estrangeiras.

Como prática recomendada, eu sugiro que você indexe explicitamente as colunas de chave estrangeira se o DBMS não fizer isso automaticamente.

Técnicas de otimização de consultas

Alguns mecanismos SQL usam a existência de chaves estrangeiras para aplicar a eliminação de junções, uma técnica que identifica e remove junções desnecessárias do plano de execução da consulta. Por exemplo, se uma consulta só acessa colunas da tabela filha, mas inclui uma junção na tabela pai para filtragem garantida pela restrição de chave estrangeira, a operação de junção pode ser otimizada.

Você sempre pode ver os planos de execução pra saber como o otimizador de consultas lida com chaves estrangeiras e junções. Essas otimizações e suas eficiências variam entre os mecanismos SQL, como PostgreSQL, MySQL e SQL Server. Entender como o otimizador do seu banco de dados específico funciona ajuda a escrever consultas eficientes que aproveitam ao máximo as restrições de chaves estrangeiras.

Por exemplo, você pode usar a seguinte consulta para ver o plano de execução no PostgreSQL:

-- View execution plan
EXPLAIN ANALYZE
SELECT o.order_id, u.email
FROM orders o
JOIN users u ON o.user_id = u.user_id;

Esta tabela mostra como ver o plano de execução em diferentes bancos de dados:

Banco de dados

Comando

PostgreSQL

EXPLAIN / EXPLAIN ANALYZE

MySQL

EXPLAIN

SQL Server

Plano de execução estimado/real

Oracle

EXPLAIN PLAN FOR

Recomendo fazer nosso Joining Data in SQL para aprender os diferentes tipos de junções em SQL e como trabalhar com diferentes tabelas relacionadas no banco de dados.

Casos de uso avançados e melhores práticas

Além da implementação básica, você pode usar chaves estrangeiras para criar uma arquitetura de banco de dados robusta, escalável e fácil de manter. Nesta seção, vou explicar os cenários específicos e os princípios gerais de design que você deve considerar ao usar chaves estrangeiras.

Relações entre bancos de dados ou esquemas

Embora as chaves estrangeiras sejam projetadas para garantir a integridade dentro de um único banco de dados ou esquema, ambientes empresariais mais complexos geralmente exigem relações além desses limites. A tabela abaixo mostra o suporte entre esquemas e entre bancos de dados para diferentes dialetos SQL.

Banco de dados

Suporte entre esquemas

Suporte para vários bancos de dados

Limitações

PostgreSQL

Sim

Não

Limitado a um único cluster de banco de dados.

SQL Server

Sim

Sim

A integridade entre bancos de dados é gerenciada pela lógica da aplicação ou por gatilhos, em vez de chaves estrangeiras nativas.

Oracle

Sim

Sim

Os links de banco de dados são para acesso a dados; as restrições FK nativas normalmente não são aplicadas entre links.

MySQL

Não

Não

Limitado estritamente a tabelas dentro do mesmo banco de dados e mecanismo de armazenamento, como o InnoDB.

SQLite

Não

Não

Limitado à conexão específica do arquivo/banco de dados.

Manutenção e auditoria

À medida que você cria chaves estrangeiras, vai perceber que elas mudam sempre que a lógica do seu negócio muda. Pense nessas maneiras de auditar e manter as chaves estrangeiras para garantir que elas estejam atualizadas:

  • Limitações da revisão: Faça auditorias periódicas das restrições de chaves estrangeiras para garantir que elas continuem alinhadas com as regras de negócios em evolução e as mudanças no esquema.
  • Auditoria regular do índice: Sempre dá uma olhada se os índices estão em todas as colunas de chaves estrangeiras pra manter o desempenho ideal de junção e validação, principalmente depois de importar muitos dados ou atualizar o sistema.
  • Documentação e visualização: Use diagramas Entidade-Relacionamento (ER) ou ferramentas de visualização de esquemas para documentar as relações. Esses recursos visuais vão garantir que todos os desenvolvedores e analistas entendam as relações e as regras de integridade aplicadas pelas suas chaves estrangeiras.

Melhores práticas para um design robusto de banco de dados

Para garantir que você aproveite ao máximo o funcionamento das chaves estrangeiras, siga estas dicas:

  • Alinhe suas chaves com a lógica real dos negócios: Certifique-se de que as chaves primárias e estrangeiras realmente representam entidades reais e as relações entre elas, em vez de depender de identificadores artificiais ou instáveis.

  • Use nomes claros e consistentes: Escolha nomes descritivos para as restrições, como “ fk_orders_user_id ”, para que seu esquema seja mais fácil de manter, depurar e trabalhar com outras pessoas.

  • Equilibre rigor e flexibilidade: As restrições devem proteger a qualidade dos dados, mas seu projeto ainda deve permitir casos extremos práticos ou validações tratadas na camada de aplicação.

  • Evite relações circulares: Organize seu esquema de forma que as dependências de chaves estrangeiras não fiquem em loop umas com as outras, pois isso torna as inserções, atualizações e exclusões desnecessariamente complicadas.

  • Otimize o desempenho: Indexe suas chaves estrangeiras corretamente e aplique ações em cascata com cuidado para manter a integridade sem deixar seu sistema lento.

Conclusão

Como qualquer habilidade, dominar as chaves estrangeiras vem com a prática. Recomendo que você experimente modelar esquemas, testar ações em cascata e entender como as restrições funcionam em cenários reais. Com o tempo, você vai aprender a equilibrar regras rígidas com a flexibilidade que seus aplicativos precisam, criando bancos de dados que são resilientes e adaptáveis conforme os requisitos evoluem.

Agora que você já sabe como usar chaves estrangeiras no design de bancos de dados, recomendo que experimente nosso programa de Engenheiro de Dados Associado em SQL para aprender o básico sobre engenharia de dados e warehouse. Por fim, se você quer melhorar suas habilidades de gerenciamento de banco de dados para big data, recomendo fazer nosso curso Introdução à Modelagem de Dados no Snowflake para aprender mais sobre modelagem dimensional.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Eu crio artigos que simplificam a ciência e a análise de dados, tornando-as fáceis de entender e acessíveis.

Perguntas frequentes

Qual é a diferença entre uma chave primária e uma chave estrangeira?

Uma chave primária identifica registros de forma exclusiva em sua própria tabela, enquanto uma chave estrangeira faz referência a uma chave primária em outra tabela para estabelecer uma relação.

Uma tabela pode ter várias chaves estrangeiras?

Sim, uma tabela pode ter várias chaves estrangeiras, cada uma ligada a diferentes tabelas pai.

Uma tabela precisa ter colunas de chave estrangeira exclusivas?

Não, as colunas de chave estrangeira podem ter valores duplicados, mas precisam referenciar linhas válidas na tabela pai.

E se você apagar um registro que tem uma referência de chave estrangeira?

Dependendo das restrições, o banco de dados pode impedir a exclusão, excluir linhas relacionadas em cascata ou definir valores de chave estrangeira como nulos ( NULL).

As chaves estrangeiras são obrigatórias em bancos de dados relacionais?

Embora não sejam obrigatórias, as chaves estrangeiras são essenciais para garantir a integridade relacional e um design confiável do banco de dados.

Tópicos

Aprenda com o DataCamp

Curso

Manipulação de dados em SQL

4 h
298.1K
Domine consultas SQL complexas no PostgreSQL para responder várias perguntas de ciência de dados e preparar conjuntos de dados robustos.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado
SQL Programming Language

blog

O que é SQL? - A linguagem essencial para o gerenciamento de bancos de dados

Saiba tudo sobre o SQL e por que ele é a linguagem de consulta ideal para o gerenciamento de bancos de dados relacionais.
Summer Worsley's photo

Summer Worsley

13 min

Tutorial

Tutorial de visão geral do banco de dados SQL

Neste tutorial, você aprenderá sobre bancos de dados em SQL.
DataCamp Team's photo

DataCamp Team

Tutorial

Como usar um alias SQL para simplificar suas consultas

Explore como o uso de um alias SQL simplifica os nomes de colunas e tabelas. Saiba por que usar um alias SQL é fundamental para melhorar a legibilidade e gerenciar uniões complexas.
Allan Ouko's photo

Allan Ouko

Tutorial

SELEÇÃO de várias colunas no SQL

Saiba como selecionar facilmente várias colunas de uma tabela de banco de dados em SQL ou selecionar todas as colunas de uma tabela em uma consulta simples.
DataCamp Team's photo

DataCamp Team

Tutorial

Tutorial do SQL Server: Desbloqueie o poder do gerenciamento de dados

Explore o gerenciamento de dados com nosso tutorial do SQL Server. Do básico ao uso avançado, aprimore suas habilidades e navegue no SQL Server com confiança.

Kevin Babitz

Tutorial

Introdução aos acionadores SQL: Um guia para desenvolvedores

Saiba como usar os acionadores SQL para automatizar tarefas, manter a integridade dos dados e melhorar o desempenho do banco de dados. Experimente exemplos práticos como os comandos CREATE, ALTER e DROP no MySQL e no Oracle.
Oluseye Jeremiah's photo

Oluseye Jeremiah

Ver maisVer mais