Projeto de BD Relacional
Roteiro
Algoritmo de Mapeamento de ER para
Relacional
7 passos para conversão dos construtores
básicos do modelo ER em relações
2 passos para conversão dos construtores
Algoritmo de Mapeamento
Passo 1: Mapeamento de Entidades
Regulares
Para cada tipo entidade regular (forte) E
de um esquema ER, criar uma relação R
que inclua todos os atributos simples de E.
Incluir somente os componentes simples
Algoritmo de Mapeamento
Passo 1: Exemplo:
Candidato
Inscrição Nome RG
Número UF Expedidor
Entidade
Relação
Algoritmo de Mapeamento
Passo 2: Mapeamento de Entidades Fracas
Para cada tipo entidade fraca W de um esquema ER, que
contém sua respectiva entidade forte, criar uma relação R
que inclua todos os atributos simples (ou componentes dos
atributos compostos) de W.
Inserir como chave estrangeira de R os atributos que são
chaves primárias da(s) relação(ões) que corresponde(m) ao
mapeamento do tipo entidade forte correspondente.
A chave primária de R é a combinação da(s) chave(s)
Algoritmo de Mapeamento
Passo 2: Exemplo:
Relações
Curso (Código: Inteiro, Nome: string[50])
Disciplina (Curso: Inteiro FK(Curso), Sigla: string[6], Nome: string[50])
Curso
1 possui NDisciplina
Código
Nome
Sigla
Algoritmo de Mapeamento
Passo 3: Mapeamento dos Relacionamentos
Binários 1:1
Para cada relacionamento R binário 1:1 em um
esquema ER, identificar as relações S e T que
correspondam aos tipos entidades participantes
de R.
Três escolhas possíveis:
1.
Chave Estrangeira
2.
Relacionamento Incorporado
Algoritmo de Mapeamento
Passo 3: Exemplo:
Escolha 1:
Curso (Código: Inteiro, Nome: string[50] , Coordenador: Inteiro FK(Coordenador))
Coordenador (Matrícula: Inteiro, Nome: string[50])
Curso
1 possui 1Coordenador
Código
Nome
Matrícula
Nome
Curso (Código: Inteiro, Nome: string[50])
Coordenador (Matrícula: Inteiro, Nome: string[50], Curso: Inteiro not null FK(Curso))
OU
Algoritmo de Mapeamento
Passo 3: Exemplo:
Escolha 2:
Curso (Código: Inteiro, Nome: string[50] , Coordenador_Matrícula: Inteiro, Coordenador_Nome: string[50])
Curso
1 possui 1Coordenador
Código
Nome
Matrícula
Nome
Coordenador (Matrícula: Inteiro, Nome: string[50], Curso_Código: Inteiro, Curso_Nome: string[50])
Algoritmo de Mapeamento
Passo 3: Exemplo:
Escolha 3:
Curso (Código: Inteiro, Nome: string[50])
Coordenador (Matrícula: Inteiro, Nome: string[50])
Coordenador_Curso (Coordenador: inteiro FK1(Coordenador), Curso: inteiro FK2(Curso))
Curso
1 possui 1Coordenador
Código
Nome
Matrícula
Algoritmo de Mapeamento
Passo 4: Mapeamento dos Relacionamentos
Binários 1:N
Para cada relacionamento R binário 1:N regular
em um esquema ER, identificar a relação S que
representa a entidade participante do lado “N”
no relacionamento.
Inserir em S, como chave estrangeira, a chave
primária da relação T, que representa a entidade
Algoritmo de Mapeamento
Passo 4: Exemplo:
Relações
Professor (Matrícula: Inteiro, Nome: string[50])
Disciplina (Sigla: Inteiro, Nome: string[50], professor: inteiro FK(Professor))
Professor
1 ministra NDisciplina
Matrícula
Nome
Sigla
Algoritmo de Mapeamento
Passo 5: Mapeamento dos Relacionamentos
Binários N:M
Para cada relacionamento R binário N:M, criar
uma nova relação S para representar o
relacionamento R.
Inserir em S, como chave estrangeira, as chaves
primárias das relações participantes do
relacionamento. A combinação delas formará a
chave primária de S.
Também incluir em S os atributos simples (ou
Algoritmo de Mapeamento
Passo 5: Exemplo:
Relações
Professor (Matrícula: Inteiro, Nome: string[50])
Curso (Código: Inteiro, Nome: string[50])
Professor_Curso (Professor: inteiro FK1(Professor), Curso: inteiro FK2(Curso))
Curso
N possui NProfessor
Código
Nome
Matrícula
Algoritmo de Mapeamento
Passo 6: Mapeamento de Atributos
Multivalorados
Para cada atributo multivalorado A, criar uma
nova relação R, que deverá conter um atributo
correspondente à A, mais a chave primária K -
como chave estrangeira em R
–
da relação que
representa a entidade ou relacionamento que
tem A como atributo.
A chave primária de R é formada pela
Algoritmo de Mapeamento
Passo 6: Exemplo:
Relações
Aluno (Matrícula: Inteiro, Nome: string[50])
Aluno_Telefones (Matrícula: Inteiro FK(Aluno), Telefone: string[20])
Aluno
Matrícula
Nome
Algoritmo de Mapeamento
Passo 7: Mapeamento dos Relacionamentos N-ários
Para cada relacionamento N-ário R, em que n > 2, criar uma
nova relação S para representar R.
Incluir como chave estrangeira de S as chaves primárias das
relações que representam as entidades participantes do
relacionamento.
Incluir qualquer atributo simples (ou componentes simples de
atributos compostos) do relacionamento N-ário em S.
A chave primária de S é formada, normalmente, pela
combinação de todas as chaves estrangeiras que fazem
referência às relações representantes das entidades envolvidas
no relacionamento.
Se qualquer entidade possuir grau de participação 1 no
Algoritmo de Mapeamento
Passo 7: Exemplo:
Relações
Aluno (Matrícula: Inteiro, Nome: string[50])
Curso (Código: Inteiro, Nome: string[50])
Disciplina (Sigla: inteiro, Nome: string[50])
Matriculados (Aluno: Inteiro FK1(Aluno), Disciplina: Inteiro FK2(Disciplina), Curso: Inteiro FK3(Curso))
Curso
1 Matriculado NAluno
Código
Nome
Matrícula
Nome
Disciplina
N
Sigla
Algoritmo de Mapeamento
Passo 8: Mapeamento da Especialização ou
Generalização
Sejam:
{S
1, S
2, …, S
n} as classes especializadas
C a classe generalizada
{k, a
1, a
2, …, a
n} os atributos de C e k sua chave
primária
Há quatro opções (duas de relações-múltiplas e
Algoritmo de Mapeamento
Passo 8: Primeira Opção (Relações
Múltiplas
–
Superclasse e Subclasse)
Criar uma relação L para C com os todos
os seus atributos e chave.
Criar uma relação L
i
para cada subclasse
S
i
, 1
≤i≤n, com todos os atributos de
cada uma das subclasses mais o atributo
chave de C, que será também chave
Algoritmo de Mapeamento
Passo 8: Exemplo utilizando a primeira
opção
Relações
Professor (Matrícula: Inteiro, Nome: string[50])
Professor_Concursado (Matrícula: Inteiro FK(Professor), Carga: Inteiro, IniContrato: data)
Professor_Temporário (Matrícula: Inteiro FK(Professor), FimContrato: data)
Professor
Matrícula
Nome
Professor
Concursado
Carga
IniContrato
Professor
Temporário
FimContratoAlgoritmo de Mapeamento
Passo 8: Segunda Opção (Relações
Múltiplas
–
Somente relações de
Subclasses)
Criar uma relação L
i
para cada subclasse S
i
,
1
≤i≤n, com todos os atributos de cada uma das
subclasses mais os atributos da superclasse C,
incluindo sua chave primária, que será também
chave primária de cada relação L
i
.
Funciona somente para especializações cujas
subclasses são totais (toda entidade da
Algoritmo de Mapeamento
Passo 8: Exemplo utilizando a segunda
opção
Relações
Professor_Concursado (Matrícula: Inteiro, Nome: string[50], Carga: Inteiro, IniContrato: data)
Professor_Temporário (Matrícula: Inteiro, Nome: string[50], FimContrato: data)
Professor
Matrícula
Nome
Professor
Concursado
Carga
IniContrato
Professor
Temporário
FimContratoAlgoritmo de Mapeamento
Passo 8: Terceira Opção (Relação Única
com Atributo “Tipo”)
Criar uma relação L com todos os atributos da
superclasse C, mais os atributos de cada uma
das subclasses S
i
, 1
≤i≤n, mais um atributo
“Tipo”, discriminativo, que indica a subclasse à
qual cada tupla pertence (se pertencer à
alguma).
A chave primária de L é composta pela chave
primária de C.
Funciona para especializações cujas subclasses
Algoritmo de Mapeamento
Passo 8: Exemplo utilizando a terceira
opção
Relação
Professor (Matrícula: Inteiro, Nome: string[50], Carga: Inteiro, IniContrato: data, FimContrato: data, Tipo: string[10])
Professor
Matrícula
Nome
Professor
Concursado
Carga
IniContrato
Professor
Temporário
FimContratoAlgoritmo de Mapeamento
Passo 8: Quarta Opção (Relação Única com
Atributos “Tipo” Múltiplos)
Criar uma relação L com todos os atributos da
superclasse C, mais os atributos de cada uma
das subclasses S
i
, 1
≤i≤n, mais um atributo
“Tipo” (booleano) para a mesma quantidade de
subclasses, discriminativo, que indica se a tupla
pertence ou não àquela subclasse.
A chave primária de L é composta pela chave
primária de C.
Funciona para especializações cujas subclasses
Algoritmo de Mapeamento
Passo 8: Exemplo utilizando a quarta
opção
Relação
Membro_Faculdade (Matrícula: Inteiro, Nome: string[50], Carga: Inteiro, IniContrato: data, Curso: string[30], professor: booleano, aluno: booleano)
Membro
Faculdade
Matrícula
Nome
Professor
Carga
IniContrato
Algoritmo de Mapeamento
Subclasses Compartilhadas (Herança
Múltipla)
Pode-se utilizar quaisquer opções do
Passo 8.
Atributo da Classe Compartilhada
Algoritmo de Mapeamento
Passo 8: Exemplo (Subclasse
Compartilhada)
Relação
Membro_Faculdade (Matrícula: Inteiro, Nome: string[50], Carga: Inteiro, IniContrato: data, Curso: string[30], professor: booleano, aluno: booleano)
Membro
Faculdade
Nome
Professor
Carga
IniContrato
Aluno
Curso MatrículaMatrícula
Algoritmo de Mapeamento
Passo 9: Mapeamento das Uniões
(Categorias)
Categoria que define superclasses que têm
chaves diferentes, costuma-se especificar um
novo atributo-chave, ou chave substituta.
A chave substituta da classe categoria é
Algoritmo de Mapeamento
Passo 9: Exemplo (Subclasse de União)
Relações
Professor (RG: Inteiro, Nome: string[50], Carga: Inteiro, IniContrato, ID_Membro_Faculdade: Inteiro FK(Membro_Faculdade))
Aluno (Matrícula: Inteiro, Curso: string[30], Nome: string[50], ID_Membro_Faculdade: Inteiro
Membro
Faculdade
Nome
Professor
Carga
IniContrato
Aluno
Curso MatrículaRG
Nome
Algoritmo de Mapeamento
Exercício: Mapear o diagrama ER do banco de dados “Faculdade” para um
diagrama Relacional
Aluno Curso
responsável possui pré-requisito 1 1 N N Sigla Nome Matrícula Nome
Algoritmo de Mapeamento
Exercício: Mapear o diagrama ER do banco de dados “Empresa” para um
diagrama Relacional
Empregado Departamento
Projeto possui Trabalha_em Faz_parte_de gerencia supervisiona supervisor supervisionado
1 1