1 / 33

Transformação ODMG  Relacional

Transformação ODMG  Relacional. 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.

lucie
Download Presentation

Transformação ODMG  Relacional

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Transformação ODMG  Relacional

  2. 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

  3. 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

  4. 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 Integridade Se ID = v em Pessoa então (ID = v em Estudante)  (ID = v em Funcionário)  (ID = v em Est e Func)

  5. 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

  6. 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 NULL Se t = `Funcionário´ então Curso NULL, Ano-admissão NULL

  7. 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

  8. 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

  9. 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

  10. 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 NULL Se t = `Trabalhador´ então Gratificação NULL Se t IS NULL então HorasExtras NULL, Gratificação NULL

  11. 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)

  12. 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))

  13. 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

  14. 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)

  15. 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

  16. 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)

  17. 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 NULL Se t = `Trabalhador´ então Gratificação NULL, Período NULL, Horas NULL Se t = `Horista´ então HorasExtras NULL, Gratificação NULL

  18. 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)

  19. 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 em Trabalhador)  (ID = v em Horista))  ((ID = v em Trabalhador)  (ID = v em Gerente)   (ID = v em Horista))  ((ID = v em Horista)  (ID = v em Gerente)  (ID = v em Trabalhador))

  20. 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

  21. 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)

  22. Transformação Esquema Objeto  Esquema Relacional • Consultas em Superclasse • Nomes e endereços de todos os empregados horistas • SELECT Nome, Endereço FROM Empregado WHERE Subtipo = `Horista´ (C1)

  23. 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) As consultas são idênticas, porém C1 é melhor que C2 (Empregado na Alternativa 1 é pequena se comparada com Empregado na Alternativa 2)

  24. 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)

  25. Transformação Esquema Objeto  Esquema Relacional • Consultas em Superclasse • SELECT Empregado.Nome, Empregado.Endereço FROM Empregado, Horista WHERE Empregado.ID = Horista.ID (C3) C1 (sem junção) é melhor que C3 (com junção)

  26. Transformação Esquema Objeto  Esquema Relacional • Consultas em Subclasse • 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 SQL2

  27. Transformação Esquema Objeto  Esquema Relacional • Consultas Mistas • Usando o exemplo Empregado-Gerente-Trabalhador-Horista (Fragmentação) Listar 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 é melhor

  28. Transformação Esquema Objeto  Esquema Relacional * - Semanticamente próximas do esquema de objetos

  29. 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, ...) Classe A Classe B 1 1 Chave primária Chave estrangeira Qual é a melhor transformação?

  30. Transformação Esquema Objeto  Esquema Relacional • Associação • 1:N • Tabela_B(ID, IDA, ...) Tabela_A(ID, ...) Classe A Classe B 1 N

  31. Transformação Esquema Objeto  Esquema Relacional • Associação • M:N Tabela_A(ID, ...) Tabela_B(ID, ...) Tabela_AB(IDA, IDB, ...) Classe Associação Classe A Classe B M N

  32. Transformação Esquema Objeto  Esquema Relacional • Agregação • Usando o exemplo Catálogo-Brinquedo • Catálogo(ID, ...) Brinquedo(ID, ...) Composto_de(IDC, IDB, ...) chave estrangeira chave estrangeira

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

More Related