Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouStéphanie Lindo Alterado mais de 9 anos atrás
1
Projeto de Sistemas de Informação 2003-2 Prof. Schneider Oracle Object-Relational
2
Necessidades: – Projetos de engenharia – Imagens – Bancos de dados científicos – Sistemas de informações geográficas – Multimídia SGBD Orientado a Objetos
3
Vantagens: - Objetos podem encapsular operações além dos dados. - Objetos são reutilizáveis. - Objetos têm maior significado. SGBD Orientado a Objetos
4
Possibilidades no Oracle9i (“Views” ou tipos “nativos”) Object views Visões criadas sobre dados relacionais existentes, “convertendo-os” para a modelagem a objetos.
5
Possibilidades no Oracle9i (“Views” ou tipos “nativos”) CREATE TABLE EMP ( ID NUMBER (5), NOME VARCHAR2 (20), SALARIO NUMBER (9,2) ); CREATE TYPE T_EMP ( ID NUMBER (5), NOME VARCHAR2 (20), SALARIO NUMBER (9,2) );
6
Possibilidades no Oracle9i (“Views” ou tipos “nativos”) CREATE VIEW V_EMP OF T_EMP WITH OBJECT IDENTIFIER (ID) AS SELECT E.ID, E.NOME, E.SALARIO FROM EMP E WHERE E.SALARIO > 2000
7
Possibilidades no Oracle9i (“Views” ou tipos “nativos”) Object tables Armazenamento de dados como Object: cada linha é um objeto.
8
Possibilidades no Oracle9i (“Views” ou tipos “nativos”) CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2 (50), TELEFONE VARCHAR2 (20) ); CREATE TABLE TAB_PESSOA OF T_PESSOA;
9
Possibilidades no Oracle9i Herança de tipos – Aumenta a capacidade de reutilização – Hierarquia de tipos com um ancestral comum genérico – Permite adicionar novos atributos e métodos – Permite alterar a implementação de métodos
10
Possibilidades no Oracle9i CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(50), TELEFONES T_TELEFONES, DATA_NASCIMENTO DATE,... ) NOT FINAL; CREATE TYPE T_ALUNO UNDER T_PESSOA ( DRE NOME VARCHAR2(15),... );
11
Possibilidades no Oracle9i Evolução de tipos (ALTER TYPE) – Adicionar ou apagar atributos e métodos – Modificar tamanho ou precisão de atributos. – Validações ao alterar
12
Possibilidades no Oracle9i (Coleções) Varrays – Coleção ordenada de elementos: posição de cada elemento tem um índice. – Máximo número de elementos definido na hora da criação. (pode ser alterado posteriormente)
13
Possibilidades no Oracle9i (Coleções) CREATE TYPE T_TELEFONES AS VARRAY(3) OF VARCHAR2(20); CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(50), TELEFONES T_TELEFONES, DATA_NASCIMENTO DATE,... );
14
Possibilidades no Oracle9i (Coleções) Nested tables – Número indefinido de elementos. – Ordem não preservada.
15
Possibilidades no Oracle9i (Coleções) CREATE TYPE T_TELEFONES AS TABLE OF T_TELEFONE; CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(50), TELEFONES T_TELEFONES, DATA_NASCIMENTO DATE,... ) NESTED TABLE TELEFONES STORE AS TAB_TELEFONES;
16
Possibilidades no Oracle9i (JDBC) Classes Java correspondendo a classes do Oracle permitem que você trabalhe com muito mais eficiência. Classes Java criadas implementando as interfaces oracle.sql.CustomDatum ou oracle.jdbc2.SQLData
17
Extensão da Linguagem SQL Exemplo de aplicação CREATE TYPE T_ESTADO AS OBJECT ( NM_ESTADO CARCHAR2(70), SG_ESTADO VARCHAR2(2) ) CREATE TYPE T_CIDADE AS OBJECT ( NM_CIDADE VARCHAR2(70), REF_ESTADO REF T_ESTADO ) CREATE TYPE T_BAIRRO AS OBJECT ( NM_BAIRRO VARCHAR2(70), REF_CIDADE REF T_CIDADE )
18
Extensão da Linguagem SQL Exemplo de aplicação CREATE TABLE ESTADO OF T_ESTADO; CREATE TABLE CIDADE OF T_CIDADE; CREATE TABLE BAIRRO OF T_BAIRRO;
19
Extensão da Linguagem SQL Exemplo de aplicação INSERT INTO ESTADO VALUES (‘Rio de Janeiro’, ‘RJ’) INSERT INTO CIDADE VALUES (‘Rio de Janeiro’, (SELECT REF(P) FROM ESTADO P WHERE SG_ESTADO = ‘RJ’) ) INSERT INTO BAIRRO VALUES (‘Vila Isabel’, (SELECT REF(P) FROM CIDADE P WHERE NM_CIDADE = ‘Rio de Janeiro’) )
20
Extensão da Linguagem SQL Exemplo de aplicação SELECT NM_ESTADO, SG_ESTADO FROM ESTADO; SELECT B.NM_BAIRRO FROM BAIRRO B WHERE DEREF(B.REF_CIDADE).NM_CIDADE = ‘Rio de Janeiro’;
21
Extensão da Linguagem SQL Exemplo de aplicação SELECT DEREF(B.REF_CIDADE).NM_CIDADE, DEREF(DEREF(B.REF_CIDADE).REF_ESTADO).NM_ESTADO FROM BAIRRO B WHERE B.NM_BAIRRO = ‘Vila Isabel’;
22
Eiffel Persistência – Possui mecanismos próprios que possibilitam a persistência de objetos Classe Storable Classe Environment EiffelStore
23
Eiffel Classe Storable – Grava o objeto e todos os outros objetos referenciados por ele direta ou indiretamente – Métodos restore_by_name retrieve_by_name basic_store retrieved
24
Eiffel Classe Environment – Armazena diversos objetos – Métodos open close set_file(f) store retrieve
25
Eiffel Classe Environment – Métodos (cont.) put (objeto, chave_do_objeto) – Recuperando um objeto: objeto ?= env.item(chave_do_objeto)
26
Eiffel EiffelStore – API que permite a persistência de objetos em diversos SGBDs relacionais e OO ODBC Oracle Sybase Matisse etc.
27
Eiffel Sybase EiffelStore ODBCOracle Classe Storable etc
28
Eiffel Conjunto de classes comuns a todos os SGBDs Classes específicas para cada SGDB
29
Eiffel Classe DBControl – Métodos: connect disconnect commit rollback
30
Eiffel Outras classes – DB_SELECTION – DB_CHANGE – DB_STORE – REPOSITORY
31
Eiffel class SESSION feature db_handle: ORACLE_APPL session_control: DB_CONTROL make is do !!db_handle.login (...) db_handle.set_base !!session_control.make session_control.connect -- session_control.commit session_control.disconnect rescue session_control.roll_back session_control.disconnect end --... end -- class SESSION
32
Eiffel Exemplo de consulta simples: selection: DB_SELECTION tuple: DB_TUPLE -... !!selection.make io.readline selection.set_map_name (io.laststring, ”autor") selection.query ("select * from LIVRO where AUTOR = :autor") selection.load_result !!tuple tuple.copy (selection.cursor) --... selection.unset_map_name (”autor")
33
Eiffel Exemplo de alteração, inclusão e exclusão: modification: DB_CHANGE !!modification.make modification.modify ("update LIVRO % %set AUTOR = ‘FULANO’ where ISBN = ‘111.222.333’ ”) modification.modify ("insert into LIVRO % %values (’BELTRANO’, ‘222.333.111’) ") modification.modify ("delete from LIVRO where % %AUTOR = ‘CICRANO’ ")
34
Eiffel Mapeamento de objetos em tabelas – Nome do atributo do objeto = nome coluna da tabela – Tipo do atributo do objeto = tipo coluna da tabela (INTEGER, REAL, DOUBLE, BOOLEAN, CHARACTER, STRING, ABSOLUTE_DATE)
35
Eiffel Carregando um objeto selection: DB_SELECTION um_aluno: ALUNO... !!selection.make selection.object_convert (um_aluno) selection.query ("select * from TB_ALUNO") selection.load_result selection.cursor_to_object
36
Eiffel Armazenando um objeto storage: DB_STORE tabela_aluno: DB_REPOSITORY um_aluno: ALUNO !!tabela_aluno.make (”TB_ALUNO")... tabela_aluno.load... !!storage.make storage.set_repository (tabela_aluno)... storage.put (um_aluno)...
37
Eiffel FIM!
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.