Você está na página 1de 59

Mapeamento

do Modelo Conceitual
(MER) para o Modelo
Lógico Relacional

Profa. Socorro Vânia Alves


Modelo Entidade Relacionamento x Modelo
Relacional
◼ Dizemos que o MER é um modelo do nível conceitual, pois possui
um forte poder semântico, capaz de capturar conceitos do mundo
real com um mínimo de perdas semânticas, facilitando o seu
entendimento.

◼ O Modelo entidade relacionamento proposto por Peter Chen


pode ser melhor compreendido por uma teoria chamada de “A lei
do Mundo”, teoria essa, que conceitua que o mundo está cheio
de coisas que possuem características próprias e que se
relacionam entre si.
Modelo Relacional
◼ O modelo relacional é, por outro lado, um modelo do
nível lógico porque é utilizado para representação em
computador de conceitos do mundo real.
◼ Edgar Codd propôs o modelo relacional de sistemas
de bancos de dados na década de 70.
◼ Teve sua grande aceitação comercial a partir de
meados da década de 1980.
Modelo Relacional
◼ Um esquema relacional pode ser facilmente derivado
de um esquema conceitual desenvolvido usando o
modelo E-R.
◼ O Modelo Relacional representa DADOS e
RELACIONAMENTOS por um conjunto de Tabelas.
◼ O modelo relacional utiliza o conceito de relações ou
tabelas no lugar de arquivos.
◼ As colunas de uma tabela são chamadas de
atributos/campos e suas linhas de tuplas/registros.

◼ Veja o exemplo de modelagem E-R a seguir.


Modelo Relacional
Conceitual

Modelo Relacional (Modelo Lógico)

1ª forma de representar o
esquema lógico relacional

2ª forma de representar o
esquema lógico relacional
Modelo Relacional
Conceitual

Cliente Possui Conta


(1,1) (1,N)
Cidade
CPF nome dataNacimento Tipo desse relacionamento: 1:N

Modelo Lógico Relacional – Tabela Cliente derivada da entidade Cliente


Modelo Relacional
◼ O objetivo de um projeto de banco de dados relacional
é gerar um esquema relacional, que nos permita
guardar informações sem redundância desnecessária,
apesar de nos permitir recuperar a informação
facilmente e de forma eficiente.
Mapeamento ER - Relacional
◼ Um esquema relacional pode ser facilmente derivado
de um esquema conceitual desenvolvido usando o
modelo E-R.

◼ Ocorre uma transformação de um modelo mais abstrato


para um modelo que contém mais detalhes de
implementação.

◼ Veja o exemplo de modelagem E-R a seguir.


Modelo Conceitual

trabalha (1,1)
(0,1) Departamento
(1,N)
(1,1)
Empregado gerencia (0,1)
(1,N)
(1,1) (1,N) (1,1)
Trabalha em controla

(0,N)
(0,N) (1,N)
supervisão
Dependente Projeto

possui
Mapeamento do MER para o Lógico Relacional
Após a aplicação das regras de mapeamento que iremos aprender nessa
aula teremos o esquema lógico correspondente para o exemplo do slide
anterior:
Mapeamento ER - Relacional
◼ Passo 1:
❑ Para cada entidade no esquema ER, criar uma
tabela que inclui todos os atributos da entidade,
exceto os multivalorados.
❑ Caso exista atributo composto, inclua todos os
atributos elementares que compõem o atributo
composto.
❑ O identificador da entidade torna-se uma chave
primária da relação correspondente.
Mapeamento ER - Relacional
◼ Passo 1:
Mapeamento ER - Relacional
◼ Passo 1:

Empregado (matricula, rua, bairro, cidade, cep)


Mapeamento ER - Relacional
◼ Passo 2:
❑ Para cada entidade fraca F no esquema E-R (conceitual) que
tenha como entidade proprietária P,
◼ criar uma tabela R e incluir todos os atributos de F como
atributos de R,
◼ incluir como chave estrangeira o(s) atributo(s) chave
primária da tabela proprietária/forte P.

❑ A chave primária da tabela (relação) R é a combinação da


chave primária de P e da chave parcial de F.
Mapeamento ER - Relacional
◼ Passo 2:
❑ Entidade Fraca

O atributo Cad_emp é uma chave estrangeira na tabela Dependente, em outras palavras,


Cad_emp é uma referência para Empregado(Cad)
Mapeamento ER - Relacional
◼ Passo 3:
❑ Para cada relacionamento R de 1:1 no esquema
ER,
◼ identificar as tabelas das entidades participando do
relacionamento R,
◼ escolher uma das tabelas e incluir como chave
estrangeira, a chave primária da outra tabela,
❑ Podemos observar a participação para escolher o lado e
inserir a chave estrangeira em um lado com participação
total
◼ incluir todos os atributos do relacionamento na tabela
escolhida.
Mapeamento ER - Relacional
◼ Passo 3:
❑ Para cada relacionamento R de 1:1 no esquema
ER

O atributo Cad_Ger é uma chave estrangeira na tabela Departamento.


Mapeamento ER - Relacional
◼ Passo 3:
❑ Para cada relacionamento R de 1:1 no esquema ER
Mapeamento ER - Relacional
◼ Passo 3:
❑ Para cada relacionamento R de 1:1 no esquema ER

O atributo IdEnfermeira na tabela ALA_HOSPITAL é uma chave estrangeira, isto é, ele é uma
referência para a tabela ENFEMEIRA
Mapeamento ER - Relacional
◼ Passo 3 (Continuação):
❑ Note que um mapeamento alternativo de um
relacionamento 1:1 é possível juntando as duas
entidades em uma única relação (tabela). Isto é
apropriado quando as entidades não participam
de outros relacionamentos.
Mapeamento ER - Relacional
◼ Passo 4:
❑ Para cada relacionamento de cardinalidade 1:N,
◼ identificar a tabela S que representa a entidade do lado
N,
◼ incluir como chave estrangeira a chave primária da
tabela que representa a entidade do lado 1,
◼ incluir os atributos do relacionamento em S (se houver).
Mapeamento ER - Relacional
◼ Passo 4:
❑ Para cada relacionamento de cardinalidade 1:N
Mapeamento ER - Relacional
◼ Passo 4:
❑ Para cada relacionamento de cardinalidade 1:N
Mapeamento ER - Relacional
◼ Passo 5:
❑ Para cada relacionamento R de cardinalidade N:N,
◼ criar uma nova tabela para representar R (o
relacionamento),
◼ incluir como chave estrangeira as chaves primárias das
tabelas que participam em R, sendo que estas chaves
combinadas formarão a chave primária da relação criada,
◼ incluir também eventuais atributos do relacionamento.
Mapeamento ER - Relacional
◼ Passo 5:
❑ Para cada relacionamento R de cardinalidade N:N

Outra nome possível para a tabela Trabalha_em poderia ser Empregado_Projeto


Empregado_Projeto (Cad_Emp, Num_Proj, Horas)
Mapeamento ER - Relacional
◼ Passo 5:
❑ Para cada relacionamento R de cardinalidade N:N
Mapeamento ER - Relacional
◼ Passo 5:
❑ Para cada relacionamento R de cardinalidade N:N
Mapeamento ER - Relacional
◼ Passo 6:
❑ Para cada atributo multivalorado A, criar uma
nova tabela R, incluindo um atributo
correspondendo a A, mais a chave primária K da
tabela que tem A como atributo.
◼ A chave primária de R é a combinação de A e K.
Mapeamento ER - Relacional
◼ Passo 6:
Mapeamento ER - Relacional
◼ Passo 6:
❑ Multivalorado
Mapeamento ER - Relacional
◼ Passo 6:
❑ A segunda forma de mapear atributos multivalorados leva em
conta o conhecimento adicional sobre o atributo que está sendo
mapeado. Em alguns casos é possível determinar a quantidade de
ocorrências de valores nos atributos.

❑ Quando isso acontece e essa quantidade é pequena, pode-se


instanciar essa quantidade de atributos como monovalorados na
mesma relação ao qual o atributo multivalorado está associado.

❑ Por exemplo, caso o atributo habilidades de Empregado assuma


apenas 2 valores no atributo, então a tabela Empregado poderia
ficar assim:

Empregado (matricula, rua, bairro, cidade, cep, habilidade1, habilidade2)


Mapeamento ER - Relacional
◼ Passo 7 (caso relacionamento ternário):
❑ Para cada relacionamento ternário R (n > 2),
◼ criar uma nova tabela S para representar R (o
relacionamento ternário)
◼ incluir como chaves estrangeiras as chaves primárias
das tabelas que representam as entidades participantes
◼ a chave primária de S é normalmente a combinação das
chaves estrangeiras das tabelas relacionadas
◼ incluir os eventuais atributos de R (do relacionamento,
se houver).
Mapeamento ER - Relacional
◼ Passo 7 (caso relacionamento ternário):
❑ Para cada relacionamento ternário R (n > 2),
Mapeamento ER - Relacional
◼ Passo 8 - Mapear Generalização/Especialização
Mapeamento ER - Relacional
◼ Passo 8 - Mapear Generalização/Especialização
❑ Existem algumas maneiras de transformar uma
generalização/especialização em tabelas:

Estratégia #1
- Criar uma única tabela para todas as especializações e incluir nela um
campo com o objetivo de indicar o tipo de cada especialização da
tabela.
No exemplo do diagrama anterior seria juntar todos os tipos de Cliente
em uma única tabela e acrescentar nesta tabela generalizada mais um
campo para identificar o tipo de Cliente a ser registrado nessa tabela mais
geral.
Mapeamento ER - Relacional
◼ Passo 8 - Mapear Generalização/Especialização
❑ Existem algumas maneiras de transformar uma
generalização/especialização em tabelas:

Estratégia #1
Mapeamento ER - Relacional
◼ Passo 8 - Mapear Generalização/Especialização
❑ Existem algumas maneiras de transformar uma
generalização/especialização em tabelas:

Estratégia #1
Mapeamento ER - Relacional
◼ Passo 8 - Mapear Generalização/Especialização
❑ Existem algumas maneiras de transformar uma generalização/especialização
em tabelas:

Estratégia #2
- Criar uma tabela individual para cada entidade especializada e definir mais um campo
identificador para cada especialização. Além disso, inserir em cada especialização uma
chave estrangeira correspondente ao atributo chave da tabela mais geral generalizada.
Mapeamento ER - Relacional
◼ Passo 8 - Mapear Generalização/Especialização
❑ Existem algumas maneiras de transformar uma generalização/especialização
em tabelas:

Estratégia #2
- Criar uma tabela para cada especialização e definir mais um campo identificador
para cada especialização. Além disso, inserir em cada especialização uma chave
estrangeira correspondente ao atributo chave da tabela generalizada.
Mapeamento ER - Relacional
◼ Passo 8 - Mapear Generalização/Especialização
❑ Existem algumas maneiras de transformar uma generalização/especialização
em tabelas:

Estratégia #2
- Criar uma tabela para cada especialização e definir mais um campo identificador para cada especialização.
Além disso, inserir em cada especialização uma chave estrangeira correspondente ao atributo chave da
tabela generalizada.
Mapeamento ER - Relacional
◼ Passo 8 - Mapear Generalização/Especialização
❑ Existem algumas maneiras de transformar uma generalização/especialização
em tabelas:
Estratégia #3
- Criar somente tabelas para cada especialização e incluir como campos os atributos
comuns e os atributos específicos nas respectivas tabelas e definir a chave primária
de cada tabela especializada.
Mapeamento ER - Relacional
◼ Passo 9 - Mapear Agregação/Entidade Associativa
❑ A transformação de agregação em tabela é bastante direta.
❑ Considere o exemplo abaixo. A tabela para o relacionamento entrevista inclui
uma coluna para cada atributo do relacionamento, uma para a chave primária de
candidato e uma para empresa. Já a tabela encaminha, que surge do
relacionamento do tipo N:N entre entrevista e cargo, tem as chaves primárias de
entrevista e a chave primária de cargo.

candidato (cod_candidato, nome)


empresa (CGC, nome_fantasia)
cargo (cod_cargo, descrição)
Mapeamento ER - Relacional
◼ Passo 9 - Mapear Agregação/Entidade Associativa
Mapeamento ER - Relacional
◼ Passo 10 – AutoRelacionamento

1 Joana 2
2 João 1
Mapeamento ER - Relacional
◼ Passo 10 – AutoRelacionamento
Mapeamento ER - Relacional
◼ Passo 10 – AutoRelacionamento
Três dicas de banco de dados
◼ Evite modelar tabelas com muitos campos
Três dicas de banco de dados
◼ Evite modelar tabelas com muitos campos
◼ A presença de muitos campos em uma mesma tabela
pode indicar um problema na modelagem do banco de
dados.
◼ É possível que atributos de diferentes entidades tenham
se misturado, tornando sua representação física menos
coesa.
◼ Para resolver essa questão podemos criar novas tabelas
e relacionamentos, de acordo com a necessidade.
Três dicas de banco de dados
◼ Evite modelar tabelas com muitos campos

Considere a tabela Cliente apresentada


na Figura 1. Perceba que concentramos
as credenciais de acesso de um usuário
e os dados pessoais de um cliente em
um mesmo local.
Três dicas de banco de dados
◼ Evite modelar tabelas com muitos campos

(1,1) (1,1)

Nesta segunda abordagem, separamos as informações do cliente e do usuário em


duas tabelas distintas. Com isso temos tabelas menores, mais fáceis de manter e
com o volume necessário de dados, o que pode impactar na performance das
consultas. Veja como ficou o modelo na Figura 2..
Três dicas de banco de dados
◼ Evite modelar tabelas com muitos campos
◼ Em alguns casos pode ser necessário desnormalizar
uma tabela para melhorar a performance da aplicação.
◼ Porém a desnormalização precisa ser uma decisão
consciente, tomada após compreender o real propósito
de cada tabela no banco de dados.
Três dicas de banco de dados
◼ Evite repetição de colunas em tabelas
Três dicas de banco de dados
◼ Evite repetição de colunas em tabelas
◼ É comum que durante a modelagem dos nossos
sistemas tenhamos uma visão inicial simplificada sobre
o escopo do problema que estamos tentando resolver.
◼ Devido a isso, algumas vezes acabamos não prevendo o
crescimento desse sistema e o modelamos de uma
forma que acaba dificultando sua expansão no futuro.
Três dicas de banco de dados
◼ Evite repetição de colunas em tabelas
◼ Esse problema ocorreu devido a uma falha
na fase de planejamento do sistema, em
que não foi prevista sua expansão.
◼ Nesse caso, por exemplo, poderíamos ter
tabelas separadas para telefones e
endereços, o que permitiria ao usuário
adicionar quantas informações
precisassem sem que alterações no
sistema fossem necessárias.
Três dicas de banco de dados
◼ Reduza o volume de tabelas muito grandes
Três dicas de banco de dados
◼ Reduza o volume de tabelas muito grandes
◼ Quando encontramos no banco de dados
tabelas com um grande volume de dados,
podemos melhorar o acesso a elas criando
mecanismos de compactação ou divisão de
dados.
◼ A divisão de dados pode ser aplicada em
uma tabela que tenha menos consultas.
Podemos mover os dados antigos para
uma tabela auxiliar, reduzindo o volume da
tabela principal e deixando as consultas a
ela mais rápidas.
Três dicas de banco de dados
◼ Reduza o volume de tabelas muito grandes
◼ Uma outra forma para movermos os dados
de tabelas muito grandes é efetuando
backups ou replicação de dados em outro
BD, podendo então limpar a tabela atual
sempre que possível. Este processo pode
ser feito em uma ou mais tabelas.
Dúvidas?

Figura: O Pensador – August Rodin.


Obrigada!!!

Você também pode gostar