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

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

Objectivos Objectivos

Apresentações semelhantes


Apresentação em tema: "Objectivos Objectivos"— Transcrição da apresentação:

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

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.

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

4 Exemplo de modelo objecto
Definição de um Tipo Documentos título: string revisão: date Capítulos no: integer Textos referencia:char[4] Programas linguagem: string Diagrama de Classes OMT Pessoas bi: string nome: string nacionalidade: string idade: integer cpostal: char[4] autores obras interface Documento : Atomic_Object Extent(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); };

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 { os_List<Documento*> autorias inverse_member autores; ...

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.

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

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 Pessoas where 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 > )

9 Mais exemplos de OQL select w.nome from w in (sort x in
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”)

10 Último exemplo de OQL group x in Pessoa by
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)>

11 OQL versus SQL SQL OQL 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”)

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);

13 Base de Dados de Objectos
Arquitectura ODMG .... ... Aplicação Linker Base de Dados de Objectos Criação Código Objecto do SGBDO Objective-C com ODL/OML da aplicação Ficheiros .h Ficheiros .m Compilador Pré-Processador de ODL/OML Meta Informação 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

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


Carregar ppt "Objectivos Objectivos"

Apresentações semelhantes


Anúncios Google