1 / 22

ODMG - Object Database Management Group

ODMG - Object Database Management Group. Padrão para SGBDOO Consórcio de pesquisadores e fabricantes Objetivo integração e padronização de funcionalidades de BD a uma LPOO Componentes do padrão modelo de objetos linguagem de definição de dados (ODL) linguagem de consulta (OQL).

ilori
Download Presentation

ODMG - Object Database Management Group

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. ODMG - Object Database Management Group • Padrão para SGBDOO • Consórcio de pesquisadores e fabricantes • Objetivo • integração e padronização de funcionalidades de BD a uma LPOO • Componentes do padrão • modelo de objetos • linguagem de definição de dados (ODL) • linguagem de consulta (OQL)

  2. Modelo de Objetos e ODL • Modelo de objetos – conceitos • dados (objetos e literais) • tipos (interfaces, classes de objetos e literais) • herança • OID e chave • Especificados em ODL

  3. Dados • Duas formas de dados são possíveis • objetos e literais • Objetos • possuem valor e OID • são instâncias de classes • Literais • possuem valor e não possuem OID • não são instâncias de uma classe • objetos isolados • objetos componentes de outros objetos

  4. Literais • Três tipos • atômicos, estruturados e de coleção • Literais atômicos • tipos de dados básicos (predefinidos) • boolean, char, short, long, float, double, string, ... • Literais estruturados • tipos de dados estruturados (alguns predefinidos) • date, time, timestamp, ... ou definidos pelo usuário • Literais de coleção • tipos de agrupamento de dados (predefinidos) • set<t>, bag<t>, array<t>, ... • t é tipo de objeto ou valor

  5. Definição de Dados - ODL • Três formas • interface, literal ou classe • Interface • define apenas comportamento (assinatura) • não possui instâncias • Literal • define apenas propriedades • possui instâncias (sem OID) • Classe • define propriedadese comportamento • possui instâncias (com OID - objetos)

  6. Interfaces e Literais em ODL interface Pessoa { short idade(); boolean ehMenor(); void casou(Pessoa p) raises(jahEhCasado); ... }; struct Endereço { attribute string rua; attribute short número; attribute string cidade; }; set<Endereço> EndereçosAmigos; Endereço MeuEndereço;

  7. Classes em ODL class Departamento (extent Departamentos) { attribute string nome; attribute short código; attribute Endereço localização; attribute struct atendimento{ horaInício time, horaTérmino time} horário; attribute Empregado chefe; relationship set<Empregado> funcionários inverse Empregado:: depto; void adicionaEmp(short RG) raises (jahTrabalha, RGInexistente); ... };

  8. Herança • Duas formas • herança IS-A • herança extends • Herança IS-A • herança de interface • pode ser interfaceinterface ou interfaceclasse • permite herança múltipla • Herança extends • herança de propriedades • ocorre somente entre classes (classeclasse) • não permite herança múltipla

  9. Herança em ODL Classe Empregado (extent Empregados) { attribute short RG; attribute string nome; attribute enum gênero{M,F} sexo; attribute Date DN; attribute Endereço residência; attribute float salário; relationship Departamento depto inverse Departamento:: funcionários; ... }; Classe Professor (extent Professores) extends Empregado: Pessoa { attribute string titulação; attribute string areaAtuação; ... }; herança extends herança IS-A

  10. OID e Chave • OID • identificador do objeto • Chave • uma ou mais propriedades cujos valores devem ser únicos class Departamentos class Cidades ( extent todosDeptos (key (estado,nome)) key código) { { attribute string estado; attribute string nome; attribute string nome; attribute short código; ... ... } };

  11. Exemplo – Pacientes em ODL class Paciente (extent Pacientes key CPF) { attribute long CPF; attribute long RG; attribute string nome; relationship Leito leito inverse Leito:: paciente; attribute struct responsabilidade { relationship Médico médico inverse Médico:: responsável, horárioVisita time} responsável; relationship set<Médico> tratamento inverse Médico:: tratamento; };

  12. Exemplo – Médicos em ODL class Médico (extent Médicos key CRM) { attribute long CRM; attribute string nome; attribute float salário; attribute Especialidade atuação; attribute set<Especialidade> formação; relationship set<Paciente> responsável inverse Paciente:: responsável.médico; relationship set<Paciente> tratamento inverse Paciente:: tratamento; };

  13. Consultas em BDOOs • Duas abordagens • navegacional • navegação entre objetos através de suas referências (controlada pelo programa da aplicação ou SGBDOO) • declarativa • uso de uma linguagem de consulta do SGBDOO • violação de encapsulamento • maior flexibilidade para formulação de consultas • Não há DML, apenas linguagem de consulta • métodos implementam operações de atualização • Linguagem de consulta do padrão ODMG • OQL (Object Query Language)

  14. OQL • Linguagem de consulta declarativa • Extensão da linguagem SQL com suporte ao tratamento de • objetos complexos • junções por valor ou por OID • invocação de métodos • suporta late binding (polimorfismo) • herança

  15. Ponto de Partida de uma Consulta • Objeto ou conjunto de objetos • extensão de classe (extent) • literal ou conjunto de literais select e.nome MeuEndereço from e in Empregados select e.rua from e in EndereçosAmigos variável de iteração

  16. Resultados de Consultas • Literais, objetos, conjuntos de literais ou de objetos select e.* MeuEndereço from e in Empregados select struct ( nome: d.nome empsRicos:(select e.* from e in d.funcionários where e.salário > 5000)) from d in Departamentos literal conjunto de objetos conjunto de literais (estrutura complexa)

  17. Expressões de Caminho • Permitem a navegação entre objetos • caminhamento através de atributos de referência e relacionamentos • utiliza-se a notação de ponto (“.”) • Exemplo select p.nome, p.titulação from p in Professores where p.depto.código = ‘INE’

  18. Expressões de Caminho • Variáveis de iteração são definidas para a navegação em coleções de objetos referenciados (referências 1:N) • a variável de iteração associa-se com cada elemento da coleção referenciada • Exemplo select f.nome from d in Departamentos, f in d.funcionários where d.código = ‘INE’ and f.salário > 5000

  19. Junções • Junções entre conjuntos de objetos ou de literais são permitidas, como em BDRs • Junções de objetos tanto por valor quanto por OID são permitidas • Exemplo select c1.nome from c in Cidades, c1 in Cidades where c1.estado = c.estado and c.nome = ‘Florianopólis’ and c.estado = ‘SC’

  20. Invocação de Métodos • Métodos podem ser declarados em consultas da mesma forma que propriedades • Exemplos select e.nome from e in Empregados where e.idade > 50 select d.código, d.nroHorasAtendimento from d in Departamentos

  21. Consultas em Hierarquias de Classes • Consultas aplicadas a uma classe processam objetos da classe e de suas subclasses • Restrições podem ser especificadas • Exemplo select (Professores, Pesquisadores)e.nome from e in Empregados where e.salário > 3000

  22. Funções de Agregação • Aplicadas sobre qualquer conjunto de dados • Exemplos avg(select p.salário from p in Professores where p.depto.código = ‘INE’) select d.código, d.nome from d in Departamentos where count (d.funcionários) > 30

More Related