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
• 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 maisNormalizaç˜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