Bancos de Dados
Orientados a Objeto
Prof. Alexander Roberto Valdameri
Evolução
BD Hierárquico *;
BD de Rede *;
BD Relacional *;
BD Orientado a Objetos;
BD Pós-Relacional.
2
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.
3
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.
4
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.
5
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.
6
Exemplo de Classe
class 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
7
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.
8
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.
9
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.
10
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.
11
Bancos de Dados
Objeto-Relacional ou
Pós-Relacional
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.
13
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}
14
Exemplo Tipo Complexo
Create 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-315
Exemplo de Herança
Create 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-316
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;
17
Exemplo no SGBD Oracle:
/* descrevendo a estrutura */
SQL> DESC obj_pessoa;
Nome
Nulo?
------------------------------ -------CD_PESSOA
NM_PESSOA
NR_TELEFONE
DT_NASCIMENTO
Tipo
------------NUMBER(3)
VARCHAR2(30)
VARCHAR2(12)
DATE
METHOD
-----MEMBER FUNCTION OBTER_IDADE RETURNS NUMBER
18
Exemplo no SGBD Oracle:
/* manipulação de dados */
SQL> INSERT INTO clientes
VALUES
(1,
'Joao Bento Goncalves',
'4799999999',
'01/02/1932');
1 linha criada.
19
Exemplo no SGBD Oracle:
/* 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
20
Exemplo no SGBD Oracle:
/* 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;
21
Exemplo no PostGreSQL
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);
22
Exemplo no PostGreSQL
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);
23
Exemplo no PostGreSQL
SELECT nome FROM PessoaFisica;
SELECT nome FROM PessoaJuridica;
SELECT nome FROM Pessoa;
SELECT nome FROM ONLY Pessoa;
24
Exemplos de produtos
Jasmine – OO;
Poet – OO;
ObjectStore – OO;
Orion – OO;
Oracle – OR;
Caché – OR;
PostgreSQL – OR;
IBM DB2 – OR;
25
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.
26