logo

Dependência transitiva em SGBD

Vamos considerar uma relação R(A B C). Aqui A, B e C são conhecidos como o atributo da relação R. Quando surge a seguinte condição; então a dependência transitiva ocorre no SGBD. As condições são A → B, B → C. Portanto, a condição passa a ser A → C. Em outras palavras, podemos dizer que quando as dependências são feitas por duas dependências funcionais, então as dependências funcionais tornam-se dependências transitivas.

O que é dependência transitiva?

Considere uma relação R(A B C). Aqui A, B e C são conhecidos como o atributo da relação R. Quando surge a seguinte condição; então a dependência transitiva ocorre no SGBD. As condições são A → B, B → C. Portanto, a condição torna-se A → C. Em dependências funcionais transitivas, um dependente é diretamente dependente do determinante.

Vamos entender as dependências transitivas com a ajuda do exemplo a seguir.

Autor_ID Autor Livro Autor_Nacionalidade
A1 Arundhati Roy O Deus das Pequenas Coisas Índia
A1 Kiran Desai A herança da perda Índia
A2 RK Narayan O Devorador de Homens de Malgudy Índia

Na tabela do autor acima, conseguimos isso.

    Livro → Autor:Aqui, o atributo autor é determinado pelo atributo livro. Se alguém souber o nome do livro, também poderá saber o nome do autor.Autor → Autor_Nacionalidade:Se alguém souber o nome do autor, também poderá saber a nacionalidade do autor.Livro → Autor_Nacionalidade: Se alguém souber o nome do livro, também poderá saber a nacionalidade do autor.

Se observarmos atentamente as dependências funcionais discutidas acima, encontraremos o seguinte padrão.

  • A → B e B → C B→C; portanto, A → CA → C.
  • A → Livro, B → Autor B → Autor e C → Autor_Nacionalidade C→Autor_Nacionalidade

Suponha que apliquemos a Terceira Forma Normal (3NF) na tabela de autores acima. Nesse caso, a dependência transitiva da tabela do autor deve ser removida, e o processo de remoção das dependências transitivas do banco de dados é conhecido como processo de Normalização.

Como evitar dependências transitivas?

Vamos considerar novamente a tabela do autor acima e ver que tipo de problema surge durante a criação da tabela.

Tabela de autores:

Autor_ID Autor Livro Autor_Nacionalidade
A1 Arundhati Roy O Deus das Pequenas Coisas Índia
A1 Kiran Desai A herança da perda Índia
A2 RK Narayan O Devorador de Homens de Malgudy Índia

As anomalias de dados (como anomalias de atualização, inserção e exclusão) e inconsistências podem ser contribuídas pela tabela do autor. Quando há muita redundância no banco de dados, anomalias de dados são causadas nos dados. Anomalias de dados também são causadas quando há um problema com atualização, exclusão e inserção de novos dados. Por exemplo, na tabela do autor-

  • Não podemos adicionar um novo autor até que não possamos adicionar um livro à tabela.
  • Não podemos excluir o autor até excluirmos completamente o livro do banco de dados.
  • Se quisermos deletar o livro 'O Deus das Pequenas Coisas', a identidade do autor, o autor e a nacionalidade também serão deletados.

Os problemas acima ocorrem em qualquer relacionamento que contenha dependências transitivas.

Terceira forma normal removendo a dependência transitiva

Vamos considerar o Tabela de autores com três atributos (Author_ID, Author, Author_Nationality) e tente encontrar e eliminar a dependência Transitiva desta tabela,

Tabela de Autores:

Autor_ID Autor Livro Autor_Nacionalidade
A1 Arundhati Roy O Deus das Pequenas Coisas Índia
A1 Kiran Desai A herança da perda Índia
A2 RK Narayan O Devorador de Homens de Malgudy Índia

A tabela do autor acima não está na 3NF porque possui uma dependência transitiva. Vamos ver como

pés versus pés
  • Autor → Autor_Nacionalidade Autor → Autor_Nacionalidade
  • Autor_ID → Autor

Portanto, a seguinte dependência funcional também existe,

  • Authir_ID → Author_Nationality está formando um padrão semelhante ao que discutimos acima.

Agora, para eliminar a dependência Transitiva, tudo o que precisamos fazer é dividir a tabela do Autor de tal maneira que Autor_ID não dependa mais funcionalmente de Autor_Nacionalidade.

Vamos criar duas tabelas, uma contendo apenas { Author_ID, Author} e outra contendo {Author_Nationality}. As novas tabelas ficarão assim,

Tabela de Autores

Autor_ID Autor
A1 O Deus das Pequenas Coisas
A2 A herança da perda
A3 O Devorador de Homens de Malgudy

Tabela de Nacionalidade do Autor

Autor Autor_Nacionalidade
Arundhati Roy Índia
Kiran Desai Índia
RK Narayan Índia

Agora a nova tabela Autor e a tabela Nacionalidade do Autor não contêm dependência transitiva e a relação agora está em 3NF.