transformação odmg relacional. implementação relacional de bds oo transformação esquema objeto...

33
Transformação ODMG Transformação ODMG Relacional Relacional

Upload: internet

Post on 18-Apr-2015

143 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação ODMG Transformação ODMG Relacional Relacional

Transformação ODMG Transformação ODMG Relacional Relacional

Page 2: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Implementação Relacional de BDs OO

• Transformação Esquema Objeto Esquema Relacional

• Transformação Esquema Objeto Esquema Objeto-Relacional

• Camada OO no Topo de um SGBDR• Integração de uma LPOO com um SGBDR• Interoperabilidade de SGBDOO e SGBDR

Page 3: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema Relacional

• Classe de Objetos Tabela Relacional– OID Chave Primária, “Surrogate Key”– Os métodos são implementados como “stored

procedures”, ou “SQL-functions” ou “SQL-triggers” • Herança com União

– Alternativa 1: a superclasse e cada uma das subclasses são transformadas em tabelas relacionais; uma chave compartilhada ID é usada para preservar a identidade dos objetos através das tabelas

Page 4: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema Relacional

• Herança com União– Alternativa 1:

• Usando o exemplo Pessoa-Estudante-Funcionário– Pessoa(ID, Nome, Endereço)– Estudante(ID, Curso, Ano-admissão)– Funcionário(ID, Depto, Sala)

» Regra de IntegridadeSe ID = v em Pessoa então

(ID = v em Estudante) (ID = v em Funcionário) (ID = v em Est e Func)

Page 5: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema Relacional

• Herança com União– Alternativa 2: tudo em uma tabela;

um atributo `Tipo´ não-nulo é incluído, para indicar o tipo do objeto/registro; os demais atributos, salvo ID, podem ser nulos

Page 6: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema Relacional

• Herança com União– Alternativa 2:

• Usando o exemplo Pessoa-Estudante-Funcionário– Pessoa(ID, Tipo, Nome, Endereço, Curso, Ano-

admissão, Depto, Sala)» Regras de Integridade

Tipo {t | t = `Estudante´ t = `Funcionário´ t = `Estudante-Funcionário´}

Se t = `Estudante´ então Depto NULL, Sala NULLSe t = `Funcionário´ então Curso NULL,

Ano-admissão NULL

Page 7: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema Relacional

• Herança com Exclusão Mútua– Alternativa 1: Um novo atributo

`Subtipo´, podendo ser NULL, é acrescentado na tabela-superclasse; este atributo deve garantir que todo registro em uma tabela-subclasse é disjunto

Page 8: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema Relacional

• Herança com Exclusão Mútua• Usando o exemplo Empregado-Gerente-Trabalhador

– Empregado(ID, Subtipo, Nome, Endereço, Salário)– Gerente(ID, Gratificação)– Trabalhador(ID, HorasExtras)

» Regras de Integridade Subtipo {t | t = `Gerente´ t = `Trabalhador´ t IS NULL} ID em Empregado com t = `Gerente´ então ID em Gerente e ID em Trabalhador ID em Empregado com t = `Trabalhador´ então ID em Trabalhador e ID em Gerente ID em Empregado com t IS NULL então ID em Gerente e ID em Trabalhador

Page 9: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema Relacional

• Herança com Exclusão Mútua– Alternativa 2: tudo em uma tabela;

um atributo `Tipo´, podendo ser NULL, é incluído, para indicar o tipo do objeto/registro; os demais atributos, salvo ID, podem ser nulos

Page 10: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema Relacional

• Herança com Exclusão Mútua• Usando o exemplo Empregado-Gerente-

Trabalhador– Empregado(ID, Tipo, Nome, Endereço, Salário,

Gratificação, HorasExtras)» Regras de Integridade

Tipo {t | t = `Gerente´ t = `Trabalhador´ t IS NULL}Se t = `Gerente´ então HorasExtras NULLSe t = `Trabalhador´ então Gratificação NULLSe t IS NULL então HorasExtras NULL, Gratificação NULL

Page 11: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema Relacional• Herança com Exclusão Mútua

– Alternativa 3: sem o atributo Subtipo na superclasse;• Usando o exemplo Empregado-Gerente-

Trabalhador– Empregado(ID, Nome, Endereço, Salário)– Gerente(ID, Gratificação)– Trabalhador(ID, HorasExtras)

Page 12: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional

• Herança com Exclusão Mútua» Regras de Integridade

Se ID = v em Empregado então((ID = v em Gerente)

(ID = v em Trabalhador)) ((ID = v em Trabalhador) (ID = v

em Gerente)) ( (ID = v em Gerente) (ID = v

em Trabalhador))

Page 13: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Herança com Fragmentação

– Alternativa 1: Um novo atributo `Subtipo´, não podendo ser NULL, é acrescentado na tabela-superclasse; este atributo deve garantir que todo registro em uma tabela-subclasse é disjunto

Page 14: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Herança com Fragmentação

– Alternativa 1:• Usando o exemplo Empregado-Gerente-Trabalhador-

Horista– Empregado(ID, Subtipo, Nome, Endereço, Salário)– Gerente(ID, Gratificação)– Trabalhador(ID, HorasExtras)– Horista(ID, Período, Horas)

Page 15: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Herança com Fragmentação

– Alternativa 1:» Regras de Integridade

Subtipo {t | t = `Gerente´ t = `Trabalhador´ t = `Horista´ } ID em Empregado com t = `Gerente´ então ID em Gerente e ID em Trabalhador e ID em Horista ID em Empregado com t = `Trabalhador´ então ID em Trabalhador e ID em Gerente e ID em Horista ID em Empregado com t = `Horista´ então ID em Horista e ID em Gerente e ID em Trabalhador

Page 16: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Herança com Fragmentação

– Alternativa 2: tudo em uma tabela; um atributo `Tipo´ não-nulo é incluído, para indicar o tipo do objeto/registro; os demais atributos, salvo ID, podem ser nulos

• Usando o exemplo Empregado-Gerente-Trabalhador-Horista– Empregado(ID, Tipo, Nome, Endereço, Salário, Gratificação,

HorasExtras, Período, Horas)

Page 17: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Herança com Fragmentação

– Alternativa 2:» Regras de Integridade

Tipo {t | t = `Gerente´ t = `Trabalhador´ t =`Horista´}Se t = `Gerente´ então HorasExtras NULL, Período NULL, Horas NULLSe t = `Trabalhador´ então Gratificação NULL, Período NULL, Horas NULLSe t = `Horista´ então HorasExtras NULL, Gratificação NULL

Page 18: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Herança com Fragmentação

– Alternativa 3: sem o atributo Subtipo na superclasse;• Usando o exemplo Empregado-Gerente-Trabalhador-Horista

– Empregado(ID, Nome, Endereço, Salário)– Gerente(ID, Gratificação)– Trabalhador(ID, HorasExtras)– Horista(ID, Período, Horas)

Page 19: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Herança com Fragmentação

– Alternativa 3: sem o atributo Subtipo na superclasse;» Regras de Integridade

Se ID = v em Empregado então((ID = v em Gerente) (ID = v emTrabalhador) (ID = v emHorista))

((ID = v em Trabalhador) (ID = v em Gerente) (ID = v em Horista))

((ID = v em Horista) (ID = v emGerente) (ID = v em Trabalhador))

Page 20: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Para Cada Tipo de Herança, Qual é a Melhor Implementação Relacional?

– Prova-se que, para consultas em superclasse e em subclasse, a Alternativa 1 é pelo menos tão boa quanto as outras, em todos os casos

– A prova é baseada em um Modelo de Custos e em Categorias de Consulta• O Modelo de Custos leva em conta o tamanho dos registros de uma tabela e o seu

número de registros• Consultas sobre estruturas de herança podem ser assim categorizadas

– Consultas em Superclasse: acessam atributos em superclasse– Consultas em Subclasse: acessam atributos em subclasse– Consultas Mistas: acessam atributos ao longo de estruturas de herança

Page 21: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Consultas em Superclasse

– Usando o exemplo Empregado-Gerente-Trabalhador-Horista (Fragmentação), Alternativa 1

– Empregado(ID, Subtipo, Nome, Endereço, Salário)

– Gerente(ID, Gratificação)– Trabalhador(ID, HorasExtras)– Horista(ID, Período, Horas)

Page 22: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Consultas em Superclasse

– Nomes e endereços de todos os Nomes e endereços de todos os empregados horistasempregados horistas• SELECT Nome, Endereço FROM Empregado WHERE Subtipo = `Horista´ (C1)(C1)

Page 23: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Consultas em Superclasse

– Usando o exemplo Empregado-Gerente-Trabalhador-Horista (Fragmentação), Alternativa 2

– Empregado(ID, Tipo, Nome, Endereço, Salário, Gratificação, HorasExtras, Período, Horas)

» SELECT Nome, Endereço FROM Empregado WHERE Tipo = `Horista´ (C2)(C2)

As consultas são idênticas, porém C1 é melhor que As consultas são idênticas, porém C1 é melhor que C2 (Empregado na Alternativa 1 é pequena se C2 (Empregado na Alternativa 1 é pequena se comparada com Empregado na Alternativa 2)comparada com Empregado na Alternativa 2)

Page 24: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Consultas em Superclasse

– Usando o exemplo Empregado-Gerente-Trabalhador-Horista (Fragmentação), Alternativa 3

– Empregado(ID, Nome, Endereço, Salário)– Gerente(ID, Gratificação)– Trabalhador(ID, HorasExtras)– Horista(ID, Período, Horas)

Page 25: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Consultas em Superclasse

– SELECT Empregado.Nome, Empregado.Endereço

FROM Empregado, Horista WHERE Empregado.ID = Horista.ID (C3)(C3)

C1 (sem junção) é melhor que C3 (com C1 (sem junção) é melhor que C3 (com junção)junção)

Page 26: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Consultas em Subclasse

– Listar as horas extras de todos os trabalhadores Listar as horas extras de todos os trabalhadores • SQL1 = SQL3

SELECT HorasExtras FROM Trabalhador

• SQL2 SELECT HorasExtras FROM Empregado WHERE Tipo = `Trabalhador´

SQL1 e SQL3 são melhores que SQL2SQL1 e SQL3 são melhores que SQL2

Page 27: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Consultas Mistas

– Usando o exemplo Empregado-Gerente-Trabalhador-Horista (Fragmentação)

Listar os detalhes de todos os gerentesListar os detalhes de todos os gerentes• SQL1 = SQL3

SELECT Nome, Endereço, Salário, Gratificação FROM Empregado, Gerente WHERE Empregado.ID = Gerente.ID

• SQL2 SELECT Nome, Endereço, Salário, Gratificação FROM Empregado WHERE Tipo = `Gerente´

SQL2 é melhorSQL2 é melhor

Page 28: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional

Superclasse

Subclasse

Mista

Subtipo*

Única Tabela

Sem subtipo*

* - Semanticamente próximas do esquema de objetos

Page 29: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional

• Associação– 1:1

– Tabela_B(ID, IDA, ...) Tabela_A(ID, ...)

– Tabela_A(ID, IDB, ...) Tabela_B(ID, ...)

– Tabela_AB(ID, ...)

Qual é a melhor transformação?Qual é a melhor transformação?

Chave primária Chave estrangeira

Classe A Classe B1 1

Page 30: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Associação

– 1:N

• Tabela_B(ID, IDA, ...) Tabela_A(ID, ...)

Classe A Classe B1 N

Page 31: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema Relacional

• Associação– M:N

Tabela_A(ID, ...) Tabela_B(ID, ...) Tabela_AB(IDA, IDB, ...)

Classe A Classe BM N

ClasseAssociação

Page 32: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional

• Agregação– Usando o exemplo Catálogo-

Brinquedo • Catálogo(ID, ...) Brinquedo(ID, ...) Composto_de(IDC, IDB, ...)

chaveestrangeira

chaveestrangeira

Page 33: Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto Esquema Relacional Transformação Esquema Objeto Esquema

Transformação Esquema Objeto Esquema

Relacional• Composição

– Usando o exemplo Universidade-Departamento • Universidade(ID, ...) Departamento(ID, IDU, ...)

– Regras de Integridade» Se Universidade.ID = v for removida então Departamento.IDU = v removido

(“DELETE CASCADE”)