A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Projeto de Sistemas de Informação 2003-2 Prof. Schneider Oracle Object-Relational.

Apresentações semelhantes


Apresentação em tema: "Projeto de Sistemas de Informação 2003-2 Prof. Schneider Oracle Object-Relational."— Transcrição da apresentação:

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!


Carregar ppt "Projeto de Sistemas de Informação 2003-2 Prof. Schneider Oracle Object-Relational."

Apresentações semelhantes


Anúncios Google