Conceitos

Mapeamento MER - MR

Conheça o processo para transformar um modelo Entidade-Relacionamento em modelo Relacional

1. Migrando uma entidade regular E para uma relação R

Se a entidade EE do Modelo Entidade-Relacionamento for um tipo de entidade forte, o processo é bastante simples: criamos um relação RR contendo todos os atributos de EE.

Se EE tiver vários atributos chave (ou seja, vários atributos atômicos classificados como atributo chave), chamaremos esses atributos de "chaves candidatas". Isso ocorre porque escolheremos um deles como chave primária de RR. Se EE tiver um atributo chave composto, ou seja, formado por vários atributos atômicos, esse conjunto de atributos formará a chave primária de RR.

Note que, no Modelo Entidade-Relacionamento, uma entidade pode ter vários atributos chave. Agora, no Modelo Relacional, escolhemos apenas uma chave primária (mesmo que ela seja composta). Elmasri e Navathe (2011) mencionam que, mesmo com o processo de escolha, informações sobre as demais chaves tendem a ser mantidas para fins de indexação.

Vejamos um exemplo:

O tipo de entidade forte ALUNO possui os seguintes atributos: cpf, rga, nome e email. Desses, cpf e rga são atributos-chave no Modelo Entidade-Relacionamento. Escolheremos um deles para ser a chave primária da relação ALUNO, criada a partir do tipo de entidade de mesmo nome.

cpf (PK 🔑)rganomeemail
1232022101010Fulano da Silvafulano@ufmt.br
4562022101011Beltrano Oliveirabeltrano@ufmt.br
7892022101012Cicrano Alvescicrano@ufmt.br

2. Mapeando uma entidade fraca

Sendo FF um tipo de entidade fraca e EE a sua entidade proprietária, executamos a seguinte operação: criamos uma relação RR, que representará o tipo de entidade EE. Em seguida, criamos uma outra relação, SS, que representará o tipo de entidade fraca FF.

SS deve incorporar, como chave estrangeira, a chave primária de RR. A chave primária de SS, por sua vez, será formada pela combinação entre a chave estrangeira (de RR) e a chave parcial de SS).

Vejamos um exemplo:

Considere um diagrama entidade-relacionamento com dois tipos de entidade: FUNCIONÁRIO (forte) e DEPENDENTE (fraca). Há um relacionamento de identificação entre FUNCIONÁRIO e DEPENDENTE, que envolve uma participação total de DEPENDENTE.

3. Mapeando relacionamentos 1:1

O mapeamento de relacionamentos com cardinalidade 1:11:1 tem três possibilidades.

  • Chave estrangeira: se o relacionamento envolve duas relações, RR e SS, inclua em RR a chave primária de SS. Para o papel de RR, priorize a relação que, enquanto tipo de entidade, possuía participação total no relacionamento. Se o relacionamento possuía atributos, estes devem ser transferidos para RR. Além disso, a chave estrangeira em RR deve possuir restrição de unicidade (UNIQUE), de modo a garantir a cardinalidade 1:1 e impedir ocorrências múltiplas associadas ao mesmo elemento de SS.
  • Mesclagem: quando o relacionamento entre dois tipos de entidade tiver cardinalidade 1:1 e participação total de ambos os tipos, cria-se apenas uma relação RR, que contém os atributos de ambos os tipos de entidade.
  • Relação de referência cruzada: neste caso, criamos uma relação TT para representar os relacionamentos entre RR e SS. TT é chamada de relação de relacionamento (ou tabela de pesquisa). A relação TT terá chaves estrangeiras para RR e SS. A chave primária de TT será uma das chaves estrangeiras. A outra chave estrangeira será usada como chave única, para evitar repetições do par.

4. Relacionamento 1:N

Aqui o processo é bastante simples: se um relacionamento envolve os tipos de entidade EE e FF, com cardinalidade respectiva de 1:N1:N, e esses tipos de entidade são mapeados para relações RR e SS, então SS deve conter uma chave estrangeira de RR. Em outras palavras: o lado NN sempre recebe a chave do lado 11.

Nos casos em que a participação da entidade FF (que representa o lado NN) é parcial, o campo da chave estrangeira pode receber o valor nulo. Para minimizarmos a existência de valores nulos em uma relação, podemos usar outra estratégia: criar uma relação TT, que contém chaves estrangeiras para RR e SS. A chave primária de TT deve ser composta pela chave de SS, ou seja, o lado NN. Essa estrutura garante que cada elemento do lado NN se relacione com no máximo um do lado 11, preservando a cardinalidade 1:N1:N. Note, porém, que isso implicará maior complexidade na recuperação dos dados.

5. Relacionamento N:M

Aqui, inevitavelmente, precisamos criar uma relação de relacionamento TT, que terá chaves estrangeiras para RR e SS. Os atributos do relacionamento também serão incorporados à TT. A chave-primária será uma chave composta pelas chaves estrangeiras de RR e SS.

6. Atributos multivalorados.

Se uma relação RR possuir atributos multivalorados, deve-se criar uma relação SS para cada atributo, cada uma contendo os valores possíveis para o atributo equivalente. Na relação SS, deve ser inserida uma chave estrangeira para RR. A chave primária de SS será composta pelo atributo que representa o conteúdo do atributo multivalorado mais a chave estrangeira de RR.

7. Mapeamento de relacionamentos n-ários

Se um relacionamento envolver mais de duas entidades, cria-se uma relação RR com chaves estrangeiras para cada uma das relações que participam desse relacionamento. Em geral, a chave primária de RR será composta, formada pelas chaves estrangeiras das demais relações.

Caso a cardinalidade de alguma relação (SS) no relacionamento seja 1, a chave estrangeira de SS deixa de integrar a chave primária de RR.