Documente Academic
Documente Profesional
Documente Cultură
Introduo
A tecnologia de BD tem evoludo para atender crescente demanda de manipulao de aplicaes e dados complexos SGBD convencionais (ex: relacional, de rede e hierrquico) so adequados para muitas aplicaes comerciais Contudo, aplicaes mais recentes tm requisitos e caractersticas no triviais que no so bem resolvidas pelos SGBD convencionais
Introduo
Exemplos de limitaes dos SGBD convencionais
No oferecem suporte para implementar diretamente Atributo composto Atributo multivalorado Especializao/Generalizao Tipos Complexos Comportamento de objeto
Introduo
Os SGBDOO surgiram para suprir estas limitaes
The Object-Oriented Database System Manifesto (1989)
Introduo
Para contornar a fraca aceitao dos SGBDOO surgiram os SGBDOR Third Generation Database System Manifesto (1990) SGBDOR mantm as vantagens do modelo relacional* e acrescentam caractersticas do modelo OO** * Modelo eficiente **Modelo mais rico semanticamente A tecnologia OR uma camada de abstrao construda sobre a tecnologia relacional Permite incrementar o legado relacional com tecnologia OO
Introduo
Sistemas de Banco de Dados ObjetoRelacionais podem ser vistos como uma tentativa de estender sistemas de banco de dados relacionais com a funcionalidade necessria para dar suporte a uma classe mais ampla de aplicaes e, de certa forma, prover uma ponte entre os paradigmas relacional e orientado a objetos
11/5/2012
Dados Simples
Dados Complexos
7 8
Gerenciadores de Arquivos
Dados Simples
SGBD relacionais
Dados Complexos
9 10
SGBD Relacionais
Gerenciadores de Arquivos
Quadrante 3: Aplicaes com dados complexos, sem necessidade de linguagem de consulta Necessidade de rotinas especficas para manipulao dos dados complexos Grande integrao com uma linguagem de programao Desempenho na atualizao de variveis persistentes SGBD orientados a Objetos
11 12
Dados Simples
Dados Complexos
11/5/2012
SGBD Relacionais
Quadrante 4: Aplicaes com dados complexos e necessidade de linguagem de consulta Linguagem de Consulta estendida a objetos complexos (SQL SQL3 3) Ferramentas de visualizao no convencionais Otimizador de consultas
Gerenciadores de Arquivos
SGBD Objeto-relacionais
OBJETO: objetos complexos RELACIONAL OBJETO RELACIONAL: ling. consulta
14
Dados Simples
SGBD Relacionais
100
SGBD ObjetoObjetorelacionais
150
Gerenciadores de Arquivos
Dados Simples
Dados Complexos
15
16
16
Abordagem e Linguagem OR
A abordagem OR uma extenso do modelo de dados relacional A extenso permite que usurios estendam o BD a partir da criao de novos tipos e operaes A linguagem OR uma extenso de SQL A linguagem SQL estendida oferece suporte para a definio de tipos de dados complexos e mtodos, alm da instanciao, manipulao e referncia de objetos
Abordagem e Linguagem OR
SQL3 (tambm chamada de SQL:1999)
a base para muitos SGBDOSGBDO-R EX: ORACLE ORACLE, DB2 DB2, INFORMIX, INFORMIX PostgreSQL PostgreSQL, ... Oferece suporte para Objetos complexos Herana Identidade de objetos (OID OID) Referncias a objetos Definio de comportamento
10g
17
17
18
18
11/5/2012
20
20
Interface Pblica
Corpo
Corpo dos mtodos
Implementao Privada
O exemplo acima pode ser feito em estrutura OR, OR mas no pode ser feito em estrutura Relacional
21
21
22
22
Especificao
No possvel inserir dados em tp_pessoa. Pois, um tipo de objeto um tp_pessoa molde, no podendo armazenar dados.
23 24
23
24
Mtodos
Atributos
11/5/2012
25
25
26
26
O uso de ( ) para diferenciar o mtodo de um procedimento ou funo comum Podem ser MEMBER MAP ou ORDER Construtor
27
27
fornece a base para comparar objetos, mapeando as instncias dos objetos em um dos tipos escalares DATE, NUMBER, VARCHAR2
possuem acesso aos dados da instncia do objeto
Mtodo que cria uma nova instncia para o objeto, atribuindo valores aos seus atributos
28
29
29
Mtodos (Cont.) MEMBER So os mtodos mais comuns Implementam as operaes das instncias do tipo So invocados atravs da qualificao de objeto Objeto.mtodo() Objeto MAP ou ORDER So funes para comparar objetos So mutuamente exclusivos! Mtodos ORDER no podem ser definidos em subtipos e so menos eficientes do que mtodos MAP
30
30
11/5/2012
34
34
Interface Pblica
Corpo
Corpo dos mtodos
Implementao Privada
[lista de subprogramas (procedimento, funo ou construtor)] [lista de funes MAP ou ORDER] END ;
35
35
36
36
11/5/2012
38
38
39
39
40
40
Vai propagar a mudana para todos os tipos dependentes ALTER TYPE tp_pessoa DROP MAP MEMBER FUNCTION get_id RETURN NUMBER INVALIDATE; INVALIDATE Vai invalidar todos os tipos dependentes ALTER TYPE tp_pessoa NOT FINAL CASCADE; CASCADE Vai permitir especializar o tipo tp_pessoa ALTER TYPE tp_pessoa MODIFY ATTRIBUTE sexo VARCHAR2(10) CASCADE ; Modificando o tamanho do atributo
41
41
42
42
11/5/2012
43
43
44
CONSTRUCTOR FUNCTION tp_retangulo (x1 tp_ponto, z NUMBER) RETURN SELF AS RESULT, MEMBER PROCEDURE setLargura(newwidth NUMBER), Retngulos com h=2 *l MEMBER PROCEDURE setAltura(newheight NUMBER), MEMBER FUNCTION getLargura RETURN NUMBER, MEMBER FUNCTION getAltura RETURN NUMBER, OVERRIDING MEMBER PROCEDURE desenhar ); Mtodo desenhar deve ser redefinido 45
45
46
46
Herana de tipos
EX (cont):
MEMBER FUNCTION getAltura RETURN NUMBER IS BEGIN RETURN altura; END; OVERRIDING MEMBER PROCEDURE desenhar IS BEGIN DBMS_OUTPUT.PUT_LINE('Desenhar retngulo:(' || SELF.getX() || ',' || SELF.getY() || '), largura ' || getLargura() || ', altura ' || getAltura()); END; END; 47
47
48
48
11/5/2012
Criao de objeto
INSERT INTO tb_retangulo VALUES (tp_retangulo(tp_ponto(3,2),5));
Ponto
(x,y)
49
49
50
50
Tabelas de objetos
So tabelas especiais onde cada linha armazena um objeto As linhas de uma tabela de objetos possuem um OID (object identifier) implcito (definido pelo ORACLE ORACLE) Os objetos de uma tabela de objetos podem ser referenciados (REF REF) por outros objetos Nos comandos de manipulao de objetos utilizar aliases para as tabelas Pode ser definido pelo programador (s recomendado para objetos interoperveis entre diferentes BD BD)
51
51
Mltiplas colunas Uma coluna para cada atributo do tipo tp_pessoa EX: Todos j vistos at agora
52
52
53
53
54
54
11/5/2012
55
55
58
58
59
59
60
60
10
11/5/2012
61
61
62
62
Referncia do prprio objeto SELECT REF(D) FROM tb_dependente D WHERE D. nm_dep = 'Paulo'; REF(D) ----------------------HRD23K56RNDGS0DUY6TGDE4
63
64
64
SELECT D.ref_titular.cod_cli as cod_cliente, D.ref_titular.nm_cli as nm_cliente, D.nm_dep as nm_dependente FROM tb_dependente D; COD_CLIENTE NM_CLIENTE NM_DEPENDENTE O objeto Rita no --------------------------------------listado, mas Paulo Paulo continua aparecendo C2 Ana Pedro
66
66
11
11/5/2012
SELECT D.ref_titular.cod_cli as cod_cliente, D.ref_titular.nm_cli as nm_cliente, D.nm_dep as nm_dependente FROM tb_dependente D WHERE D.ref_titular IS DANGLING; COD_CLIENTE NM_CLIENTE NM_DEPENDENTE --------------------------------------Paulo S aparecem os objetos sem referncias vlidas
SELECT D.ref_titular.cod_cli as cod_cliente, D.ref_titular.nm_cli as nm_cliente, D.nm_dep as nm_dependente FROM tb_dependente D WHERE D.ref_titular IS NOT DANGLING; COD_CLIENTE NM_CLIENTE NM_DEPENDENTE --------------------------------------C2 Ana Pedro S aparecem os objetos com referncias vlidas
67
67
68
68
SELECT D.ref_titular.cod_cli as cod_cliente, D.ref_titular.nm_cli as nm_cliente, D.nm_dep as nm_dependente FROM tb_dependente D WHERE D.ref_titular IS NOT NULL;
EX:
DROP TABLE tb_dependente; CREATE TABLE tb_dependente OF tp_dependente( cod_dep PRIMARY KEY, nm_dep NOT NULL, ref_titular WITH ROWID REFERENCES tb_cliente);
DANGLING != NULL
69
69
70
DELETE FROM tb_cliente WHERE cod_cli = 'C2' Deve lanar um erro, pois o cliente C2 tem dependente
71
71
72
72
12
11/5/2012
73
73
74
74
75
75
76
76
77
77
13
11/5/2012
79
79
80
81
81
82
82
83
83
84
84
14
11/5/2012
UPDATE tb_lista_fone_contato C SET C.lista_fone = tp_nt_fone ( tp_fone('55', '81', '55555555'), tp_fone('55', '81', '66666666')) WHERE cod_contato = 001 ;
85
86
86
UPDATE TABLE ( SELECT lista_fone FROM tb_lista_fone_contato WHERE cod_contato = 001) F SET F.cod_pais = '66' WHERE F.numero = '66666666';
87 88
87
88
89
89
90
90
15
11/5/2012
91
91
16