Normalização - erinaldosn.files.wordpress.com · Forma Normal de Boyce-Codd (FNBC) •Cada...

57
Normalização Anomalias Dependência e determinantes Normalização FACULDADE ANGLO AMERICANO FOZ DO IGUAÇU Curso de Ciência da Computação 5º Periodo Disciplina: Banco de Dados I Prof. Erinaldo Sanches Nascimento

Transcript of Normalização - erinaldosn.files.wordpress.com · Forma Normal de Boyce-Codd (FNBC) •Cada...

Normalização

Anomalias

Dependência e determinantes

Normalização

FACULDADE ANGLO AMERICANO – FOZ DO IGUAÇU Curso de Ciência da Computação – 5º Periodo Disciplina: Banco de Dados I Prof. Erinaldo Sanches Nascimento

Definição

• Formas normais

• Remove a duplicação e minimiza redundância de dados.

• Resultado em uma melhor organização e uma utilização mais eficaz do espaço físico.

2 http://erinaldosn.wordpress.com

O Conceito de Anomalias

• A intenção da teoria de banco de dados relacional é eliminar a ocorrência de anomalias numa base de dados.

• Anomalias podem, eventualmente, ocorrer durante alterações a uma base de dados, pois os dados podem tornar-se logicamente corrompido.

http://erinaldosn.wordpress.com 3

Redundância

A informação pode estar repetida desnecessariamente em várias tuplas.

http://erinaldosn.wordpress.com 4

Anomalia de Inserção

Causado quando um registro é adicionado a uma tabela de detalhes, sem nenhum registro relacionado existente em uma tabela mestre.

http://erinaldosn.wordpress.com 5

http://erinaldosn.wordpress.com 6

Anomalia de Exclusão

• Causado quando um registro é excluído de uma tabela mestre, sem primeiro excluir todos os registros de irmãos, em uma tabela detalhe.

• A exceção é a deleção em cascata, ocorrendo quando a exclusão de um registro mestre automaticamente exclui todos os registros de filhos em todas as tabelas de detalhes relacionadas, antes de excluir o registro pai da tabela mestre.

http://erinaldosn.wordpress.com 7

http://erinaldosn.wordpress.com 8

Anomalia de Atualização

• Esta anomalia é semelhante à deleção em que ambos os registros mestre e detalhe devem ser atualizados para evitar registros de detalhe órfãos.

• Quando em cascata, garante que todas as atualizações de chave primária são propagadas para as chaves estrangeiras da tabela filha relacionada.

http://erinaldosn.wordpress.com 9

Dependência Funcional

Y é funcionalmente dependente X se o valor de Y é determinado por X.

Em outras palavras, se Y = X 1, o valor de X irá determinar o valor resultante de Y. Assim, Y é dependente X como uma função do o valor de X.

http://erinaldosn.wordpress.com 10

Determinante

O determinante na descrição da dependência funcional no ponto anterior é X porque X determina o valor Y, pelo menos parcialmente porque 1 é adicionado a X também.

Um fator determinante é a inversão ou o oposto da dependência funcional.

http://erinaldosn.wordpress.com 11

http://erinaldosn.wordpress.com 12

Dependência Transitiva

• Z é transitivamente dependente de X quando X determina Y e Y determina Z.

• Dependência transitiva descreve assim que Z é indiretamente dependente de X através de sua relação com Y.

http://erinaldosn.wordpress.com 13

Chave Candidata

Uma chave candidata (chave potencial ou admissível) é um campo ou combinação de campos que podem agir como um campo de chave primária para uma tabela, assim identificando exclusivamente cada registro na tabela.

http://erinaldosn.wordpress.com 14

http://erinaldosn.wordpress.com 15

Dependência Funcional Total

• Esta situação ocorre em que X determina Y, mas X combinados com Z não determina Y. Em outras palavras, Y depende X e X sozinho.

• Se Y depende de X com qualquer outra coisa, não há dependência funcional total.

• Essencialmente X, o determinante, não pode ser uma chave composta.

• Uma chave composto contém mais do que um campo (o equivalente de X com Z).

http://erinaldosn.wordpress.com 16

http://erinaldosn.wordpress.com 17

Dependência Multivalorada

• Uma dependência com vários valores. • Um exemplo de uma dependência de valores múltiplos

é um campo contendo uma lista separada por vírgulas ou coleção de algum tipo. – Uma colecção poderia ser uma matriz de valores do

mesmo tipo. – Esses valores múltiplos são dependentes como um todo na

chave primária, como um todo significa toda a coleção na lista delimitada por vírgulas.

• Uma dependência multivalorada trivial ocorre entre dois campos quando eles são os únicos dois campos na tabela. Um deles é a chave primária e outro a lista do multivalorado.

http://erinaldosn.wordpress.com 18

http://erinaldosn.wordpress.com 19

Dependência Cíclica

• Significa que X é dependente de Y, que por sua vez também é dependente X, direta ou indiretamente.

• Dependência cíclica indica um padrão logicamente circular de interdependência.

• Dependência cíclica geralmente ocorre com tabelas contendo uma chave primária composta de três ou mais campos. – onde três campos estão relacionados em pares uns para os

outros.

• Em outras palavras, X refere-se a Y, Y refere-se a Z, e X relaciona-se com Z. Em última análise Z relaciona de volta com X.

http://erinaldosn.wordpress.com 20

Formas Normais

• 1ª Forma Normal (1FN)

• 2ªForma Normal (2FN)

• 3ª Forma Normal (3FN)

• Forma Normal de Boyce-Codd (FNBC)

• 4ª Forma Normal (4FN)

• 5ª Forma Normal (5FN)

• Forma Normal de Chave-Domínio (FNCD)

http://erinaldosn.wordpress.com 21

1ª Forma Normal (1FN)

• Elimina grupos de repetição de tal forma que todos os registros em todas as tabelas podem ser identificados exclusivamente por uma chave primária em cada tabela.

• Todos os outros campos do que a chave primária deve depender da chave primária.

1. Remove campos de repetição 2. Cria uma nova tabela onde a tabela original e novo estão

ligados entre si com um mestre-detalhe, um-para-muitos. 3. Cria chaves primárias em ambas as tabelas onde a tabela

de detalhes terá uma chave primária composta contendo o campo de chave primária da tabela mestre como o campo prefixo da sua chave primária. Esse campo prefixo é também uma volta de chave estrangeira para a tabela mestre.

http://erinaldosn.wordpress.com 22

1FN faz o seguinte

• Elimina a grupos de repetição. • Define as chaves primárias. • Todos os registros devem ser identificados unicamente

com uma chave primária. Uma chave primária é único e, portanto, não são permitidos valores duplicados.

• Todos os outros campos do que a chave primária deve depender da chave primária, direta ou indiretamente.

• Todos os campos devem conter um único valor. • Todos os valores em cada campo deve ser do mesmo

tipo de dados. • Criar uma nova tabela para mover os grupos de

repetição da tabela original.

http://erinaldosn.wordpress.com 23

Tabela Desnormalizada

http://erinaldosn.wordpress.com 24

http://erinaldosn.wordpress.com 25

2ªForma Normal (2FN)

• Todos os valores não-chave devem ser totalmente funcionalmente dependente da chave primária.

• Não são permitidas dependências parciais.

– Uma dependência parcial ocorre quando um campo é totalmente dependente de uma parte de uma chave primária composta.

1. Cria uma tabela em que os valores de repetição são removidos para uma nova tabela. O resultado é um relacionamento muitos-para-um em vez de uma relação um-para-muitos, criado entre o original e as novas tabelas.

2. A nova tabela obtém uma chave primária consistindo de um único campo.

3. A tabela mestre contém uma chave estrangeira apontando para a chave primária da nova tabela. Essa chave estrangeira não é parte da chave primária da tabela original.

http://erinaldosn.wordpress.com 26

2FN faz o seguinte

• A tabela deve estar na 1FN. • Todos os valores não-chave devem ser totalmente

dependente funcional da chave primária. – Não são permitidos campos não-chave não completamente e

individualmente dependente da chave primária.

• Dependências parciais deve ser removido. – Uma dependência parcial é um tipo especial de dependência

funcional que se verifica quando um campo é totalmente dependente de uma parte de uma chave primária composta.

Indicando os últimos dois pontos de uma forma diferente, remova os campos que são independentes da chave primária. • Criar uma nova tabela para separar a parte parcialmente

dependente da chave primária e os seus campos dependentes.

http://erinaldosn.wordpress.com 27

A tabela LIVRO está na 1FN

http://erinaldosn.wordpress.com 28

http://erinaldosn.wordpress.com 29

http://erinaldosn.wordpress.com 30

3ª Forma Normal (3FN)

• Elimina dependências transitivas – Significa que um campo é indiretamente

determinado pela chave primária.

– Isto é porque o campo é funcionalmente dependente de outro campo, enquanto que o outro campo é dependente da chave primária.

• Eliminação de uma dependência transitiva implica a criação de uma nova tabela para algo indiretamente dependente da chave primária em uma tabela existente.

http://erinaldosn.wordpress.com 31

A 3FN faz o seguinte

• A tabela deve estar na 2NF.

• Elimina as dependências transitivas.

– Uma dependência transitiva é onde um campo é determinado indiretamente pela chave primária, porque esse campo é funcionalmente dependente de um segundo campo, onde o segundo campo é dependente da chave primária.

• Cria uma nova tabela para conter todos os campos separados.

http://erinaldosn.wordpress.com 32

http://erinaldosn.wordpress.com 33

http://erinaldosn.wordpress.com 34

http://erinaldosn.wordpress.com 35

http://erinaldosn.wordpress.com 36

Além da 3ª Forma Normal (3FN)

• Muitos modelos modernos bancos de dados relacionais não se estendem além 3FN.

• Os maiores problemas com ir além 3FN são questões de complexidade e desempenho.

• Formas extremas de redução não são um benefício para o modelo de banco de dados relacional.

• Níveis extremos de granularidade na modelagem de banco de dados relacional são uma forma de perfeição matemática.

http://erinaldosn.wordpress.com 37

Um-para-Um Tabelas NULL

http://erinaldosn.wordpress.com 38

remover campos NULL para novas tabelas.

http://erinaldosn.wordpress.com 39

http://erinaldosn.wordpress.com 40

Forma Normal de Boyce-Codd (FNBC)

• Cada determinante em uma tabela é uma chave candidata.

• Se houver apenas uma chave candidata, 3FN e BCNF são uma e a mesma coisa.

http://erinaldosn.wordpress.com 41

FNBC faz o seguinte

• A tabela deve estar na 3FN.

• Uma tabela pode ter apenas uma chave candidato.

Uma chave candidata tem potencial para ser

chave primária de uma tabela.

http://erinaldosn.wordpress.com 42

http://erinaldosn.wordpress.com 43

Usando FNBC para separar todas as chaves candidatas em tabelas separadas.

http://erinaldosn.wordpress.com 44

Um tipo comum de exemplo de transformação FNBC.

http://erinaldosn.wordpress.com 45

Os dados para o tipo comum de transformação FNBC exemplificado na figura anterior.

4ª Forma Normal (4FN)

Elimina vários conjuntos de dependências multivaloradas.

http://erinaldosn.wordpress.com 46

A 4ª FN faz o seguinte

1. A tabela deve estar na 3FN ou FNBC com 3FN.

2. Dependências multivalorados devem ser transformados em dependências funcionais. Isto implica que um valor e não vários valores são dependentes de uma chave primária.

3. Elimina vários conjuntos de dependências múltivaloradas ou vários valores, por vezes descrita como dependências multivaloradas não-triviais.

http://erinaldosn.wordpress.com 47

http://erinaldosn.wordpress.com 48

http://erinaldosn.wordpress.com 49

5ª Forma Normal (5FN)

• Elimina dependências cíclicas.

• A 5FN também é conhecida como Forma Normal de Projeção-Junção (NFPJ).

http://erinaldosn.wordpress.com 50

A 5ªFN faz o seguinte

1. A tabela deve estar em 4NF.

2. Dependências cíclicas devem ser eliminadas.

http://erinaldosn.wordpress.com 51

http://erinaldosn.wordpress.com 52

http://erinaldosn.wordpress.com 53

http://erinaldosn.wordpress.com 54

Transformações na 5FN às vezes remove duplicações.

Forma Normal de Chave-Domínio (FNCD)

NFCD é a aplicação final de normalização e é mais uma medição do estado conceitual, em oposição a um processo de transformação em si mesmo.

Descreve como um modelo de banco de dados totalmente normalizado deve aparecer.

http://erinaldosn.wordpress.com 55

Banco de dados totalmente normalizado

• Não pode haver inserção, alteração ou remoção de anomalias de dados.

• Cada registro em cada tabela deve ser unicamente identificável e diretamente relacionado com a chave primária na sua tabela.

• Todos validação dos dados é feita dentro do modelo de banco de dados.

http://erinaldosn.wordpress.com 56

A maioria de normalização é essencialmente o senso comum.

Analistas podem descobrir 1FN, 2FN e 3FN para um conjunto de dados. Qualquer outra coisa é geralmente ignorado.

http://erinaldosn.wordpress.com 57