1 Banco de Dados Normalizao Prof Arley Rodrigues
1 Banco de Dados Normalização Prof. Arley Rodrigues arleysb@gmail. com 24/10/2012
2 Sumário • • Introdução Definição Objetivos Primeira forma normal – 1 FN Dependência funcional Segunda forma normal – 2 FN Terceira forma normal – 3 FN Normalização 24/10/2012
3 Introdução Normalização 24/10/2012 • O conceito de normalização foi introduzido por Boyce Codd em 1970 (primeira forma normal); • Substituir um conjunto de entidades e relacionamentos, “purificando” os mesmos evitando certos problemas.
4 Definição Normalização 24/10/2012
5 Objetivos Normalização 24/10/2012
6 Normalização 24/10/2012
7 Normalização 24/10/2012
8 Normalização 24/10/2012 A 1 FN trata de informações que se repetem (atributos multivalorados). A entidade não deve conter grupos repetitivos.
9 Normalização 24/10/2012 Proj (Cod. Proj, Tipo, Descr, (Cod. Emp, Nome, Cat, Sal, Data. Ini, Temp. Al)) Proj (Cod. Proj, Tipo, Descr) Proj. Emp (Cod. Proj, Cod. Emp, Nome, Cat, Sal, Data. Ini, Temp. Al)
10 Normalização 24/10/2012 Não Normalizada Cod. Proj Tipo LSC 001 Programação LSC 001 Descr Nome Cat Sal Novo Site 2146 João A 1 4 1/11/91 24 Programação Novo Site 3145 Sílvio A 2 4 2/10/91 24 LSC 001 Programação Novo Site 6126 José B 1 9 3/10/92 18 LSC 001 Programação Novo Site 1214 Carlos A 2 4 4/10/92 18 LSC 001 Programação Novo Site 8191 Mário A 1 4 1/11/92 12 PAG 02 Manutenção Mário A 1 4 1/05/93 12 Sistema de RH Cod. Emp 8191 Data. Ini Temp. Al
11 Normalização 24/10/2012 Proj: Cod. Proj Tipo Descr LSC 001 Programação Novo Site PAG 02 Manutenção Sistema de RH Proj. Emp: Cod. Proj Cod. Emp Nome Cat Sal Data. Ini Temp. Al LSC 001 2146 João A 1 4 1/11/91 24 LSC 001 3145 Sílvio A 2 4 2/10/91 24 LSC 001 6126 José B 1 9 3/10/92 18 LSC 001 1214 Carlos A 2 4 4/10/92 18 LSC 001 8191 Mário A 1 4 1/11/92 12 PAG 02 8191 Mário A 1 4 1/05/93 12 Figura 1 - Tabelas referentes ao exemplo na 1 FN
12 Normalização 24/10/2012 Para mostrar a 2 FN e 3 FN, é necessário à introdução dos Conceitos de Dependência entre atributos: Dependência Funcional Total Dependência Funcional Parcial Dependência Funcional Transitiva
13 Normalização 24/10/2012 Exemplo: ITEM_PEDIDO (Num_Ped, Cod_Prod, Qtde, Descr, Valor_Unit, Total_Prod) DEPENDÊNCIA TOTAL: O atributo Qtde depende de forma total da chave primária (Num_Ped + Cod_Prod) PARCIAL: O atributo Descr (descrição do produto) depende de forma parcial da chave primária, pois só depende do cod_Prod e não do Num_Ped + Cod_Prod.
14 Normalização 24/10/2012
15 Normalização … Normalização Cat Sal A 1 4 A 2 4 B 1 9 A 2 4 A 1 4 24/10/2012 … Figura 2 – Parte da tabela com dependência funcional referente ao exemplo na 1 FN
16 Normalização 24/10/2012
17 Normalização 24/10/2012 Proj. Emp ( Cod. Proj, Cod. Emp , Nome, Cat, Sal, Data. Ini, Temp. Al) Proj (Cod. Proj, Tipo, Descr) Proj. Emp (Cod. Proj, Cod. Emp, Data. Ini, Temp. Al) Emp (Cod. Emp, Nome, Cat, Sal)
18 Normalização 24/10/2012 Emp: Cod. Emp Proj: Cod. Proj Tipo Descr LSC 001 Programação Novo Site PAG 02 Manutenção Sistema de RH Nome Cod. Emp Data. Ini João A 1 4 3145 Sílvio A 2 4 6126 José B 1 9 1214 Carlos A 2 4 8191 Mário A 1 4 Temp. Al LSC 001 2146 1/11/91 24 LSC 001 3145 2/10/91 24 LSC 001 6126 3/10/92 18 LSC 001 1214 4/10/92 18 LSC 001 8191 1/11/92 12 PAG 02 8191 1/05/93 12 Sal 2146 Proj. Emp: Cod. Proj Cat Figura 1 - Tabelas referentes ao exemplo na 2 FN
19 Normalização 24/10/2012 DEPENDÊNCIA TRANSITIVA: Quando um atributo ou conjunto de atributos ‘A’ depende de outro atributo ‘B’ que não pertence à chave primária, mas é dependente funcional desta, dizemos que ‘A’ é dependente transitivo de ‘B’. Exemplo: PEDIDO (Num_Ped, Nome_Cli, Endereco, Cidade, UF, Total_Ped, Cod_Vend, Nome_vend) Os atributos Endereco, Cidade, UF são dependentes transitivos do atributo Nome_Cli. Nome_vend é dependente transitivo de Cod_Vend
20 Normalização 24/10/2012
21 Normalização Emp ( Cod. Emp , Nome, Cat, Sal ) Proj (Cod. Proj, Tipo, Descr) Proj. Emp (Cod. Proj, Cod. Emp, Data. Ini, Temp. Al) Emp (Cod. Emp, Nome, Cat ) Cat (Cat, Sal) 24/10/2012
22 Normalização Emp: Cod. Emp Proj: Cod. Proj Tipo Descr LSC 001 Programação Novo Site PAG 02 Manutenção Sistema de RH Proj. Emp: Cod. Proj Cod. Emp Data. Ini 24/10/2012 Nome Cat 2146 João A 1 3145 Sílvio A 2 6126 José B 1 1214 Carlos A 2 8191 Mário A 1 Temp. Al LSC 001 2146 1/11/91 24 LSC 001 3145 2/10/91 24 Cat: LSC 001 6126 3/10/92 18 Cat LSC 001 1214 4/10/92 18 A 1 4 LSC 001 8191 1/11/92 12 A 2 4 PAG 02 8191 1/05/93 12 B 1 9 Figura 1 - Tabelas referentes ao exemplo na 3 FN Sal
23 Normalização 24/10/2012 Exercícios – MEC 2009 • Normalização é o processo de organização eficiente dos dados dentro de um banco de dados. Os seus objetivos são eliminar dados redundantes e garantir que as dependências entre os dados façam sentido. Uma forma normal é uma regra que deve ser aplicada na construção das tabelas do banco de dados para que estas fiquem bem projetadas. Assinale a alternativa que indique a forma normal que não permite atributos multivalorados, atributos compostos e suas combinações. a) 1 FN. b) 2 FN. c) 3 FN. d) 4 FN. e) Forma Normal de Boyce-Codd (FNBC).
24 Normalização 24/10/2012 Exercícios – TCE/AL 2008 • Uma relação estará na Segunda Forma Normal (2 FN) se ela estiver na 1 FN e todos os atributos a) não chave forem dependentes não transitivos da chave primária. b) não chave forem totalmente dependentes da chave primária. c) chave forem dependentes não transitivos das chaves estrangeiras. d) chave forem totalmente dependentes das chaves estrangeiras. e) chave forem totalmente dependentes dos atributos não chave.
25 Normalização 24/10/2012 Exercícios – MEC 2009 • Codd estabeleceu a existência de três tipos de relações normalizadas, denominadas primeira, segunda e terceira formas normais. Uma relação está na 3ª FORMA NORMAL, se e somente se todos os domínios que não são chaves forem completamente: a) independentes entre si e constituírem grupos repetidos b) dependentes entre si e não constituírem grupos repetidos c) dependentes funcionalmente da chave-primária e independentes entre si d) independentes funcionalmente da chave-estrangeira e dependentes entre si e) independentes funcionalmente da chave-primária mas dependentes da chave-estrangeira
26 Normalização 24/10/2012 Exercício • Normalizar a seguinte relação • aluno (nro_aluno, nome_aluno, nro_créditos, nro_depto, nome_depto, nro_curso, descrição_curso, ano_ingresso)
27 Normalização 24/10/2012 Exercício 1) Normalizar a seguinte relação ▫ paciente (nro_paciente, nome_paciente, nro_quarto, descrição_quarto, nro_cômodos_quarto, {cod_médico, nome_médico, fone_médico}) 2) Qual a finalidade e objetivos de se fazer o processo de normalização? 3) Quais são os critérios da 1 FN? 4) Quais são os critérios da 2 FN? 5) Quais são os critérios da 3 FN?
28 Normalização 24/10/2012 Exercício • Normalizar a seguinte relação: • aluno (nro_aluno, nome_aluno, nro_depto, nome_depto, nro_curso, descrição_curso, duracao_curso, ano_ingresso, cod_prof, nome_prof, cod_discip, nome_discip, nro_cred_discip)
29 Normalização 24/10/2012 Resolução • 1 FN ▫ aluno (nro_aluno, nome_aluno, nro_créditos, nro_depto, nome_depto, nro_curso, descrição_curso, ano_ingresso) • 2 FN ▫ aluno (nro_aluno, nome_aluno) ▫ curso (nro_curso, nro_depto, nome_depto, descrição_curso) ▫ cursa (nro_aluno, nro_curso, nro_créditos, ano_ingresso)
30 Normalização 24/10/2012 Resolução • 3 FN ▫ aluno (nro_aluno, nome_aluno) ▫ cursa (nro_aluno, nro_curso, nro_créditos, ano_ingresso) ▫ curso (nro_curso, nro_depto, descrição_curso) ▫ departamento (nro_depto, nome_depto)
31 Normalização 24/10/2012 Resolução • paciente (nro_paciente, nome_paciente, nro_quarto) • médico (cod_médico, nome_médico, fone_médico) • hospital(nro_paciente, cod_médico) • quarto (nro_quarto, descrição_quarto, nro_cômodos_quarto)
32 Normalização 24/10/2012 Resolução • 3 FN ▫ aluno (nro_aluno, nome_aluno) ▫ cursa (nro_aluno, nro_curso, ano_ingresso) ▫ curso (nro_curso, nro_depto, descrição_curso, duração_curso) ▫ departamento (nro_depto, nome_depto) ▫ disciplina(cod_discip, nome_discip, nro_cred_discip) ▫ Professor(cod_prof, nome_prof, nro_depto)
33 Referências Normalização 24/10/2012 DATE, C. J. ; Introdução à sistemas de bancos de dados. Editora Campus, 2000. ELMASRI, Navathe; Introdução à sistemas de bancos de dados. Editora Pearson, 2002. HEUSER, Carlos Alberto. Projeto de banco de dados. Porto Alegre: Bookman, 2009. SILBERSCHATZ, A. Sistema de banco de dados. São Paulo: Makron Books, 2005.
- Slides: 33