Bancos de Dados - Aula 20 - Formas Normais – Parte II
Introdução às Formas Normais em Banco de Dados
Conceito de Normalização
- A aula aborda a normalização em bancos de dados, focando em duas formas normais e suas propriedades essenciais.
- A dependência funcional transitiva é introduzida como um conceito fundamental para entender as regras da normalização.
Dependência Funcional Transitiva
- Definição: uma dependência funcional é transitiva se existe um conjunto de atributos que não é chave candidata e que conecta outras dependências funcionais.
- Exemplo prático: a relação entre funcionário e departamento ilustra como o identificador do funcionário determina o gerente do departamento através de uma cadeia de dependências.
Tratamento da Dependência Transitiva
- É necessário tratar as dependências funcionais transitivas para alcançar a terceira forma normal (3FN).
- Para que um esquema esteja na 3FN, deve estar primeiro na segunda forma normal (2FN), sem atributos não primos que sejam transitivos.
Regras para Alcançar a Terceira Forma Normal
Condições Necessárias
- A 3FN requer que todas as regras da 2FN sejam seguidas, além das especificidades próprias da 3FN.
- O tratamento das dependências parciais também é crucial, pois elas determinam se uma relação está ou não na 2FN.
Exemplificação da Normalização
- O exemplo apresentado mostra como decompor um esquema complexo em esquemas menores para facilitar a normalização até a 3FN.
- As novas relações criadas seguem as dependências funcionais estabelecidas no projeto original, melhorando sua estrutura.
Diretrizes Informais no Projeto de Banco de Dados
Importância das Diretrizes
- Um bom projeto evita misturar atributos diferentes, mantendo clareza nas relações entre entidades.
Estudo da Última Forma Normal em Banco de Dados
Introdução à Dependência Funcional e Chaves
- O departamento é uma chave primária que se relaciona com o funcionário, representando um relacionamento entre eles.
- A forma normal BCNF (Boyce-Codd Normal Form) é definida quando uma dependência funcional não trivial implica que X é uma super chave do esquema.
- A dependência funcional trivial ocorre quando um atributo depende de si mesmo, enquanto a não trivial envolve atributos diferentes.
Análise de Esquemas e Dependências Funcionais
- Ao analisar esquemas para a segunda forma normal, nem sempre se obtém relações que obedecem às regras da BCNF.
- Um exemplo diferente será analisado para entender como a DCNF (Dependência Chave Não Funcional) é mais restritiva.
- As dependências funcionais definidas pelo projetista são essenciais para determinar as chaves das relações.
Identificação de Chaves Candidatas
- A primeira dependência funcional determina todos os demais atributos da relação, tornando-se uma chave primária.
- Existe outra chave candidata definida por uma segunda dependência funcional, onde um conjunto de atributos determina outros na relação.
- A última dependência funcional indica que o atributo área determina o estado, exigindo repetição do valor do estado conforme as regras estabelecidas.
Validação das Dependências Funcionais
- Para validar a dependência funcional 5, deve-se garantir que valores repetidos atendam às regras estabelecidas no esquema.
- Se o valor do estado não se repetir corretamente ao longo das entradas, isso pode violar a regra da dependência funcional.
Normalização e Criação de Novas Relações
- A relação analisada não está na BCNF devido à falta de super chave na dependência funcional 5; portanto, precisa ser normalizada.
- É possível ter relações em 3M/S (terceira forma normal), mas ainda assim não alcançar a próxima forma normal desejada (BCNF).
- Para alcançar a BCNF, novas relações serão construídas considerando as independências funcionais existentes.
Construção das Novas Relações
- O primeiro passo na normalização envolve trabalhar com a dependência funcional 5 para criar novas relações adequadas à DCNF.
- Uma nova relação chamada "lotes" foi criada com dois atributos relacionados à dependência funcional 5.
Análise de Dependências Funcionais em Relações de Banco de Dados
Criação da Relação Lote 11 Aces
- Foi criada a relação "lote 11 aces", que inclui os atributos de propriedade e lote, além do atributo área, essencial para a dependência funcional.
Importância da Junção nas Decomposições
- A área é determinada pelo atributo de propriedade e serve como chave primária na nova relação. É crucial que as relações possam ser unidas novamente através de junções sem perdas.
Perda de Dependência Funcional
- Ao decompor as relações, uma dependência funcional foi perdida. Isso significa que um atributo necessário para verificar essa dependência não está mais presente na nova estrutura.
Verificação das Dependências Funcionais
- Para validar se a dependência funcional ainda é obedecida, será necessário realizar uma junção, o que pode ser custoso em termos de desempenho no banco de dados.
Propriedades Necessárias na Normalização
- Durante a normalização, cada atributo deve aparecer em pelo menos uma relação. Nenhum atributo do projeto original deve ser excluído na decomposição.
Formas Normais e Preservação das Dependências
- O objetivo é alcançar a forma normal mais alta possível (BCNF), mas se isso causar problemas, pode-se optar por formas normais inferiores que preservem as dependências funcionais.
Garantia contra Perdas nas Junções
- É fundamental assegurar que a decomposição não cause perdas durante as junções. Caso contrário, informações erradas podem ser criadas, resultando em duplas espúrias.
Sacrifício da Normalização por Dependências Funcionais