Você está na página 1de 5

Base de Normalização

BANCO DE DADOS

Profa. Gisele Busichia Baioco


gisele@ft.unicamp.br

Mapeamento do ME-R para o MRel

Uma vez que é possível representar informações relevantes de um domínio de


aplicação por meio de modelos conceituais, como o ME-R, é importante garantir que essas
informações sejam representadas (ou mapeadas) corretamente no MRel.
Com o objetivo de conduzir o desenvolvedor no momento do mapeamento, definiu-se
uma sequência de passos para o mapeamento ME-R -> MRel. Esses passos proporcionam
uma representação de um esquema conceitual de dados em ME-R para um esquema lógico de
dados em MRel.
Uma vez que o ME-R tem quatro construtores semânticos (conjunto de entidades,
atributos de conjunto de entidades, conjunto de relacionamentos e atributos de conjunto de
relacionamentos) e o Mrel tem dois (relação e atributo), a definição dos passos para o
mapeamento deve proporcionar uma representação sem perdas significativas da semântica
capturada pelo ME-R.
Os passos para o mapeamento são os seguintes:
Passo 1: Mapear os CEs Regulares (CEs que não são fracos)
Passo 2: Mapear os CEs Fracos
Passo 3: Mapear os CRs Binários de cardinalidade 1:1
Passo 4: Mapear os CRs Binários de cardinalidade 1:N
Passo 5: Mapear os CRs Binários de cardinalidade N:M
Passo 6: Mapear os CRs de grau maior que 2 (Ternários, Quaternários, etc)
Passo 7: Mapear Atributos Multivalorados

Passo 1: Mapear os CEs Regulares


Cria-se uma Relação para o CE com todos os atributos do CE como atributos da
Relação. A chave do CE é a chave primária da Relação.
Exemplo:
NumFunc
Funcionário NomeFunc
Salário

Funcionário = {NumFunc, NomeFunc, Salário}

1
Passo 2: Mapear os CEs Fracos
Cria-se uma Relação para o CE Fraco com todos os atributos do CE, mais os atributos
que são chaves das Relações que mapeiam os CEs envolvidos pelo CR Total que torna o CE
fraco. A chave da Relação é a chave do CE Fraco concatenada com as chaves das Relações
que mapeiam os demais CEs envolvidos no CR Total que torna o CE fraco.
Exemplo:
NumFunc
NomeFunc Funcionário
Salário
1

possuir Situação de Chave Estrangeira

N
NomeDep
Nascimento Dependente
Parentesco

Mapeamento do CE regular:
Funcionário = {NumFunc, NomeFunc, Salário}

Mapeamento do CE fraco:
Dependente = {NomeDep, NumFunc, Nascimento, Parentesco}
NumFunc – chave estrangeira referenciando Funcionário

O esquema relacional final fica:


Funcionário = {NumFunc, NomeFunc, Salário}
Dependente = {NomeDep, NumFunc, Nascimento, Parentesco}
NumFunc – chave estrangeira referenciando Funcionário

Deve-se observar que NumFunc deve ser chave da relação Dependente, juntamente
com NomeDep.

Passo 3: Mapear os CRs Binários de cardinalidade 1:1


Escolhe-se um dos CEs que assume um papel no CR e inclui-se na Relação que
mapeia o CE escolhido, a chave da Relação que mapeia o outro CE que participa do CR. Os
atributos do CR, se existirem, devem também ser incluídos como atributos da Relação que
mapeia o CE escolhido.
Exemplo:
DataIni

NumFunc NumDep
NomeFunc Funcionário 1 gerenciar 1 Departamento NomeDep
Salário Localização

Mapeamento dos CEs regulares:


Funcionário = {NumFunc, NomeFunc, Salário} Chave estrangeira aplicada em qualquer um
Departamento = {NumDep, NomeDep, Localização} dos CE's, pelo fato de ser 1:1

Escolhe-se um dos CEs regulares (normalmente o CE em que serão feitas mais


buscas), nesse caso Departamento:
Aplicar naquele cujo possui
maior recorrência e eficiência
na aplicação
2
Departamento = {NumDep, NomeDep, Localização, NumFunc, DataIni}
NumFunc – chave estrangeira referenciando Funcionário

O esquema relacional final fica:


Funcionário = {NumFunc, NomeFunc, Salário}
Departamento = {NumDep, NomeDep, Localização, NumFunc, DataIni}
NumFunc – chave estrangeira referenciando Funcionário
Lado certo para inclusão da
Passo 4: Mapear os CRs Binários de cardinalidade 1:N chave estrangeira (N)
Inclui-se na Relação que mapeia o CE que assume o papel com multiplicidade N no
CR, a chave da Relação que mapeia o outro CE (papel no CR com multiplicidade 1) e os
atributos do CR, se existirem.
Exemplo:
NumFunc NumSeção (Chave estrangeira)
NomeFunc Funcionário N trabalhar 1 Seção NomeSeção
Salário Ramal

Mapeamento dos CEs regulares:


Funcionário = {NumFunc, NomeFunc, Salário}
Seção = {NumSeção, NomeSeção, Ramal}

Mapeamento do CE de papel com multiplicidade N:


Funcionário = {NumFunc, NomeFunc, Salário, NumSeção}
NumSeção – chave estrangeira referenciando Seção

O esquema relacional final fica:


Seção = {NumSeção, NomeSeção, Ramal}
Criar sempre na ordem
Funcionário = {NumFunc, NomeFunc, Salário, NumSeção} Primeiro ter a Seção mapeada, para que
NumSeção – chave estrangeira referenciando Seção depois eu utilize a chave estrangeira em outro
conjunto

Passo 5: Mapear os CRs Binários de cardinalidade N:M


Cria-se uma Relação que mapeia o CR, a qual terá como chave primária a
concatenação dos atributos que formam a chave primária das Relações que mapeiam os CEs
envolvidos no CR. Os atributos do CR, se existirem, serão os atributos da Relação.
Exemplo:
DataIni

NumFunc NumProj
NomeFunc Funcionário M participar N Projeto NomeProj
Salário Área

Mapeamento dos CEs regulares:


Funcionário = {NumFunc, NomeFunc, Salário}
Projeto = {NumProj, NomeProj, Área}

Mapeamento do CR:
Participa = {NumFunc, NumProj, DataIni}
Criado, pois não NumFunc – chave estrangeira referenciando Funcionário
pode haver NumProj – chave estrangeira referenciando Projeto
listas. Crio um CR

O esquema relacional final fica:

3
Funcionário = {NumFunc, NomeFunc, Salário}
Projeto = {NumProj, NomeProj, Área}
Participa = {NumFunc, NumProj, DataIni}
NumFunc – chave estrangeira referenciando Funcionário
NumProj – chave estrangeira referenciando Projeto

Passo 6: Mapear os CRs de grau maior que 2 (Ternários, Quaternários, etc)


Cria-se uma Relação que mapeia o CR, a qual terá como chave primária a
concatenação dos atributos que formam a chave primária das relações que mapeiam os CEs
envolvidos no CR. Os atributos do CR, se existirem, serão os atributos da Relação.
Exemplo:
NumAluno Sigla
NomeAluno Aluno M N Disciplina Descrição
matricular
AnoIngresso NroCréditos

P
CodProf
Professor NomeProf
Especialidade Terei sempre que mapear o
Relacionamento
Mapeamento dos CEs regulares:
Aluno = {NumAluno, NomeAluno, AnoIngresso}
Disciplina = {Sigla, Descrição, NroCréditos}
Professor = {CodProf, NomeProf, Especialidade}

Mapeamento do CR:
Matricula = {NumAluno, Sigla, CodProf}
NumAluno – chave estrangeira referenciando Aluno
Sigla – chave estrangeira referenciando Disciplina
CodProf – chave estrangeira referenciano Professor

O esquema relacional final fica:


Aluno = {NumAluno, NomeAluno, AnoIngresso}
Disciplina = {Sigla, Descrição, NroCréditos}
Professor = {CodProf, NomeProf, Especialidade}
Matricula = {NumAluno, Sigla, CodProf}
NumAluno – chave estrangeira referenciando Aluno
Sigla – chave estrangeira referenciando Disciplina
CodProf – chave estrangeira referenciano Professor

Passo 7: Mapear Atributos Multivalorados


Quando um CE ou CR tem atributos multivalorados, duas situações podem ocorrer:

1a. situação: Não é possível determinar a quantidade de ocorrências de valores do


atributo multivalorado. Nessa situação deve-se criar uma Relação para o atributo
multivalorado, a qual tem como chave primária a chave da Relação que mapeia o CE ou CR
que contém o atributo, concatenada ao atributo multivalorado tomado como monovalorado.

4
Exemplo:
NumAluno
Aluno (0,N)
NroServiçoMédico
Alergias
Supondo que Alergias é um atributo multivalorado do CE Aluno e que não sabe-se
previamente quantas alergias poderão ser cadastradas no máximo, então o mapeamento fica:
Não necessariamente todos os alunos vão ter a
Aluno={NumAluno, NroServiçoMédico} mesma alergia, por isso foi criado essa Relação
para o Atributo
Alergia={NumAluno, Alergia}
NumAluno – chave estrangeira referenciando Aluno

2a. situação: É possível determinar a quantidade de ocorrências de valores do atributo


multivalorado. Nessa situação deve-se criar o atributo como monovalorado na mesma Relação
a qual o atributo multivalorado está associado.
Exemplo:
Baixa quantidade de valores
NumAluno
Aluno (2,2)
NroServiçoMédico
GrauLentes
Supondo que Graulentes é um atributo multivalorado do CE Aluno e que sabe-se
previamente que existem sempre apenas dois valores de graus de lentes a serem cadastrados,
então o mapeamento fica:

Aluno={NumAluno, NroServiçoMédico, GrauLenteEsq, GrauLenteDir}

Atributo composto Esquema na realidade (melhor representação) - Simplificação

RA
Aluno
Nome
Endereço
rua
Número
CEP

Na implementação, vamos direto aos detalhes. Logo, o endereço "some"


e analisamos somente sua composição
Aluno=[RA, nome, rua, número, CEP}

Você também pode gostar