Pular para o conteudo

Resumo TI Banco de Dados: Dependências Funcionais

O resumo anterior mostrou o sintoma — as três anomalias de atualização — a partir de uma tabela mal projetada, mas descreveu a causa (misturar atributos de entidades diferentes) de forma só informal. Agora é hora de formalizar: dependência funcional é o conceito que dá nome preciso a essa relação entre atributos, e é a base matemática sobre a qual toda a teoria de normalização é construída.

Neste resumo, você vai aprender a notação e a definição formal de dependência funcional, entender a diferença entre dependência trivial e não trivial, revisitar chave candidata sob essa nova lente e conhecer as regras (axiomas de Armstrong) usadas para provar que uma dependência é consequência de outras.

📲 Canal Oficial do Dicionário do Concurseiro no WhatsApp

Receba resumos, questões comentadas e novidades diretamente no seu celular!

👉 Acessar Canal no WhatsApp

💡 Conteúdo exclusivo para concurseiros. Totalmente gratuito!

🔑 Definição formal e notação

Numa relação R, existe uma dependência funcional de um conjunto de atributos X para um conjunto de atributos Y — notação X → Y, lida como “X determina Y” ou “Y depende funcionalmente de X” — quando, para quaisquer duas linhas de R que tenham o mesmo valor de X, elas obrigatoriamente têm também o mesmo valor de Y. Em outras palavras: conhecer o valor de X é suficiente para saber, sem ambiguidade, o valor de Y. X é chamado de determinante; Y, de dependente.

🗄️ Exemplo prático (retomando o resumo anterior)

Na tabela Funcionario(matricula, nome, departamento, gerente_departamento) do resumo anterior, valem as dependências matricula → nome e matricula → departamento (cada matrícula pertence a um único funcionário, que tem um único nome e está lotado num único departamento). Também vale departamento → gerente_departamento (cada departamento tem um único gerente). Note que esta última não depende de matricula — é justamente essa dependência “escondida” dentro de uma tabela pensada em torno de funcionário que gera as três anomalias já vistas.

➗ Dependência trivial x não trivial

Uma dependência X → Y é trivial quando Y é subconjunto de X (ex.: {matricula, nome} → nome) — ela é sempre verdadeira, por definição, e não carrega informação nova sobre o esquema. É não trivial quando Y não está contido em X (ex.: matricula → nome). Só as dependências não triviais interessam para decidir se um esquema está bem projetado; dependências triviais aparecem em provas como distrator, citadas como se fossem uma regra de negócio relevante.

🗝️ Superchave e chave candidata, agora com definição formal

Superchave é qualquer conjunto de atributos K tal que K determina funcionalmente todos os demais atributos da relação (K → todos os outros atributos). Chave candidata é uma superchave mínima: nenhum subconjunto próprio de K também é superchave. Em Funcionario, matricula sozinha já é chave candidata: sendo composta por um único atributo, não existe subconjunto próprio não vazio menor que ela, então a minimalidade é satisfeita automaticamente. Já {matricula, nome} é superchave, mas não é chave candidata, porque o subconjunto {matricula} sozinho já determina tudo.

🧩 Dependência funcional total (completa)

Quando a chave candidata é composta (mais de um atributo), surge uma distinção importante: uma dependência funcional é total (ou completa) quando o atributo dependente precisa do conjunto inteiro da chave para ser determinado — removendo qualquer atributo da chave, a dependência deixa de valer. Esse conceito é a base do próximo resumo, que trata do caso oposto: quando um atributo depende de apenas parte de uma chave composta. (Esse é o recorte mais cobrado em prova; formalmente, a noção de dependência total/parcial vale para qualquer conjunto determinante, não só chaves.)

📐 Axiomas de Armstrong: provando dependências implícitas

As dependências funcionais de um esquema não precisam ser todas declaradas explicitamente — muitas são implicadas por outras, e os axiomas de Armstrong são as três regras de inferência que permitem provar isso formalmente:

  • Reflexividade: se Y é subconjunto de X, então X → Y (gera exatamente as dependências triviais);
  • Aumento: se X → Y, então X∪Z → Y∪Z para qualquer conjunto Z (acrescentar os mesmos atributos dos dois lados preserva a dependência);
  • Transitividade: se X → Y e Y → Z, então X → Z.

Aplicando transitividade ao exemplo: como matricula → departamento e departamento → gerente_departamento, conclui-se que matricula → gerente_departamento — uma dependência que não precisou ser declarada à parte, ela já estava implícita nas outras duas.

⚠️ Pegadinhas comuns

  • “X determina Y” não é o mesmo que “Y determina X”: dependência funcional não é simétrica — departamento → gerente_departamento não implica gerente_departamento → departamento (um gerente pode, em tese, responder por mais de um departamento);
  • Dependência funcional é sobre o esquema, não sobre uma instância específica de dados: ela precisa valer para qualquer conjunto de linhas válido da tabela, não apenas para os dados que estão nela hoje;
  • Superchave sempre existe (a tabela toda é uma); chave candidata pode ser mais de uma: uma relação pode ter múltiplas chaves candidatas; a que é escolhida para ser a chave primária é uma decisão de projeto, não uma imposição da teoria;
  • Não confundir os três axiomas de Armstrong com regras de normalização: eles servem para inferir dependências (matemática pura), não para classificar formas normais — esse é o tema dos próximos resumos.

🎯 Dica Final para a Prova

Quando a questão apresentar uma dependência e pedir para classificá-la, primeiro cheque se o lado direito está contido no esquerdo (trivial) ou não (não trivial). Quando pedir para provar uma dependência “nova” a partir de outras já dadas, procure aplicar transitividade — é o axioma mais cobrado, porque simula exatamente o raciocínio de “A implica B, B implica C, logo A implica C”.

✓ Agora que você sabe o que é uma dependência funcional total (aquela que depende da chave inteira), o próximo resumo mostra o que acontece quando essa regra é quebrada: dependências parciais (de parte da chave) e transitivas (de um atributo que não é chave) — as duas violações formais da chave que explicam, de forma sistemática, as anomalias vistas no resumo anterior.


📍Gostou do conteúdo? Deixe um comentário, compartilhe e continue acompanhando o Dicionário do Concurseiro para mais Resumos de TI – Banco de Dados. Aqui você encontra explicações claras, atualizadas e com foco total no que cai em prova!

👉 Leia também no Dicionário do Concurseiro: Resumo TI Banco de Dados: Dependências Parciais e Transitivas


📘 Dependência funcional é a régua matemática que mede se um atributo “pertence” a outro dentro da tabela — e é essa régua que a normalização usa para decidir onde cortar. Continue estudando!

Gostou deste conteúdo?

Favoritar

Comentários

Seja o primeiro a comentar.