Convers˜ao de modelo UML para o modelo

Transcrição

Convers˜ao de modelo UML para o modelo
Conversão de modelo UML para o modelo relacional
Fernando Lobo
Base de Dados, Universidade do Algarve
1 / 19
Conversão do modelo UML para o modelo relacional
Diagrama de classe → Relação
I
I
I
atributos da classe → atributos da relação.
chave da classe → chave da relação.
Exemplo:
Filmes
PK nome: string
PK ano: int
duracao: int
aCores: boolean
Filmes( nome, ano, duração, aCores )
2 / 19
Conversão do modelo UML para o modelo relacional
Associação entre classes → Relação
I
I
os atributos são a união das chaves das classes envolvidas.
Nota: deve-se renomear o nome dos atributos para não haver conflito
de nomes.
Exemplo:
Actor
Filme
PK nome
PK ano
duracao
aCores
0..*
participa
0..*
PK nome
morada
sexo
data_nascimento
Participa( nomeFilme, anoFilme, nomeActor )
3 / 19
Associação entre classes → relação. Qual a chave?
3 casos:
I
muitos-muitos: a chave é a união das chaves dos conjuntos entidade
envolvidos.
I
muitos-um: a chave é a chave correspondente ao muitos.
I
um-um: escolhe-se uma das duas.
4 / 19
Exemplo: Participa (muitos-muitos)
Actor
Filme
PK nome
PK ano
duracao
aCores
0..*
participa
0..*
PK nome
morada
sexo
data_nascimento
União da chave de Actores (nomeActor) com a chave de Filmes
(nomeFilme,anoFilme).
Participa( nomeFilme, anoFilme, nomeActor )
5 / 19
Outro exemplo: Produz (muitos-um)
Filme
Estudio
PK nome
PK ano
duracao
aCores
0..*
produz
0..1
PK nome
morada
Escolhe-se apenas a chave de Filmes (nomeFilme,anoFilme).
Produz( nomeEstúdio, nomeFilme, anoFilme )
6 / 19
Simplificação
Relações oriundas de associações muitos-um podem ser eliminadas.
Mas temos que colocar a chave da classe do lado “um” como atributo
da relação do lado “muitos”.
No exemplo anterior, a relação Produz pode ser eliminada se
colocarmos a chave de Estúdios (nomeEstudio) como atributo da
relação Filmes.
Filmes( nome, ano, duração, aCores, nomeEstúdio )
Porquê?
7 / 19
Exemplo completo
Actor
0..* PK nome
pa
tici
par
Filme
morada
sexo
data_nascimento
0..*
PK nome
PK ano
duracao
aCores
0..*
pro
du
z
0..1
Estudio
PK nome
morada
8 / 19
Vai dar origem a 4 relações
Filmes( nome, ano, duração, aCores, nomeEstúdio )
Actores( nome, morada, sexo, dataNascimento )
Estúdios( nome, morada )
Participa( nomeActor, nomeFilme, anoFilme )
9 / 19
Uma possı́vel instância da BD
Filmes:
nome
Star Wars
Indiana Jones
ano
1977
1983
duração
124
130
aCores
true
true
nomeEstúdio
Fox
Universal
Actores:
nome
Harrison Ford
Carrie Fisher
Emilio Estevez
morada
789 Palm Dr, Hollywood
123 Maple St, Hollywood
32 Elm St, Beverly Hills
sexo
m
f
m
dataNascimento
1942-07-13
1956-10-21
1962-05-12
10 / 19
Uma possı́vel instância da BD (cont.)
Estúdios:
nome
Fox
Disney
Universal
morada
127 Springfield Av, Hollywood
14 Lincoln St, Los Angeles
23 Universal Studies Dr., Los Angeles
Participa:
nomeActor
Carrie Fisher
Harrison Ford
Harrison Ford
nomeFilme
Star Wars
Star Wars
Indiana Jones
anoFilme
1977
1997
1983
11 / 19
Classe associativa
Classe associativa → Relação
I
I
os atributos são a união das chaves das classes envolvidas na associação
mais os atributos da classe associativa
Exemplo:
Actor
Filme
PK nome
PK ano
duracao
aCores
0..*
0..*
PK nome
morada
sexo
data_nascimento
Participa
salario
Participa( nomeFilme, anoFilme, nomeActor, salario )
12 / 19
Associação de uma classe com ela própria
Quando temos uma associação envolvendo objectos da mesma classe
com temos de colocar a chave 2 vezes, uma para cada papel.
Exemplo:
Filme
PK nome
PK ano
duracao
aCores
0..1
original
0..*
sequencia
13 / 19
Associação de uma classe com ela própria
SequênciaDe( seqNome, seqAno, origNome, origAno )
SequênciaDe:
seqNome
Rocky II
Rocky III
...
seqAno
1982
1985
...
origNome
Rocky I
Rocky II
...
origAno
1980
1982
...
14 / 19
Classes de suporte
Estudio
PK nome
morada
Eq. Filmagem
0..*
PK
PK numero
Estúdios( nome, morada )
EquipasFilmagem( número, nomeEstúdio )
A associação entre a classe de suporte e a classe “dona”pode ser
eliminada (porque é muitos-um).
I
e não é necessário acrescentar nada a EquipasFilmagem. Porquê?
15 / 19
Sub-classes
Existem 2 alternativas:
1
Criar uma relação para cada sub-classe.
2
Combinar toda a hierarquia numa única classe e usar valores NULL
sempre que um atributo não se aplica.
16 / 19
Exemplo:
Filmes
PK nome
PK ano
duracao
aCores
Crime−Misterio
Cartoons
arma
17 / 19
Alternativa 1
Filmes( nome, ano, duração, aCores )
CrimeMistério( nome, ano, arma )
Cartoons( nome, ano )
Um filme que não seja Cartoon nem de Crime-Mistério, aparece
apenas na relação Filmes.
Um filme que seja apenas um Cartoon (ex: “Lion King”) irá aparecer
nas relações Filmes e Cartoons.
Um filme que seja simultaneamente um Cartoon e um CrimeMistério
(ex: “Who Framed Roger Rabbit”) irá aparecer em 3 relações:
Filmes, Cartoons e CrimeMistério.
18 / 19
Alternativa 2
Filmes( nome, ano, duração, aCores, arma )
“Gone with the wind” tem um NULL para o atributo arma.
“Lion King” tem um NULL para arma.
“Murder on the orient express” não tem NULLs.
NOTA:
Perdemos informação. Não sabemos se um determinado filme é um
cartoon (ou crime-mistério, ou ambos).
Solução possı́vel: colocar mais um atributo, ex: género.
19 / 19

Documentos relacionados

Dependências funcionais (DFs) • Uma DF é uma generalizaç˜ao do

Dependências funcionais (DFs) • Uma DF é uma generalizaç˜ao do • Notação de DF: X → A significa que se atribuirmos valores aos atributos de X, os valores dos atributos de A são únicos (X e A são conjuntos de atributos).

Leia mais

Normalizaç˜ao Objectivo: eliminar redundância nas relaç˜oes de

Normalizaç˜ao Objectivo: eliminar redundância nas relaç˜oes de 2. Os tuplos de S são projeções dos A0s em B 0s (colunas são eliminadas) e tuplos repetidos são eliminados.

Leia mais