A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

ODMG 1 Modelo Objecto Modelo Objecto ODMG objecto: primitiva base tipo: definição das propriedades e comportamento comuns a um conjunto de objectos propriedades:

Apresentações semelhantes


Apresentação em tema: "ODMG 1 Modelo Objecto Modelo Objecto ODMG objecto: primitiva base tipo: definição das propriedades e comportamento comuns a um conjunto de objectos propriedades:"— Transcrição da apresentação:

1 ODMG 1 Modelo Objecto Modelo Objecto ODMG objecto: primitiva base tipo: definição das propriedades e comportamento comuns a um conjunto de objectos propriedades: estado (atributos ou associações) operações: comportamento herança: hierarquias de generalização

2 ODMG 2 Métodos BDOO: integração linguagem de dados e linguagem hospedeira ODL suporta definição de assinaturas de métodos implementação na linguagem hospedeira (Smalltalk, C++, Java); na interface fica só a assinatura, i.e., nomes e tipos dos parâmetros e da função ligação forte entre ODL e a linguagem hospedeira, com tradução directa e acesso às mesmas variáveis OQL define as interrogações mais baseadas em conjuntos (relacionais) e os métodos são mais virados para o objecto individual métodos sempre definidos numa classe e executados relativamente a um objecto dessa classe que funciona como parâmetro implícito métodos podem ser vistos como atributos especiais Métodos estilo declaração de função C++ (suporta polimorfismo) parâmetros são declarados in (entrada), out (saída) ou inout (entrada-saída) -- dois últimos passados por referência levantamento de excepções, para tratamento de situações anormais ou inesperadas que são tratadas pelo chamador fora da sequência normal de chamada resposta

3 ODMG 3 Exemplo de declaração de métodos interface Filme (extent Filmes key (titulo, ano)) {attribute string titulo; attribute integer ano; attribute integer comprimento; attribute enum Filme {cor, pretoBranco} tipoFilme; relationship Set estrelas inverse Estrela::filmes; relationship Estudio proprietario inverse Estudio::possui; float comprimentoHoras() raises(semDuracao); nomesActores( out Set ); outrosFilmes( in string, out Set ) raises (estrelaInexistente); }; a declaração extent nomeia o conjunto de instâncias da classe existentes no momento - funciona como uma relação as perguntas em OQL referem-se à extensão e não ao nome da classe

4 ODMG 4 Estender LPOO com capacidades BD Extensões à linguagem: OPAL é uma extensão do Smalltalk com classes e primitivas de gestão de BD colecções com restrições para armazenar grandes quantidades de dados blocos de selecção especiais com capacidade para usar índices, onde os haja Fornecimento de bibliotecas de gestão de BD para uso de linguagem standard (C++) Ontos, Objectivity, Object Store usa compiladores standard distinção entre preprocessamento e uso de bibliotecas é ténue Objectivos: eliminar a impedância entre as linguagens especializadas de BD e as de uso geral reduzir o abismo semântico para a especificação do problema Resultado ainda é mais navegacional e menos declarativo do que o modelo relacional forneceu

5 ODMG 5 Objectivos promover normalização dos SGBDOs para uma maior aceitação e divulgação garantir portabilidade de aplicações entre SGBDOs 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 BDs com as LPs (p.e. com C++) possibilitar interoperabilidade entre SGBDOs

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

7 ODMG 7 Hierarquia de Tipos Pré-definidos q Denotable_Object qObject qAtomic_Object q Type q Exception q Iterator qStructured_Object q Collection q Set q Bag q List String Bit_String q Array q Structure qLiteral qAtomic_Literal q Integer q Float q Character q Boolean qStructured_Literal q Immutable_Collection q Immutable_Set q Immutable_Bag q Immutable_List Immutable_String Immutable_Bit_String q Immutable_Array q Enumeration q Immutable_Structure q Date q Time q DateTime q Interval o Characteristic oProperty oAttribute oRelationship oOperation

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

9 ODMG 9 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... :... in select-from-where sort... by... count(), sum(), min(), max(), avg() group... in... by... with...

10 ODMG 10 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 Pessoas where x.nacionalidade = Portugal 3. Obter a lista de nomes dos revisores portugueses dos textos revistos depois de 1 Jan de select x.nome from x in (select y.revisor from y in Textos where revisao > ) where x.nacionalidade = Portugal

11 ODMG 11 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 Pessoas where 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.titulo from x in Documentos where (for all y in x.autores: y.nacionalidade=Portugal)

12 ODMG 12 Ú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

13 ODMG 13 OQL versus SQL SQL select livros.titulo from livros where not exist ( select autor from autores, pessoas where autores.pessoa=pessoas.id and autores.livro=livros.id and not(pessoas.nacionalidade=Portugal)) OQL select x.titulo from x in Documentos where (for all y in x.autores: y.nacionalidade=Portugal)

14 ODMG 14 ODMG Aplicação Linker Base de Dados de Objectos Criação Código Objecto do SGBDO Objective-C com ODL/OML Código Objecto da aplicação Ficheiros.h Objective-C Ficheiros.m Objective-C Compilador Objective-C Pré-Processador de ODL/OML Meta Informação objectos

15 ODMG 15 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 LPs e LIs


Carregar ppt "ODMG 1 Modelo Objecto Modelo Objecto ODMG objecto: primitiva base tipo: definição das propriedades e comportamento comuns a um conjunto de objectos propriedades:"

Apresentações semelhantes


Anúncios Google