• Nenhum resultado encontrado

Banco de Dados Orientado a Objetos

N/A
N/A
Protected

Academic year: 2021

Share "Banco de Dados Orientado a Objetos"

Copied!
31
0
0

Texto

(1)

Banco de Dados

Orientado a Objetos

Jerônimo Teles, Paulo César Gonçalves, Pedro Prado, Rutemberg Araujo Ciência da Computação – Universidade Federal da Bahia (UFBA)

Salvador – BA – Brasil

(2)

Introdução

● Gerenciador de grandes volumes de informação

● Aplicações complexas em linguagens OO

(3)

Introdução

● Facilita a integração do BD com as aplicações OO, pois a

estrutura dos dados persistidos ficou semelhante às classes

implementadas no software

(4)

Características e comparação com RDBMS

● Principal diferença: interface para programação de

aplicações

● Bancos relacionais requerem adaptações para OO

(5)

Características e comparação com RDBMS

● RDBMS: modelagens distintas para o BD e para a aplicação ● OODBMS: modelo único

(6)

Características e comparação com RDBMS

● BDOO: objetos de complexidade arbitrária

(7)

ODBMS

● Object DataBase Manegement Group (ODMG)

● Dois tipos de produtos: sistemas de gerenciamento de dados

e mapeamentos de objetos para banco de dados

(8)

Modelo de objeto

● Objetos possuem OID, enquanto literais não possuem

● Estado atual (propriedades) + Comportamento (operações) ● Estado atual: atributos ou relações com outros objetos

● Comportamento: operações com tipos específicos de entrada

e saída

(9)

Modelo de objeto

● Especificação externa: atributos e operações visíveis e

acessíveis fora do objeto

● Interface: comportamento abstrato de um objeto

● Implementações: funcionamento interno do tipo. Depende

da linguagem de programação utilizada.

● Literal: propriedades abstratas de um objeto

(10)

Modelo de objeto

● Exemplo: herança

class Pessoa {

attribute string name; };

class EmpregadoPessoa extends Pessoa : Empregado { attribute date dtInicioContrato;

};

class ClientePessoa extends Pessoa : Cliente { attribute string cartaoDeCredito;

(11)

Objetos

● Criação: chamada de operações de interface; objetos de um

tipo têm a mesma interface

● Identificação: cada objeto possui um OID imutável que o

diferencia dos demais. O OID geralmente não é visível pelo usuário. Literais não têm OID.

(12)

Objetos

● Tempo de vida: um objeto pode ser transiente ou persistente

dentro do sistema aplicação/banco de dados. Os objetos

persistentes são armazenados no BD. Um mesmo objeto pode ter instâncias transientes e persistentes ao mesmo tempo.

Estrutura: atômica, tupla, conjunto, lista, bag ou

(13)

ODL – Object Definition Language

● Usada para definir objetos e literais segundo o padrão

ODMG

● Facilmente extensível

(14)

ODL – Object Definition Language

● Exemplo: Objeto Geométrico

interface ObjetoGeometrico {

attribute enum Formato {Retangulo, Triangulo...}formato; float perimetro();

float area();

void rotacionar (in float angulo_rotacao); };

(15)

OQL – Object Query Language

● Usada para realizar interações com o BD segundo o ODMG

● Facilmente extensível

● Sintaxe muito semelhante a SQL, com pequenas diferenças

referentes aos objetos

● Trata de conceitos como identidade de objeto, objeto

complexo, expressão de caminho, polimorfismo e operações de instanciação

(16)

OQL – Object Query Language

● Conta com primitivas de alto nível para tratar de estruturas

de coleções como listas e arrays com eficiência

● Não é computacionalmente completa, permitindo apenas

consultas de forma direta

● Pode permitir atualizações nos dados indiretamente, através

de operações definidas no objeto a modificar

● É uma liguagem funcional onde operadores podem ser

(17)

OQL – Object Query Language

● Exemplo: SELECT

select distinct x.idade

from Pessoa x

where x.nome = “Joao”

select distinct struct( a: x.idade, s: x.sexo) from Pessoa x

(18)

OQL – Object Query Language

● Exemplo de inserção

(19)

OQL – Object Query Language

● Exemplo de SELECT com junção implícita

(20)

Trabalho prático - Especificação

O aplicativo servirá para administrar um conjunto de lojas no exterior, que venderão pacotes promocionais para a copa do mundo de 2014 no Brasil. Estes pacotes contêm os vôos internacionais de ida e volta marcados e um conjunto de reservas para os jogos.

Cada reserva contém um ingresso para o jogo selecionado e um conjunto de diárias na cidade do mesmo. Vale ressaltar que os pacotes dão direito a 20 diárias em qualquer hotel cadastrado na rede de lojas. Além disso, uma reserva pode alocar um vôo nacional para o cliente chegar ao local do jogo caso seja necessário, caso contrário fica por responsabilidade da pessoa o seu meio de

(21)

Trabalho prático - Especificação

Um cliente pode comprar um ou mais pacotes promocionais e pode escolher entre as categorias de pacote Premium, Plus e Standard. O pacote Premium é o mais caro, nele o cliente terá direito a reservas em hotéis cinco estrelas e vôos internacionais de ida e volta na

primeira classe. O pacote Plus também tem direito a passagens de primeira classe, porém os hotéis que podem ser reservados vão até no máximo quatro estrelas. Por fim, o pacote Standard dará direito a passagens de ida e volta comerciais e hotéis mais simples ou

(22)

Trabalho prático - Especificação

Para efetuar qualquer compra, o cliente deve ter um cadastro na loja com o seu Social Security Number, nome, e-mail, telefone, telefone de emergência, data de nascimento, rua, CEP, bairro e número da moradia.

O gerente de cada loja deverá ter os mesmos dados presentes no cliente, além disso precisa ter também o número do contrato para verificações administrativas.

(23)

Trabalho prático - OrientDB

● É um SGBDOO que implementa parcialmente o ODMG 3.0 ● Ferramenta de código aberto com suporte a Java e C++

● Documentação incipiente

● É fornecida ao OrientDB a especificação ODL para o banco a

criar

● O próprio OrientDB gera um código-fonte inicial em Java ou C++

(24)

Trabalho prático - OrientDB

● É necessário criar uma DLL para integrar o SGBD aos arquivos

gerados

● A DLL pode se utilizada então para criar aplicativos que

(25)
(26)
(27)
(28)

Trabalho prático - OrientDB

● A implementação em C++ foi bem sucedida até o passo da

criação dos arquivos-fonte das classes de entrada

● Problemas não documentados foram encontrados na integração

entre as bibliotecas do banco e a aplicação, o que impossibilitou o termino da implementação

● Outra tentativa foi feita, dessa vez em Java. As classes de entrada

foram geradas, mas houveram novos problemas nas bibliotecas de suporte à comunicação com o banco.

● Após algumas correções, foi possível manter uma certa

consistência no sistema, porém só com consultas simples. Inserções e consultas complexas retornavam erros referentes a funções não

(29)

Trabalho prático – código ODL (OrientDB)

class Endereco {

attribute string rua; attribute string bairro; attribute string numero; attribute string cep; };

class Categoria {

attribute unsigned long id; attribute string nome; };

class Hospedagem {

attribute unsigned long id; attribute unsigned short vagas; attribute string nome;

attribute string telefone; attribute string email;

attribute Categoria categoria; attribute Endereco endereco;

class Reserva {

attribute unsigned long id; attribute date inicio;

attribute unsigned short diasHospedagem; relationship Hospedagem hospedagem; relationship Jogo jogo;

};

class Voo {

attribute unsigned long numBilhete; attribute unsigned long numVoo; attribute date data;

attribute string compArea; attribute string origem; attribute string destino; attribute float preco; };

(30)

Trabalho prático – código ODL (OrientDB)

class PacoteCopa{

attribute unsigned long id; attribute float preco;

relationship Categoria categoria; relationship Voo ida;

relationship Voo volta;

relationship set<PacoteJogo> pacoteJogos; };

class PacoteJogo {

attribute unsigned long id; relationship Voo vooNacional; relationship Reserva reserva; };

class Jogo {

attribute unsigned long id; attribute date data;

attribute float preco; attribute string estadio; attribute string time1; attribute string time2;

class Pessoa{

attribute unsigned long ssn; attribute string nome;

attribute string telefone;

attribute string telefoneEmergencia; attribute date dataNasc;

attribute Endereco endereco; };

class Cliente extends Pessoa{

relationship set<PacoteCopa> pacotesComprados; };

class Gerente extends Pessoa{

attribute unsigned long noContrato; };

class Loja{

attribute unsigned long id; attribute string telefone; attribute string email;

attribute Endereco endereco; attribute Gerente gerente;

(31)

Referências

Ricarte, Ivan L.M. (1998) Sistemas de Bancos de Dados Orientados a Objetos. Campinas: DCA-UNICAMP.

Silberschatz, A., Korth, H. F., and Sudarshan, S. (1999). Sistemas de Bancos de Dados. Pearson Education.

Cattell, R. G. G., Barry, Douglas K., Berler, M., Eastman, J., Jordan, D.

(2000) The object data standard: ODMG 3.0, Morgan Kaufmann Publishers Inc., San Francisco, CA

Atkinson, M. P., Bancilhon, F., DeWitt, D. J., Dittrich, K. R., Maier, D., and Zdonik, S. B. (1990) The object-oriented database system manifesto. In SIGMOD Conference, p.395.

Khatchadourian R. (2006) Object Databases: an Analytical Approach. Object Database Management Systems. “Object Database Vendors”, http://www.odbms.org.

Galante, A., Moreira, E., and Brandão, F. (1999). BANCO DE DADOS ORIENTADO A OBJETOS: UMA REALIDADE. http://www.fsma.edu.br/si/

Referências

Documentos relacionados

Porém, a legislação aplicada de forma isolada não será capaz de assegurar o uso sustentável desse recurso natural, muito menos garantir que toda a população tenha acesso

As a researcher of gEPL, she is working with the development of compilers based on attribute grammars, automatic generation tools, visual languages and pro- gram understanding. She

also noteworthy that the administration of boceprevir was preceded by four weeks of dual therapy with PegIFN and ribavirin (the lead-in phase), while this strategy was used in

A crítica tem se debruçado prevalentemente sobre este aspecto da poesia de Adélia Prado, no nosso caso, partimos desta relação entre corpo e espírito, profano e sagrado, imanência

O enfermeiro de reabilitação deve acompanhar as pessoas submetidas a ATA na realização do PR ao longo do processo de recuperação, ou seja, deve iniciar a reabilitação

O Programa de Pós-Graduação em Administração Universitária (PPGAU) permite que o pesquisador identifique problemas que podem ocorrer em seu ambiente profissional e,

The analysis of these reports provided evidence about IIC creation, respectively: Human Capital (increase of knowledge through training in environmental and safety

Para as durações de Dirge, ao contrário das alturas, um único algoritmo do contraponto dissonante é utilizado para todos os instrumentos e o conjunto de valores rítmicos