25
Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Embed Size (px)

Citation preview

Page 1: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Company

LOGO

Banco de Dados II

Banco de Dados de Objetos

Prof. Me. Everton C. Tetila

Page 2: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Agenda

1. Introdução1. Introdução

2. Conceitos de banco de dados de objetos2. Conceitos de banco de dados de objetos

3. Padrões de Banco de Dados de Objetos3. Padrões de Banco de Dados de Objetos

4. Db4objects (Db4o)4. Db4objects (Db4o)

5. Operações CRUD5. Operações CRUD

Page 3: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Introdução

BDO foram propostos para atender a algumas das necessidades de aplicações mais complexas.

Especifica: A estrutura dos objetos complexos As operações que podem ser aplicadas a esses

objetos

Page 4: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Introdução

Banco de Dados OR versus OO:

FIGURA 1. Demonstração de armazenamento de dados: Banco de Dados OR versus OO.

Page 5: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Conceitos de banco de dados de objetos

Estrutura de objeto: Um modo formal de representar os objetos em bancos de dados OO é visualizar cada objeto como uma tripla (i, c, v).

“i” – é o identificador único do objeto (OID). “c” – é o construtor de tipo (ele indica como o estado do

objeto é construído). “v” – é o estado do objeto (ou valor corrente).

Page 6: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Conceitos de banco de dados de objetos

Identidade de objeto (OID): Garante que cada objeto tenha uma identidade única gerada pelo SGBDOO.

O OID não depende dos dados armazenados no objeto e não é visível aos usuários externos.

É usado pelo sistema para identificar o objeto, criar e gerar referência entre eles.

Page 7: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Conceitos de banco de dados de objetos

Construtores de tipos: Especifica como a estrutura do do objeto é construída.

Atom: Formado por um valor atômico, como inteiros, números reais, cadeias de caracteres, boleanos, etc.

Tuple: São construídos através da união de atributos, como tuplas (tipos de registro) no modelo relacional básico.

Set: Representa um conjunto de elementos distintos, todos do mesmo tipo.

Bag: Representa um conjunto de elementos do mesmo tipo, onde os valores podem se repetir.

List: É uma lista ordenada de elementos do mesmo tipo, com um número arbitrário de elementos.

Array: É um vetor unidimensional de elementos ordenados do mesmo tipo, com um número determinado de elementos.

Page 8: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Conceitos de banco de dados de objetos

Exemplo:

Page 9: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Conceitos de banco de dados de objetos

Encapsulamento de operações: Este conceito é aplicado separando os atributos em visíveis e ocultos. Os Atributos Visíveis podem ser acessados diretamente, já os Atributos Ocultos só são acessados através de métodos específicos para cada objeto.

Métodos: São utilizados para manipular os dados ocultos do banco de dados, eles podem ser utilizados para criar, destruir, recuperar, fazer cálculos e atualizar os dados.

Polimorfismo: Um mesmo nome de operação pode se referir a várias implementações distintas.

Page 10: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Conceitos de banco de dados de objetos

Nas aplicações desenvolvidas em linguagens de programações OO podem existir dois tipos de objetos:

Objetos transientes: São os objetos que, quando a aplicação é encerrada, deixam de existir.

Objetos persistentes: São os objetos que podem ser armazenados no banco de dados.

Page 11: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Conceitos de banco de dados de objetos

Persistência: Há duas maneiras de tornar um objeto persistente: nomeação e por alcançabilidade.

Nomeação: Consiste em dar um nome persistente ao objeto; Todos os nomes devem ser únicos para cada objeto

em um determinado banco de dados; O nome persistente será utilizado para iniciar o

acesso ao banco de dados. Alcançabilidade:

Todos os objetos que forem alcançados através de um objeto persistente também se tornam persistentes.

Page 12: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Conceitos de banco de dados de objetos

Exemplo:

Page 13: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Conceitos de banco de dados de objetos

Hierarquias de tipo e herança: Quando um tipo é definido, através de um tipo predefinido, pode-se chamá-lo de Subtipo; e o tipo que deu origem a ele de Supertipo.

Um subtipo herda todos os métodos e atributos que estejam definidos para o seu supertipo.

PESSOA: Nome, Endereco, Data_Nascimento, Idade, Cpf FUNCIONARIO subtype-of PESSOA: Salario, Data_contratacao,

Nivel ALUNO subtype-of PESSOA: Curso, RGA

Page 14: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Conceitos de banco de dados de objetos

Objetos complexos: Podem ser divididos em estruturados e não estruturados.

Não-estruturados: O SGBDOO não conhece a sua estrutura. Ex: imagens e textos longos.

Estruturados: têm suas estruturas conhecidas, pois são objetos derivados do uso recursivo dos construtores existentes, fornecidos pelo SGBDOO.

Referência de objetos complexos: Existem dois tipos de semânticas.

Semântica de Propriedade, ou “é-parte-de” e “é-componente-de”.

Semântica de Referência, ou “é-associado-com.

Page 15: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Padrões de banco de dados de objetos

ODMG: O padrão ODMG fornece um modelo de dados padrão para banco de dados orientados a objetos.

O padrão é composto pelos componentes: Modelo de objetos Object Definition Language (ODL) Object Query Language (OQL)

Page 16: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Padrões de banco de dados de objetos

Modelo de objetos: Fornece os tipos de dados, os tipos construtores e outros conceitos para especificar esquemas de bancos de dados de objetos.

No modelo de objetos ODMG, objetos e literais são os blocos de construção básicos do modelo de objetos. Objetos: Possui um OID e um estado (ou valor atual). Literais: Possui somente um valor, mas não um OID.

Page 17: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Padrões de banco de dados de objetos

Um Objeto tem cinco aspectos: Identificador: identificação única para o objeto em

todo o banco de dados (OID). Nome: São utilizados como ponto de entrada para o

banco de dados. Tempo de vida: Define se os objetos são

persistentes ou transientes. Estrutura: Especifica como ele é construído pelos

construtores de tipos. Criação: Refere-se à maneira como ele é criado

(operação new).

Um Literal é um valor que não possui um OID.

Page 18: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Padrões de banco de dados de objetos

Object Definition Language (ODL): Define as construções semânticas do modelo de objeto ODMG e é independente de qualquer linguagem de programação em particular.

Object Query Language (OQL): Define a sintaxe para as consultas ODMG.

Page 19: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Db4objects (Db4o)

Db4objects (Db4o): É um banco de dados orientado a objetos, desenvolvido como projeto software livre de código aberto (open-source).

De acordo com o site do fabricande “avaliações de banco de dados mostram que o Db4o pode ser até 44 vezes mais rápido que o Hibernate e MySQL.

Disponível em: http://www.db4o.com/DownloadNow.aspx

Page 20: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Operações CRUD

A seguir serão demonstradas as operações Create, Read, Update e Delete para a manipulação de objetos no Db4O.

Abrir o banco: Para abrir o banco de dados, a classe Db4oEmbedded possui o método estático openFile().

import com.db4o.Db4oEmbedded;import com.db4o.ObjectContainer;public class Main {

public static void main(String[] args) {ObjectContainer db = Db4oEmbedded.openFile("c:/banco.yap");try {

// Códigos para as operações CRUD.} finally {

db.close();}

}}

Page 21: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Operações CRUD

Criar: Para armazenar o aluno no banco de dados é necessário passar o objeto como parâmetro para o método store().

import com.db4o.Db4oEmbedded;import com.db4o.ObjectContainer; public class Main {

public static void main(String[] args) {ObjectContainer db = Db4oEmbedded.openFile("c:/banco.yap");try {

Aluno novo = new Aluno(1, "Danilo Pedroso");db.store(novo);System.out.println("Aluno armazenado: " + novo);} finally {db.close();

}}

}

Page 22: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Operações CRUD

Consultar: Para recuperar todos os alunos com o nome Danilo Pedroso, independente do número de seu código (atributo), utiliza-se o método queryByExample().

import com.db4o.Db4oEmbedded;import com.db4o.ObjectContainer;import com.db4o.ObjectSet; public class Main {

public static void main(String[] args) {ObjectContainer db= Db4oEmbedded.openFile("c:/banco.yap");Aluno novo = new Aluno(0,"Danilo Pedroso");ObjectSet<Aluno> lista = db.queryByExample (novo);while (lista.hasNext()){

System.out.println(lista.next());}

}}

Page 23: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Operações CRUD

Alterar: Para alterar o aluno no banco de dados é necessário utilizar o método store().

import com.db4o.Db4oEmbedded;import com.db4o.ObjectContainer;import com.db4o.ObjectSet;public class Main {

public static void main(String[] args) {ObjectContainer db= Db4oEmbedded.openFile("c:/banco.yap");ObjectSet<Aluno> lista = db.queryByExample (new Aluno (1,"Danilo Pedroso"));Aluno aluno = lista.next();aluno.setNome("Danilo Pedroso Vargas");db.store(aluno);lista = db.queryByExample (Aluno.class);while (lista.hasNext()){System.out.println(lista.next());}

}}

Page 24: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Operações CRUD

Excluir: Para excluir o aluno no banco de dados é necessário utilizar o método delete().

import com.db4o.Db4oEmbedded;import com.db4o.ObjectContainer;import com.db4o.ObjectSet;public class Main {

public static void main(String[] args) {ObjectContainer db= Db4oEmbedded.openFile("c:/banco.yap");ObjectSet<Aluno> lista = db.queryByExample (new Aluno (1,"Danilo Pedroso Vargas"));Aluno aluno = lista.next();db.delete(aluno);lista = db.queryByExample (Aluno.class);while (lista.hasNext()){

System.out.println(lista.next());}

}}

Page 25: Company LOGO Banco de Dados II Banco de Dados de Objetos Prof. Me. Everton C. Tetila

Referências

ELMASRI, R.; NAVATHE, S. B. Sistemas de Banco de Dados. 6ª ed., Addison Wesley, 2010.

DB4OBJECTS. Db4o tutorial. 2011. Disponível em: http://community.versant.com/Documentation/Reference/db4o-8.0/java/tutorial.