Você está na página 1de 35

Modelação de Bases de Dados

Normalização

Sistemas de Informação e Base de Dados


Tecnologias de Comunicação Multimédia
2ºAno – 2022/2023
Marco Amaro Oliveira
Processo de Normalização
● Técnica de modelação de dados
○ Conotada com o modelo relacional.
○ Resultado é um conjunto de relações prontas a serem
implementadas directamente sobre uma BD relacional.
● Fornece um critério para determinar o grau de
vulnerabilidade do modelo a inconsistências
lógicas e anomalias.
● Pode ser aplicada
○ Do especifico para o geral
• Conjunto de dados “em bruto”
○ Do geral para o especifico
• Em estruturas resultantes de outra técnica de modelação
(p.e. modelos EA)
Marco Amaro Oliveira - TCM - 2º Ano - SIBD 2
Processo de Normalização
● Existem várias formas normais, que
correspondem a diferentes graus de
normalização.
○ NF mais importantes (mas existem outras):
• 1NF, 2NF, 3NF, BCNF, 4NF.
○ NF são aditivas:
• 4NF => 3NF => 2NF => 1NF
● Uma relação diz-se numa forma normal se
respeitar as propriedades da definição respectiva
● Base de dados diz-se numa dada forma normal
se todas as relações respeitarem essa forma
normal
Marco Amaro Oliveira - TCM - 2º Ano - SIBD 3
Importância
● Minimizar problemas de desempenho
○ Evitar redundância dos dados,
○ Evitar inconsistências nos dados.
● Evitar problemas de manutenção:
○ De inserção
○ De eliminação
○ De alteração
● Reduzir custos de armazenamento.
● A normalização não altera o conteúdo, altera a
estrutura das relações.

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 4


Dependência Funcional
● Descreve o relacionamento que existe entre
atributos
○ Se A e B forem dois atributos de uma relação R
○ B depende funcionalmente de A se a cada valor
de A está associado exactamente um (e apenas
um) valor de B … determina …
○ Expressa-se: A → B
(B depende funcionalmente de A)

○ A designa-se por atributo determinante ou apenas


determinante

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 5


Dependência Funcional
● Outra exposição:
○ Se B depende funcionalmente de A. i.e. (A→B),
então em dois tuplos t1 e t2
em que a1 = a2 t1=<a1, b1> e t2=<a2, b2>

terão que satisfazer a condição b1 = b2.


○ Caso contrário existe uma violação da
dependência funcional A → B.

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 6


Exemplos
Filme:
Titulo Ano Duracao Tipo EstudioNome ActorNome
Star Wars 1977 124 Color Fox Carrie Fisher
Star Wars 1977 124 Color Fox Mark Hammil
Star Wars 1977 124 Color Fox Harrison Ford
Mighty Ducks 1991 104 Color Disney Emilio Estevez
Wayne's World 1992 95 Color Paramount Dana Carvey

● Numa versão do nosso modelo EA surgiu a seguinte entidade


tipo:
FILME(Titulo, Ano, Duracao, Tipo, EstudioNome, {ActorNome})
● Neste caso poderíamos dizer que:
Titulo Ano → Duracao
Titulo Ano → Tipo Titulo Ano → Duracao Tipo EstudioNome
Titulo Ano → EstudioNome
Titulo Ano → ActorNome

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 7


Dependência Funcional
● DEPENDÊNCIA PARCIAL
○ Ocorre quando um atributo depende de atributos que fazem parte
da chave primária da relação mas não de toda a chave.
● DEPENDÊNCIA TRANSITIVA
○ Ocorre quando um atributo que não faz parte da chave primária
da relação depende de um atributo que também não faz parte da
chave primária da relação.
1.X → Y;
2.Não é o caso de Y → X;
3.Y → Z.
○ X → Y → Z (lê-se Z depende funcionalmente Y que depende
funcionalmente de X), em que:
• X faz parte da chave primária, e
• Y não faz parte da chave primária.
• Pode dizer-se neste caso que X → Z
Marco Amaro Oliveira - TCM - 2º Ano - SIBD 8
Exemplos
Filme:
Titulo Ano Duracao Tipo EstudioNome EstudioEndereco
Star Wars 1977 124 Color Fox 123 Fox St., Hollywood
Mighty Ducks 1991 104 Color Disney 456 Disney Rd., Brentwood
Wayne's World 1992 95 Color Paramount 789 Paramount Dr., Beverly Hills

● Supondo que se decidiu representar dados do endereço do


estúdio:
FILME(Titulo, Ano, Duracao, Tipo, EstudioNome, EstudioEndereco)

● Neste caso teríamos uma dependência funcional transitiva:


Titulo Ano → EstudioNome
Titulo Ano → EstudioEndereco
EstudioNome → EstudioEndereco

A dependência funcional transitiva aplica-se porque, se soubermos o Título e o Ano (atributos


chave) do Filme conseguimos saber o Endereço do Estúdio, e porque um atributo não-chave
(EstudioNome) determina outro atributo não-chave (EstudioEndereco).

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 9


1ª Forma Normal (1NF)
● 1NF trata da “forma” dos tuplos de uma relação.
● Uma tabela (relação) está na 1NF se:
○ Não existem registos duplicados.*
○ Cada “célula” possui um e apenas um valor
(sem valores repetidos ou arrays).**
○ Os valores numa coluna são todos de um
mesmo tipo.

*
Obriga a que exista uma chave primária.
**
O valor é atómico; é também uma restrição do
RDBMS.
Marco Amaro Oliveira - TCM - 2º Ano - SIBD 10
1NF Exemplo
● Relação não normalizada de uma escola
profissional
● Inserção obrigatória: ID, nome, empresa
Alunos
ID nome empresa endereco Mês formacao
1 Paulo E123 Rua da E123 {Abril, Maio} {Java, Linux}
2 António aeiou Av. da aeiou Maio Linux
3 Maria E123 Rua da E123 {Janeiro, Abril} {Python, Java}
4 Luísa ABC Praça da ABC Abril Java

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 11


1NF Exemplo
● Normalização da relação anterior
Alunos
ID nome empresa endereco
1 Paulo E123 Rua da E123
2 António aeiou Av. da aeiou
3 Maria E123 Rua da E123
4 Luísa ABC Praça da ABC

Cursos
#ID → alunos formacao mes
1 Java Abril
1 Linux Maio
2 Linux Maio
3 Python Janeiro
3 Java Abril
4 Java Abril

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 12


Anomalias
● Anomalias de inserção:
○ não podemos inserir uma acção de formação sem
alunos,
● Anomalias de remoção:
○ não podemos apagar a acção “Python” sem perder
a informação da Maria
● Anomalias de actualização:
○ podemos alterar o nome de uma actividade apenas
num dos registos, criando uma inconsistência

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 13


2ª Forma Normal (2NF)
● A 2NF (e 3NF) trata da relação entre campos
chave e os restantes campos de uma relação.
● A 2NF preocupa-se particularmente com relações
de chave primária composta.
● Uma relação está na 2NF se:
○ Está na 1NF.
○ Todos os atributos não pertencentes a uma chave
candidata (atributos não-primos) devem depender
funcionalmente de toda a chave
(não são permitidas dependências parciais).*
*
Cada entidade que depende funcionalmente de
uma parte da chave gera uma nova relação.
Marco Amaro Oliveira - TCM - 2º Ano - SIBD 14
2NF Exemplo
● Tabela cursos não está na 2NF
○ formacao → mes
● Os atributos que só dependem de uma parte da
chave devem ser separados numa outra tabela.
Cursos
formacao mes
Java Abril
Linux Maio
Alunos_Cursos
Python Janeiro
#ID → alunos #formacao -> Cursos
1 Java
1 Linux
2 Linux
3 Python
3 Java
4 Java

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 15


3ª Forma Normal (3NF)
● Uma relação está na 3NF se:
○ Está na 2NF.
○ Não existem dependências transitivas na relação. *
*
A existência de dependências transitivas dá
origem a uma nova relação.

● Obtém-se um conjunto de relações, onde cada


atributo depende única e exclusivamente da
chave dessa relação.

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 16


3NF Exemplo
● Tabela alunos não está na 3NF
○ ID → empresa
○ empresa → endereco
Alunos
ID nome #empresa →
Empresas
1 Paulo E123
2 António aeiou
3 Maria E123
4 Luísa ABC

Empresas
empresa endereco
E123 Rua da E123
aeiou Av. da aeiou
ABC Praça da ABC

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 17


Exercício NF01
● A seguinte tabela permite o registo de todas as
pessoas que se registaram para um evento:
(first_name, last_name, email, home_telephone,
work_telephone, event_name, event_date, event_price,
spouse_name, child_name_1, child_name_2,
child_name_3)
● Identifique as dependências funcionais e as
chaves candidatas.
● Identifique em que forma normal é que se
encontra a relação
● Converta a relação numa Base de dados na 3NF.

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 18


Forma Normal de Boyce-Codd (BCNF)
● Caso especial da 3NF para endereçar algumas
situações particulares;
● Uma relação está na BCNF se:
○ Está na 3NF.
○ Todos os determinantes são chaves candidatas.*
“Todos os atributos são funcionalmente
*

dependente da chave, de toda a chave e nada mais


do que a chave”.
● Se uma relação possui apenas um determinante a
3NF e BCNF são equivalentes.

NOTA: Um determinante é qualquer atributo que possa ser utilizado para determinar os
valores atribuídos a outros atributos do tuplo (slide 5).

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 19


BCNF Exemplo
● Imagine-se agora que:
○ um curso tem formadores diferentes;
○ um curso pode ter instâncias em diferentes
meses;
○ um formador apenas está presente em um
determinado mês;
○ Nunca existem dois formadores em simultâneo;
○ um formador pode leccionar diferentes cursos;
○ é necessário registar as vagas para cada par
curso/professor;
○ num dado mês, um curso só pode ter um
formador.
Marco Amaro Oliveira - TCM - 2º Ano - SIBD 20
BCNF Exemplo
● Não satisfaz BCNF:
○ formador → mes (i.e. formador é um determinante)
○ formador não é chave candidata
● É necessário isolar formador e mes.

Cursos
formacao mes formador vagas
Java Abril Marco 0
Java Maio João 12
Linux Janeiro Matos 7
Linux Maio João 20
Linux Julho Susana 10
Python Janeiro Matos 2

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 21


BCNF Exemplo

Cursos
formacao #formador → Formador vagas
Java Marco 0
Java João 12
Linux Matos 7
Linux João 20
Linux Susana 10
Python Matos 2

Formador
formador mes
Marco Abril
João Maio
Matos Janeiro
Susana Julho

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 22


Exercício NF02
● Atente à estrutura:
Encomenda(nrEncomenda, nrCliente,
clienteNome, clienteEndereco,
encomendaData, produtoCod, produtoNome,
produtoQuantidade)
● Identifique as dependências funcionais e as
chaves candidatas.
● Decomponha-a nas seguintes formas normais:
○ 1NF
○ 2NF
○ 3NF
○ BCNF
Marco Amaro Oliveira - TCM - 2º Ano - SIBD 23
Exercício NF03
● Considere o seguinte extrato de uma Tabela de uma clinica dietética
em que cada paciente tem até 4 consultas. Se o nome do paciente
começa por uma letra menor que ‘P’ a consulta é de manhã, senão é
de tarde. A consulta 1 é sempre às 09:00 ou às 13:00, a consulta 2 é
às 10:00 ou às 14:00 e por aí adiante.
pacienteNr pacienteNome consultaId hora medico
1 João 1 09:00 mA
2 António 1 09:00 mB
3 Florinda 2 10:00 mB
4 Pedro 1 13:00 mB
5 Ricardo 2 14:00 mA

● Identifique as dependências funcionais e as chaves candidatas.


● Normalize até à BCNF

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 24


Dependência Multivalor
● Uma dependência multivalor é uma generalização da
dependência funcional.

● De uma forma simples podemos dizer que é uma


restrição, que ocorre quando a inserção de um valor
para um sub-conjunto de atributos de uma relação,
implica a inserção (adicional) de um conjunto de
registos (linhas) na mesma tabela.

● Serve para assegurar que dois conjuntos de atributos


são mutuamente independentes.

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 25


Dependência Multivalor
● Definição: Uma dependência multivalor é uma restrição
acerca de uma relação R que quando se fixa os valores para
um conjunto de atributos então, os valores de certos
(outros) atributos são independentes dos valores de todos
os restantes atributos da relação.

● Diz-se que a dependência multivalor


A1 A2 ... An →→ B1 B2 ... Bm … multidetermina …
existe numa relação R se quando nos restringimos aos tuplos
de R que possuem um certo (único) valor para cada um dos
atributos A, então o conjunto de valores que encontramos
em B é independente do conjunto de valores que encontramos
nos atributos de R que não são comuns a A nem a B.

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 26


Dependência Multivalor
● Especificando, diz-se que a dependência
multivalor existe se:
○ Para cada par de tuplos t e u da relação R que
coincidem em An, podemos encontrar em R algum
tuplo v que coincide:
• com os An de ambos t e u,
• com os Bn de t,
• Com todos os atributos de R em u, que não estejam
entre os atributos An ou Bn.
● Obriga à existência de pelo menos 3 atributos.

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 27


Exemplo
● Determine se existe alguma dependência multivalor na relação R:
R:
X Y Z
x1 y1 z1
x1 y1 z2
x1 y2 z1
x1 y2 z2
x3 y1 z1
x4 y3 z2
● Verifique que as associações (Y, X) e (Z,X) são independentes.
● Se adicionarmos um novo par (Y, X) temos que adicionar um novo registo por
cada par (Z, X), i.e. por cada valor de Z que esteja associado a X.
● Por exemplo, para relacionarmos x1 com y3 seremos forçados a criar dois
tuplos:
○ t1<x1, y3, z1>
○ t2<x1, y3, z2>
● Assim, X→→Z e X→→Y

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 28


4ª Forma Normal (4NF)
● Normalmente uma relação na BCNF também se
encontra na 4NF
● Uma relação está na 4NF se:
○ Está na BCNF.
○ Não possui dependência multivalor.

● Exemplo: “todos os agentes vendem todos os produtos


nas zonas em que actuam”.
R(Agente, Produto, Zona)
Agente →→ Produto R1(Agente, Produto)
Agente →→ Zona R2(Agente, Zona)

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 29


Consequências da Normalização
● A normalização não deve ser levada a extremos
● Objectivos (conflituosos):
○ Pretende-se um sistema flexível
○ Exige-se um sistema com alto desempenho
● É necessário estabelecer um compromisso:
○ Schema equilibrado que nunca coloque em risco a integridade da
BD, mas com um desempenho razoavel.

1NF 2NF 3NF BCNF 4NF ...NF

- relações + relações
+ redundância - redundância

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 30


Desnormalização por desempenho
● Pode ser necessário utilizar esquemas não normalizados por motivos
de desempenho (performance);
● Por exemplo, apresentar o nome do aluno, a morada e a acção de
formação que frequentou necessita a junção das relações aluno com
curso:
○ Alternativa 1: Usar uma relação desnormalizada contendo os
atributos de curso e aluno;
• Pesquisa mais rápida;
• Mais espaço necessário, mais tempo de execução nas
actualizações;
• Mais código pelo programador e possibilidade de introdução
de erros.
○ Alternativa 2: utilizar uma vista (materializada) definida por: Aluno
curso
• Beneficios e restrições iguais à anterior mas sem código extra
pelo programador.
Marco Amaro Oliveira - TCM - 2º Ano - SIBD 31
Outros Exercícios NF04
● Considere a relação seguinte
○ R = (A, B, C, D, E)
● com as seguintes dependências funcionais:
○ F = {B C→A D E, D→B}
a) Identifique todas as chaves candidatas.
b) Identifique a maior forma normal que é
satisfeita por R.
c) Se não estiver na BCNF, decomponha a
relação em relações adicionais até que todas as
relações estejam em BCNF.

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 32


Outros Exercícios NF05
● Considere a relação seguinte
○ R = (A, B, C, D, E)
● com as seguintes dependências funcionais:
○ F = {A→B, E→C, D E →A}
a) Identifique todas as chaves candidatas.
b) Identifique a maior forma normal que é
satisfeita por R.
c) Se não estiver na BCNF, decomponha a
relação em relações adicionais até que todas as
relações estejam em BCNF.

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 33


Outros Exercícios NF06
● Considere a tabela seguinte:
A B C D E F G
3 small black new 4 Lee cm
6 small gold old 4 Lee m
3 big black new 4 Lee cm
3 big black old 4 Lee cm
6 big gold old 5 Lee m

● Identifique se Verdadeiro ou Falso:


○ F→A
○ A→F
○ AB→F
○ C→G
○ ABD→CEFG

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 34


FIM

● Duvidas, questões, comentários,opiniões???

Marco Amaro Oliveira - TCM - 2º Ano - SIBD 35

Você também pode gostar