Do not speak Portuguese? Translate this site with Google or Bing Translator
Chave Estrangeira x Chave Primária – Qual é a Diferença?

Posted on: March 05, 2024 11:08 AM

Posted by: Renato

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)

Não foi fornecido texto alternativo para esta imagem

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.

Não foi fornecido texto alternativo para esta imagem

Chaves Trabalhando Juntas

Observe o diagrama a seguir. Qual coluna é a chave estrangeira?

Não foi fornecido texto alternativo para esta imagem

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.

Não foi fornecido texto alternativo para esta imagem

 

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.

Não foi fornecido texto alternativo para esta imagem

 

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.

Não foi fornecido texto alternativo para esta imagem

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:

 

  1. 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.
  2. 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”.
  3. 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.

Não foi fornecido texto alternativo para esta imagem

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


2

Share

Donate to Site


About Author

Renato

Developer

Add a Comment

Blog Search


Categories

OUTROS (16) Variados (109) PHP (133) Laravel (171) Black Hat (3) front-end (29) linux (114) postgresql (39) Docker (28) rest (5) soap (1) webservice (6) October (1) CMS (2) node (7) backend (13) ubuntu (56) devops (25) nodejs (5) npm (3) nvm (1) git (8) firefox (1) react (7) reactnative (5) collections (1) javascript (7) reactjs (8) yarn (0) adb (1) Solid (2) blade (3) models (1) controllers (0) log (1) html (2) hardware (3) aws (14) Transcribe (2) transcription (1) google (4) ibm (1) nuance (1) PHP Swoole (5) mysql (31) macox (4) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (3) imagick (2) ec2 (1) sw (1) websocket (2) markdown (1) ckeditor (1) tecnologia (14) faceapp (1) eloquent (14) query (4) sql (40) ddd (3) nginx (9) apache (4) certbot (1) lets-encrypt (3) debian (12) liquid (1) magento (2) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (2) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (4) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (2) binaural (1) mysqli (3) database (42) windows (6) vala (1) json (2) oracle (1) mariadb (4) dev (12) webdev (24) s3 (4) storage (1) kitematic (1) gnome (2) web (2) intel (3) piada (1) cron (2) dba (18) lumen (1) ffmpeg (2) android (2) aplicativo (1) fedora (2) shell (4) bash (3) script (3) lider (1) htm (1) csv (1) dropbox (1) db (3) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (1) biologia (1) programming (22) performance (3) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (3) microg (1) iode (1) ssh (3) zsh (2) terminal (3) dracula (1) spaceship (1) mac (2) idiomas (1) laptop (2) developer (37) api (5) data (1) matematica (1) seguranca (2) 100DaysOfCode (9) hotfix (1) documentation (1) laravelphp (10) RabbitMQ (3) Elasticsearch (1) redis (2) Raspberry (4) Padrao de design (4) JQuery (1) angularjs (4) Dicas (43) Kubernetes (3) vscode (2) backup (1) angular (3) servers (2) pipelines (1) AppSec (1) DevSecOps (4) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (2) jwt (5) security (2) translate (1) kube (2) iot (1) politica (2) bolsonaro (1) flow (1) podcast (1) Brasil (1) containers (3) traefik (1) networking (1) host (1) POO (2) microservices (2) bug (1) cqrs (1) arquitetura (3) Architecture (4) sail (3) militar (1) artigo (1) economia (1) forcas armadas (1) ffaa (1) autenticacao (2) autorizacao (2) authentication (4) authorization (3) NoCookies (1) wsl (4) memcached (1) macos (2) unix (2) kali-linux (1) linux-tools (5) apple (1) noticias (2) composer (1) rancher (1) k8s (1) escopos (1) orm (1) jenkins (4) github (5) gitlab (3) queue (1) Passwordless (1) sonarqube (1) phpswoole (1) laraveloctane (1) Swoole (1) Swoole (1) octane (1) Structurizr (1) Diagramas (1) c4 (1) c4-models (1) compactar (1) compression (1) messaging (1) restfull (1) eventdrive (1) services (1) http (1) Monolith (1) microservice (1) historia (1) educacao (1) cavalotroia (1) OOD (0) odd (1) chatgpt (1) openai (3) vicuna (1) llama (1) gpt (1) transformers (1) pytorch (1) tensorflow (1) akitando (1) ia (1) nvidia (1) agi (1) guard (1) multiple_authen (2) rpi (1) auth (1) auth (1) livros (2) ElonMusk (2) Oh My Zsh (1) Manjaro (1) BigLinux (2) ArchLinux (1) Migration (1) Error (1) Monitor (1) Filament (1) LaravelFilament (1) replication (1) phpfpm (1) cache (1) vpn (1) l2tp (1) zorin-os (1) optimization (1) scheduling (1) monitoring (2) linkedin (1) community (1) inteligencia-artificial (2) wsl2 (1) maps (1) API_KEY_GOOGLE_MAPS (1) repmgr (1) altadisponibilidade (1) banco (1) modelagemdedados (1) inteligenciadedados (4) governancadedados (1) bancodedados (2) Observability (1) picpay (1) ecommerce (1) Curisidades (1) Samurai (1) KubeCon (1) GitOps (1) Axios (1) Fetch (1) Deepin (1) vue (4) nuxt (1) PKCE (1) Oauth2 (2) webhook (1) TypeScript (1) tailwind (1) gource (2)

New Articles



Get Latest Updates by Email