Upload
ilori
View
57
Download
0
Embed Size (px)
DESCRIPTION
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). - PowerPoint PPT Presentation
Citation preview
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)
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
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
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
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 propriedades e comportamento– possui instâncias (com OID - objetos)
Interfaces e Literais em ODLinterface 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;
Classes em ODLclass 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);
...};
conjunto de instâncias
atributo literal atômico
atributo literal estruturado
atributo de referência a objeto
relacionamento
Herança
• Duas formas– herança IS-A– herança extends
• Herança IS-A– herança de interface– pode ser interfaceinterface ou interfaceclasse– permite herança múltipla
• Herança extends– herança de propriedades– ocorre somente entre classes (classeclasse)– não permite herança múltipla
Herança em ODLClasse 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
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; ...... }};
Exemplo – Pacientes em ODLclass 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;
};
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;
};
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)
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
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çofrom e in Empregados
select e.ruafrom e in EndereçosAmigos
variável de iteração
Resultados de Consultas
• Literais, objetos, conjuntos de literais ou de objetos
select e.* MeuEndereçofrom e in Empregados
select struct ( nome: d.nomeempsRicos:(select e.*
from e in d.funcionários where e.salário > 5000))
from d in Departamentos
conjunto de objetos literal
conjunto de literais (estrutura complexa)
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çãofrom p in Professores
where p.depto.código = ‘INE’
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.nomefrom d in Departamentos, f in d.funcionárioswhere d.código = ‘INE’and f.salário > 5000
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.nomefrom c in Cidades, c1 in Cidadeswhere c1.estado = c.estadoand c.nome = ‘Florianopólis’
and c.estado = ‘SC’
Invocação de Métodos
• Métodos podem ser declarados em consultas da mesma forma que propriedades
• Exemplos
select e.nomefrom e in Empregadoswhere e.idade > 50
select d.código, d.nroHorasAtendimentofrom d in Departamentos
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 Empregadoswhere e.salário > 3000
Funções de Agregação
• Aplicadas sobre qualquer conjunto de dados• Exemplos
avg(select p.saláriofrom p in Professoreswhere p.depto.código = ‘INE’)
select d.código, d.nomefrom d in Departamentoswhere count (d.funcionários) > 30