Title: ODMG - Object Database Management Group
1ODMG - 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)
2Modelo 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
3Dados
- 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
4Literais
- 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)
- setlttgt, baglttgt, arraylttgt, ...
- t é tipo de objeto ou valor
5Definiçã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 propriedades e comportamento
- possui instâncias (com OID - objetos)
6Interfaces 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
-
- setltEndereçogt EndereçosAmigos
- Endereço MeuEndereço
7Classes 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 setltEmpregadogt funcionários
- inverse Empregado depto
- void adicionaEmp(short RG) raises (jahTrabalha,
RGInexistente) - ...
-
atributo literal estruturado
atributo de referência a objeto
relacionamento
conjunto de instâncias
atributo literal atômico
8Heranç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
9Herança em ODL
- Classe Empregado (extent Empregados)
- attribute short RG
- attribute string nome
- attribute enum gêneroM,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
10OID 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 ... ...
11Exemplo 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ário
Visita time responsável relationship
setltMédicogt tratamento inverse Médico
tratamento
12Exemplo 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
setltEspecialidadegt formação relationship
setltPacientegt responsável inverse Paciente
responsável.médico relationship setltPacientegt
tratamento inverse Paciente tratamento
13Consultas 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)
14OQL
- 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
15Ponto 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
16Resultados 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 gt 5000))
- from d in Departamentos
literal
conjunto de objetos
conjunto de literais (estrutura complexa)
17Expressõ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
18Expressões de Caminho
- Variáveis de iteração são definidas para a
navegação em coleções de objetos referenciados
(referências 1N) - 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 gt 5000
19Junçõ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
20Invocaçã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 gt 50
- select d.código, d.nroHorasAtendimento
- from d in Departamentos
-
21Consultas 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 gt 3000
-
-
22Funçõ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) gt 30