Hierarquia de Visões de Objeto

Post on 24-Jan-2016

25 views 0 download

description

Hierarquia de Visões de Objeto. Vânia Maria Ponte Vidal. Hierarquia de Visões de Objeto. Pessoa_ty. Estudante_ty. Empregado_ty. CREATE VIEW Pessoas_v OF Pessoa_ty AS SELECT. EstudantePós_ty. CREATE VIEW Estudantes_v OF Estudante_ty UNDER Pessoas_v AS SELECT. - PowerPoint PPT Presentation

Transcript of Hierarquia de Visões de Objeto

Hierarquia de Visões de Objeto

Vânia Maria Ponte Vidal

2

Hierarquia de Visões de Objeto

Pessoa_ty

Estudante_ty Empregado_ty

EstudantePós_tyCREATE VIEW Pessoas_v OF Pessoa_ty

AS SELECT ...

CREATE VIEW Estudantes_v OF Estudante_ty UNDER Pessoas_v

AS SELECT ...

3

Hierarquia de Visões de Objeto

Uma consulta a visão Pessoas_v Pode conter objetos do tipo Pessoa_ty e Estudante_ty

Uma sub-visão herda o OID da super visão. A consulta que define a visão determina se a

visão é atualizável. Para uma visão ser atualizável, sua consulta não pode conter: junção, operadores de conjunto, funções de agregação, GROUP BY, DISTINCT, expressões.

Uma mesma hierarquia de visões pode estar baseada em diferentes modelos de armazenamento (FLAT, HORIZONTAL e VERTICAL)

4

Modelo “FLAT”

Tipo Atributos_Pessoa Atributos_Estudante Atributos_Empregado

{1,2,ou 3}Atributos_PessoaVisão Pessoas_V

Atributos_Pessoa Atributos_Empregado

Visão Empregados_V

Atributos_Pessoa Atributos_Estudante

Visão Estudantes_V

Tabela Pessoas

5

Modelo “FLAT”

CREATE TABLE Pessoas ( tipo NUMBER(1), cpf NUMBER, nome VARCHAR2(100), deptid NUMBER, curso NUMBER, empid NUMBER, ger NUMBER);

CREATE TYPE Pessoa_ty AS OBJECT( tipo NUMBER(1), cpf NUMBER, nome VARCHAR2(100)) NOT FINAL;

CREATE TYPE Estudante_ty UNDER Pessoa_ty(deptid NUMBER, curso NUMBER);

CREATE TYPE Empregado_ty UNDER Pessoa_ty(empid NUMBER, ger NUMBER);

6

Modelo “FLAT”CREATE VIEW Pessoas_v OF Pessoa_ty WITH OBJECT OID (cpf) AS SELECT cpf, nome FROM Pessoas WHERE tipo = 1;

CREATE VIEW Empregados_v OF Empregado_ty UNDER Pessoas_v AS SELECT cpf, nome, empid, ger FROM Pessoas WHERE tipo = 3;

CREATE VIEW Estudantes_v OF Estudante_ty UNDER Pessoas_v AS SELECT cpf, nome, deptid, curso FROM Pessoas WHERE tipo = 2;

7

Vantagens Simplicidade Todos os dados de um objeto estão em uma única tabela. Todas os objetos de uma visão de Objeto estão em uma

única tabela. Objetos podem “mudar de tipo” facilmente.

Desvantagens Valores nulos Dificuldades na evolução do esquema (criar novos

atributos ou subtipos) Sutipos têm que ser disjuntos.

Modelo “FLAT”

8

Modelo “Horizontal”

Atributos_Pessoa Atributos_PessoaVisão Pessoas_V

Visão Empregados_V

Visão Estudantes_V

Tabela SóPessoa_ty

Atrib_Pessoa Atrib_Empregado

Tabela SóEmpregado_ty

Tabela SóEstudante_ty

Atrib_Pessoa Atrib_Estudante Atrib_Pessoa Atrib_Estudante

Atrib_Pessoa Atrib_Empregado

9

Modelo “Horizontal”

CREATE TABLE SóPessoa_ty ( cpf NUMBER, nome VARCHAR2(100));

CREATE TABLE SóEstudante_ty( cpf NUMBER, nome VARCHAR2(100), deptid NUMBER, curso NUMBER);

CREATE TABLE SóEmp_ty( cpf NUMBER, nome VARCHAR2(100), empid NUMBER, ger NUMBER);

10

Modelo “Horizontal”

CREATE VIEW Pessoas_v OF Pessoa_ty WITH OBJECT OID (cpf) AS SELECT * FROM SóPessoas;

CREATE VIEW Empregados_v OF Empregado_ty UNDER Pessoas_v AS SELECT * FROM SóEmpregados ;

CREATE VIEW Estudantes_v OF Estudante_ty UNDER Pessoas_v AS SELECT * FROM SóEstudantes;

11

Vantagens Todos os dados de um objeto estão em uma única tabela. evita valores nulos. É muito eficiente para processar consultas da forma:

Modelo “Horizontal”

SELECT VALUE (p) FROM Pessoas_v p

WHERE VALUE(P) IS OF (ONLY Pessoa_ty )

Desvantagens Objetos não podem “mudar de tipo” facilmente.. Não é eficiente para processar consultas da forma:

SELECT * FROM Pessoas_v

12

Modelo “Vertical”

Tipo Atributos_Pessoa Atributos_PessoaVisão Pessoas_V

Visão Empregados_V

Visão Estudantes_V

Tabela Todas_Pessoas

CPF Atrib_Empregado

Tabela Todos_Empregados

Tabela Todos _Estudantes

Atrib_Pessoa Atrib_Estudante

Atrib_Pessoa Atrib_Empregado

{1,2,ou 3}

CPF Atrib_Estudante

13

Modelo “Vertical”

CREATE TABLE Pessoas ( tipo NUMBER(1), cpf NUMBER, nome VARCHAR2(100));

CREATE TABLE Estudantes ( cpf NUMBER, deptid NUMBER, curso NUMBER);

CREATE TABLE Empregados ( cpf NUMBER, empid NUMBER, ger NUMBER);

14

Modelo “vertical”

CREATE VIEW Pessoas_v OF Pessoa_ty WITH OBJECT OID (cpf) AS SELECT cpf, nome FROM Pessoas WHERE tipo = 1;

CREATE VIEW Estudantes_v OF Estudante_ty UNDER Pessoas_v AS SELECT p.cpf, p.nome, e.deptid, e.curso FROM Pessoas p, Estudantes e; WHERE p.tipo=2 AND e.cpf=p.cpf

15

Modelo “vertical”

CREATE VIEW Empregados_v OF Empregado_ty UNDER Pessoas_v AS SELECT p.cpf, p.nome, e.empid, e.ger FROM Pessoas p, Empregados e; WHERE p.tipo=3 AND e.cpf=p.cpf

16

Vantagens Evita valores nulos É muito eficiente para processar consultas da

forma:

Modelo “Horizontal”

SELECT * FROM Pessoas_v

Desvantagens os dados de um objeto estão distribuídos várias tabelas.

Precisa fazer a junção destas tabelas para criar o objeto.