PProf. Alexander Roberto Valdamerirof. Alexander Roberto Valdameri
Bancos de Dados Bancos de Dados Orientados a ObjetoOrientados a Objeto
2
Evolução
BD Hierárquico *;
BD de Rede *;
BD Relacional *;
BD Orientado a Objetos;
BD Pós-Relacional.
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.
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.
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.
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.
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
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.
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.
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.
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.
Bancos de Dados Bancos de Dados
Objeto-Relacional ou Objeto-Relacional ou Pós-RelacionalPós-Relacional
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.
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}
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
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
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;
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:
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:
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:
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:
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
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
24
SELECT nome FROM PessoaFisica;
SELECT nome FROM PessoaJuridica;
SELECT nome FROM Pessoa;
SELECT nome FROM ONLY Pessoa;
Exemplo no PostGreSQL
25
Exemplos de produtos
Jasmine – OO; Poet – OO; ObjectStore – OO; Orion – OO; Oracle – OR; Caché – OR; PostgreSQL – OR; IBM DB2 – OR;
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.
Top Related