Prof. Gustavo Cesar Lopes Geraldino
Análise e Desenvolvimento de Sistemas
Disc. Banco de Dados II
Apresentação
Gustavo Cesar Lopes Geraldino
- Graduado em Analise e Desenvolvimento Sistemas - ADS (2007);
- Especialista em Administração de Banco de Dados Oracle (2010);
- PARFOR/UEM (2012-2013);
Experiência Profissional:
- Professor do curso de ADS da Faculdade Integrado (2009-2010);
- Professor dos cursos TIS, TSRB, PF (2010);
- Coordenador do curso TIS, TII (2011);
Atualmente:
- Professor dos cursos de SI e CC da Faculdade Alvorada de Maringá.
- Professor de SI na FCV (Algoritmos I e BDII)
Ementa da Disciplina:
Estudar e implementar técnicas utilizadas
em Sistemas de Gerenciamento de Banco
de Dados, Estudar as tendências em Banco
de Dados.
Programa (conteúdo) da Disciplina:
1º BIMESTRE
Revisão de Conceitos de Banco de Dados;
Revisão de SQL Básico;
SQL Avançado:
◦ Visões e Visões Materializadas;
◦ Triggers;
◦ Stored Procedures;
Programa (conteúdo) da Disciplina:
2º BIMESTRE
Características de Sistemas de
Gerenciamento de Banco de Dados;
Administração de Banco de Dados:
◦ Otimização de Cunsulta;
◦ Tunning de Banco de Dados;
◦ Recuperação;
◦ Concorrência;
◦ Segurança;
Banco de Dados Objeto Relacional;
Banco de Dados Orientado Objetos;
Metodologia e Avaliação:
Metodologia:
Aula expositiva, com o uso de quadro branco e
datashow. Resolução de exercícios com estudo de caso.
Avaliação 1o. Bimestre:
Avaliação escrita individual – peso 7,0 Trabalhos em dupla (3,0)
2o. Bimestre:
Avaliação escrita individual (7,0) Trabalhos em grupo (3,0)
Referências Bibliográficas:
Básica
KORTH, H.; SILBERCHATZ, A.; SUDARSHAN, S. Sistemas de bancos de dados. Rio de Janeiro: Campus, 2006.
MACHADO, F. N. R. & ABREU, M. Projeto de bancos de dados. São Paulo: Érica, 2004.
GUIMARÃES, Célio C. Fundamentos de Banco de Dados. Campinas: Unicamp, 2003.
Referências Bibliográficas:
Complementar
ELMASRI, R.; NAVATHE, S. B. Sistemas de Banco de Dados. 4a edição. Editora Addison-Wesley,
2005.
GRAVES, Mark. Projeto de Banco de Dados com XML. São Paulo: Pearson Education, 2003.
Contrato Pedagógico:
Considerações Gerais
- Chegar/Sair no horário (19h10 e 21h | 21h15 e 22h45);
- Respeito Professor/Aluno, Aluno/Aluno e Aluno Professor;
- Fundamentação Teórica;
- Qualidade na realização das atividades (Trabalhos escritos, apresentações, discussões em sala ...)
- Trabalhos (boa parte) são realizados em sala de aula;
- Trabalhos em Equipe:
- Cópias “são zeradas” (fornecedor e consumidor);
- Entregas nos prazos definidos;
Contrato Pedagógico:
Sobre as Aulas e Durante as Aulas - Aulas Teóricas e Aulas Práticas;
- Participação Valorizada;
- Aulas Práticas com Exemplos Práticos (problematização);
- Discussão dos Conceitos;
- Participação;
- Sugestões, discussões e “críticas”;
- Comprometimento;
- Vontade de aprender!
Roteiro da Aula:
1º BIMESTRE
- Revisão de Conceitos de Banco de Dados;
- Modelagem de Dados (MER e DER)
Modelagem de Dados:
Modelagem de Dados em BD:
- Conceitual;
- Lógico;
- Físico;
Modelagem de Dados:
Modelagem de Dados em BD:
- Conceitual;
cliente possui conta
nome
bairro
rua numero saldo
* *
Modelagem de Dados:
Modelagem de Dados em BD:
- Conceitual;
Resumo:
Notação Peter Chen
Modelagem de Dados:
Modelagem de Dados em BD:
- Conceitual;
Resumo:
Cardinalidade
Modelagem de Dados:
Modelagem de Dados em BD:
- Conceitual;
Resumo:Cardinalidade
cliente * possui * conta
banco 1 possui * conta
agencia gerente
geral
possui
1 1
Modelagem de Dados:
Modelagem de Dados em BD:
- Lógico;
codcli integer PK nome varchar(30) rua varchar(50) bairro varchar(50)
cliente
codconta integer PK num varchar(10) saldo number(12,2)
conta
codcli integer PK codconta integer PK
Cliente_conta
1 * *
1
Modelagem de Dados:
Modelagem de Dados em BD:
- Lógico;
codcli integer PK nome varchar(30) rua varchar(50) bairro varchar(50)
cliente
codconta integer PK num varchar(10) saldo number(12,2)
conta
codcli integer PK codconta integer PK
Cliente_conta
Modelagem de Dados:
Modelagem de Dados em BD:
- Lógico;
codcli integer PK nome varchar(30) rua varchar(50) bairro varchar(50)
cliente
codconta integer PK num varchar(10) saldo number(12,2)
conta
codcli integer PK codconta integer PK
cliente_conta
Entidade(s) Atributo(s) Cardinalidade
Relacionamento(s)
Modelagem de Dados:
Modelagem de Dados em BD:
- Físico;
CREATE TABLE cliente(codcli integer not null primary key, nome varchar(30) not null,
rua varchar(50) not null,
bairro varchar(50) not null);
CREATE TABLE conta(
codconta integer not null primary key, num varchar(10) not null,
saldo numeric(12,2) not null);
CREATE TABLE cliente_conta(
codcli integer references (cliente), codconta integer references (conta), primary key (codcli, codconta));
Modelagem de Dados em BD:
cliente possui conta
nome
bairro
rua numero saldo
* *
Conceitual vs Lógico
codcli integer PK nome varchar(30) rua varchar(50) bairro varchar(50)
cliente
codconta integer PK num varchar(10) saldo number(12,2)
conta
codcli integer PK codconta integer PK
Cliente_conta
1 * *
1
Modelagem de Dados em BD:
Lógico vs Físico
codcli integer PK nome varchar(30) rua varchar(50) bairro varchar(50)
cliente
codconta integer PK num varchar(10) saldo number(12,2)
conta
codcli integer PK codconta integer PK
Cliente_conta
1 * *
1
CREATE TABLE cliente(
codcli integer not null primary key, nome varchar(30) not null,
rua varchar(50) not null, bairro varchar(50) not null);
CREATE TABLE conta(
codconta integer not null primary key, num varchar(10) not null,
saldo numeric(12,2) not null);
CREATE TABLE cliente_conta(
codcli integer references (cliente), codconta integer references (conta), primary key (codcli, codconta));
EXERCÍCIO
No bairro, inaugurou uma pequena locadora de vídeos que possui aproximadamente 3000 filmes, cujo empréstimo deve ser controlado.
- Cada filme possui um código e o título.
- Os clientes podem desejar encontrar os filmes estrelados pelo seu ator predileto. Por isso,
mantêm-se o nome do ator que estrela cada filme.
- Para cada cliente é necessário saber seu nome e telefone.
- O empréstimo de cada filme é realizado por um Funcionário que possui nome é matrícula.
- Um cliente pode ter locado vários filmes de uma só vez.
- A compra de novos filmes é realizada pelo funcionário junto ao fornecedor. Um fornecedor
Atende várias locadoras, mas a locadora só compra Desse fornecedor. O fornecedor possui CNPJ.
Construção do DER
Passo 1: identificar entidades Substantivos
Passo 2: identificar relacionamentos
Verbos que relacionam substantivos
Passo 3: identificar atributos Adjetivos ou substantivos
Passo 4: identificar cardinalidades
concordâncias de número
Modelagem de Dados - EXERCÍCIO:
- Conceitual;
Entidades:
filme cliente
funcionario fornecedor
Modelagem de Dados - EXERCÍCIO:
- Conceitual;
Relacionamentos:
filme
cliente
funcionario fornecedor
aluga
empresta vende
compra
Modelagem de Dados - EXERCÍCIO:
- Conceitual;
Atributos:
filme
cliente
funcionario fornecedor
aluga
empresta
vende
compra
titulo
codigo
nome telefone
nome matricula
cnpj ator
Modelagem de Dados - EXERCÍCIO:
- Conceitual;
Cardinalidade:
filme
cliente
funcionario fornecedor
aluga
empresta
vende
compra
nome telefone
nome matricula
cnpj
*
*
titulo
codigo
ator
1 1
*
*
* 1
Modelagem de Dados - Exemplos:
Dicionário de Dados:
Modelagem de Dados - Exemplos:
Projeto Físico:
CREATE TABLE nf (
cd_nf integer NOT NULL,
nr_nf character varying(15) NOT NULL,
nr_nfserie character varying(15) NOT NULL, cd_fornecedor integer NOT NULL,
vl_materialtotal numeric(7,2) NOT NULL, ds_obs character varying(200),
in_ativo boolean NOT NULL, cd_usuario integer NOT NULL,
in_delete boolean NOT NULL DEFAULT false,
CONSTRAINT pk_nf PRIMARY KEY (cd_nf, nr_nf, nr_nfserie), CONSTRAINT fk_nf_fornecedor FOREIGN KEY
(cd_fornecedor)
REFERENCES fornecedor (cd_fornecedor) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT nf_cd_usuario_fkey FOREIGN KEY (cd_usuario) REFERENCES usuario (cd_usuario) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION );
Roteiro da Aula:
1º BIMESTRE
- Revisão de Conceitos de Banco de Dados;
- Álgebra Relacional;
Álgebra Relacional:
- Linguagem Formal de Consulta;
- Procedimental (instruções);
Categorias de linguagens de SBD:
- Formais:
- Álgebra Relacional e Cálculo Relacional - Comercial:
- SQL
Operações agem sobre tabelas/relações - Tabelas como entrada;
- Tabelas como saída;
Álgebra Relacional:
Operações agem sobre tabelas/relações - Tabelas como entrada;
- Tabelas como saída;
Álgebra Relacional:
codcli integer PK nome varchar(30) rua varchar(50) bairro varchar(50)
cliente
codped integer PK codcli integer FK desc varchar(30) data date
pedido
Álgebra Relacional:
Operações:
- Operadores de Conjuntos - União: ∪
- Intersecção: ∩ - Diferença: –
- Produto Cartesiano: x - Operadores Relacionais
- Seleção: σ - Projeção: ∏ - Atribuição:
- Renomeação
Álgebra Relacional:
DER – CONTROLE DE ESTOQUE
Fornecedor(Cod_Forn, Nome, Cidade, Estado) Produto(Cod_Prod, Nome, Qualidade)
Pedido(Cod_Forn, Cod_Prod, Cod_Ped, Qtde, Local) Estoque(Cod_Forn, Cod_Prod, Cod_Lote, Qtde,
Origem)
Álgebra Relacional:
ESQUEMA RELACIONAL
Álgebra Relacional:
Operações:
- Operadores Relacionais - Seleção: σ
Seleciona tuplas (linhas), exemplo:
SELECT * FROM FORNECEDOR WHERE Cidade = “Parnamirim”
Álgebra Relacional:
Operadores Relacionais - Seleção: σ
SELECT * FROM FORNECEDOR
WHERE Qtde > 100 and Local = “Mossoró”
SELECT * FROM FORNECEDOR WHERE Qtde <= 100
Operadores
Menor <, <=
Maior >, >=
Igual =
Diferente <> ( )
E AND ( ∧)
OU OR (∨)
NÃO NOT
Tipos Tipos Tipos Tipos
Numérico 100
Texto “Laranja”
Álgebra Relacional:
Operadores Relacionais - Seleção: σ
Álgebra Relacional:
Operadores Relacionais - Projeção: ∏ Seleciona colunas (atributos).
SELECT Nome FROM FORNECEDOR
SELECT Nome,Cidade FROM FORNECEDOR WHERE Estado = “RN”
Álgebra Relacional:
Operadores Relacionais - Projeção: ∏
Relação R:
A B C
α α β β
10 20 30 40
1 1 1 2
A C α
α β β
1 1 1 2
=
A C α
β β
1 1 2
∏A,C (R)
Projeção elimina tuplas repetidas
SQL: Usar a cláusula DISTINCT SELECT DISTINCT A,C FROM FORNECEDOR
Álgebra Relacional:
Operadores Relacionais - Atribuição:
Todas as operações relacionais retornam tabelas (relações).
Resultado
DECLARE
/* DECLARANDO O CURSOR */
CURSOR Resultado IS
SELECT * FROM Fornecedor
WHERE Cidade = “Parnamirim”;
Permite realizar consultas por etapas
- Operação Aninhada
- Operação em Seqüência (com variáveis)
Álgebra Relacional:
Operadores Relacionais - Atribuição:
DECLARE
/* DECLARANDO O CURSOR */
CURSOR RESULT IS
SELECT PNOME, SNOME, SALARIO FROM DEP5_EMPS;
- Altera o nome de uma relação e/ou dos seus campos.
- Permite aplicar operações binárias sobre a mesma relação.
Álgebra Relacional:
Operadores Relacionais – Renomeação
SELECT Pnome AS Primeiro_Nome, Snome AS SobreNome, Salario FROM DEP5_EMPS;
Exemplo
Produto(Cod_Prod, Nome, Qualidade)
ProdutoLaranja Produto
∏ nome, qualidade ( σ
Produto.qualidade >
ProdutoLaranja.qualidade
AND ProdutoLaranja.nome = “Laranja”
(Produto x ProdutoLaranja) )
Álgebra Relacional:
Operadores Relacionais – Renomeação
- Requer: mesmo esquema nas relações argumento.
- Resulta: união dos conjuntos de linhas.
Álgebra Relacional:
Operadores de Conjuntos - União: ∪
SELECT DISTINCT Cod_Forn.Estoque, Cod_Forn.Pedido FROM Estoque, Pedido;
- Relações R, S:
- R ∪ S:
A B α
α β
1 2 1
A B
α β
2 3
R
S A B
α α β β
1 2 1 3
Álgebra Relacional:
Operadores de Conjuntos - União: ∪
53
- Requer: mesmo esquema nas relações argumento.
- Resulta: conjunto de linhas comuns nas relações.
Álgebra Relacional:
Operadores de Conjuntos - Intersecção: ∩
SELECT DISTINCT
Cod_Forn FROM Estoque, Pedido WHERE
Cod_Forn.Estoque = Cod_Forn.Pedido;
Relações R, S:
R ∩ S
A B α
α β
1 2 1
A B α
β
2 3
R S
A B α 2
Álgebra Relacional:
Operadores de Conjuntos - Intersecção: ∩
- Requer: mesmo esquema nas relações argumento.
- Resulta: conjunto de linhas da primeira relação exceto as linhas existentes na segunda.
Álgebra Relacional:
Operadores de Conjuntos - Diferença: -
SELECT DISTINCT
Cod_Forn.Pedido FROM Estoque, Pedido WHERE Cod_Forn.Pedido <>
Cod_Forn.Pedido;
Álgebra Relacional:
Operadores de Conjuntos - Diferença: -
Relações R, S:
R – S:
A B α
α β
1 2 1
A B
α β
2 3
R
S
A B
α β
1 1
Álgebra Relacional:
Operadores de Conjuntos – Produto Cartesiano: X
Retorna todas as combinações de tuplas de duas ou mais relações.
A B α
β
1 2
A B α
α α α β β β β
1 1 1 1 2 2 2 2
A C α
β β
γ α β β γ
10 10 20 10 10 10 20 10
D a a b b a a b b A C
α β β γ
10 10 20 10
D a a b R b
S Relações R, S:
R x S:
SELECT * FROM R,S;
- A combinações geram tuplas inválidas.
É preciso comparar as chaves para garantir que a tupla é válida.
- Exemplo: σσσσA=C(R x S)
A B α
α α α β β β β
1 1 1 1 2 2 2 2
A C α
β β γ α β β γ
10 10 20 10 10 10 20 10
D a a b b a a b b
A B A C D
α β β
1 2 2
α β β
10 10 20
a a b
R x S
A B α
β
1 2 A C α
β β γ
10 10 20 10
D a a b b
R
S σσσσR.A=S.A(R x S)
Álgebra Relacional:
Operadores de Conjuntos – Produto Cartesiano: X
59
Produto(Cod_Prod, Nome, Qualidade) Estoque(Cod_Forn, Cod_Prod,
Cod_Lote, Qtde, Origem)
Álgebra Relacional:
Operadores de Conjuntos – Produto Cartesiano: X
SELECT Produto.Nome, Produto.Qualidade,
Estoque.Qtde FROM Produto, Estoque
WHERE Produto.Cod_Prod
= Estoque.Cod_Prod;
Ambulatórios(número, andar, capacidade)
Médicos(CRM, RG, nome, idade, cidade, especialidade, número)
Pacientes(pacRG, nome, idade, cidade, doença) Consultas(CRM, pacRG, data, hora)
Funcionários(RG, nome, idade, cidade, salário)
Álgebra Relacional:
Exercícios:
1) buscar os dados dos pacientes que estão com sarampo
2) buscar os dados dos médicos ortopedistas com mais de 55 anos
3) buscar os dados de todas as consultas, exceto aquelas marcadas para médicos com CRM 46 e 79 4) buscar os dados dos ambulatórios do quarto andar
que tenham capacidade igual a 50 OU do quarto andar que tenham número superior a 10
Álgebra Relacional:
Exercícios (Seleção):
1) buscar os dados dos pacientes que estão com sarampo
σ σ σ
σ doença = “sarampo” (Pacientes)
2) buscar os dados dos médicos ortopedistas com mais de 55 anos
σ σ σ
σ especialidade = “ortopedista” AND idade > 55 (Medicos)
3) buscar os dados de todas as consultas, exceto aquelas marcadas para médicos com CRM 46 e 79 σ
σ σ
σ crm <> 46 AND crm <> 79 (Consultas)
4) buscar os dados dos ambulatórios do quarto andar que tenham capacidade igual a 50 OU do quarto andar que tenham número superior a 10
σσ
σσ (capacidade = 50 AND andar = 4) OR (numero >
10 AND andar = 4) (Ambulatórios)
Álgebra Relacional:
Exercícios (Seleção): RESPOSTAS
5) buscar o nome e a especialidade de todos os médicos.
6) buscar o número dos ambulatórios do terceiro andar.
7) buscar o CRM dos médicos e as datas das
consultas para os pacientes com RG 122 e 725.
8) buscar os números dos ambulatórios que
suportam mais de 50 pacientes, exceto aqueles do segundo e quarto andares.
Álgebra Relacional:
Exercícios (Projeção):
5) buscar o nome e a especialidade de todos os médicos.
∏
∏
∏
∏ nome, especialidade (Medicos)
6) buscar o número dos ambulatórios do terceiro andar.
∏
∏
∏
∏ numero (σσσσ Andar = 3 (Ambulatorios))
7) buscar o CRM dos médicos e as datas das
consultas para os pacientes com RG 122 e 725.
∏
∏
∏
∏ crm, data (σσσσ pacRG = 122 OR pacRG = 725 (Consultas))
8) buscar os números dos ambulatórios que
suportam mais de 50 pacientes, exceto aqueles do segundo e quarto andares.
∏∏
∏∏ numero (σσσσ capacidade > 50 AND and <> 2 AND andar <> 4(Ambulatorios))
Álgebra Relacional:
Exercícios (Projeção): RESPOSTAS
9) buscar o nome dos médicos que têm consulta marcada e as datas das suas consultas
10) buscar o número e a capacidade dos
ambulatórios do quinto andar e o nome dos médicos que atendem neles
11) buscar o nome dos médicos e o nome dos seus pacientes com consulta marcada, assim como a
data destas consultas
12) buscar os nomes dos médicos ortopedistas com consultas marcadas para o período da manhã (7hs- 12hs) do dia 15/04/03
Álgebra Relacional:
Exercícios (Cartesiano):
9) buscar o nome dos médicos que têm consulta marcada e as datas das suas consultas
∏
∏
∏
∏ Medicos.nome, Consultas.data (σσσσ Medicos.crm = Consultas.crm (Medicos x Consultas))
10) buscar o número e a capacidade dos
ambulatórios do quinto andar e o nome dos médicos que atendem neles
∏
∏
∏
∏ Ambulatorios.numero, Ambulatorios.capacidade, Medicos.nome (σσσσ Ambulatorios.andar = 5 (σσσσ
Medicos.numero = Ambulatorios.numero (Medicos x Ambulatorios)))
11) buscar o nome dos médicos e o nome dos seus pacientes com consulta marcada, assim como a
data destas consultas
∏
∏
∏
∏ Medicos.nome, Pacientes.nome, Consultas.data (σσσσ Medicos.crm = Consultas.crm AND
Pacientes.pacRG = Consultas.pacRG (Medicos x Consultas x Pacientes))
Exercícios (Cartesiano): RESPOSTA
12) buscar os nomes dos médicos ortopedistas com consultas marcadas para o período da manhã (7hs- 12hs) do dia 15/04/03
∏ ∏
∏ ∏ Medicos.nome (
σ σ σ
σ
Medicos.especialidade = “ortopedista”AND
Consultas.hora >= 7 AND Consultas.hora <= 12 AND
Consultas.data = 15/04/03 (
σ σ σ
σ
Medicos.crm = Consultas.crm ( Medicos x Consultas) )
)
Exercícios (Cartesiano): RESPOSTA
Álgebra Relacional:
68
13) buscar os nomes e RGs dos médicos e pacientes cadastrados no hospital
14) buscar os nomes, RGs e idades dos médicos, pacientes e funcionários que residem em
Florianópolis
15) buscar os números dos ambulatórios onde nenhum médico dá atendimento
16) buscar os nomes e RGs dos funcionários que estão internados como pacientes
Álgebra Relacional:
Exercícios (União, Intersecção, Diferença):
13) buscar os nomes e RGs dos médicos e pacientes cadastrados no hospital
(∏∏∏∏ nome, RG (Medicos)) ∪∪∪∪ (∏∏∏∏ nome, pacRG (Pacientes))
14) buscar os nomes, RGs e idades dos médicos, pacientes e funcionários que residem em
Florianópolis
(∏∏∏∏ nome, RG, idade (
σ σ σ σ
cidade =“Florianópolis”(Medicos))) ∪∪∪∪ (∏∏∏∏ nome, RG, idade (
σ σ σ σ
cidade =“Florianópolis”(Pacientes))) ∪∪∪∪ (∏∏∏∏ nome, RG, idade (
σ σ σ σ
cidade =“Florianópolis”(Funcionários)))
Álgebra Relacional:
Exercícios (União, Intersecção, Diferença):
RESPOSTA
15) buscar os números dos ambulatórios onde nenhum médico dá atendimento
∏
∏
∏
∏ numero (Ambulatorios) - ∏∏∏∏ numero (Medicos) 16) buscar os nomes e RGs dos funcionários que
estão internados como pacientes
(∏∏∏∏ nome, RG (Funcionarios)) ∩∩∩∩ (∏∏∏∏ nome, pacRG (Pacientes))
Álgebra Relacional:
Exercícios (União, Intersecção, Diferença):
RESPOSTA
Roteiro da Aula:
1º BIMESTRE
- Revisão de Conceitos de Banco de Dados;
- Normalização em Banco de Dados;
É elaborado em torno do conceito de Formas Normais.
“Dizemos que uma variável de relação está em uma determinada forma normal se ela satisfaz a certo
conjunto prescrito de condições.” (DATE, 2000,p.306)
“São etapas que se seguem no projeto de um BD, que permitem um armazenamento consistente e um eficiente acesso aos dados em bancos de dados
relacionais.” Wikipedia
Cada passo, etapa das formas normais contribuem para reduzir: redundância de dados e as possíveis inconsistências de dados.
Normalização de Dados:
É elaborado em torno do conceito de Formas Normais.
Normalização de Dados:
1FN
2FN
3FN
FNBC
4FN 5FN
Objetivo: é o de organizar as relações (tabelas) de forma que a sua estrutura
fique simples e relacional. Identificação de erros.
Consequência: Gerenciamento simples, eficiente e seguro, evitando a perda e a
repetição da informação. Também alcança- se uma forma de representação mais
adequada para o armazenar no BD.
Normalização de Dados:
Normalização de Dados:
nr_pedido Dt_pedido nr_peca ds_peca qt_pedido preco
1401 03/03/12 AAA01 Rolamento 2 50.00
1402 05/03/12 BBB01 Braçadeira 4 25.00
1404 13/03/12 CCC01 Tampa 8 5.00
1405 03/04/12 DDD01 Junção 15 30.00
1406 23/04/12 AAA01 Rolamento 3 75.00
1407 06/05/12 DDD02 Junção 7 13.00
1408 15/05/12 CCC02 Tampa 9 45.00
1410 30/06/12 AAA01 Rolamento 3 100.00 1415 17/07/12 BBB02 Braçadeira 6 32.00
Problema – Relação de uma Loja de Peças
- Atualização: a peça AAA01 requer várias atualizações;
- Inconsistência: a peça AAA01 pode ter várias descrições diferentes;
Normalização de Dados:
nr_pedido dt_pedido nr_peca ds_peca qt_pedido preco
1401 03/03/12 AAA01 Rolamento 2 50.00
1402 05/03/12 BBB01 Braçadeira 4 25.00
1404 13/03/12 CCC01 Tampa 8 5.00
1405 03/04/12 DDD01 Junção 15 30.00
1406 23/04/12 AAA01 Rolamento 3 75.00
1407 06/05/12 DDD02 Junção 7 13.00
1408 15/05/12 CCC02 Tampa 9 45.00
1410 30/06/12 AAA01 Rolamento 3 100.00 1415 17/07/12 BBB02 Braçadeira 6 32.00
Problema – Relação de uma Loja de Peças
pedido (nr_pedido, nr_peca, dt_pedido, qt_pedido) Peca (nr_peca, ds_peca, preco)
1FN
Normalização de Dados:
É elaborado em torno do conceito de Formas Normais.
FN Conceito básico
1FN - todos os atributos devem ser atômicos;
- eliminação de repetição de grupos;
- chave primária;
- dados repetidos para outra tabela;
- relação entre tabela principal e secundária;
2FN - esteja na 1FN;
- dependência Funcional: todos os atributos não-chave dependam apenas da chave-primária de sua relação;
3FN - esteja na 2FN;
- todos os atributos não-chave não tenham dependência funcional entre si, dependendo único e exclusivamente da chave-primária irredutivelmente;
Normalização de Dados:
1ª Forma Normal (1FN) Atributo deve ser atômico
http://www.blogdati.com.br/index.php/2010/03/normalizacao-em-banco-de-dados/
Normalização de Dados:
2ª Forma Normal (2FN)
Funcionalmente não depende da chave-primária (todos devem depender da PK)
PK
http://www.blogdati.com.br/index.php/2010/03/normalizacao-em-banco-de-dados/
Normalização de Dados:
3ª Forma Normal (3FN)
todos os atributos não-chave não tenham dependência funcional entre si, somente da PK
http://www.blogdati.com.br/index.php/2010/03/normalizacao-em-banco-de-dados/
Normalização de Dados:
EXERCÍCIOS:
crm nm_fun rg_pac nm_pac data hora espec 0001 André 11111111 João 25/03/12 15:00 cardio 0002 Paula 22222222 Maria 14/06/12 17:00 otorino 0003 André 11111111 João 30/07/12 20:00 oncolo 0004 André 33333333 José 02/08/12 14:00 gastro 0005 Paula 11111111 João 27/09/12 17:00 dermato
Normalização de Dados:
EXERCÍCIOS: RESPOSTA
crm espec 0001 cardio 0002 otorino 0003 oncolo 0004 gastro 0005 dermato
matri. nm_fun 001-12 André 002-10 Paula rg_pac nm_pac
11111111 João 22222222 Maria 33333333 José
codcon crm matri. rg_pac data hora 4057 0001 André 11111111 25/03/12 15:00 4095 0002 Paula 22222222 14/06/12 17:00 4003 0003 André 11111111 30/07/12 20:00 4005 0004 André 33333333 02/08/12 14:00 4010 0005 Paula 11111111 27/09/12 17:00