Posted on: March 05, 2024 11:08 AM
Posted by: Renato
Categories: database mysql sql dba modelagemdedados inteligenciadedados governancadedados
Views: 259
Chave Estrangeira x Chave Primária – Qual é a Diferença?
Oscar Kenjiro N. Asakura
Este artigo oferecerá a diferença entre uma chave primária e uma chave estrangeira. E abordará o porquê essas duas chaves são importantes quando se trata da manutenção de uma estrutura de banco de dados relacional.
Todos os exemplos desta lição são baseados no erwin Data Modeler, numa visão de modelo físico e no banco de dados Microsoft SQL Server.
Chaves Primárias versus Chaves Estrangeiras
Antes de nos aprofundarmos na diferença, vamos primeiro explorar as características das chaves primárias e estrangeiras. Vamos começar aprendendo sobre chaves primárias.
Chaves Primárias (PK)
Para que uma tabela se qualifique como uma tabela relacional, ela deve ter uma chave primária.
A chave primária consiste em uma ou mais colunas cujos dados contidos são usados para identificar exclusivamente cada linha na tabela. Você pode pensar neles como um endereço. Se as linhas de uma tabela fossem caixas de correio, a chave primária seria a listagem de endereços de rua.
Para ser uma chave primária, várias condições devem ser verdadeiras:
- As colunas que definem a chave primária são exclusivas.
- Cada coluna pode conter valores duplicados; no entanto, a combinação de valores de coluna é exclusiva.
- Nenhum valor nas colunas de chave primária é NULL. Eu também estenderia isso para incluir valores “em branco”.
- Ao definir uma tabela, você especifica a chave primária. Uma tabela possui apenas uma chave primária e sua definição é obrigatória.
- As chaves primárias são armazenadas em um índice.
- O índice mantém o requisito de exclusividade da chave primária. Também torna mais fácil para os valores de chave estrangeira se referirem aos valores de chave primária correspondentes, como aprenderemos na seção a seguir.
Quer saber mais sobre design de banco de dados? Um dos primeiros obstáculos que você vai querer superar é a Normalização do Banco de Dados. Falaremos um dia sobre este assunto.
Chaves Estrangeiras (FK)
Uma chave estrangeira é um conjunto de uma ou mais colunas em uma tabela que se refere à chave primária em outra tabela. Não há nenhum código especial, configurações ou definições de tabela que você precise colocar para “designar” oficialmente uma chave estrangeira.
No diagrama abaixo, observe a tabela CABECALHO_PEDIDO_VENDA. A coluna CABECALHO_PEDIDO_VENDA.Codigo_Taxa_Cambio é uma chave estrangeira, pois está relacionada ao TAXA_CAMBIO. Codigo_Taxa_Cambio. Esta coluna TAXA_CAMBIO. Codigo_Taxa_Cambio é a chave primária da tabela TAXA_CAMBIO.
Chaves Trabalhando Juntas
Observe o diagrama a seguir. Qual coluna é a chave estrangeira?
Se você disse que era TELEFONE_PESSOA.Codigo_Entidade_Negocio, então você está correto. A razão pela qual é uma chave estrangeira é que ela está se referindo a uma chave primária, PESSOA.Codigo_Entidade_Negocio, na outra tabela.
Coincidentemente, TELEFONE_PESSOA. Codigo_Entidade_Negocio não é apenas uma chave estrangeira, mas também faz parte da chave primária de TELEFONE_PESSOA. A chave primária da tabela TELEFONE_PESSOA é a combinação de Codigo_Entidade_Negocio, Numero_Telefone e Codigo_Tipo_Telefone.
Aqui estão algumas ideias-chave estrangeiras a serem lembradas:
Ao contrário das chaves primárias, as chaves estrangeiras podem conter valores duplicados. Além disso, não há problema em conter valores NULL.
Embora não sejam criadas automaticamente para chaves estrangeiras, é uma boa ideia defini-las.
Você pode definir várias chaves estrangeiras em uma tabela.
Na tabela TELEFONE_PESSOA você pode encontrar a outra chave estrangeira (veja a resposta no final do artigo)?
Use o Model Explorer para Encontrar Chaves de Banco de Dados
Ao usar o erwin Data Modeler, você encontrará todos os tipos de informações úteis no Model Explorer, assim como nos diagramas. Você não precisa navagar fundo para encontrar as chaves primárias, pois, no diagrama todas as colunas acima da linha horizontal, compõe a chave primária (PK). Quando você mostra as colunas de uma tabela, mas clicando na pasta Columns, as colunas de chave primária têm chaves douradas ao lado delas.
Além disso, se qualquer uma das chaves estrangeiras for definida em restrições de chave estrangeira, o que aprenderemos na seção a seguir, essas colunas terão (FK) depois delas.
Restrições de Chave Estrangeira
Alguns sistemas de gerenciamento de banco de dados, como o SQL Server, permitem configurar restrições de chave estrangeira. Estes ajudam a reforçar a integridade referencial. Em sua forma mais simples, uma restrição de chave estrangeira impede que você insira valores que não são encontrados na chave primária da tabela relacionada.
Usando o primeiro diagrama como nosso exemplo, você não pode inserir CABECALHO_PEDIDO_VENDA.Codigo_Taxa_Cambio se ainda não existir na tabela TAXA_CAMBIO.
Essas restrições entram em vigor de várias maneiras:
- Eles impedem que você altere o valor da chave estrangeira para um que não exista como um valor na chave primária da tabela relacionada.
- Eles impedem que você exclua uma linha da tabela de chave primária. Isso impede que você crie registros órfãos. Registros órfãos são descritos como “registros filhos sem pais”.
- Eles impedem você de adicionar um valor de chave estrangeira que não existe na chave primária.
Em resumo, as restrições impõem o relacionamento entre as tabelas de chave primária e estrangeira.
Resumo – Chave Primária versus Chave Estrangeira
Para resumir aqui está uma comparação de Chaves Primárias para Estrangeiras.
Resposta à pergunta: Anteriormente, pedimos que você identificasse a outra chave estrangeira na tabela TELEFONE_PESSOA. A resposta correta é Codigo_Tipo_Telefone.
Conclusão
Uma chave primária é necessária para definir uma tabela de banco de dados relacional. Uma chave estrangeira é uma ou mais colunas de outra tabela que faz referência à chave primária de uma tabela. Em alguns SGBDs, defina restrições de chave estrangeira para proteger esse relacionamento.
#governancadedados #erwin #inteligenciadedados #modelagemdedados
- https://www.linkedin.com/pulse/chave-estrangeira-x-prim%C3%A1ria-qual-%C3%A9-diferen%C3%A7a-asakura/?originalSubdomain=pt
Donate to Site
Renato
Developer