Conceito de Chave Composta Combinação de dois ou mais campos que têm altas chances de serem...

Post on 17-Apr-2015

103 views 0 download

Transcript of Conceito de Chave Composta Combinação de dois ou mais campos que têm altas chances de serem...

Conceito de Chave Composta

• Combinação de dois ou mais campos que têm altas chances de serem chaves:

Matr Nome Endereco

15315 Judson

11239 Angelica

24217 Amanda

Codigo Nome Carga_Horaria

A-100 POO 22B-100 ED 35C-100 Compiladores 65

Aluno Disciplina

Matr_Aluno Codigo_Disciplina Data_Matricula

15315 A-100 12/03/2010

11239 B-100 12/03/2010

24217 C-100 12/03/2010

24217 A-100 12/03/2010

Matricula

Normalização

Profa. Angélica Félix de Castro

3

Consistência de Dados

• Controlar a construção do sistema através da criação de tabelas segundo regras que garantam a manutenção de certas propriedades.

• As tabelas que atendem a um determinado conjunto de regras, diz-se estarem em uma determinada forma normal.

Normalização • Processo de definir o formato lógico adequado para as

estruturas de dados

• Objetivo de minimizar o espaço utilizado pelos dados e garantir a integridade e confiabilidade das informações

• Evita redundância

• Possibilita maior desempenho do BD

• A normalização é feita, através da análise dos dados que compõem as estruturas utilizando o conceito chamado "Formas Normais (FN)".

Normalização • As FN são conjuntos de restrições nos quais os dados

devem satisfazê-las.

• Exemplo: pode-se dizer que a estrutura está na primeira forma normal (1FN), se os dados que a compõem satisfizerem as restrições definidas para esta etapa.

• A normalização completa dos dados é feita, seguindo as restrições das três formas normais existentes, sendo que a passagem de uma FN para outra é feita tendo como base o resultado obtido na etapa anterior, ou seja, na FN anterior.

• Para realizar a normalização dos dados, é primordial que seja definido um campo chave para a estrutura, campo este que permite irá identificar os demais campos da estrutura. Formas Normais existentes:

Primeira Forma Normal

Consiste em retirar da estrutura os elementos repetitivos, ou seja, aqueles dados que podem

compor uma estrutura de vetor. Podemos afirmar que uma estrutura está normalizada

na 1FN, se não possuir elementos repetitivos.

Primeira Forma Normal

• Estrutura original:– Tabela Projetos (Cod_Proj, Tipo, Descricao, Empresa

• (onde para cada Empresa temos: Id_Emp, Nome, Categoria, Salario, data_inicio)

Analisando a estrutura acima, observamos que existem várias empresas no campo Empresa, sendo portanto

elementos repetitivos que deverão ser retirados.

Cod_Proj* Tipo Descricao Empresa

Cod_Emp

Nome Categoria Salario Data_inicio

LSC001 RH Sistema RH 2191 Maria A1 4.000,00 01/05/2003

4112 João B1 9.000,00 04/01/2001

6126 José B1 9.000,00 1/11/2002

PAG004 Est Estoque 2191 Maria A1 4.000,00 01/07/2007

Primeira Forma NormalEstrutura na primeira forma normal (1FN):

Duas tabelas: Projeto e Projeto_Empregado, onde a segunda tabela (Projeto_Empregado) tem que possuir uma chave estrangeira vinda da primeira tabela (Projeto).

Cod_Proj* Tipo Descricao Empresa

Cod_Emp

Nome Categoria Salario Data_inicio

LSC001 RH Sistema RH 2191 Maria A1 4.000,00 01/05/2003

4112 João B1 9.000,00 04/01/2001

6126 José B1 9.000,00 1/11/2002

PAG004 Est Estoque 2191 Maria A1 4.000,00 01/07/2007

Cod_Proj* Tipo Descricao

LSC001 RH Sistema RH

PAG004 Est Estoque

Cod_Proj* Cod_Emp* Nome Categoria Salario Data_inicio

LSC001 2191 Maria A1 4.000,00 01/05/2003

LSC001 4112 João B1 9.000,00 04/01/2001

LSC001 6126 José B1 9.000,00 1/11/2002

PAG004 2191 Maria A1 4.000,00 01/07/2007

Projeto

Projeto_Empregado

Segunda Forma Normal

Uma relação está na 2FN se, e somente se:• Estiver na 1FN

• entidades que tem chaves compostas, os campos não-chave precisam depender de toda a chave. Se algum campo depende apenas de parte da chave, então é necessário desmembrá-lo

Cod_Proj* Cod_Emp* Nome Categoria Salario Data_inicio

LSC001 2191 Maria A1 4.000,00 01/05/2003

LSC001 4112 João B1 9.000,00 04/01/2001

LSC001 6126 José B1 9.000,00 1/11/2002

PAG004 2191 Maria A1 4.000,00 01/07/2007

Tabela Projeto_Empregado

Dependência Parcial

Cod_Proj* Cod_Emp* Nome Categoria Salario Data_inicio

LSC001 2191 Maria A1 4.000,00 01/05/2003

LSC001 4112 João B1 9.000,00 04/01/2001

LSC001 6126 José B1 9.000,00 1/11/2002

PAG004 2191 Maria A1 4.000,00 01/07/2007

Segunda Forma Normal:Duas novas tabelas:

Da 1 FN: Projeto (Cod_Proj, Tipo, Descricao)

Da 2 FN: Projeto_empregado (Cod_Proj, Cod_Empr, Data_inicio)

Da 2 FN: Empregado (Cod_Emp, Nome, Categoria, Salario)

Terceira Forma Normal

Uma tabela está na 3FN, se e somente se:• Estiver na 2FN

• se os campos não-chave são dependentes de outro campo não-chave, é necessário desmembrar em outra entidade

Cod_Emp* Nome Categoria Salario

2191 Maria A1 4.000,00

4112 João B1 9.000,00

6126 José B1 9.000,00

2191 Maria A1 4.000,00

Tabela Empregado: Dependência Transitiva

Cod_Emp* Nome Categoria Salario

2191 Maria A1 4.000,00

4112 João B1 9.000,00

6126 José B1 9.000,00

2191 Maria A1 4.000,00

Terceira Forma Normal:Duas novas tabelas:

Da 1 FN: Projeto (Cod_Proj, Tipo, Descricao)

Da 2 FN: Projeto_empregado (Cod_Proj, Cod_Empr, Data_inicio)

Da 3 FN: Empregado (Cod_Emp, Nome, Categoria)

Da 3 FN: Categoria (Categoria, Salario)

Tabela Inicial X NormalizaçãoCod_Proj* Tipo Descricao Empresa

Cod_Emp

Nome Categoria Salario Data_inicio

LSC001 RH Sistema RH 2191 Maria A1 4.000,00 01/05/2003

4112 João B1 9.000,00 04/01/2001

6126 José B1 9.000,00 1/11/2002

PAG004 Est Estoque 2191 Maria A1 4.000,00 01/07/2007

Da 1 FN: Projeto (Cod_Proj, Tipo, Descricao)

Da 2 FN: Projeto_empregado (Cod_Proj, Cod_Empr, Data_inicio)

Da 3 FN: Empregado (Cod_Emp, Nome, Categoria)

Da 3 FN: Categoria (Categoria, Salario)

Mais exemplos de Normalização...

20

Formas NormaisPrimeira Forma Normal

Uma relação está na 1a. forma normal quando todos os seus atributos são atômicos-monovalorados (não permite tabelas aninhadas).

21

Formas NormaisPrimeira Forma Normal

Atributos multivalorados

Nome Idade DataNasc Telefone

Quantos números de telefone?

22

Formas NormaisPrimeira Forma Normal

Atributos multivalorados

Nome Idade DataNasc Telefone

Nome Idade DataNasc fone1 fone2 fone3

Se forem 3 números

23

Formas NormaisPrimeira Forma Normal

Atributos multivalorados

Nome Idade DataNasc Telefone

Nome Idade DataNascNome Telefone

Se forem muitos números

24

Formas NormaisSegunda Forma Normal

Uma relação está na 2a. forma normal quando: está na 1a. F.N. e; entidades que tem chaves compostas, os campos

não-chave precisam depender de toda a chave. Se

algum campo depende apenas de parte da chave,

então é necessário desmembrá-lo

25

Formas NormaisSegunda Forma Normal

Número turma

Sigla Número -HorasSala

Sigla Número-Horas

Número, Sigla Sala, Número-Horas

26

Formas NormaisSegunda Forma Normal

Número turma

Sigla Número -HorasSala

Número turma

Sigla Sala Sigla Número-Horas

27

Formas NormaisSegunda Forma Normal

Evita:

• Inconsistências devido a duplicidade de informações

• Perda de dados em operações de remoções / alteração na relação

28

Segunda Forma NormalNúmero turma

Sigla Número-HorasHorário

DC1221

2

10:00

14:00

8:00

15:00

16:00

1

2

1

2

2

2

4

3

DC134

DC122

DC189

DC189

Sigla Número-Horas

Número,Sigla Horário, Número-HorasValores Inconsistentes

29

Segunda Forma NormalNúmero turma

Sigla Número-HorasHorário

DC1221

2

10:00

14:00

8:00

15:00

16:00

1

2

1

2

2

2

4

3

DC134

DC122

DC189

DC189

Se não houver turmas de uma determinada disciplina em um semestre,

perde-se a informação sobre oNúmero de Horas!!!

30

Formas NormaisTerceira Forma Normal

Uma relação está na 3a. Forma normal

quando: Está na 2a. F.N. e; se os campos não-chave são dependentes de

outro campo não-chave, é necessário

desmembrar em outra entidade.

31

Formas NormaisTerceira Forma Normal

Número Sigla Sala Prédio

Número, Sigla Sala

Sala Prédio

32

Formas NormaisTerceira Forma Normal

Número Sigla Sala Prédio

Número, Sigla Sala Sala Prédio

Número Sigla Sala Sala Prédio

Terceira Forma Normal

Valores Inconsistentes!!!!!

Número, Sigla Sala

Sala Prédio

Número Sigla PrédioSala

DC1021

2

3

4

12

4

12

1

2

1

E1

C2

E1

C2

C2

DC155

DC102

DC104

DC155

34

Terceira Forma NormalNúmero Sigla PrédioSala

DC1021

2

3

4

12

4

12

1

2

1

E1

C2

E1

C2

C2

DC155

DC102

DC104

DC155

Se não houver aula em uma determinada sala nessesemestre perde-se a informação sobre qual prédio

contém a tal sala.

Vamos tentar praticar um pouco...Vamos tentar praticar um pouco...

Esta tabela não está na 1FN!

O que é preciso fazer?

Uma possível tabela, com a respectiva chave primária: Alunos-Disciplinas (IdAluno, Nome, Morada, IdDisciplina,

Disciplina, IdProfessor, Professor)

Segunda Forma Normal (2FN)Segunda Forma Normal (2FN)

A tabela: Alunos-Disciplinas (IdAluno, Nome, Morada, IdDisciplina,

Disciplina, IdProfessor, Professor)

não está na 2FN, pois os atributos:Nome e Morada dependem de parte da chave primária (IdAluno),

Disciplina, IdProfessor e Professor, que depende de outra parte da chave primária (IdDisciplina).

Tabelas na 2FN:Alunos (IdAluno, Nome, Morada) Alunos-Disciplinas (IdAluno, IdDisciplina)Disciplinas (IdDisciplina, Disciplina, IdProfessor, Professor)

Terceira Forma Normal (3FN)Terceira Forma Normal (3FN)

Uma tabela está na terceira forma normal (3FN) quando estiver na 2FN e nenhum atributo que não seja parte da chave primária depender funcionalmente de outros atributos que não sejam parte da chave primária.

É necessário verificar, tabela a tabela:

As tabelas seguintes já estão na 3FN:

Alunos-Disciplinas (IdAluno, IdDisciplina)Alunos (IdAluno, Nome)

A tabela seguinte não está na 3FN

Disciplinas (IdDisciplina, Disciplina, IdProfessor, Professor)

pois o atributo Professor depende funcionalmente de IdProfessor que não é um atributo que faça parte da chave primária.

Terceira Forma Normal (3FN)Terceira Forma Normal (3FN)

Desta forma, obtemos as seguintes tabelas normalizadas (3FN):

Alunos-Disciplinas (IdAluno, IdDisciplina)

Alunos (IdAluno, Nome)

Disciplinas (IdDisciplina, Disciplina, IdProfessor)

Professores (IdProfessor, Professor)