Skip to content

O que é dependência transitiva em um banco de dados

31 de março de 2021

Uma dependência transitiva em um banco de dados é um relacionamento indireto entre valores na mesma tabela que causa uma dependência funcional. Para atingir o padrão de normalização da Terceira Forma Normal (3NF), você deve eliminar qualquer dependência transitiva. Por sua natureza, uma dependência transitiva requer três ou mais atributos (ou colunas de banco de dados) que tenham uma dependência funcional entre eles, o que significa que a coluna A em uma tabela depende da coluna B por meio de uma coluna intermediária C. Vamos ver como isso pode funcionar.

Exemplo de dependência transitiva

Você não precisa ser um programador para usar um Raspberry Pi.
Richard Saville

AUTORES

Author_ID Autor Livro Author_Nationality
Auth_001 Orson Scott Card Jogo de Ender Estados Unidos
Auth_001 Orson Scott Card Filhos da Mente Estados Unidos
Auth_002 Margaret Atwood The Handmaid’s Tale Canadá

No exemplo AUTHORS acima:

  • Livro Autor: Aqui o Livro atributo determina o Autor atributo. Se você souber o nome do livro, poderá aprender o nome do autor. Porém, Autor não determina Livro, porque um autor pode escrever vários livros. Por exemplo, só porque sabemos o nome do autor Orson Scott Card, ainda não sabemos o nome do livro.
  • Autor Author_Nationality: Da mesma forma, o Autor atributo determina o Author_Nationality, mas não o contrário; só porque sabemos a nacionalidade não significa que possamos determinar o autor.

Mas esta tabela apresenta uma dependência transitiva:

  • Livro Author_Nationality: Se soubermos o nome do livro, podemos determinar a nacionalidade por meio da coluna Autor.

Evitando dependências transitivas

Para garantir a Terceira Forma Normal, vamos remover a dependência transitiva. Podemos começar removendo a coluna Livro da tabela Autores e criando uma tabela Livros separada:

LIVROS

Book_ID Livro Author_ID
Book_001 Jogo de Ender Auth_001
Book_001 Filhos da Mente Auth_001
Book_002 The Handmaid’s Tale Auth_002

AUTORES

Author_ID Autor Author_Nationality
Auth_001 Orson Scott Card Estados Unidos
Auth_002 Margaret Atwood Canadá

Isso corrigiu isso? Vamos examinar nossas dependências agora:

Mesa de LIVROS:

  • Book_ID Livro: O Livro depende do Book_ID.
  • Nenhuma outra dependência nesta tabela existe, então estamos bem. Observe que a chave estrangeira Author_ID vincula esta tabela à tabela AUTHORS por meio de sua chave primária Author_ID. Criamos um relacionamento para evitar uma dependência transitiva, um projeto-chave de bancos de dados relacionais.

Tabela AUTHORS:

  • Author_ID Autor: O Autor depende do Author_ID.
  • Autor Author_Nationality: A nacionalidade pode ser determinada pelo autor.
  • Author_ID Author_Nationality: A nacionalidade pode ser determinada a partir do Author_ID através de Autor atributo. Ainda temos uma dependência transitiva.

Precisamos adicionar uma terceira tabela para normalizar esses dados:

PAÍSES

Country_ID País
Coun_001 Estados Unidos
Coun_002 Canadá

AUTORES

Author_ID Autor Country_ID
Auth_001 Orson Scott Card Coun_001
Auth_002 Margaret Atwood Coun_002

Agora temos três tabelas, fazendo uso de chaves estrangeiras para vincular entre as tabelas:

  • A chave estrangeira da tabela BOOK Author_ID vincula um livro a um autor na tabela AUTHORS.
  • A chave estrangeira da tabela AUTHORS Country_ID vincula um autor a um país da tabela PAÍSES.
  • A tabela COUNTRIES não tem chave estrangeira porque não precisa ser vinculada a outra tabela neste design.

Por que as dependências transitivas são um projeto de banco de dados ruim

Qual é a vantagem de evitar dependências transitivas para ajudar a garantir 3NF? Vamos considerar nossa primeira tabela novamente e ver os problemas que ela cria:

AUTORES

Author_ID Autor Livro Author_Nationality
Auth_001 Orson Scott Card Jogo de Ender Estados Unidos
Auth_001 Orson Scott Card Filhos da Mente Estados Unidos
Auth_002 Margaret Atwood The Handmaid’s Tale Canadá

Este tipo de design pode contribuir para anomalias e inconsistências de dados, por exemplo:

  • Se você excluiu os dois livros “Children of the Mind” e “Ender’s Game”, excluiria o autor “Orson Scott Card” e sua nacionalidade completamente do banco de dados.
  • Você não pode adicionar um novo autor ao banco de dados, a menos que também adicione um livro; e se a autora ainda não foi publicada ou você não sabe o nome de um livro de sua autoria?
  • Se “Orson Scott Card” mudou sua cidadania, você teria que mudá-la em todos os registros em que ele aparecer. Ter vários registros com o mesmo autor pode resultar em dados imprecisos: e se a pessoa que faz a entrada de dados não perceber que há vários registros para ela e alterar os dados em apenas um registro?
  • Você não pode excluir um livro como “The Handmaid’s Tale” sem também excluir completamente o autor.

Esses são apenas alguns motivos pelos quais a normalização, e evitar dependências transitivas, protege os dados e garante a consistência. Mais da Lifewire

  • Um gráfico na tela do computador.

    Relacionamentos de banco de dados

  • Mão de uma mulher com a mão aberta com conexão de rede ilustrada acima dela

    Dependência multivalorada no design de banco de dados

  • Renderização digital de código de computador e linhas de conexão que representam um banco de dados

    Glossário de termos comuns de banco de dados

  • Fluxograma de banco de dados estilizado

    Noções básicas de normalização de banco de dados

  • Mulher jovem se concentra em seu trabalho na frente do computador

    O que são dependências de banco de dados?

  • Homem usando laptop na mesa do escritório em casa

    Colocando um banco de dados na terceira forma normal (3NF)

  • Mãos de um web designer usando um tablet digital

    Dependência funcional total na normalização do banco de dados

  • Mulher olhando para a sala do servidor

    Relacionamentos um-para-muitos em um banco de dados

  • Closeup vista lateral de uma mulher negra loira de meados dos anos 20 fazendo seu projeto de desenvolvimento de software.  Ela está sentada na frente de um computador desktop e tomando um café enquanto trabalha em um computador.

    O que é a forma normal de Boyce-Codd (BCNF)?

  • Um homem de negócios trabalhando em um escritório

    Escolhendo uma chave primária

  • Administrador de banco de dados trabalhando na mesa

    Determinantes e seu papel em um banco de dados

  • Alguém lendo um e-book em frente a uma lareira

    16 melhores sites para baixar livros grátis em 2021

  • Empresários conversando e discutindo dados no laptop em uma reunião na sala de conferências

    Introdução aos relacionamentos de banco de dados

  • Homem de negócios usando o computador na sala do servidor virtual

    Normalizando seu banco de dados: Primeira forma normal (1FN)

  • 1s e 0s representando um banco de dados

    O que é um banco de dados?

  • Código SQL em fundo preto

    Restrições UNIQUE no Microsoft SQL Server

Lifewire

Siga-nos

  • Facebook

  • Sobre nós
  • Anunciar
  • Política de Privacidade
  • Política de Cookies
  • Carreiras
  • Diretrizes editoriais
  • Contato
  • Termos de uso
  • Privacidade da UE
  • Aviso de privacidade da Califórnia



Seus direitos de privacidade

A Lifewire e nossos parceiros terceirizados usam cookies e processam dados pessoais como identificadores exclusivos com base em seu consentimento para armazenar e / ou acessar informações em um dispositivo, exibir anúncios personalizados e para medição de conteúdo, percepção do público e desenvolvimento de produtos. Para alterar ou retirar suas opções de consentimento para Lifewire.com, incluindo seu direito de contestar quando um interesse legítimo é usado, clique abaixo. A qualquer momento, você pode atualizar suas configurações por meio do link “Privacidade da UE” na parte inferior de qualquer página. Essas escolhas serão sinalizadas globalmente para nossos parceiros e não afetarão os dados de navegação. Lista de parceiros (fornecedores)

Nós e nossos parceiros processamos dados para:

Faça a varredura ativamente das características do dispositivo para identificação. Use dados precisos de geolocalização. Armazene e / ou acesse informações em um dispositivo. Selecione o conteúdo personalizado. Crie um perfil de conteúdo personalizado. Avalie o desempenho do anúncio. Selecione anúncios básicos. Crie um perfil de anúncios personalizados. Selecione anúncios personalizados. Aplique pesquisas de mercado para gerar insights do público. Avalie o desempenho do conteúdo. Desenvolva e aprimore produtos. Lista de parceiros (fornecedores)