Hierarquia de Visões de Objeto
description
Transcript of Hierarquia de Visões de Objeto
![Page 1: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/1.jpg)
Hierarquia de Visões de Objeto
Vânia Maria Ponte Vidal
![Page 2: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/2.jpg)
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 ...
![Page 3: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/3.jpg)
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)
![Page 4: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/4.jpg)
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
![Page 5: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/5.jpg)
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);
![Page 6: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/6.jpg)
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;
![Page 7: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/7.jpg)
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”
![Page 8: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/8.jpg)
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
![Page 9: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/9.jpg)
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);
![Page 10: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/10.jpg)
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;
![Page 11: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/11.jpg)
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
![Page 12: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/12.jpg)
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
![Page 13: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/13.jpg)
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);
![Page 14: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/14.jpg)
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
![Page 15: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/15.jpg)
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
![Page 16: Hierarquia de Visões de Objeto](https://reader036.fdocumentos.com/reader036/viewer/2022082519/568152e5550346895dc1023b/html5/thumbnails/16.jpg)
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.