Sei sulla pagina 1di 16

Tecnologias e Linguagens para Banco de Dados I

Efetivao Lgica de Relacionamentos Normalizao

Prof. Gilberto Braga de Oliveira

Expresso do Relacionamento
Necessidade de incluir campos nas tabelas para que os relacionamentos sejam efetivados. Campo de identificao nica em uma entidade: Chave Primria; Primria; Uma entidade que contem a Chave Primria de Outra Entidade ter, neste campo, uma Chave Estrangeira. A ligao a comparao dos valores da Chave Primria com os da Chave Estrangeira em ambas as tabelas.

Expresso do Relacionamento
Se temos uma consulta marcada para o dia 13/07/2007 as 15:00 e a Dra. Joana, Pediatra eles s estaro relacionados se, e somente se:
O campo CRM na tabela consulta na ocorrncia 13/07/2007, 15:00 for igual ao valor do campo CRM na tabela Mdico na ocorrncia Joana, Pediatra. CRM da Consulta = CRM do Mdico

Relacionamento Lgico:
Consulta Cod 07 12 21 35 47 CRM 0345-6 0234-5 0345-6 0234-5 0789-0 DtCons 05/07/07 08/07/07 13/07/07 19/07/07 21/07/07 HrCons 08:00 09:00 15:00 11:00 13:00 CRM 0123-4 0234-5 0345-6 Quais os Mdicos que tm consulta marcada no perodo da manh? 0456-7 0789-0 Medico Mdico Joana Mrio Joana Josefa Ana Especialidade Cardiologista Clnico Pediatra Cardiologista Ortopedista
4

Quantas consultas marcadas o Dr. Mrio tem? E a Dra. Josefa?

Evitando confuses
Em uma escola cada aluno registrado por nmero, nmero, nome e endereo pode cursar uma e somente uma disciplina; disciplina; As disciplinas podem ser cursadas por um ou mais alunos. alunos. As disciplinas so registradas por cdigo e nome da disciplina. Uma vez matriculado um aluno em uma disciplina registra-se a data e a hora do curso do aluno. registra5

Evitando confuses
Interpretando o diagrama:
Um aluno cursa uma disciplina enquanto uma disciplina cursada por muitos alunos.

A data e hora do curso so atributos que pertencem ao Curso, mas onde aloc-lo? alocSo campos da tabela Aluno pois possuem uma nica existncia para cada ocorrncia de aluno.

1 Cursa 1 1

Aluno

N N

Disciplina
6

Modelo Conceitual
Entidade Aluno Atributos Numero Nome Endereco DataCurso HoraCurso CodDisciplina Disciplina Relacionamentos com Disciplina 1:1 Parcial

Disciplina

com Aluno 1:N Parcial


7

1 Identificar chaves candidatas


Entidade Aluno Atributos #Numero Nome Endereco DataCurso HoraCurso #CodDisciplina #Disciplina Relacionamentos com Disciplina 1:1 Parcial

Disciplina

com Aluno 1:N Parcial


8

2 Determinar ou criar chaves primrias


Entidade Aluno Atributos *#Numero Nome Endereco DataCurso HoraCurso *#CodDisciplina #Disciplina Relacionamentos com Disciplina 1:1 Parcial

Disciplina

com Aluno 1:N Parcial


9

3 Criar chaves estrangeiras


Entidade Aluno Atributos *#Numero CodDisciplina Nome Endereco DataCurso HoraCurso *#CodDisciplina #Disciplina Relacionamentos com Disciplina 1:1 Parcial

Disciplina

com Aluno 1:N Parcial


10

Exemplo Aluno x Disciplina 1:N


DISCIPLINA Cod 07 09 12 Disciplina Lgica Matemtica Rec. Humanos ALUNO Num 003 007 012 032 Nome Marcelo Joaquina Roberto Ana Endereco Rua Zero, 01 Rua Hum, 02 Rua Dois, 03 Rua Seis, 07 CodDisc 07 <NULO> 12 07 DtCurso 02/02/07 <NULO> 02/04/07 02/02/07 HrCurso 13:30 <NULO> 19:00
11 13:30

Valor Nulo
Nulo no zero Exemplo:
CodDisciplina, DataCurso e HoraCurso CodDisciplina,

Nulo desconhecido Neste caso:


nulo = aluno ainda no escolheu uma disciplina.
12

Mudando as regras de negcio


Em uma escola cada aluno registrado por nmero, nmero, nome e endereo pode cursar UMA OU MAIS disciplinas; disciplinas; As disciplinas podem ser cursadas por um ou mais alunos. alunos. As disciplinas so registradas por cdigo e nome da disciplina. disciplina. Uma vez matriculado um aluno em uma disciplina registra-se a data e a hora do curso do aluno registra13

Evitando confuses
Interpretando o diagrama:
Um aluno cursa uma ou mais disciplinas enquanto uma disciplina cursada por um ou mais alunos.

A data e hora do curso so informaes que pertencem ao Curso, mas onde alocar esses So campos do atributos?
1 N Cursa N 1

relacionamento Curso pois possuiria vrias existncias nas tabelas aluno e disciplina. (Redundncia)

Aluno

N N

Disciplina
14

Modelo Conceitual
Entidade Aluno Atributos Numero Nome Endereco Relacionamentos com Disciplina 1:N Parcial com Aluno 1:N Parcial ATRIBUTOS

Disciplina CodDisciplina Disciplina RELACIONAMENTO

Curso

DtCurso HrCurso

15

1 Identificar chaves candidatas


Entidade Aluno Atributos #Numero Nome Endereco Relacionamentos com Disciplina 1:N Parcial

Disciplina #CodDisciplina com Aluno 1:N #Disciplina Parcial RELACIONAMENTO ATRIBUTOS

Curso

DtCurso HrCurso
16

2 Determinar ou criar chaves primrias


Entidade Aluno Atributos *#Numero Nome Endereco Relacionamentos com Disciplina 1:N Parcial

Disciplina *#CodDisciplina com Aluno 1:N #Disciplina Parcial RELACIONAMENTO ATRIBUTOS *CodCurso Curso DtCurso HrCurso

17

3 Criar chaves estrangeiras


Entidade Aluno Atributos *#Numero Nome Endereco Relacionamentos com Disciplina 1:N Parcial

Disciplina *#CodDisciplina com Aluno 1:N #Disciplina Parcial RELACIONAMENTO ATRIBUTOS *CodCurso Numero CodDisciplina DtCurso HrCurso

Curso

18

Utilizao de Chave secundria


4. Otimizar o modelo identificando chaves secundrias
Observar a composio das chaves estrangeiras do relacionamento N:N
A combinao dos campos pode se repetir?
Sim: O modelo no pode ser otimizado No: Elimine a chave primria do relacionamento, (se ela foi criada artificialmente) e torne as chaves estrangeiras chaves primrias marcando ambas com astersco * 19

4 Otimizar o modelo
Entidade Aluno Atributos *#Numero Nome Endereco Relacionamentos com Disciplina 1:N Parcial

Disciplina *#CodDisciplina com Aluno 1:N #Disciplina Parcial RELACIONAMENTO ATRIBUTOS *CodCurso *Numero *CodDisciplina DtCurso HrCurso

Curso

20

Exemplo Relacionamento Aluno x Disciplina: N:N


CURSO CodDisc 07 12 07 12 ALUNO Num 003 012 032 Nome Marcelo Roberto Ana Endereco Rua Zero, 01 Rua Dois, 03 Rua Seis, 07 Cod 07 09 12 NumAl 003 003 032 032 DtCurso 02/02/07 02/04/07 02/02/07 02/02/07 HrCurso 13:30 19:00 13:30 13:30 DISCIPLINA Disciplina Lgica Matemtica Rec. Humanos
21

Tecnologias e Linguagens para Banco de Dados I


Normalizao

Prof. Gilberto Braga de Oliveira

Definio
Objetivo:
Melhorar a organizao, a recuperao, a alterao e a atualizao dos dados armazenados.

Trs formas normais so aplicadas na maioria dos modelos de banco de dados:


1FN: (Toda tabela deve conter ao menos uma chave primria)
Cada dado um campo, cada campo um dado No deve haver campos multivalorados nas tabelas

2FN: (1FN deve estar OK)


Campos devem depender da chave primria completa (Dependncia Funcional Total)

3FN: (1FN e 2FN devem estar OK)


Campos com dependncia funcional transitiva so colocados em outra tabela ou eliminados (no caso de campos calculados).
23

Situao problema Aplicando a 1FN:


Cada dado um campo:
Coloque um terceiro telefone para algum funcionrio
O dado telefone est distribudo nos campos tel1 e tel2 no escalveis. escalveis.

Cada campo um dado:


Altere os prefixos 1234 para 4321
O prefixo e o sufixo dos telefones podem ser armazenados em campos campos diferentes, evitando anomalias de atualizao. atualizao.

Mat Nome 001 Joo 019 Marisa 021 Pedro 039 Joana 045 Mrio

Tel1

Tel2

Depto

Projeto

DtAl

PrazoAl 30 90 60 60 30
24

1234-5678 7890-1234 Produo Reciclagem 21/05/08 123478901234-5678 8901-2345 Vendas 12348901Reciclagem 17/05/08 Intranet Intranet 22/06/08 21/05/08 3645-6789 7788-9901 Produo Reciclagem 21/06/08 364577885678-9012 7997-8890 Produo Reciclagem 18/05/08 567879975678-9012 8998-9989 Vendas 56788998-

032 Pedrina 3645-6789 8899-0012 Vendas 36458899-

90

Resoluo do problema Aplicando a 1FN:


*CodTel 01 02 03 04 05 Prefixo 1234 3645 5678 7890 8901 *Mat Nome 001 019 021 032 039 045 Joo Marisa Pedro Joana Mrio Sufixo 5678 6789 9012 1234 2345 Depto Vendas Projeto *CodTel 01 01 02 02 05 DtAl *Mat 001 019 021 032 001 PrazoAl 30 90 60 60 30 90
25

Produo Reciclagem 21/05/08 Reciclagem 17/05/08 Intranet Intranet 22/06/08 21/05/08 Produo Reciclagem 21/06/08 Produo Reciclagem 18/05/08 Vendas

Pedrina Vendas

Anomalias de atualizao Aplicando a 1FN:


Anomalias de atualizao de Projeto e Departamento;
Altere Vendas para Marketing e veja quantas alteraes so necessrias Observe que o usurio precisa preencher o Departamento toda vez que um funcionrio cadastrado.
*Mat 001 019 021 032 039 045 Nome Joo Marisa Pedro Pedrina Joana Mrio Depto Produo Vendas Produco Vendas Produo Vendas Projeto Reciclagem Reciclagem Reciclagem Intranet Reciclagem Intranet DtAl 21/05/08 17/05/08 21/06/08 22/06/08 18/05/08 21/05/08 PrazoAl 30 90 60 60 30 90
26

Resoluo do problema Aplicando a 1FN:


*CodDep 01 02 03 Departamento Recursos Humanos Vendas Produo *CodProjeto 01 02 03 Projeto Reciclagem Intranet Integrao

*Mat Nome CodDep 001 019 021 032 039 045 Joo Marisa Pedro Pedrina Joana Mrio 03 02 03 02 03 02

DtAl 21/05/08 17/05/08 21/06/08 22/06/08 18/05/08 21/05/08

PrazoAl 30 90 60 60 30 90

*CodProjeto *Mat 01 01 01 02 01 001 019 021 032 001


27

Resoluo do problema Aplicando a 1FN:


Departamento

1 1 N N N N 1 N 1 1

1
lota

1 1 1 1 1 N N N N 1

N 1

Telefone

tem

Funcionario

aloca

Projeto

Vendedor

Crie a entidade Telefone para conter o prefixo e o sufixo de cada telefone


Relacione a entidade Telefone a entidade Funcionrio

Crie a entidade Departamento para conter o nome do Departamento; Departamento;


Relacione a entidade Departamento com a entidade Funcionrio

Crie e relacione a entidade Projeto, que armazena o nome de cada projeto


Relacione a entidade Funcionrio a entidade Projeto
28

Situao problema Aplicando a 2FN:


Todo atributo no chave deve depender totalmente da chave primria:
Para existir um nome de um funcionrio precisa existir apenas um funcionrio cadastrado?
Sim: Depende totalmente da chave primria No: Depende parcialmente da chave primria

Para existir uma Data de Alocao de um funcionrio precisa apenas Alocao existir um funcionrio cadastrado? *Mat Nome CodDep DtAl PrazoAl 001 019 021 032 039 045 Joo Marisa Pedro Pedrina Joana Mrio 03 02 03 02 03 02 21/05/08 17/05/08 21/06/08 22/06/08 18/05/08 21/05/08 30 90 60 60 30 90
29

Resoluo do problema Aplicando a 2FN:


*Mat Nome CodDep 001 019 021 032 039 045 Joo Marisa Pedro Pedrina Joana Mrio 03 02 03 02 03 02 *CodProjeto *Mat 01 01 01 02 01 001 019 021 032 001 DtAl 21/05/08 17/05/08 21/06/08 22/06/08 18/05/08 PrazoAl 30 90 60 60 30

A Data de Alocao depende de um funcionrio a ser alocado, mas depende tambm de um Projeto onde o funcionrio possa ser alocado.
A Data da Alocao depende da chave primria do funcionrio e da chave primria do projeto
30

10

Situao problema Aplicando a 3FN:


Atributos no chave que dependam funcionalmente de outros atributos no chave so eliminados:
Comisso depende do Salrio Fixo ou do Salrio Total?
No. Apenas do cdigo do vendedor

Salrio Fixo depende da Comisso ou do Salrio Total?


No. Apenas do cdigo do vendedor

Salrio Total depende da Comisso ou do Salrio Total?


Mat 019 032 045 Comissao 20 10 15 SalFixo 800 600 700 SalTotal 960 660 805
31

Resoluo do problema Aplicando a 3FN:


Mat 019 032 045 Comissao 20 10 15 SalFixo 800 600 700 SalTotal 960 660 805

O Salrio Total do vendedor o produto do clculo do Salrio Fixo vezes a Comisso


A coluna Salrio Total deve ser eliminada pois os dados contidos nela so desnecessrios.
32

Banco de Dados
Exerccio Modelo de Negcio: Comrcio

Prof. Gilberto Braga de Oliveira

11

Exemplo: Comrcio
Os produtos so registrados pela descrio, valor unitrio e quantidade de cada produto, pelo setor onde o produto est contido e a data de fabricao dos produtos perecveis; Os cliente so cadastrados pelo nome, endereo1, nome, endereo1, endereo2 e CPF de cada cliente, pela quantidade e total da venda de cada produto a cada cliente
Cada cliente pode comprar um ou mais produtos, produtos, enquanto cada produto pode ser vendido para um ou mais clientes. clientes.
34

Modelo Conceitual
Entidade Atributos Relacionamentos Descricao Quantidade com Cliente 1:N ValorUnitario Parcial Setor DtFabricacao Nome Endereco1 Endereco2 CPF QtdVenda TotalVenda

Produto

RELACIONAMENTO ATRIBUTOS Venda

Cliente

com Produto 1:N Parcial

Cliente

Venda

Produto
35

1 Encontrar chaves candidatas


Entidade Atributos Relacionamentos Produto #Descricao Quantidade com Cliente 1:N ValorUnitario Parcial Setor DtFabricacao Nome Endereco1 Endereco2 #CPF QtdVenda TotalVenda

RELACIONAMENTO ATRIBUTOS Venda

Cliente

com Produto 1:N Parcial

36

12

2 Criar ou promover chaves primrias


Entidade Atributos Relacionamentos *CodProduto #Descricao Quantidade com Cliente 1:N ValorUnitario Parcial Setor DtFabricacao *CodCliente Nome Endereco1 Endereco2 #CPF QtdVenda TotalVenda

Produto

RELACIONAMENTO ATRIBUTOS *CodVenda Venda

Cliente

com Produto 1:N Parcial

37

3 Criar chaves estrangeiras


Entidade Atributos Relacionamentos *CodProduto #Descricao Quantidade com Cliente 1:N ValorUnitario Parcial Setor DtFabricacao *CodCliente Nome Endereco1 Endereco2 #CPF QtdVenda TotalVenda

Produto

RELACIONAMENTO ATRIBUTOS Venda *CodVenda CodProduto CodCliente

Cliente

com Produto 1:N Parcial

38

Anomalias de Atualizao:
De Incluso
Cada cliente novo deve se relacionar a uma quantidade de produtos vendidos Cada produto, mesmo que no seja perecvel, exige o produto, preenchimento do campo Data de Fabricao A cada produto cadastrado em um setor j existente obriga o recadastramento do setor

De Alterao
Os clientes no podem ter mais de trs endereos e no clientes endereos podem ser pesquisados por qualquer dado do endereo. endereo. A atualizao do endereo de um cliente ou do nome de um setor ser muito difcil

De Excluso
Cada venda excluda exclui tambm o registro do cliente e 39 vice-versa vice-

13

1FN
Todas as entidades e atributos com relacionamentos devem ter ao menos uma chave primria Cada dado um campo, cada campo um dado No devem haver atributos multivalorados
Entidade Atributos *CodProduto CodSetor #Descricao Quantidade ValorUnitario *CodSetor #Setor *CodProduto DtFabricacao Relacionamentos com Cliente 1:N Parcial com Perecivel 1:1 Parcial com Setor 1:1 Parcial com Produto 1:N Total com Produto 1:1 Total
40

Produto

Setor Perecivel

1FN ...continuao
Entidade Atributo *CodCliente Nome #CPF QtdVenda TotalVenda Relacionamento com Produto 1:N Parcial com Endereco 1:N Total

Cliente

RELACIONAMENTO Venda

ATRIBUTOS *CodVenda CodProduto CodCliente *CodCliente *CodEndereco

*CodEndereco Tipo com Cliente 1:N Logradouro Endereco Bairro Parcial Cidade CEP

EnderecoCliente

41

2FN
Todas as tabelas devem estar na primeira forma normal No devem haver atributos que dependam parcialmente da chave primria (depedncia funcional parcial)
Entidade Atributos *CodProduto CodSetor #Descricao Quantidade ValorUnitario *CodSetor #Setor *CodProduto DtFabricacao Relacionamentos com Cliente 1:N Parcial com Perecivel 1:1 Parcial com Setor 1:1 Parcial com Produto 1:N Total com Produto 1:1 Total
42

Produto

Setor Perecivel

14

2FN ...continuao
Entidade Atributo *CodCliente Nome CPF QtdVenda TotalVenda Relacionamento com Produto 1:N Parcial com Endereco 1:N Total RELACIONAMENTO ATRIBUTOS *CodVenda CodProduto CodCliente QtdVenda TotalVenda *CodCliente *CodEndereco

Cliente

Venda

*CodEndereco Tipo Logradouro com Cliente 1:N Endereco Bairro Parcial Cidade CEP

EnderecoCliente

43

3FN
Todas as tabelas devem estar na segunda forma normal No devem haver atributos que dependam de campos no chave (depedncia funcional transitiva)
Entidade Atributos *CodProduto CodSetor #Descricao Quantidade ValorUnitario *CodSetor #Setor *CodProduto DtFabricacao Relacionamentos com Cliente 1:N Parcial com Perecivel 1:1 Parcial com Setor 1:1 Parcial com Produto 1:N Total com Produto 1:1 Total
44

Produto

Setor Perecivel

3FN ...continuao
Entidade Atributo *CodCliente Nome #CPF QtdVenda TotalVenda Relacionamento com Produto 1:N Parcial com Endereco 1:N Total RELACIONAMENTO ATRIBUTOS *CodVenda CodProduto CodCliente QtdVenda TotalVenda *CodCliente *CodEndereco

Cliente

Venda

*CodEndereco Tipo Logradouro com Cliente 1:N Endereco Bairro Parcial Cidade CEP

EnderecoCliente

45

15

Modelo EntidadeEntidadeRelacionamento
Endereco Setor

1 N

N
tem

N 1 1 N N N N 1

1 N 1 1

1
lota

1 1 1 1

N
Cliente

N
Produto

Vende

1
e

1
Perecivel

46

16