Banco de Dados OO

Propaganda
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
Download