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

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

Transcript of Transformação ODMG Relacional. Implementação Relacional de BDs OO Transformação Esquema Objeto...

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”)