Você está na página 1de 55

CENTRO DE EDUCAÇÃO TECNOLÓGICA DE

SERGIPE

UNED – LAGARTO/SE

BANCO DE DADOS
Parte IV

Professora: Clênia Melo Araujo


E-mail: clenia@infonet.com.br
Modelo Relacional (cont.)
 Diagrama de Entidade e
Relacionamento
Conjunto de objetos básicos chamados
entidades e os relacionamentos entre
eles, mapeados a partir da percepção
da realidade

Entidade de Dados
Representam os dados que deverão ser
armazenados pelo sistema
CLIENTE
Modelo Relacional (cont.)

 Relacionamentos
Determinam a interdependência entre
as entidades de um DER
(0,1) Gerenc (0,1)
Funcionário ia Divisão

Tipos de Relacionamento
1:1
1:N
N:N
Modelo Relacional (cont.)

 Dicionário de Dados
Símbolo Significado
= É equivalente a
+ E (concatenação)
[a|b|c] Ou (seleção)
n{a}m Interações de n até m
(a) (repetições)
Opcionalidade
/* . . . */ Comentário
@ Chave primária
Modelo Relacional (cont.)

 Exemplo de DER
(0,N) É_fala (0,N)
Idioma do Pessoa
(1,N)
(0,N)

Tem Tem

(1,N) (0,N)

Cargo Habilidade

Observação: Modelo Lógico X Modelo Físico


Modelo Relacional (cont.)

 Exemplo de dicionário de Dados


- Idioma=@codIdioma + nomeIdioma
- Habilidade=@codHabilidade +
descricaoHabilidade
- Pessoa=@codPessoa + cpf + rg
+nomePessoa + dataNascimento +
(codigoSetor + dataAdmissao) + sexo +
endereco + bairro + cidade + uf + cep +
(fone + celular + e_mail) + 0{numCurso +
tipoCurso + (anoConclusao + nomeCurso +
CargaHoraria)}
- Cargo = @codCargo + descricaoCargo
Modelo Relacional (cont.)
 Normalização
É basicamente uma formalização de idéias
simples, para aplicações práticas no projeto
de Banco de Dados

Define princícipios e normas aplicadas a


modelos de dados, a fim de avaliar a
qualidade e a adequação do mesmo à
implementação do modelo relacional

A teoria da normalização é uma trilha e não


um trilho, sendo em alguns casos a sua
violação um recurso do projetista.
Modelo Relacional (cont.)
 Primeira Forma Normal (1FN)
 Repetições sem identificador da repetição
Remove da entidade os atributos pertencentes a
repetição
Cria uma nova entidade composta com os atributos
extraídos + chave primária da entidade
particionada.
O relacionamento entre as entidades deve 1:N

A chave primária da nova entidade pode ser


 O número sequencial para entidade
 O código da entidade particionada adicionada a um
sequencial para cada item relacionado a ela
Os relacionamentos devem ser analisados
Modelo Relacional (cont.)
 Primeira Forma Normal (1FN)
 Exemplo:
Motorista = @codigoMotorista + nomeMotorista +
0{cidadeOrigem + cidadeDestino + qtdeDias}N
1 FN

Motorista = @codigoMotorista + nomeMotorista


Viagem = @numeroViagem + cidadeOrigem +
cidadeDestino + qtdeDias + codigoMotorista

(1,1) (1,N)
Motorista Faz Viagem
Modelo Relacional (cont.)
 Primeira Forma Normal (1FN)
 Repetições com identificador da repetição
Entidades INDEPENDENTES da repetição
 Se extraída a repetição, a entidade continuar
caracterizada e com sentido dentro do modelo:
 Deve ser criada uma nova entidade composta
pela chave primária da entidade particionada e
pelos atributos da repetição.
 A chave primária da nova entidade, deve ser
composta pela chave primária da entidade
particionada em conjunto com o identificador da
repetição.
Modelo Relacional (cont.)
 Primeira Forma Normal (1FN)
 Repetições com identificador da repetição
Entidades DEPENDENTES da repetição
 Se extraída a repetição, a entidade perder o sentido:
 Deve ser removida a repetição
 Chave primária deve ser acrescentado o
identificador da repetição

Em ambos os casos os relacionamentos DEVEM ser


analisados e reestruturados quando necessário
Modelo Relacional (cont.)
 Primeira Forma Normal (1FN)
 Exemplo com entidade INDEPENDENTE da
repetição:
 Cliente = @codigoCliente + nomeCliente
 Pedido = @codigoPedido + data + dataEntrega + 0
{codigoProduto + qtde + valor} N + codigoCliente
 Produto = @codigoProduto + descricaoProduto
(1,1) (0,N)
Cliente Faz Pedido

(0,N)
Conte
m

(0,N)

Produto
Modelo Relacional (cont.)
 Primeira Forma Normal (1FN)
 Exemplo com entidade INDEPENDENTE da
repetição na 1FN:
Cliente = @codigoCliente + nomeCliente
Pedido = @codigoPedido + data + dataEntrega +
codigoCliente
ItemDePedido = @codigoPedido + @codigoProduto
+ qtde + valor
Produto = @codigoProduto + descricaoProduto
Modelo Relacional (cont.)
 Primeira Forma Normal (1FN)
 Exemplo com entidade INDEPENDENTE da
repetição na 1FN:
(1,1) (0,N)
Cliente Faz Pedido

(1,1)
Conte
m

(1,N)
(1,1) EstaE (1,N) ItemDePedid
Produto m o
Modelo Relacional (cont.)
 Primeira Forma Normal (1FN)
 Exemplo com entidade DEPENDENTE da
repetição:
Aluno = @matriculaAluno + nomeAluno + endereco
Historico = @matriculaAluno + 0 {codigoDisciplina
+ ano + semestre + nota + faltas + status} N
Disciplina = @codigoDisciplina + nomeDisciplina
(1,1) (0,1)
Aluno Possui Histórico

(0,N)

Tem

(0,N)

Disciplina
Modelo Relacional (cont.)
 Primeira Forma Normal (1FN)
 Exemplo com entidade DEPENDENTE da
repetição na 1FN:
Aluno = @matriculaAluno + nomeAluno + endereco
Historico = @matriculaAluno + @codigoDisciplina +
ano + semestre + nota + faltas + status
Disciplina = @codigoDisciplina + nomeDisciplina
(1,1) (0,N)
Aluno Possui Histórico

(1,N)

Tem

(1,1)

Disciplina
Modelo Relacional (cont.)
 Dependência Funcional (DF)
Dada uma relação R, um conjunto de
atributos B de R é funcionalmente
dependente de um conjunto A de R (R.A →
R.B), se e somente se, cada conjunto de
valores de A em R, sempre for associado a
precisamente a um mesmo conjunto de
valores de B em R.

Exemplo:
Oferta = @codigoDisciplina + @turma +
nomeDisciplina + vagas + vagasOcupadas
(codigoDisciplina, turma) → (vagas, vagasOcupadas)
codigoDisciplina → nomeDisciplina
Modelo Relacional (cont.)
 Segunda Forma Normal (2FN)
Uma relação está na 2FN, se e somente se,
estiver em 1FN, e cada atributo não chave for
totalmente dependente da chave primária.

A 2FN só pode ser violada em chaves


primárias compostas.
Modelo Relacional (cont.)
 Segunda Forma Normal (2FN)
Exemplo de entidade em 2FN
Matricula = @codigoDisciplina + @matriculaAluno +
nota1 + nota2 + nota3 + nota4 + faltas1 + faltas2
+ faltas3

Exemplo de entidade que viola a 2FN


DominioIdioma = @codigoFuncionario +
@codigoIdioma + ler + escreve + fala +
descricaoIdioma + paisOrigem
Modelo Relacional (cont.)
 Segunda Forma Normal (2FN)
Anomalias de inserção
Os dados relativos aos atributos que dependem
parcialmente da chave primária, não podem ser
inseridos até que uma linha da tabela seja inserida
Exemplo:
CodFunc CodIdioma Ler Escreve F DescricaoIdio PaisOrige
ala ma m
001 A01 S S N Inglês Inglaterra
002 A02 N N S Português Portugal
003 A03 N S S Inglês Inglaterra

Se desejássemos incluir as informações sobre o


idioma “A03” – Alemão – Alemanha, teríamos que
esperar que um funcionário que domine este idioma
fosse inserido.
Modelo Relacional (cont.)
 Segunda Forma Normal (2FN)
Anomalias de deleção
Se removermos a linha da tabela que contém a
última ocorrência de um valor para os atributos
parcialmente dependentes, as informações destes
serão perdidas.
CodFunc Exemplo:
CodIdioma Ler A entidade
Escreve IDIOMA
F DescricaoIdio PaisOrige
ala ma m
001 A01 S S N Inglês Inglaterra
002 A02 N N S Português Portugal
003 A03 N S S Inglês Inglaterra

Se removermos a segunda linha da tabela


(codigoFuncionario ='002' e codigoIdioma = 'A02')
as informações sobre o idioma português serão
removidas e consequentemente perdidas.
Modelo Relacional (cont.)
 Segunda Forma Normal (2FN)
Anomalias de atualização
Como os dados dos atributos parcialmente
dependentes estão repetidos nas linhas das tabelas,
é possível que a atualização das informações da
tabela gera inconsistência nos dados.
Exemplo: A entidade IDIOMA
CodFunc CodIdioma Ler Escreve F DescricaoIdio PaisOrige
ala ma m
001 A01 S S N Inglês Inglaterra
002 A02 N N S Português Portugal
003 A03 N S S Inglês Inglaterra

Nota-se que o modelo desnormalizado deixa


margem para que exista para um mesmo código de
idioma ('A02') duas descrições e países de origens
diferentes, o que é uma inconsistência.
Modelo Relacional (cont.)
 Segunda Forma Normal (2FN)
 Processo de Normalização
Devem ser extraídos da entidade os atributos que
dependem parcialmente da chave primária, para
criação de uma nova entidade que terá como chave
primária o determinante funcional dos atributos
extraídos.

Os relacionamentos devem ser analisados e


ajustados

 A entidade criada sempre possui um


relacionamento 1:N com a entidade que foi
particionada.

O determinante funcional não é extraído e sim


copiado de uma entidade para outra.
Modelo Relacional (cont.)
 Segunda Forma Normal (2FN)
Exemplo que viola a 2FN:
Exemplares = @codigoLivro + @numExemplar +
nomeLivro + dataAquisicao + nomeAutor + edicao
+ editora
Emprestimos = @codigoLivro + @numExemplar
+ @matriculaAluno + dataEmprestimo +
dataDevolucao
Aluno = @matriculaAluno + nomeAluno +
endereço + codigoCurso

Exemplar Empréstimo Aluno


Modelo Relacional (cont.)
 Segunda Forma Normal (2FN)
Exemplo na 2FN:
Exemplares = @codigoLivro + @numExemplar +
dataAquisicao + edicao
Livro = @codigoLivro + nomeLivro + nomeAutor
+ editora
Emprestimo = @codigoLivro + @numExemplar +
@matriculaAluno + dataEmprestimo +
dataDevolucao
Aluno = @matriculaAluno + nomeAluno +
endereço + codigoCurs
Empréstim
Livro Exemplar Aluno
o
Modelo Relacional (cont.)
 Terceira Forma Normal (3FN)
Uma relação está em 3FN, se e
somente se, estiver em 2FN, e não
existir dependência funcional por
transitividade em relação à chave
primária.

Entende-se por transitividade a


afirmativa de que se A → B e B → C,
logo A → C.

Na normalização deve ser observado a


dependência funcional entre os
atributos não chave.
Modelo Relacional (cont.)
 Terceira Forma Normal (3FN)
 Exemplo de entidade em 3FN:
Produto = @codigoProduto +
descricaoProduto + tipo +
codigoFornecedor

 Exemplo de entidade que viola a 3FN


Pedido = @codigoPedido + data +
codigoVendedor + nomeVendedor
Modelo Relacional (cont.)
 Terceira Forma Normal (3FN)
Anomalias de inserção
Os dados dependentes da chave primária
por transitividade não podem ser inseridos
até que uma linha da tabela o seja.
Exemplo: A entidade PEDIDO
codPedid data CodigoVende nomeVendedor
o dor
001 10/01/200 V01 José dos Santos
8
002 11/01/200 V02 Maria Aparecida
8
003 13/01/200 V03 José dos Santos
8

As informações de um vendedor A03 – Ana


Maria, só poderia ser inseridos quando o
primeiro pedido da vendedora também o
Modelo Relacional (cont.)
 Terceira Forma Normal (3FN)
Anomalias de deleção
Se removesse a linha da tabela que
contém a última ocorrência de um valor
para os atributos dependentes por
transitividade, as informações destes serão
perdidas .
Exemplo: A entidade PEDIDO
codPedid data CodigoVende nomeVendedor
o dor
001 10/01/200 V01 José dos Santos
8
002 11/01/200 V02 Maria Aparecida
8
003 13/01/200 V03 José dos Santos
8

Se o pedido 002 for excluído, as


Modelo Relacional (cont.)
 Terceira Forma Normal (3FN)
Anomalias de atualização
Estando os dados dependentes por transitividade
repetidos, a atualização de uma das linhas pode
gerar inconsistência das informações associadas a
estes atributos.
Exemplo: A entidade PEDIDO
codPedid data CodigoVende nomeVendedor
o dor
001 10/01/200 V01 José dos Santos
8
002 11/01/200 V02 Maria Aparecida
8
003 13/01/200 V03 José dos Santos
8
Nota-se que o modelo desnormalizado deixa marge
para que exista um mesmo código de vendedor
(“V02”) associado a dois nomes diferentes, o que
caracteriza uma insconsistência.
Modelo Relacional (cont.)
 Terceira Forma Normal (3FN)
 Processo de normalização
 Devem ser extraídos da entidade os
atributos com dependência por
transitividade, bem como o determinante
funcional, para composição de uma nova
entidade. A chave primária da nova
entidade é formada pelo determinante
funcional.

 Os relacionamentos devem ser analisados


e ajustados.
Modelo Relacional (cont.)
 Terceira Forma Normal (3FN)
 Processo de normalização
A entidade criada sempre possui um
relacionamento 1:N com a entidade que foi
particionada.

 O determinante funcional é copiado de


uma entidade para outra.

 Na criação da nova entidade deve ser


verificado a redundância, ou seja, se ela já
existe no modelo.
Modelo Relacional (cont.)
 Terceira Forma Normal (3FN)
Exemplo que viola a 3FN:
Carro = @codigoCarro + descricaoCarro
Peça = @codigoPeca + descricaoPeca +
codigoFornecedor + nomeFornecedor

Carro Peça
Modelo Relacional (cont.)
 Terceira Forma Normal (3FN)
Exemplo na 3FN:
Carro = @codigoCarro + descricaoCarro +
anoLancamento
Peça = @codigoPeca + descricaoPeca +
codigoFornecedor
Fornecedor = @codigoFornecedor +
nomeFornecedor

Carro Peça Fornecedor


Modelo Relacional (cont.)
 Forma Normal Boyce/Codd
(BCNF)
Uma relação está em BCNF se, e
somente se, todo determinante
funcional for uma chave candidata
Na prática:
Uma relação está em BCNF se estiver em
3FN
Não existir dependência funcional dentro
da chave primária
Um modelo que está em BCNF:
Está pronto para ser implementado numa
arquitetura de banco de dados
Modelo Relacional (cont.)
 Forma Normal Boyce/Codd
(BCNF)
Exemplo de BCNF
Em cada projeto, cada máquina é alocada
a um único operador
Cada operador trabalha com apenas uma
máquina
Para cada máquina, existe um conjunto de
operadores que a operam

Viola a BCNF

ALOCAÇAO = @codigoProjeto + @codigoOperador


Modelo Relacional (cont.)
 Forma Normal Boyce/Codd
(BCNF)
Exemplo em BCNF
ALOCAÇAO = @codigoProjeto + @codigoOperador
OPERAÇAO = @codigoOperador +
@codigoMaquina

Obs: Estando a entidade na 3FN, a remoção da


dependência funcional da chave primária,
deixando assim a entidade em BCNF, não segue
um comportamento padrão.
Modelo Relacional (cont.)
 Dependência Multivalorada
(MVD)
Um atributo A de R multidetermina um
atributo B de R (R.A →→R.B), se e somente
se:
 Para um mesmo valor de R.A obtém-se sempre
um mesmo conjunto de valores para R.B
A dependência funcional é um caso particular
da MVD.
Exemplos
codigoCarro →→ codigoPeca : o carro
multidetermina as peças que o compõe
codigoCurso, codigoCurriculo → →
codigoDisciplina : o currículum de um curso
Modelo Relacional (cont.)
 Quarta Forma Normal (4FN)
Uma relação R está em 4FN se, e
somente se:
Existindo uma MVD em R,A →→B, então
todos os atributos de R também sejam
funcionalmente dependentes de A.
Na prática:
Uma relação R está em 4FN se estiver em
BCNF e todas as MVDs forem, de fato, FDs.
Modelo Relacional (cont.)
 Quarta Forma Normal (4FN)
Exemplo que viola a 4FN
Uma disciplina possui um conjunto de
professores
Uma disciplina possui um conjunto de
assuntos

Ensino = @ codigoProfessor + @codigoDisciplina


+ @codigoAssunto
codigoDisciplina →→ codigoAssunto
codigoDisciplina →→ codigoProfessor
Modelo Relacional (cont.)
 Quarta Forma Normal (4FN)
Exemplo que viola a 4FN
Uma disciplina possui um conjunto de
professores
Uma disciplina possui um conjunto de
assuntos

EnsinoProfessor = @ codigoProfessor +
@codigoDisciplina
EnsinoAssunto = @codigoDisciplina +
@codigoAssunto
Modelo Relacional (cont.)
 Quinta Forma Normal (5FN)
Dependência de junção
Uma relação R(A,B,C) satisfaz a
dependência de junção, se e somente se:
R(A,B,C) = R(A,B) |x| R(B,C) |x| R(C,A)

Uma relação está em 5FN, também


chamada de forma norma projeção/junção,
se e somente se, toda depedência de
junção em R for resultado de chaves
candidatas em R.
Modelo Relacional - Projeto
 Problemas da falta de
normalização
Redundância
Possibilidade de inconsistência
Anomalias com as operações de
inserção, atualização e deleção
Dificuldade de seleção consistente de
dados
Modelo Relacional - Projeto
 Projeto Físico
Uma vez o modelo estando
devidamente normalizado, é hora de
transformar o modelo de dados em um
projeto físico capaz de ser
implementado em uma determinada
tecnologia

O projeto físico deve levar em conta a


tecnologia que o modelo deverá ser
implementado
Modelo Relacional - Projeto
 Relacionamento 1:N
A chave primária da entidade do lado 1
deve migrar para a entidade do lado N
do relacionamento, criando uma chave
estrangeira (foreign key)

 Exemplo:
Disciplina = @codigoDisciplina +
nomeDisciplina + qtdeCredito
Centro = @codigoCentro + nomeCentro
Modelo Relacional - Projeto
 Relacionamento 1:N
Disciplina
Coluna Formato Defau N Restrições
lt ulo
codDisc Numerico( --- N codDisc>0
6)
nomeDis Literal(50) --- N ---
c
qtdCredi Numerico( --- N qtdCreditos
to 2) >0
codCentr Numerico( --- N codCentro>
o 2) 0
Pk (codDisc)
Fk (codCentro → centro(codCentro))
Index (nomeDisc)
Modelo Relacional - Projeto
 Relacionamento 1:N
Centro

Coluna Formato Defau N Restrições


lt ulo
codCentro Numerico( --- N codCentro>
2) 0
nomeCent Literal(50) --- N ---
ro
Pk (codCentro)

Obs: O formato deve ser preenchido de acordo com o SGBD onde a tabela
será criada.
Modelo Relacional - Projeto
 Relacionamento N:N
As entidades que participam do
relacionamento permanecem inalteradas
É criada uma terceira entidade composta
pelas chaves primárias das duas participantes
do relacionamento
As chaves primárias migradas serão chaves
estrangeiras, bem como comporão a chave
primária da nova entidade

 Exemplo:
Carro = @codigoCarro + descricaoCarro
Peça = @codigoPeca + descricaoPeça
Modelo Relacional - Projeto
 Relacionamento N:N
Carro
Coluna Formato Defau N Restrições
lt ulo
codCarro Numerico( --- N codCarro>0
5)
descrCarr Literal(50) --- N ---
o
Pk (codCarro)
Index (descCarro)
Modelo Relacional - Projeto
 Relacionamento N:N
Peças
Coluna Formato Defau N Restrições
lt ulo
codPeça Numerico( --- N codPeça>0
5)
descrPeç Literal(50) --- N ---
a
Pk (codPeça)
Index (descPeça)
Modelo Relacional - Projeto
 Relacionamento N:N
CarroPeça
Coluna Formato Defau N Restrições
lt ulo
codPeça Numerico( --- N codPeça>0
5)
codCarro Numerico( --- N codCarro>0
5)
Pk (codPeça, codCarro)
Fk(codCarro→Carro(codCarro))
Fk(codPeça→Peça(codPeça))
Index(codCarro, codPeça)
Modelo Relacional - Projeto
 Relacionamento com atributo
 As entidades que participam do relacionamento
permanecem inalteradas

 É criada uma terceira entidade composta pelas chaves


primárias das duas participantes do relacionamento
mais os atributos do relacionamento.

 As chaves primárias migradas serão chaves


estrangeiras, bem como comporão a chave primária da
nova entidade

 Exemplo:
Curriculo = @codigoCurso + @codigoCurso + totalCreditos
Disciplina = @codigoDisciplina + nomeDisciplina +
qtdeCreditos
Grade = @codigoCurso + @codigoCurso + período
Modelo Relacional - Projeto
 Relacionamento com atributo
Curriculo
Coluna Formato Defau N Restrições
lt ulo
codCurso Numerico( --- N codCurso>0
2)
codCurric Numerico( --- N codCurric>0
4)
totalCredit Numerico( --- N totalCredit>
os 3) 0

Pk (codCarro, codCurric)
Modelo Relacional - Projeto
 Relacionamento com atributo
Disciplina
Coluna Formato Defau N Restrições
lt ulo
codDisc Literal(7) --- N codDisc>0
nomeDisc Literal(50) --- N ---
qtdeCredit Numerico( --- N qtdeCredito
o 3) >0

Pk (codDisc)
Index(nomeDisc)
Modelo Relacional - Projeto
 Relacionamento com atributo
Grade
Coluna Formato Defau N Restrições
lt ulo
codCurso Numerico( --- N codCurso>0
2)
codCurric Numerico( --- N codCurric>0
4)
codDisc Literal(7) --- N codDisc>0
Periodo Numerico( --- N Periodo > 0
2) e periodo
<= 12
Pk (codCurso, codCurric, codDisc)
Fk ((codCurso, codCurric→→Curriculo(codCurso,codCurric))
Fk(codDisc→Disciplina(codDisc)

Você também pode gostar