prof. alexander roberto valdameri bancos de dados orientados a objeto

26
P P rof. Alexander Roberto Valdameri rof. Alexander Roberto Valdameri Bancos de Dados Bancos de Dados rientados a Objeto rientados a Objeto

Upload: internet

Post on 17-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

PProf. Alexander Roberto Valdamerirof. Alexander Roberto Valdameri

Bancos de Dados Bancos de Dados Orientados a ObjetoOrientados a Objeto

Page 2: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

2

Evolução

BD Hierárquico *;

BD de Rede *;

BD Relacional *;

BD Orientado a Objetos;

BD Pós-Relacional.

Page 3: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

3

Características comuns *

Uniformidade: estruturas de dados similiares;

Orientação a registro: itens de dados básicos de comprimento fixo;

Itens de dados pequenos: registros curtos, poucos bytes;

Campos Atômicos: não há estrutura dentro dos campos.

Page 4: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

4

Modelo de dados OO

Estrutura do Objeto Variáveis; Mensagens; Métodos;

Classe de Objeto Similaridade nos objetos; Instâncias de objetos;

Herança Similaridade de classes.

Page 5: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

5

Banco de Dados OO

“Os BDOOs combinam os benefícios e conceitos da orientação a objeto com a funcionalidade dos banco de dados.”

Funcionalidades:Tipos abstratos;Herança;Identidade de objeto;Encapsulamento;Polimorfismo;Persistência.

Page 6: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

6

BDOOs - Abordagens

Adição de conceitos de OO a

linguagens de banco de dados;

Extender linguagens orientadas a

objeto para tratar de bancos de dados

que operam com conceitos de objetos

persistentes.

Page 7: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

7

Exemplo de Classeclass empregado { /* variáveis */

string nome;string endereco;date data_inicio;int salario;/* mensagens */int salario_anual();string obter_nome();string ajustar_endereco(string novo_endereco);int tempo_emprego();

}/* método como exemplo: */

new() -> cria uma nova instância

Page 8: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

8

Linguagens OO

Conceitos de OO usados puramente para projeto;

Conceitos de OO incorporados em uma linguagem usada para manipular o banco de dados;

Extensão do SQL com adição de tipos complexos e OO;

Linguagens persistentes; ODMG – padronização das extensões.

Page 9: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

9

Linguagem Persistente

Transparência – não há uma

conversão explicita entre a OO e o

relacional;

Operações são realizadas de forma

implícita;

Trabalham com a SQL embutida;

Exemplos: C++ e Smalltalk.

Page 10: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

10

Exemplos de Aplicações

CAD – Computer aided design – Projeto

auxiliado por computador: componentes do projeto, versões;

CASE – Computer aided software

engineering – Engenharia de Software

auxiliada por computador: código fonte, dependências entre os

módulos; definições e uso de variáveis.

Page 11: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

11

Exemplos de Aplicações

Banco de dados Multimídia Imagens, dados espaciais, áudio,

dados de vídeo etc; Banco de dados Hipertexto

Hipertexto enriquecido com links.

Textos completos armazenados e em

condições de serem manipulados.

Page 12: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

Bancos de Dados Bancos de Dados

Objeto-Relacional ou Objeto-Relacional ou Pós-RelacionalPós-Relacional

Page 13: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

13

Contextualização

Novos tipos de dados (complexos);

Modelo relacional acrescido de

orientação a objetos;

Linguagem padrão de acesso as

estruturas do metadados;

Linguagem persistente ou extensão para

manipulação de objetos.

Page 14: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

14

Estudo de Caso

Supor estrutura de dados de um SIE:Título do documento;

Lista de autores;

Data de aquisição;

Lista de palavras-chaves.

Título Autores Data (d,m,a) Palavras Chaves

Meta de vendas {Carlos, Ana} (18, março, 2003) {Estratégia, vendas}

Relatório aos Fornecedores

{Manoel} (23, maio, 2002) {Aquisição, compras}

Page 15: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

15

Exemplo Tipo ComplexoCreate type MinhaSequencia char varying;

Create type MinhaData

( dia integer,

mes char(10),

ano integer);

Create type Documento

( nome MinhaSequencia,

lista_autor setof (MinhaSequencia),

lista_palavras_chaves setof (MinhaSequencia),

data MinhaData);

Create table docs of type Documento; Baseado no SQL-3

Page 16: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

16

Exemplo de HerançaCreate type Pessoa

( nm_pessoa MinhaSequencia,

nr_seg_soc integer);

Create type Estudante

( nm_curso MinhaSequencia)

under Pessoa;

Create type Professor

( nm_departamento MinhaSequencia)

under Pessoa;

Create type AssintendeEnsino

under Estudante, Professor; Baseado no SQL-3

Page 17: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

17

Exemplo no SGBD Oracle:

/* criação do objeto */

CREATE OR REPLACE TYPE obj_pessoa AS OBJECT

( cd_pessoa NUMBER(3),

nm_pessoa VARCHAR2(30),

nr_telefone VARCHAR2(12),

dt_nascimento DATE,

MEMBER FUNCTION obter_idade RETURN NUMBER);

/* criação da tabela */

CREATE TABLE clientes OF obj_pessoa;

Page 18: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

18

/* descrevendo a estrutura */

SQL> DESC obj_pessoa;

Nome Nulo? Tipo

------------------------------ -------- -------------

CD_PESSOA NUMBER(3)

NM_PESSOA VARCHAR2(30)

NR_TELEFONE VARCHAR2(12)

DT_NASCIMENTO DATE

METHOD

------

MEMBER FUNCTION OBTER_IDADE RETURNS NUMBER

Exemplo no SGBD Oracle:

Page 19: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

19

/* manipulação de dados */

SQL> INSERT INTO clientes

VALUES

(1,

'Joao Bento Goncalves',

'4799999999',

'01/02/1932');

1 linha criada.

Exemplo no SGBD Oracle:

Page 20: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

20

/* recuperação dos dados */

SQL> SELECT VALUE(c)

2 FROM clientes c;

VALUE(C)(CD_PESSOA, NM_PESSOA, NR_TELEFONE, DT_NASCIMENTO)

---------------------------------------------------------------

OBJ_PESSOA(1, 'Joao Bento Goncalves', '4799999999', '01/02/32')

SQL> SELECT c.nm_pessoa, c.obter_idade()

2 FROM clientes c;

NM_PESSOA C.OBTER_IDADE()

------------------------------ ---------------

Joao Bento Goncalves 71

Exemplo no SGBD Oracle:

Page 21: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

21

/* Criação do método */

CREATE OR REPLACE TYPE BODY obj_pessoa AS

MEMBER FUNCTION obter_idade RETURN NUMBER

AS

idade NUMBER;

BEGIN

SELECT TO_NUMBER(TRUNC(MONTHS_BETWEEN(SYSDATE,

dt_nascimento)/12),'999') INTO idade

FROM clientes;

RETURN idade;

END;

END;

Exemplo no SGBD Oracle:

Page 22: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

22

CREATE TABLE Pessoa(nome varchar(50),

telefone numeric(12),

endereco

varchar(100));

CREATE TABLE PessoaFisica(idade numeric(3),

cpf

numeric(11),

estado_civil

char)

inherits(Pessoa);

CREATE TABLE PessoaJuridica(cnpj numeric(15),

insc_est

numeric(12))

inherits(Pessoa);

Exemplo no PostGreSQL

Page 23: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

23

INSERT INTO Pessoa VALUES

('Sou pessoa', 1111111, 'Sem endereco');

INSERT INTO PessoaFisica VALUES

('Maria', 5487777, 'Rua Progresso, 87', 20,

02487555544, 'S');

INSERT INTO PessoaJuridica VALUES('Confeitaria

BomBom', 2235874, 'Av Brasil 1500',

111111111111111, 0);

Exemplo no PostGreSQL

Page 24: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

24

SELECT nome FROM PessoaFisica;

SELECT nome FROM PessoaJuridica;

SELECT nome FROM Pessoa;

SELECT nome FROM ONLY Pessoa;

Exemplo no PostGreSQL

Page 25: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

25

Exemplos de produtos

Jasmine – OO; Poet – OO; ObjectStore – OO; Orion – OO; Oracle – OR; Caché – OR; PostgreSQL – OR; IBM DB2 – OR;

Page 26: Prof. Alexander Roberto Valdameri Bancos de Dados Orientados a Objeto

26

Concluíndo…

A eficácia dos vários tipos de SGBDs pode

ser comparada resumidamente: Sistemas relacionais: tipos de dados simples,

linguagens de consulta poderosas, alta proteção;

Linguagens de programação simples baseadas

em BDOOs: tipos de dados complexos, integração

com linguagens de programação, alto desempenho;

Sistemas relacionais-objeto: tipos de dados

complexos, linguagens de consulta poderosas, alta

proteção.