Hierarquia de Vises de Objeto Vnia Maria Ponte
Hierarquia de Visões de Objeto Vânia Maria Ponte Vidal Lineu Santos / Wamberg Oliveira
Hierarquia de Visões de Objeto Pessoa_ty Estudante_t y Estudante. Pós _ty Empregado_ ty CREATE VIEW Pessoas_v OF Pessoa_ty AS SELECT. . . CREATE VIEW Estudantes_v OF Estudante_ty UNDER Pessoas_v AS SELECT. . . 2
Hierarquia de Visões de Objeto n n 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) 3
Modelo “FLAT” Tabela Pessoas Tipo Atributos_Pessoa Atributos_Estudante Atributos_Empregado Visão Pessoas_V {1, 2, ou Atributos_Pessoa 3} Visão Empregados_V Atributos_Pessoa Atributos_Empregado Visão Estudantes_V Atributos_Pessoa Atributos_Estudante 4
Modelo “FLAT” CREATE TABLE Pessoas ( tipo NUMBER(1), cpf NUMBER, nome VARCHAR 2(100), deptid NUMBER, curso NUMBER, empid NUMBER, ger NUMBER); CREATE TYPE Pessoa_ty AS OBJECT ( tipo NUMBER(1), cpf NUMBER, nome VARCHAR 2(100)) NOT FINAL; CREATE TYPE Estudante_ty UNDER Pessoa_ty (deptid NUMBER, curso NUMBER); CREATE TYPE Empregado_ty UNDER Pessoa_ty (empid NUMBER, 5
Modelo “FLAT” 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 cpf, nome, deptid, curso FROM Pessoas WHERE tipo = 2; CREATE VIEW Empregados_v OF Empregado_ty UNDER Pessoas_v AS SELECT cpf, nome, empid, ger FROM Pessoas 6
Modelo “FLAT” n Vantagens n n n 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 n n n Valores nulos Dificuldades na evolução do esquema (criar novos atributos ou subtipos) Sutipos têm que ser disjuntos. 7
Modelo “Horizontal” Tabela SóPessoa_ty Atributos_Pesso a Tabela SóEmpregado_ty Atrib_Pessoa Atrib_Empregado Tabela SóEstudante_ty Atrib_Pessoa Atrib_Estudante Visão Pessoas_V Atributos_Pessoa Visão Empregados_V Atrib_Pessoa Atrib_Empregado Visão Estudantes_V Atrib_Pessoa Atrib_Estudante 8
Modelo “Horizontal” CREATE TABLE SóPessoa_ty ( cpf NUMBER, nome VARCHAR 2(100)); CREATE TABLE SóEmp_ty ( cpf NUMBER, nome VARCHAR 2(100), empid NUMBER, ger NUMBER); CREATE TABLE SóEstudante_ty ( cpf NUMBER, nome VARCHAR 2(100), deptid NUMBER, curso NUMBER); 9
Modelo “Horizontal” CREATE VIEW Pessoas_v OF Pessoa_ty WITH OBJECT OID (cpf) AS SELECT * FROM SóPessoas; CREATE VIEW Estudantes_v OF Estudante_ty UNDER Pessoas_v AS SELECT * FROM SóEstudantes; CREATE VIEW Empregados_v OF Empregado_ty UNDER Pessoas_v AS SELECT * FROM SóEmpregados ; 10
Modelo “Horizontal” n Vantagens n n n Todos os dados de um objeto estão em uma única tabela. evita valores nulos. É muito eficiente para processar consultas da forma: SELECT VALUE (p) FROM Pessoas_v p WHERE VALUE(P) IS OF (ONLY Pessoa_ty ) n Desvantagens n Objetos não podem “mudar de tipo” facilmente. . n Não é eficiente para processar consultas da forma: SELECT * FROM Pessoas_v 11
Modelo “Vertical” Tabela Todas_Pessoas Tipo Atributos_Pessoa {1, 2, ou 3} Tabela Todos_Empregados CPF Atrib_Empregado Tabela Todos _Estudantes CPF Atrib_Estudante Visão Pessoas_V Atributos_Pessoa Visão Empregados_V Atrib_Pessoa Atrib_Empregado Visão Estudantes_V Atrib_Pessoa Atrib_Estudante 12
Modelo “Vertical” CREATE TABLE Pessoas ( tipo NUMBER(1), cpf NUMBER, nome VARCHAR 2(100)); CREATE TABLE Estudantes ( cpf NUMBER, deptid NUMBER, curso NUMBER); CREATE TABLE Empregados ( cpf NUMBER, empid NUMBER, ger NUMBER); 13
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 14
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 15
Modelo “Horizontal” n Vantagens Evita valores nulos É muito eficiente para processar consultas da forma: n n SELECT * FROM Pessoas_v n Desvantagens n os dados de um objeto estão distribuídos várias tabelas. Precisa fazer a junção destas tabelas para criar o objeto. 16
- Slides: 16