Pular para o conteúdo principal
InicioTutoriaisSQL

O que é dependência transitiva?

Uma dependência transitiva ocorre quando um atributo em um banco de dados depende indiretamente de outro por meio de um terceiro atributo, causando redundância. Continue lendo para saber como identificar e eliminar dependências transitivas no design do banco de dados.
Actualizado 1 de out. de 2024  · 5 min leer

Nos bancos de dados, a dependência transitiva ocorre quando um atributo em uma tabela depende de outro atributo, que também depende da chave primária. A dependência transitiva é um problema na normalização do banco de dados porque leva a problemas de dados, como anomalias de atualização, inserção e exclusão, que exploraremos neste artigo. 

Se, depois deste artigo, você quiser saber mais, recomendo que faça o curso Database Design do DataCamp para se familiarizar com os bancos de dados relacionais e com o armazenamento de dados em um banco de dados. Também recomendo que você consulte nosso tutorial Normalização em SQL para saber mais sobre as formas normais em SQL, que é a linguagem mais comum para gerenciar bancos de dados relacionais nesse contexto.

Entendendo a dependência transitiva em bancos de dados

Em bancos de dados relacionais, a dependência transitiva ocorre quando um atributo depende indiretamente de outro por meio de um atributo intermediário. Esse problema significa que o valor de uma coluna pode ser determinado indiretamente a partir dos valores de duas outras colunas. Considere a tabela a seguir, chamada DataCamp_Programs:

Curso ou trilha de habilidades Instrutor Título do instrutor
Manipulação de dados em SQL Mona Khalil Cientista de dados
Fundamentos de SQL Mona Khalil Cientista de dados
Introdução ao SQL Izzy Weber Treinador de dados

A partir dessa tabela:

  • Course_or_Skill_TrackInstructor: Se você conhece o curso ou a trilha de habilidades, conhece o instrutor.

  • Instructor não → Course_or_Skill_Track: Às vezes, os instrutores ensinam mais de um curso.

  • InstructorInstructor_Title: Cada instrutor tem um título.

Portanto, Course_or_Skill_TrackInstructor_Title é uma dependência transitiva. 

Por que as dependências transitivas causam problemas

As dependências transitivas podem causar problemas no banco de dados, principalmente relacionados à redundância, anomalias e inconsistência dos dados.

Redundância de dados

A redundância de dados ocorre quando os mesmos dados são repetidos desnecessariamente no banco de dados, o que leva a ineficiências. No exemplo da tabela DataCamp_Programs, o título do instrutor é armazenado várias vezes para cada curso que ele ministra. Essa repetição desperdiça espaço de armazenamento e torna o banco de dados mais difícil de manter.

Anomalias de dados

Vamos examinar agora os problemas de atualização, inserção e exclusão.

Atualizar anomalias

As anomalias de atualização ocorrem quando as alterações nos dados precisam ser aplicadas em vários locais devido à redundância. Isso leva a inconsistências se algumas instâncias forem atualizadas e outras não. Imagine, por exemplo, que usamos uma consulta SQL para atualizar a tabela DataCamp_Programs porque o título de Mona Khalil foi alterado para Lead Data Scientist. Você precisaria atualizar manualmente cada linha em que o título dela aparece. Se uma instância sequer for perdida, o banco de dados conterá informações conflitantes sobre seu título atual. 

Curso ou trilha de habilidades Instrutor Título do instrutor
Manipulação de dados em SQL Mona Khalil Cientista líder de dados
Fundamentos de SQL Mona Khalil Cientista de dados
Introdução ao SQL Izzy Weber Treinador de dados

Anomalias de inserção

As anomalias de inserção ocorrem quando você não consegue inserir dados no banco de dados porque outros dados necessários estão faltando. Em outros casos, talvez você consiga inserir dados, mas a estrutura da tabela o obriga a incluir informações irrelevantes, redundantes ou ausentes, como no exemplo abaixo:

Curso ou trilha de habilidades Instrutor Título do instrutor
Manipulação de dados em SQL Mona Khalil Cientista de dados
Fundamentos de SQL Mona Khalil Cientista de dados
Introdução ao SQL Izzy Weber Treinador de dados
TBD Liam Cooper Analista de dados

Anomalias de deleção

As anomalias de exclusão ocorrem quando a exclusão de um registro remove inadvertidamente informações valiosas do banco de dados. Por exemplo, a exclusão do registro que contém Izzy Weber removeria também o título de instrutor, o que poderia levar à perda de dados, pois você poderia não ter mais a gama completa de títulos no sistema. Aqui, podemos ter removido o Data Coach do sistema completamente sem a intenção de ter esse comportamento.

Curso ou trilha de habilidades Instrutor Título do instrutor
Manipulação de dados em SQL Mona Khalil Cientista de dados
Fundamentos de SQL Mona Khalil Cientista de dados

Remoção de dependências transitivas com 3NF

No contexto do banco de dados, a normalização organiza os dados para minimizar a redundância e melhorar a integridade dos dados. Por esse motivo, as dependências transitivas são frequentemente discutidas no contexto da terceira forma normal (3NF), uma técnica de normalização de banco de dados que elimina dependências para resolver o problema da dependência transitiva. 

A terceira forma normal é um nível de normalização do banco de dados que elimina as dependências transitivas e garante que cada atributo não-chave dependa apenas da chave primária. Isso ajuda a evitar a redundância e os erros causados por dependências transitivas. Considere as seguintes etapas ao normalizar um esquema de banco de dados.

Identificação de dependências transitivas

Para identificar dependências transitivas em seu banco de dados, divida o processo:

  1. Verifique as dependências funcionais da chave primária: Comece identificando todas as dependências funcionais em que os atributos dependem diretamente da chave primária. Essa etapa ajuda você a se concentrar nos principais relacionamentos da sua tabela.
  2. Procure por dependências indiretas: Em seguida, verifique se algum atributo não-chave (aqueles que não fazem parte da chave primária) depende de outros atributos não-chave. Se você descobrir que um atributo não-chave depende de outro, que por sua vez depende da chave primária, você identificou uma dependência transitiva.
  3. Teste de redundância ou anomalias: Por fim, pense se essa dependência indireta introduz redundância de dados ou torna as atualizações mais complicadas.

Divisão de tabelas

Depois de identificar as dependências transitivas, você precisa dividir as tabelas para eliminá-las. Você dividirá a tabela em tabelas menores, nas quais os atributos que não são chaves dependem diretamente da chave primária. Você também preservará o relacionamento entre as tabelas vinculando-as por meio de chaves estrangeiras.

Veja como você pode dividir a tabela DataCamp_Programs em duas tabelas para normalizá-la e eliminar a dependência transitiva. Como você verá, dividimos a tabela em duas. instructor torna-se a chave para vincular as duas.   

Tabela 1: courses_table

Curso ou trilha de habilidades Instrutor
Manipulação de dados em SQL Mona Khalil
Fundamentos de SQL Mona Khalil
Introdução ao SQL Izzy Weber

Tabela 1: instructors_table

Instrutor Título do instrutor
Mona Khalil Cientista de dados
Izzy Weber Treinador de dados

Essa estrutura elimina a dependência transitiva, em que Instructor_Title era anteriormente dependente de Course_or_Skill_Track por meio de Instructor. Agora, Instructor_Title depende apenas de Instructor.

Como evitar dependências transitivas

Ao projetar seu banco de dados, é importante evitar dependências transitivas para manter a eficiência, a escalabilidade e a integridade dos dados. A seguir, você encontrará as práticas recomendadas para minimizar os riscos de redundância, anomalias e inconsistência.

  • Normalização durante o design do esquema: Se você estiver projetando o banco de dados a partir do esquema, é importante considerar a terceira forma normal (3NF) nos estágios iniciais. Essa abordagem ajudará a reduzir a dependência transitiva aplicando a técnica de normalização. 
  • Auditorias regulares de esquema: Depois de criar o banco de dados, é importante realizar auditorias regulares para garantir que ele permaneça livre de dependências transitivas.
  • Evitando simplificar demais os relacionamentos: Sempre mapeie os relacionamentos e separe as entidades adequadamente em tabelas diferentes para armazenar informações diferentes.

Conclusão

As dependências transitivas em bancos de dados ocorrem quando um atributo em uma tabela depende de outro atributo, que depende da chave primária. A dependência transitiva sempre afeta a eficiência do banco de dados, introduzindo redundância, inconsistências e anomalias. Como desenvolvedor, é importante identificar e eliminar as dependências transitivas para garantir a integridade dos dados. Você também deve identificar e eliminar as dependências transitivas durante o projeto do banco de dados. A obtenção da terceira forma normal (3NF) ajudará você a otimizar os bancos de dados e aumentar a eficiência.

Se você quiser aprimorar suas habilidades de design de banco de dados, recomendo que faça o curso Creating PostgreSQL Databases (Criando bancos de dados PostgreSQL ) da DataCamp para saber mais sobre design de esquemas e controles de acesso a bancos de dados. Por fim, se você deseja aprimorar suas habilidades de gerenciamento de banco de dados para big data, recomendo que faça nosso curso Introdução à modelagem de dados no Snowflake para saber mais sobre relacionamentos, modelagem dimensional e cofres de dados para criar data warehouses eficientes na nuvem.

Obtenha uma das melhores certificações em SQL

Comprove suas habilidades básicas em SQL e avance em sua carreira de dados.

Obtenha a Certificação SQL

Photo of Allan Ouko
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 sobre dependência transitiva

Qual é a diferença entre dependências funcionais e dependências transitivas?

Uma dependência funcional ocorre quando um atributo depende diretamente da chave primária. Uma dependência transitiva ocorre quando um atributo não-chave depende de outro atributo não-chave, que, por sua vez, depende da chave primária.

Por que as dependências transitivas são problemáticas?

As dependências transitivas levam à redundância de dados e a anomalias, como anomalias de atualização, inserção e exclusão.

O que é normalização de dados?

A normalização de dados é o processo de organização de um banco de dados em tabelas e colunas para reduzir a redundância de dados e melhorar a integridade dos dados.

O que é a terceira forma normal (3NF)?

A terceira forma normal (3NF) é uma técnica de normalização sem dependências transitivas. Em 3NF, todo atributo não-primário deve depender apenas da chave primária, garantindo que não haja dependências indiretas.

Temas

Aprenda com a DataCamp

Course

Database Design

4 hr
75.7K
Learn to design databases in SQL to process, store, and organize data in a more efficient way.
See DetailsRight Arrow
Start Course
Ver maisRight Arrow
Relacionado

blog

O que é um banco de dados gráfico? Um guia para iniciantes

Explore o intrincado mundo dos bancos de dados gráficos com nosso guia para iniciantes. Entenda as relações entre os dados, aprofunde-se na comparação entre bancos de dados relacionais e gráficos e explore casos de uso práticos.
Kurtis Pykes 's photo

Kurtis Pykes

11 min

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

16 min

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

9 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

3 min

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

13 min

tutorial

Tutorial do Insert Into SQL

A instrução "INSERT INTO" do SQL pode ser usada para adicionar linhas de dados a uma tabela no banco de dados.
DataCamp Team's photo

DataCamp Team

3 min

See MoreSee More