Banco de Dados I
Normalização
Prof. Rodrigo Rocha
prof.rodrigorocha@yahoo.com
Apresentação
Prof. Rodrigo Rocha –
prof.rodrigorocha@yahoo.com
Ementa
• Conceitos Fundamentais de Banco de Dados;
• Conceitos Fundamentais de Banco de Dados;
• Características de um SGBD;
• Arquitetura de SGBD; Introdução ao Modelo;
• Entidade-Relacionamento (MER);
• Modelo Entidade-Relacionamento;
• Projeto Conceitual: Diagrama Entidade-Relacionamento (DER);
• Introdução aos bancos de dados relacionais;
Introdução aos bancos de dados relacionais;
Normalização
Técnica de modelagem de dados que visa:
• evitar erros no projeto do banco de dados
• a inexistência de redundância
• a inexistência de redundância
• consistência das informações
¾uma operação de manipulação de dados afeta
somente uma ocorrência de um dado
Existem 5 estágios de normalização
1ª forma normal
"Uma Tabela está na Primeira Forma Normal quando seus
atributos não contém grupos de Repetição".
Uma ocorrência da chave, só pode corresponder uma
ocorrência dos outros atributos não chave.
Sem repetição de elementos ou grupo de elementos
RA Nome Endereço Curso
2005001 Jaobernezio R. Dois, 112 CC 2005001 Jaobernezio R. Dois, 112 ADM 2005001 Jaobernezio R. Dois, 112 POS 2002011 Abelina R. Sta Filomena,56 ENF 2004140 Clarisbadeu Av. Nove Julho, 20 ENF
• Se Jaobernezio mudar de endereço ? (anomalia de atualização) • Um novo curso para Jaobernezio ? (anomalia de inclusão) • Retirar Jaobernezio da Tabela (anomalia de remoção)
1ªFN
Exemplo:
Tabela Funcionário
Código Nome Sexo Categoria AnosCat
Na 1FN:
Código Nome Sexo Categoria AnosCat
Códi
N
S
Tabela Funcionário
Tabela Categorias
Código
Nome
Sexo
Código
Categoria
AnosCat
1ªFN
Chave Primária
Descrição:
Projetos (codProjeto, tipo, descricao,codEmpregado, nome, categoria, salario, dataInicio, tempoAlocacao)
1FN:
Projetos (codProjeto tipo descricao) Projetos (codProjeto, tipo, descricao)
Alocacoes (codProj, codEmp, nome, categ, sal, dataIni, tempoAloc)
• Chave Primária da tabela externa migra para a tabela aninhada • Qual a Chave Primária da tabela aninhada?
1ºFN
Desc: Projetos (codProjeto, tipo, descricao, codEmpregado, nome, categoria, salario, dataInicio, tempoAlocacao)
1FN: Projetos (codProjeto tipo descricao) 1FN: Projetos (codProjeto, tipo, descricao)
Alocações (codProjeto, codEmpregado, nome,categoria, salario, dataInicio, tempoAlocacao)
• Chave Primária da tabela aninhada
– codEmpregado identifica unicamente uma tupla em Alocações? (analisar os dados da tabela aninhada na fonte de dados como um todo)
1ºFN
Desc: Projetos (codProjeto, tipo, descricao, codEmpregado, nome, categoria, salario, dataInicio, tempoAlocacao)
1FN: Projetos (codProjeto, tipo, descricao)
Alocações (codProjeto, codEmpregado, nome,categoria, salario, dataInicio, tempoAlocacao)
• Chave Primária da tabela aninhada
– codEmpregado identifica unicamente uma tupla em Alocações? NÃO
– logo, codProjeto deve fazer parte da Chave Primária da tabela aninhada
2ª Forma Normal
“Uma tabela está na 2FN sse ela estiver na 1FN e não possuir
Dependências Funcionais parciais”
• DF Total
¾ se um atributo Ax depende funcionalmente de todosos atributos que compõem a Chave Primária de uma tabela T diz se que Ax possuiDF totalda compõem a Chave Primária de uma tabela T, diz-se que Ax possui DF totalda Chave Primária de T
¾ Simplificando, se conhecermos o valor de “A” então podemos encontrar o
valor de “B” associado a ele.
• DF Parcial
¾ se um atributo Ax depende funcionalmente apenas de algunsatributos (não todos!) que compõem a Chave Primária de uma tabela T, diz-se que Ax possui DF parcialda CP de T
2ª FN - Exemplo
1FN: Projetos (CodProjeto, Tipo, Descricao)
Alocações (CodProjeto, CodEmpregado, Nome, Categoria,
Salario,DataInicio, TempoAlocacao)
Dependecia Funcionais:
(CodEmpregado) Nome, Categoria, Salario
(DF Parcial!)
(CodProjeto, CodEmpregado) DataInicial, TempoAlocacao
2FN: Projetos (CodProjeto, Tipo, Descricao)
Alocações (CodProjeto, CodEmpregado, DataInicio, TempoAlocacao) Empregados (CodEmpregado, Nome, Categoria, Salario)
3ª Forma Normal
“Uma tabela está na 3FN sse ela estiver na
2FN e não possuir Dependências Funcionais
transitivas”
transitivas
• DF Transitiva ou Indireta
¾Se um atributo não-chave Ax possui DF total da CP
de uma tabela T e também possui DF total de um ou
mais atributos não-chave de T, então diz-se que Ax
possui DF transitiva ou indireta da CP de T
• Simplificando
¾“Uma entidade que está na 2FN pode ter um
atributo que não é uma chave mas que por si
identifica outros atributos. Refere-se a isto como
uma dependência transitiva”
3ªFN - Exemplo
2FN:
Projetos (CodProjeto, Tipo, Descricao)
Alocações (CodProjeto, CodEmpregado, DataInicio,
TempoAlocacao)
Empregados (CodEmpregado, Nome, Categoria, Salario)
Dependências Funcionais
CodEmpregado Salario
CodEmpregado Categoria Salario (DF Transitiva!)
3FN:
Projetos (CodProjeto, Tipo, Descricao)
Alocações (CodProjeto, CodEmpregado, DataInicio,
TempoAlocacao)
Empregados (CodEmpregado, Nome,
Categoria
)
CategoriasFuncionais(Categoria, Salario)
4ª e 5ª Forma Normal
4ª Forma Normal
• Remove dependências funcionais
multivaloradas
multivaloradas
5ª Forma Normal
• remove dependências de junção
4ª Forma Normal - Exemplo
Tabela com dependência multivalorada.
• Exemplo: nr_Telefone
• Cliente (cd Cliente nm Cliente nm Rua
• Cliente (cd_Cliente, nm_Cliente, nm_Rua,
nm_Cidade, cd_UF, nr_CNPJ, nr_IE,
nr_Telefone)
Após aplicar a 4FN.
• Cliente (cd_Cliente, nm_Cliente, nm_Rua,
nm_Cidade, cd_UF, nr_CNPJ, nr_IE)
Exemplos
PEDIDO (NUMERO_PEDIDO, DATA_PEDIDO,NUMERO_CLIENTE, NOME_CLIENTE, ENDERECO_CLIENTE, NUMERO_PRODUTO, NOME_PRODUTO, QTDE_PEDIDA, PRECO_PRODUTO,
TOTAL_PRODUTO,TOTAL_PEDIDO) 1FN1FN
• PEDIDO (NUMERO_PEDIDO, DATA_PEDIDO,NUMERO_CLIENTE, NOME_CLIENTE,
ENDERECO_CLIENTE, TOTAL_PEDIDO)
• PRODUTO_PEDIDO (NUMERO_PEDIDO, NUMERO_PRODUTO, NOME_PRODUTO,
QTDE_PEDIDA, PRECO_PRODUTO, TOTAL_PRODUTO) 2FN
• PEDIDO (NUMERO_PEDIDO, DATA_PEDIDO,NUMERO_CLIENTE, NOME_CLIENTE,
ENDERECO_CLIENTE, TOTAL_PEDIDO)
• PRODUTO_PEDIDO (NUMERO_PEDIDO, NUMERO_PRODUTO, QTDE_PEDIDA,
TOTAL_PRODUTO)_ )
• PRODUTO (NUMERO_PRODUTO, NOME_PRODUTO, PRECO_PRODUTO)
3FN
• PEDIDO (NUMERO_PEDIDO, NUMERO_CLIENTE,DATA_PEDIDO, TOTAL_PEDIDO)
• CLIENTE (NUMERO_CLIENTE, NOME_CLIENTE,ENDERECO_CLIENTE)
• PRODUTO_PEDIDO (NUMERO_PEDIDO,NUMERO_PRODUTO+ QTDE_PEDIDA,
TOTAL_PRODUTO)
• PRODUTO (NUMERO_PRODUTO, NOME_PRODUTO,PRECO_PRODUTO)
Exemplo: Nota Fiscal
NotaFiscal (nr_NF, cd_NatOperacao, cd_Transportadora,
dt_Emissao, cd_Cliente, nm_Cliente, nm_Rua, nm_Cidade,
cd_UF, nr_CNPJ, nr_IE, nr_Telefone, cd_Produto,
cd_Unidade, qt_Vendida, nm_produto, cd_Tributacao,
vl Unitario vl TotalItem vl TotalNF)
vl_Unitario, vl_TotalItem, vl_TotalNF)
1ª FN
• NotaFiscal (nr_NF, cd_NatOperacao, cd_Transportadora,
dt_Emissao, cd_Cliente, nm_Cliente, nm_Rua, nm_Cidade, cd_UF,
nr_CNPJ, nr_IE, nr_Telefone, vl_TotalNF)
• NotaFiscalItem (nr_NF, cd_Produto, cd_Unidade, qt_Vendida,
nm_produto, cd_Tributacao, vl_Unitario, vl_TotalItem)
Exemplo: Nota Fiscal (continuação)
3ª FN
• NotaFiscal (nr_NF, cd_NatOperacao, cd_Transportadora,
dt_Emissao, cd_Cliente, vl_TotalNF)
• Cliente (cd_Cliente, nm_Cliente, nm_Rua, nm_Cidade,
cd_UF, nr_CNPJ, nr_IE, nr_Telefone)
• NotaFiscalItem (nr_NF, cd_Produto, qt_Vendida,
vl_Unitario)
4ª FN
4 FN
• NotaFiscal (nr_NF, cd_NatOperacao, cd_Transportadora,
dt_Emissao, cd_Cliente, vl_TotalNF)
• Cliente (cd_Cliente, nm_Cliente, nm_Rua, nm_Cidade,
cd_UF, nr_CNPJ, nr_IE)
• Telefone (cd_Cliente, nr_Telefone)
Exercícios
Normalizar o seguinte conjunto de atributos:
• 1-) Aluno (cod_aluno, nome, naturalidade, ano_nascimento, cod_curso, curso, director, ano_inscrição, cod_disciplina, disciplina, nota)
• 2-) Encomenda (num encomenda num cliente cliente endereço cliente2 ) Encomenda (num_encomenda, num_cliente,cliente, endereço_cliente, data_encomenda,cod_produto, produto, quantidade)
• 3-) Apólice (num_ap, data, valor, estado, matricula, cod_cliente, nome, localidade, cod_tipo, tipo, num_pag, data_pag, valor_pag, marca_viatura)
• 4-) Escritorio (andar, sala, atividade_esc, nome_empregado, rg_emp, habilitacao_empregado, nome_departamento, telefone_depto,
• 5-) CD_DVD (codigo_barra, titulo, artista, ano, cod_genero,genero, numero_musica, nome musica, duração musica)o e_ us ca, du ação_ us ca)
• 6-) NotaFiscal (número, série, cod_cliente, nome_cliente, telefone, rua, número, apto, cidade, estado, cep, cod_vendedor, nome_vendedor, cod_setor, nome_setor, data, Total_Parcial, Descontos, Total, cod_produto, descrição, unidade, preço_unitário, quantidade, preço_total)
• 7-) Reserva (cod_reserva, cli_nome, cli_end, cli_tel, cli_cpfcnpj, emp_cod, emp_nome, emp_end, emp_pais, emp_cnpj, voo_cod, voo_datahora, voo_origem, voo_destino)
Bibliografia
Livro texto
•
SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S..
Sistema de Banco de Dados. 5.ed. Rio de Janeiro: Campus, 2006.
MACHADO Felipe Ner Rodrig es ABREU Ma rício Pereira de
•
MACHADO, Felipe Nery Rodrigues; ABREU, Maurício Pereira de.
Projeto de Banco de Dados: uma visão prática. 14.ed. São
Paulo: Erica, 2007.
•
DATE, C. J.; VIEIRA, Daniel. Introdução a Sistemas de Banco de
Dados . 8.ed. Rio de Janeiro: Campus, 2004.
Complementar
• HEUSER Carlos Alberto Projeto de Banco de Dados Porto AlegreHEUSER, Carlos Alberto. Projeto de Banco de Dados. Porto Alegre, RS: Editora Sagra Luzzatto, 2001.