Buscar

Aula3 - Modelo Entidade-Relacionamento

Prévia do material em texto

Modelo Entidade-
Relacionamento (MER)
Prof. Dr. Fernando Almeida 
fernando.almeida@docente.unip.br
mailto:fernando.almeida@docente.unip.br
Agenda
• Entidades e relacionamentos
• Chaves 
• Dependências funcionais 
• Redundâncias versus perdas 
• Anomalias 
• Normalização de dados
Projeto de Banco de dados
Minimizar a redundância de dados 
sem perder nenhuma informação
Objetiva ter a menor quantidade de 
espaço de armazenamento, mantendo 
todos os vínculos entre os dados 
Terminologias
Entidades 
Relacionamentos 
Colunas ou atributos 
Linhas, registros, tuplas
Entidade
• Conjunto de objetos do mundo real sobre os quais se deseja 
manter informações no banco de dados 
• Representada através de um retângulo 
• Pode representar: 
• Objetos concretos (uma pessoa) 
• Objetos abstratos (um departamento)
João 
Pedro 
Paulo 
Maria
Empregado Departamento Contabilidade 
Financeiro 
Jurídico 
Pessoal
Entidade e relacionamento
Armazenamento de informações sobre funcionários 
e os departamentos onde eles trabalham
Esmeralda
Peter
Megamente Trab
alha
 para
Trab
alha
 para
Trabalha par
a
Pesquisa e desenvolvimento
Os relacionamentos podem ser de tipos diferentes - 
um para um, um para muitos e muitos para muitos
Entidade e relacionamento
Esmeralda
Peter
está localizado em
está localizado em
Compartimento 1
Compartimento 2
O relacionamento “está localizado em” é de um para um. O 
relacionamento “trabalha para” é de muitos para um
Os relacionamentos e os tipos de 
relacionamentos dependem do 
ambiente e das regras de negócio 
que está sendo modelado
Tabelas
• Conjunto de objetos do mundo real sobre os quais 
se deseja manter informações no banco de dados
idFuncionario nome função idDepartamento
7513 Peter Pan Programador 128
9842 Esmeralda X DBA 42
6651 Megamente Programador 128
9006 Candy Burnet Administrador Sys 128
Funcionários
coluna ou atributo
linhas, registros ou tuplas
Chaves
coluna ou conjunto de coluna que identifica 
uma única linha dentro da tabela
representam ligações entre tabelas
Dependência funcional
A —> B
se em uma determinada tabela houver uma dependência 
funcional entre a coluna A e a coluna B, então o valor da 
coluna A determinará o valor da coluna B
Exemplo: na tabela funcionários, idFuncionario 
determina o nome (e todos os outros atributos da tabela)
Esquemas
funcionario(idFuncionario, nome, funcao, idDepartamento)
chave primária chave estrangeira
idDepartamento
Princípios do Projeto de Banco de dados
Quais informações precisam ser 
armazenadas?
Que perguntas faremos ao banco 
de dados (as chamadas consultas)
Regra do negócio 
(modelagem)
Entidades 
(tabelas)
Relacionamentos 
(vínculos)
Redundância versus perda de dados
Funcionários e departamento em uma única tabela
idFuncionario nome função idDepartamento nomeDepartamento
7513 Peter Pan Programador 128 Pesquisa
9842 Esmeralda X DBA 42 Finanças
6651 Megamente Programador 128 Pesquisa
9006 Candy Administrador Sys 128 Pesquisa
FuncionarioDepartamento
funcionarioDepartamento(idFuncionário, nome, funcao, idDepartamento, nomeDepartamento)
redundância
Redundância versus perda de dados
idFuncionario nome função idDepartamento nomeDepartamento
7513 Peter Pan Programador 128 Pesquisa
9842 Esmeralda X DBA 42 Finanças
6651 Megamente Programador 128 Pesquisa
9006 Candy Administrador Sys 128 Pesquisa
FuncionarioDepartamento
funcionario(idFuncionário, nome, funcao, idDepartamento)
departamento(idDepartamento, nomeDepartamento)
Funcionario Departamento
idDepartamento
idFuncionario
idDepartamento
Anomalias
Anomalias de inserção
Anomalias de eliminação
Anomalias de atualização
Valores nulos
Esquemas de tabelas com colunas com 
grandes quantidades de atributos vazios
Funcionários
Qualificação especial
campos vazios
Solução: adição de uma nova tabela, armazenado o id dos funcionários e a qualificação
1
99100 funcionários
Atividade 2
Normalização
Primeira Forma Normal
Segunda Forma Normal
Terceira Forma Normal
Forma Normal de Boyce-Codd
Normalização
Processo utilizado para remover eventuais 
falhas em um projeto de banco de dados
Conjunto de regras que descrevem o que 
se deve fazer nas estruturas das tabelas
Consiste em dividir as tabelas em tabelas 
menores (melhor utilização dos recursos)
Primeira Forma Normal - 1NF
Estabelece que cada valor do atributo ou da 
coluna tem que ser atômico (valor único)
Funcionário
idFuncionario nome função idDepartamento skills
7513 Peter Pan Programador 128 C, C#, Java
9842 Esmeralda X DBA 42 DB2
6651 Megamente Programador 128 VB, Java
9006 Candy Administrador Sys 128 Win, Linux
Esquema não normalizado na primeira forma normal, 
porque contém conjuntos de valores na coluna skill
Primeira Forma Normal - 1NF
Funcionário
idFuncionario nome função idDepartamento skills
7513 Peter Pan Programador 128 C
7513 Peter Pan Programador 128 C#
7513 Peter Pan Programador 128 Java
9842 Esmeralda X DBA 42 DB2
6651 Megamente Programador 128 VB
6651 Megamente Programador 128 Java
9006 Candy Administrador Sys 128 Win
9006 Candy Administrador Sys 128 Linux
Agora, todos os valores são atômicos
Red
und
ânc
ia
Primeira Forma Normal - 1NF
Funcionário
idFuncionario nome função idDepartamento
7513 Peter Pan Programador 128
9842 Esmeralda X DBA 42
6651 Megamente Programador 128
9006 Candy Administrador Sys 128
Skills
idFuncionario Skills
7513 C
7513 C#
7513 Java
9842 DB2
6651 Java
6651 VB
9006 Win
9006 Linux
Exercícios
clientes(idCliente, nomeCliente, enderecoCliente)
pedidos(idPedido, dataPedido, idCliente)
itensPedido(idPedido, idItem, qtdeItem)
itens(idItem, nomeItem)
Dado o esquema abaixo, analise e normalize-o na 1NF
1
Exercícios
Pessoa(cpf, nome, localização, telefone)
Dado o esquema abaixo, analise e normalize-o na 1NF
2
cpf nome localização telefone
123 Lia Rio de Janeiro, RJ, Brasil 999-555, 777-333
222 Caio Brasília, DF, Brasil 555-888, 333-222
111 Ana São Paulo, SP, Brasil 444-999
444 Beto Porto Alegre, RS, Brasil 888-222
Exercícios
Resolução2
1NF
Pessoa (cpf, nome, sexo)
Telefone (cpf, telefone)
Localização (cep, cidade, uf, pais)
Segunda Forma Normal - 2NF
Um esquema pode ser considerado 
na 2NF se estiver na 1NF e todos os 
atributos que não fazem parte da 
chave primária forem funcionalmente 
dependente da chave primária 
idFuncionario nome função idDepartamento skills
7513 Peter Pan Programador 128 C
7513 Peter Pan Programador 128 C#
7513 Peter Pan Programador 128 Java
9842 Esmeralda X DBA 42 DB2
6651 Megamente Programador 128 VB
6651 Megamente Programador 128 Java
9006 Candy Administrador Sys 128 Win
9006 Candy Administrador Sys 128 Linux
Segunda Forma Normal - 2NF
{
Segunda Forma Normal?
Qual é a chave primária desta tabela?
Uma chave primária tem que 
identificar com exclusividade 
uma única linha em uma tabela
idFuncionario nome função idDepartamento skills
7513 Peter Pan Programador 128 C
7513 Peter Pan Programador 128 C#
7513 Peter Pan Programador 128 Java
9842 Esmeralda X DBA 42 DB2
6651 Megamente Programador 128 VB
6651 Megamente Programador 128 Java
9006 Candy Administrador Sys 128 Win
9006 Candy Administrador Sys 128 Linux
idFuncionario, skill —> nome, função, idDepartamento
Funcionario(idFuncionario, nome, função, idDepartamento, skill)
idFuncionario —> nome, função, idDepartamento)
Dependência Funcional
Como podemos colocá-la 
na segunda forma normal?
Precisamos decompor a tabela em tabelas nas 
quais todos os atributos que não compõem a 
chave sejam totalmente e funcionamento 
dependente da chave
funcionário(idFuncionario, nome, skill, idDepartamento 
funcionárioFunção(idFuncionario, skill)
Está na primeira forma normal porque os 
valores são todos atômicos
Está na segunda forma normal porque cada atributo 
que não compõe a chave primária, agora é dependendo 
funcionamento de todas as partes da chave
Terceira Forma Normal - 3NF
Um esquema pode ser 
considerado na 3NF se estiver na 
2NF e todasas dependências 
transitivas devem ser retiradas 
Terceira Forma Normal - 3NF
FuncionarioDepto(funcID, funcNome, 
deptoID, deptoNome)
funcID —> funcNome, deptoID, deptoNome
deptoID —> deptoName
Dependência Funcional
funcID —> deptoNome
funcID —> deptoID
deptoID —> deptoNome
deptoID não é chave
Esta relação significa que a 
dependência funcional 
funcID —> deptoNome é uma 
dependência transitiva
Existe uma etapa intermediária 
deptoID —> deptoNome 
Terceira Forma Normal - 3NF
Funcionario(funcID, funcNome, deptoID, 
deptoNome)
Depto(deptoID, deptoNome)
superchave
Dependência funcional 
fará parte de qualquer 
chave desta tabela
{
Conclusão
A normalização é para a chave, a 
chave inteira e nada além da chave 
A 2NF nos diz que os atributos devem 
depender da chave inteira 
A 3NF nos diz que os atributos não tem 
que depender de nada, exceto da chave
Forma Normal de Boyce-Codd
Também conhecida como BCNF, é 
uma variação da 3NF
Para estar na BCNF, ela tem que 
estar na 3NF e todas as 
dependências funcionais tem que ter 
uma superchave do lado esquerdo
Exercícios
Orders(costumerID, costumerName, costumerAddress, 
orderID, orderDate, itemID, itemName, itemQuantity)
Normalize o seguinte esquema até a 3NF
3
Exercícios
clientes(idCliente, nomeCliente, enderecoCliente)
pedidos(idPedido, dataPedido, idCliente)
itensPedido(idPedido, idItem, qtdeItem)
itens(idItem, nomeItem)
Verifique se a correspondência abaixo possui as devidas 
regras de normalização
4

Continue navegando