objectivos
DESCRIPTION
Objectivos. Objectivos promover normalização dos SGBDO’s para uma maior aceitação e divulgação garantir portabilidade de aplicações entre SGBDO’s definir interface portável ao nível de esquema de dados e linguagens de definição, manipulação e interrogação - PowerPoint PPT PresentationTRANSCRIPT
Modelo de objectos - 1
Objectivos
Objectivos• promover normalização dos SGBDO’s para uma maior aceitação e divulgação
• garantir portabilidade de aplicações entre SGBDO’s
• definir interface portável ao nível de esquema de dados e linguagens de definição, manipulação e interrogação
• conseguir forte integração das BD’s com as LP’s (p.e. com C++)
• possibilitar interoperabilidade entre SGBDO’s
Modelo de objectos - 2
Objectivos
Produtos Normalizados versus Produtos Iguais• a interface comum ao nível de esquema de dados e linguagens envolvidas permite a inovação
em muitas outras áreas permitindo que os produtos se distingam a vários níveis:
– performance
– linguagens de programação suportadas
– ambientes de desenvolvimento
– ferramentas para construção de aplicações
– redes
– plataformas
– bibliotecas de tipos
– ferramentas para construção de interfaces gráficas
– ferramentas para apoio ao projecto
– etc.
Modelo de objectos - 3
Hierarquia de Tipos Pré-definidos Denotable_Object
Object Atomic_Object
Type Exception Iterator
Structured_Object Collection<T>
Set<T> Bag<T> List<T> String Bit_String Array<T>
Structure<e1:T1...en:Tn> Literal
Atomic_Literal Integer Float Character Boolean
Structured_Literal Immutable_Collection<T>
Immutable_Set<T> Immutable_Bag<T> Immutable_List<T> Immutable_String Immutable_Bit_String Immutable_Array<T> Enumeration
Immutable_Structure<e1:T1...en:Tn> Date Time DateTime Interval Characteristic
Property Attribute Relationship
Operation
Modelo de objectos - 4
Exemplo de modelo objecto
Definição de um Tipo
interface Documento : Atomic_ObjectExtent(documentos); key (título);
{attribute string título; // deve ser único attribute Date revisão;relationship Set<Pessoas> autores inverse Pessoa::obras;relationship Set<Capítulos> capítulos inverse Capítulo::parte_de;
gravar() raises (erro_de_gravação);adicionar_capítulo(in capítulo: Capítulo);
};
Documentos
título: stringrevisão: date
Capítulos
título: stringno: integer
Textos
referencia:char[4]
Programas
linguagem: string
Diagrama de Classes OMTDiagrama de Classes OMT
Pessoasbi: stringnome: stringnacionalidade: stringidade: integercpostal: char[4]
autoresobras
Modelo de objectos - 5
Exemplo de ODL
um exemplo de Objectstore/C++ com ODL
static os_List<Documento*> documentos;class Documento {
public:
os_List<Pessoa*> autores inverse_member autorias;
os_List<Capitulo*> capitulos inverse_member pertence_a;
};
class Pessoa {
public:
os_List<Documento*> autorias inverse_member autores;
...
};
Modelo de objectos - 6
OQL: Object Query Language
Princípios orientadores:• não ser computacionalmente completa, mas permitir fácil acesso a uma base de dados de
objectos
• ser declarativa
• ter como base o modelo objecto ODMG
• ter uma sintaxe abstracta
• possuir semântica formal facilmente definível
• ter construções idênticas às de SQL sem privilegiar a cláusula select-from-where
• dispôr de primitivas para manipulação de conjuntos e também listas, vectores, bags, etc.
Modelo de objectos - 7
Expressões
Expressões permitidas: literais, aritméticas, comparações, lógicas construtoras acesso: ‘.’, ‘->‘, first(), last(), [] conversão: listtoset(), element(), flatten(), explicita conjuntos: intersect, union, except colecções:
• for all ... in ... : ...• exists ... in ... : ...• <elemento> in <colecção>• select-from-where• sort ... by ...• count(), sum(), min(), max(), avg()• group ... in ... by ... with ...
Modelo de objectos - 8
Exemplos de OQL
1. Obter o conjunto dos nomes de todas as pessoas com nacionalidade portuguesa.select distinct x.nome from x in Pessoas where x.nacionalidade=“Portugal”
2. Obter o conjunto de nomes, moradas e códigos postais de todas as pessoas com nacionalidade portuguesa.select distinct struct(n: x.nome, m: x.morada, c: x.cpostal)from x in Pessoaswhere x.nacionalidade = “Portugal”
3. Obter a lista de nomes dos revisores portugueses dos textos revistos depois de 1 Jan de 1994.select x.nome from x in (select y.revisor from y in Textos where revisao > 1-1-94)where x.nacionalidade = “Portugal”
Modelo de objectos - 9
Mais exemplos de OQL
4. Obter os nomes das 3 pessoas mais novas de nacionalidade portuguesa.select w.nome from w in (sort x in
(select y from y in Pessoaswhere y.nacionalidade = “Portugal”)
by x.idade)[0:2]
5. Obter os títulos dos documentos cujos autores são na sua totalidade de nacionalidade portuguesa. select x.titulofrom x in Documentoswhere (for all y in x.autores: y.nacionalidade=“Portugal”)
Modelo de objectos - 10
Último exemplo de OQL
6. Para cada uma das seguintes 3 gamas etárias (12-30,30-55,55-...) calcular o número de pessoas que se encontram nessa gama bem como a idade maior e menor encontrada nessa gama.group x in Pessoa by(jovens: x.idade >= 12 and x.idade < 30,experientes: x.idade >=30 and x.idade < 55,maduros: x.idade >= 55)with (numero: count(partition),menor_idade: min(select x.idade from x in partition)maior_idade: max(select x.idade from x in partition))
R: set<struct(jovens: boolean, experientes: boolean, maduros: boolean, numero: integer, menor_idade: integer, maior_idade: integer)>
Modelo de objectos - 11
OQL versus SQL
SQLselect livros.titulofrom livroswhere not exist (select autorfrom autores, pessoaswhere autores.pessoa=pessoas.id
and autores.livro=livros.idand not(pessoas.nacionalidade=“Portugal”))
OQLselect x.titulofrom x in Documentoswhere (for all y in x.autores: y.nacionalidade=“Portugal”)
Modelo de objectos - 12
Exemplo de Objective-C com OQL
Set autores;int idade;...idade=65;autores = (select distinct y
from x in Textos, y in x.autores where y.idade=idade);
if(![autores empty]) reformar(autores);
Modelo de objectos - 13
Arquitectura ODMG
....
...
...
Aplicação
Linker
Base de Dados de Objectos
Criação
....
...
...Código Objecto
do SGBDO
....
...
...
Objective-Ccom ODL/OML
Código Objectoda aplicação
Ficheiros .hObjective-C
....
...
...Ficheiros .mObjective-C
Compilador Objective-C
Pré-Processadorde ODL/OML
....
...
...
Meta Informação
objectos
Modelo de objectos - 14
Conclusões
simples de seguir tem como base um modelo menos simples que o relacional mas muito mais poderoso a linguagem de interrogação é fechada, completa, as construções possuem uma
semântica bem definida, e tem um poder expressivo superior ao SQL. diminui a impedância semântica entre LP’s e LI’s
Modelo de objectos - 15
Manipulação
OML: Object Manipulation Language não é definida pela proposta de norma, pelo que deverá ser definida por quem
implementa a norma por forma a permitir criar, destruir, modificar e referenciar objectos.
Mapeamento da ODMG-93 para LP’s A proposta define o mapeamento para C++ e Smalltalk Um mapeamento deverá ser feito aos vários níveis:
• modelo objecto ODMG
• ODL, OML e OQL
• hierarquia de tipos base
• operações sobre bases de dados e transacções