As chaves estrangeiras permitem que os administradores de banco de dados identifiquem facilmente as diferentes conexões existentes em um sistema de gerenciamento de banco de dados SQL.

SQL executa operações matemáticas em dados dentro de um sistema de gerenciamento de banco de dados. Esses bancos de dados contêm diferentes tabelas em que cada uma armazena dados em uma entidade específica. Se você tiver um banco de dados de aluguel de automóveis, uma entidade (ou tabela) nesse banco de dados serão os clientes (que armazenará todos os dados pessoais de cada cliente).

Essas tabelas de banco de dados contêm linhas e colunas, onde cada linha hospeda um registro e cada coluna contém dados específicos de atributos.

Em um sistema de gerenciamento de banco de dados, cada registro (ou linha) deve ser único.

Chaves Primárias

Embora a estipulação seja que cada registro em uma tabela deve ser distinto, nem sempre é esse o caso. Continuando com o exemplo do banco de dados de aluguel de automóveis, se o banco de dados contiver dois clientes que cada tem o nome "John Brown", pode-se esperar que um John Brown devolva um Mercedes-Benz que ele não devolveu renda.

A criação de uma chave primária atenuará esse risco. Em um sistema de gerenciamento de banco de dados SQL, uma chave primária é um identificador exclusivo que distingue um registro de outro.

Portanto, cada registro em um sistema de gerenciamento de banco de dados SQL deve ter uma chave primária.

Usando chaves primárias em um banco de dados

Para incluir chaves primárias em um sistema de gerenciamento de banco de dados usando SQL, você pode simplesmente adicioná-las como um atributo normal ao criar uma nova tabela. Portanto, a tabela de clientes conterá quatro atributos (ou colunas):

  • CarOwnerID (que armazenará a chave primária)
  • Primeiro nome
  • Sobrenome
  • Número de telefone

Relacionado: Como criar uma tabela em SQL

Agora, cada registro de cliente que entra no banco de dados terá um número de identificação exclusivo, bem como nome, sobrenome e número de telefone. O número de telefone não é exclusivo o suficiente para ser uma chave primária, porque embora seja exclusivo para uma pessoa por vez, uma pessoa pode facilmente alterar seu número, o que significa que agora pertenceria a outra pessoa.

Um registro com um exemplo de chave primária

/ * cria um novo registro na tabela de clientes * /
INSERIR NOS VALORES DE CLIENTES
('0004',
'João',
'Castanho',
'111-999-5555');

O código SQL acima irá adicionar um novo registro ao pré-existente Clientes tabela. A tabela abaixo mostra a nova tabela de clientes com os dois registros de John Brown.

A chave estrangeira

Agora você tem chaves primárias que distinguem exclusivamente um locatário de outro. O único problema é que, no banco de dados, não há conexão real entre cada John Brown e o carro que ele aluga.

Portanto, a possibilidade de cometer um erro ainda existe. É aqui que as chaves estrangeiras entram em jogo. Usar uma chave primária para resolver o problema de ambigüidade de propriedade só é possível se a chave primária também funcionar como uma chave estrangeira.

O que é uma chave estrangeira?

Em um sistema de gerenciamento de banco de dados SQL, uma chave estrangeira é um identificador exclusivo ou uma combinação de identificadores exclusivos que conectam duas ou mais tabelas em um banco de dados.

Dos quatro sistemas de gerenciamento de banco de dados SQL existentes, o sistema de gerenciamento de banco de dados relacional é o mais popular. Ao decidir qual tabela em um banco de dados relacional deve ter uma chave estrangeira, você deve primeiro identificar qual tabela é o assunto e qual é o objeto em seu relacionamento.

Voltando ao banco de dados de aluguel de automóveis, para conectar cada cliente ao carro correto, você precisará entender que um cliente (o sujeito) aluga um carro (o objeto). Portanto, a chave estrangeira deve estar na tabela de carros.

O código SQL que gera uma tabela com uma chave estrangeira é um pouco diferente da norma.

Criando uma tabela com um exemplo de chave estrangeira

/ * cria uma nova tabela de carros no banco de dados de aluguel de carros * /
CRIAR TABELA Carros
(
LicenseNumber varchar (30) NÃO NULA CHAVE PRIMÁRIA,
CarType varchar (30) NÃO NULO,
CustomerID varchar (30) REFERÊNCIAS-CHAVE ESTRANGEIRAS Clientes (CustomerID)
);

Como você pode ver no código acima, uma chave estrangeira deve ser explicitamente identificada como tal, junto com uma referência à chave primária que está sendo conectada à nova tabela.

Relacionado: A folha de referências dos comandos SQL essenciais para iniciantes

Para adicionar um registro à nova tabela, você precisará garantir que o valor no campo de chave estrangeira corresponda ao valor no campo de chave primária da tabela original.

Adicionando um registro com um exemplo de chave estrangeira

/ * cria um novo registro na tabela de carros * /
INSERIR VALORES EM Carros
('100012',
'Mercedes-Benz',
'0004');

O código acima cria um novo registro no novo Carros tabela, produzindo o seguinte resultado.

Mesa de carros

Na tabela acima, você pode identificar o John Brown correto que aluga um Mercedes-Benz pela chave estrangeira no registro.

Chaves Estrangeiras Avançadas

Existem duas outras maneiras de usar uma chave estrangeira em um banco de dados.

Se você olhar para trás na definição de chave estrangeira acima, verá que diz que uma chave estrangeira pode ser um identificador exclusivo ou uma combinação de identificadores exclusivos.

Voltando ao exemplo do banco de dados de aluguel de automóveis, você verá que criar um novo registro (do mesmo carro) cada vez que um cliente aluga aquele carro, vai contra o propósito do Carros tabela. Se os carros estão à venda e são vendidos para um único cliente uma vez, o banco de dados existente é perfeito; mas, como os carros são alugados, há uma maneira melhor de representar esses dados.

Chaves compostas

Uma chave composta possui dois ou mais identificadores exclusivos. Em um banco de dados relacional, haverá casos em que o uso de uma única chave estrangeira não representará suficientemente os relacionamentos que existem nesse banco de dados.

No exemplo do aluguel de automóveis, a abordagem mais prática é criar uma nova tabela que armazene os detalhes do aluguel. Para que as informações da tabela de aluguel de carros sejam úteis, ela deve estar conectada às tabelas de carros e clientes.

Criação de uma tabela com chaves estrangeiras compostas

/ * cria uma tabela CarRental no banco de dados de aluguel de automóveis * /
CRIAR TABELA CarRental
(
DATA DATA ALUGADA NÃO NULO,
LicenseNumber varchar (30) NOT NULL FOREIGN KEY REFERENCES Carros (LicenseNumber),
CustomerID varchar (30) NOT NULL FOREIGN KEY REFERENCES Clientes (CustomerID),
PRIMARY KEY (DateRented, LicenseNumber, CustomerID)
);

O código acima descreve um ponto importante; embora uma tabela em um banco de dados SQL possa ter mais de uma chave estrangeira, ela só pode ter uma única chave primária. Isso ocorre porque deve haver apenas uma maneira única de identificar um registro.

É necessário combinar todos os três atributos na tabela para ter uma chave exclusiva. Um cliente pode alugar mais de um carro no mesmo dia (então Identificação do Cliente e DateRented não é uma boa combinação) mais de um cliente também pode alugar o mesmo carro no mesmo dia (então Número de licença e DateRented não é uma boa combinação).

No entanto, a criação de uma chave composta que informa qual cliente, qual carro e em que dia é uma excelente chave exclusiva. Essa chave exclusiva representa uma chave estrangeira composta e uma chave primária composta.

Chaves primárias estrangeiras

Sim, as chaves primárias estrangeiras são encerradas. Embora não haja um nome oficial para ele, uma chave estrangeira também pode ser uma chave primária na mesma tabela. Isso acontece quando você cria uma nova tabela que contém dados especializados sobre uma entidade existente (ou registro em outra tabela).

Digamos que Fred (que trabalha na locadora de automóveis) esteja no banco de dados da empresa sob a tabela de funcionários. Depois de alguns anos, ele se torna um supervisor e é adicionado à mesa de supervisor.

Fred ainda é um funcionário e ainda terá o mesmo número de identificação. Então, a id de funcionário de Fred está agora na tabela do supervisor como uma chave estrangeira que também se tornará uma chave primária digite nessa tabela (já que não faz sentido criar um novo número de id para Fred agora que ele é um supervisor).

Agora você pode identificar chaves estrangeiras em bancos de dados SQL

As chaves estrangeiras conectam diferentes tabelas em um banco de dados SQL. Neste artigo, você pode ver o que é uma chave estrangeira, como funciona e por que é importante tê-las em um banco de dados. Você também entende as formas básicas e ainda mais complexas de chaves estrangeiras.

Se você acha que as chaves estrangeiras são interessantes, você terá um dia de campo quando começar a usar as operações de projeto e seleção para consultar seus bancos de dados SQL.

E-mail
Aprenda a usar as operações de projeto e seleção em SQL

Familiarize-se com os bancos de dados relacionais SQL ao compreender as operações de Projeto e Seleção com esses exemplos.

Leia a seguir

Tópicos relacionados
  • Programação
  • Programação
  • SQL
  • base de dados
Sobre o autor
Kadeisha Kean (14 artigos publicados)

Kadeisha Kean é um desenvolvedor de software full-stack e redator técnico / de tecnologia. Ela tem a habilidade distinta de simplificar alguns dos conceitos tecnológicos mais complexos; produzindo material que pode ser facilmente entendido por qualquer novato em tecnologia. Ela é apaixonada por escrever, desenvolver softwares interessantes e viajar pelo mundo (através de documentários).

Mais de Kadeisha Kean

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Mais um passo…!

Confirme o seu endereço de e-mail no e-mail que acabamos de enviar.

.