ACH2025. Aula 11. Visões. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

Documentos relacionados
ACH2025. Laboratóriode Bases de Dados. SQL Oracle Asserçõese gatilhos. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

BANCO DE DADOS. SQL Select. Engenharia da Computação. Aula 20. Vamos considerar a tabela EMP para os exemplos a seguir. SELECT colunas FROM tabelas;

Laboratório de Banco de Dados II Aula 04. Prof. Érick de Souza Carvalho

ACH2025. Laboratório de Bases de Dados. SQL Oracle Visão geral SELECT. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

S U B G R U P O S D M L E D Q L : A L T E R A N D O E A P A G A N D O D A D O S E M U M A T A B E L A

Banco de Dados II. Aula do dia 10/03. Revisão. SQL Estudado até o dia 03/03/2011

Page 1. Prof. Constantino Jacob

SQL. Índices, views e restrições. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

BCD29008 Banco de dados

mod._1_teoria_sistemas de bancos de dados.doc

SQL CREATE MATERIALIZED VIEW. Processamento Analítico de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. OLAP: Modelagem Multidimensional

Visões ... Esquema Externo n. Esquema Externo 1. Esquema Lógico. Usuários finais/aplicações

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

A lista abaixo possui funções especiais, que em alguns contextos podem ser enquadradas como "pseudo-colunas" da tabela.

Banco de Dados I Introdução SQL

SISTEMAS DE INFORMAÇÃO BANCO DE DADOS SQL PROF: EDSON THIZON

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro

Banco de Dados I. Aula 17 - Prof. Bruno Moreno 08/11/2011

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

SISTEMAS DE INFORMAÇÃO BANCO DE DADOS 2. SQL (Select) PROF: EDSON THIZON

ACH2025. Laboratório de Bases de Dados Aula 5. SQL Oracle Visão geral. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

BANCO DE DADOS II SQL Básico. COTEMIG Gerson Borges

Revisão Banco de Dados

Benvindo ao Curso de Introdução ao Firebird com Ferramenta de Relatórios!

Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD.

Monitoria GDI. Aula Prática. OR (Aula 1)

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

BANCO DE DADOS SQL (DML: SELECT, INSERT, UPDATE, DELETE)

SQL-99: Esquema de BD EMPRESA

Triggers(Gatilhos) Tiago Alves de Oliveira

SQL. Prof. Roger Cristhian Gomes

Modelagem Multidimensional - Nível Físico -

BANCO DE DADOS GERENCIAL 1 A U L A 2

BANCO DE DADOS PARA NINJAS

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

Álgebra Relacional e Cálculo Relacional

Manipulação de Dados com SQL

modelo introduzido por E. F. Codd Meados da década de 70: protótipos. INGRES (UC Berkeley, 73 77) System R (IBM Research at San Jose, 74 78)

O Modelo Relacional. Criando relações em SQL

Controle de Transações. Banco de Dados André Luiz do Vale Soares

SQL Linguagem de Definição de Dados

Banco de dados. Conteúdo: Modelo relacional Prof. Patrícia Lucas

O Modelo Relacional. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento)

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

Operações fundamentais são suficientes para expressar qualquer consulta. Problema: consultas muito longas. Solução: definição de operações adicionais

Linguagem SQL Restrições, Triggers e Views

Rápida revisão do Modelo Relacional

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

1º Teste Sem consulta

Banco de Dados I. Aula 14 - Prof. Bruno Moreno 11/10/2011

Sistemas de Informação e Bases de Dados 2012/2013. Restrições de Integridade em SQL

Administração de Banco de Dados

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

Prova de Tecnologia da Informação

Administração de Banco de Dados

SISTEMAS DE INFORMAÇÃO BANCO DE DADOS SQL PROF: EDSON THIZON

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Marcelo Henrique dos Santos

Modelo Relacional. Banco de Dados 2º trimestre Prof. Patrícia Lucas

Introdução ao PostgreSQL

Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 20. Escola Politécnica da Universidade de São Paulo

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

Introdução ao Banco de Dados. Banco de Dados

L Q S m e g a u g n Li A

Capítulo 3 Modelo Relacional

Banco de Dados. Professora: Luciana Faria

Tabelas. Banco de Dados I MySQL

Banco de Dados. Banco de Dados II. Característica fundamental de SGBDs. Abordagem SGBD x Processamento de Arquivos Tradicional

ACH2025. Laboratório de Bases de Dados Aula 15. Processamento de Consultas Parte 2 Otimização. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

Implementação de BDs Temporais

Roteiro. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

Integridade dos Dados

Matéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Bancos de Dados Aula #2 - Modelos Conceituais de Dados

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

E-BOOK GUIA RÁPIDO DE SQL W W W. T R E I N A W E B.C O M. B R

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

Banco de Dados I. Aula 16 - Prof. Bruno Moreno 04/11/2011

Triggers em SQLite. Fernando Lobo. Base de Dados, Universidade do Algarve

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

Administração de BD. José Antônio da Cunha CEFET-RN

Informática I. Aula 8. Aula 8-25/09/2006 1

Uniao Educacional e Tecnologica Impacta- Uni Impacta

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

C A P I T U L O 10 F U N Ç Õ E S I N T E R N A S P H P P A R A B A N C O D E D A D O S

Introdução a Bancos de Dados

A linguagem SQL

14/9/2009. Banco de Dados

Introdução ao Modelo Relacional

Banco de Dados I Módulo III: Linguagens de Consulta. (Aula 1) Clodis Boscarioli

Transcrição:

ACH2025 Laboratório de Bases de Dados Aula 11 Visões Professora: Fátima L. S. Nunes

Introdução Nos exemplos mostrados nas aulas anteriores, consideramos o modelo lógico relações usadas são aquelas reais, armazenadas no BD. Todos os usuários podem ver o modelo lógico inteiro?

Introdução Nos exemplos mostrados nas aulas anteriores, consideramos o modelo lógico relações usadas são aquelas reais, armazenadas no BD. Todos os usuários podem ver o modelo lógico inteiro? NÃO!!!!!!!!! Por exemplo: não posso permitir que qualquer funcionário saiba o salário de todos os funcionários da empresa!

Introdução Nos exemplos mostrados nas aulas anteriores, consideramos o modelo lógico relações usadas são aquelas reais, armazenadas no BD. Todos os usuários podem ver o modelo lógico inteiro? NÃO!!!!!!!!! Por exemplo: não posso permitir que qualquer funcionário saiba o salário de todos os funcionários da empresa! Qualquer relação que não seja parte do modelo lógico, mas que é visível a um usuário como uma relação virtual, é chamada de view.

Visões Segurança do BD é desejável filtrar as informações do BD cada categoria de usuário deve enxergar somente a parte que lhe é permitida. Visões permitem esta diferenciação. Visão 1 Visão 2... Visão N Nível Conceitual Nível Físico

Definição de visões em SQL Comando create view. Sintaxe: create view v as <expressões de consulta> v é o nome da visão <expressões de consulta> é uma expressão de consulta válida em SQL.

Visões Exemplos: Conta (numero_conta, nome_cliente, saldo,codigo_agencia) Agencia (codigo_agencia, nome_agencia, cidade) Emprestimo (numero_emprestimo nome_cliente, valor, codigo_agencia) Criar uma visão consistindo de agências e seus clientes. create view Clientes_agencia as (select nome_agencia,nome_cliente from conta, agencia where conta.codigo_agencia = agencia.codigo_agencia) UNION (select nome_agencia,nome_cliente from emprestimo, agencia where emprestimo.codigo_agencia = agencia.codigo_agencia)

Visões Visão definida pode usar o seu nome para fazer referência à relação virtual criada por essa visão. Exemplos: Usando a visão Clientes_agencia criada, selecionar todos os clientes da agência Centro. Clientes_agencia (nome_agencia, nome_cliente) select nome_cliente from clientes_agencia where nome_agencia= CENTRO ;

Visões Nomes de atributos de uma view podem ser especificados de forma explícita: Exemplos: Agencia (codigo_agencia, nome_agencia, cidade) Emprestimo (numero_emprestimo nome_cliente, valor, codigo_agencia) create view emprestimo_total_agencia (nome_agencia, emprestimo_total) as select nome_agencia,sum(valor) from emprestimo,agencia where emprestimo.codigo_agencia = agencia.codigo_agencia) group by nome_agencia;

Visões X Tabelas A definição de visão é diferente da operação de criação de uma nova tabela a partir de outra. Exemplo: A partir da tabela EMP, crie uma tabela denominada empdep10 que contenha os números, nomes e cargos de todos funcionários do departamento 10. SQL> desc emp; Nome Nulo? Tipo ------------------------------------- -------- ---------------------- EMPNO NOT NULL NUMBER(4) JOB VARCHAR2(20) ENAME VARCHAR2(40) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) MGR NUMBER(4)

Visões X Tabelas A definição de visão é diferente da operação de criação de uma nova tabela a partir de outra. Exemplo: create table empdep10 as select empno,ename,job from emp where deptno=10; desc empdep10 Name Null? Type ------------------------------- -------- ---- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9)

Visões X Tabelas A definição de visão é diferente da operação de criação de uma nova tabela a partir de outra. Exemplo: create table empdep10 as select empno,ename,job from emp where deptno=10; select * from empdep10; EMPNO ENAME JOB --------- ---------- --------- 7839 KING PRESIDENT 7782 CLARK MANAGER 7934 MILLER CLERK

Visões X Tabelas A definição de visão é diferente da operação de criação de uma nova tabela a partir de outra. Exemplo: A partir da tabela EMP, crie uma visão denominada vempdep10 que contenha os números, nomes e cargos de todos funcionários do departamento 10. SQL> desc emp; Nome Nulo? Tipo ------------------------------------- -------- ---------------------- EMPNO NOT NULL NUMBER(4) JOB VARCHAR2(20) ENAME VARCHAR2(40) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) MGR NUMBER(4)

Visões X Tabelas A definição de visão é diferente da operação de criação de uma nova tabela a partir de outra. Exemplo: create view vempdep10 as select empno,ename,job from emp where deptno=10; desc vempdep10 Name Null? Type ------------------------------- -------- ---- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9)

Visões X Tabelas A definição de visão é diferente da operação de criação de uma nova tabela a partir de outra. Exemplo: create view vempdep10 as select empno,ename,job from emp where deptno=10; select * from vempdep10; EMPNO ENAME JOB --------- ---------- --------- 7839 KING PRESIDENT 7782 CLARK MANAGER 7934 MILLER CLERK

Visões X Tabelas A definição de visão é diferente da operação de criação de uma nova tabela a partir de outra. Exemplo: create table empdep10 as select empno,ename,job from emp where deptno=10; create view vempdept10 as select empno,ename,job from emp where deptno=10; Qual é a diferença???

Visões X Tabelas Quando uma visão é definida, o SGBD armazena a sua definição propriamente dita, em vez do resultado da expressão que a gerou. Sempre que uma consulta é desenvolvida, a relação visão é recalculada. Vantagens e desvantagens?

Visões X Tabelas Quando uma visão é definida, o SGBD armazena a sua definição propriamente dita, em vez do resultado da expressão que a gerou. Sempre que uma consulta é desenvolvida, a relação visão é recalculada. Vantagens e desvantagens? view está sempre atualizada mesmo que tabelas sejam modificadas; view exige maior tempo de processamento.

Visões X Tabelas Alguns SGBDs permitem que relações de visões sejam armazenadas visões materializadas: consultas baseadas nessas visões têm tempo de resposta menor; maior custo de armazenamento e atualizações.

Visões Nomes das views podem aparecer em qualquer lugar onde um nome de relação pode aparecer. Mas, como ficam as atualizações?

Visões Nomes das views podem aparecer em qualquer lugar onde um nome de relação pode aparecer. Mas, como ficam as atualizações? Em princípio, nenhuma operação de atualização pode ser executada em uma view. Por quê?

Atualizações em Visões Devido à definição de visões atualizações podem gerar problemas no esquema do BD. Atualização em uma visão reflete atualizações nas relações envolvidas. Problema atualizações indevidas ou incompletas.

Atualizações em Visões Exemplo: create view Clientes_agencia as (select nome_agencia,nome_cliente from conta, agencia where conta.codigo_agencia = agencia.codigo_agencia) UNION (select nome_agencia,nome_cliente from emprestimo, agencia where emprestimo.codigo_agencia = agencia.codigo_agencia) O usuário poderia escrever: insert into Clientes_agencia values ( Acapulco, Manoel )

Atualizações em Visões Exemplo: O usuário poderia escrever: insert into Clientes_agencia values ( Acapulco, Manoel ) Relações envolvidas na definição da view: Conta (numero-conta, nome_cliente, saldo,codigo_agencia) Agencia (codigo_agencia, nome_agencia, cidade) O que aconteceria???

Atualizações em Visões Exemplo: O usuário poderia escrever: insert into Clientes_agencia values ( Acapulco, Manoel ) Relações envolvidas na definição da view: Conta (numero-conta, nome_cliente, saldo,codigo_agencia) Agencia (codigo_agencia, nome_agencia, cidade) Isto significa criar tuplas em conta e agência com alguns atributos nulos! Conta: (nulo, Manoel,nulo,nulo) Agencia: (nulo, Acapulco,nulo) Problemático!!

Atualizações em Visões Por problemas como esses, não são permitidas atualizações em visões na maioria dos SGBDs!!

Visões a partir de visões É possível criar novas visões a partir de visões já existentes. create view Clientes_agencia as (select nome_agencia,nome_cliente from conta, agencia where conta.codigo_agencia = agencia.codigo_agencia) UNION (select nome_agencia,nome_cliente from emprestimo, agencia where emprestimo.codigo_agencia = agencia.codigo_agencia); create view Clientes_centro as (select nome_cliente from Clientes_agencia where nome_agencia = CENTRO );

Visões a partir de visões Ao processo de criar uma view a partir de outras views dá-se o nome de expansão de views. O processo considera que as definições de views não são recursivas: nenhuma view é usada em sua própria definição direta ou indiretamente. O que de fato acontece na expansão de views? O que o SGBD faz?

Visões a partir de visões create view Clientes_centro as (select nome_cliente from Clientes_agencia where nome_agencia = CENTRO ); create view Clientes_centro as (select nome_cliente from ((select nome_agencia,nome_cliente from conta, agencia where conta.codigo_agencia = agencia.codigo_agencia) UNION (select nome_agencia,nome_cliente from emprestimo, agencia where emprestimo.codigo_agencia= agencia.codigo_agencia)) where nome_agencia = CENTRO );

Visões a partir de visões Uma visão v 1 é diretamente dependente de uma visão v 2 se v 2 é usada na expressão que define v 1. Uma visão v 1 é dependente de uma visão v 2 se existir um caminho no gráfico de dependência de v 2 para v 1. Gráfico de dependência: Clientes_centro Clientes_agencia Conta Empréstimo

Exercícios Considere os seguintes esquemas de relação: Professor (número-prof, profnome, profrua, profcidade) Aluno (número-aluno, alunome, alurua, alucidade) Matrícula (número-aluno,código-disc,ano) Disciplina (código-disc,nome-disciplina,nome-curso, quantidade de aulas) ProfDisc (código-disc,número-prof, ano) 1. Crie uma visão com todas as disciplinas oferecidas neste ano, constando os nomes das disciplinas, nomes e cidades dos professores responsáveis e nomes dos cursos das disciplinas que os professores ministram. 2. A partir da visão criada no exercício 1, mostre todos os nomes dos professores do curso de Sistemas de Informação do ano corrente e os nomes das disciplinas pelas quais são responsáveis. 3. Crie uma visão com todos os nomes de alunos matriculados no ano corrente os nomes das disciplinas em que estão matriculados, a cidade onde moram e os nomes dos cursos das disciplinas. 4. A partir das visões criadas, mostre todos os alunos de Manaus que cursam disciplina s do Curso de Sistemas de Informação no ano corrente. 5. A partir das visões criadas, mostre os nomes de todos os professores que não moram em São Paulo e que ministram alguma disciplina no curso de Sistemas de Informação. 6. Crie uma visão com os dados dos professores (número e nome) e a quantidade total de aulas que ministram.

Exercícios Considere os seguintes esquemas de relação: Professor (número-prof, profnome, profrua, profcidade) Aluno (número-aluno, alunome, alurua, alucidade) Matrícula (número-aluno,código-disc,ano) Disciplina (código-disc,nome-disciplina,nome-curso, quantidade de aulas) ProfDisc (código-disc,número-prof, ano) 7. Crie uma visão com o nome dos professores o total de aulas que ministram em cada curso. A visão deve conter o número e nome do professor, o nome do curso e o total de aulas no curso. 8. A partir da visão criada, mostre o total de aulas de cada professor no curso de Sistemas de Informação. 9. Crie uma visão com o nome do aluno, nome do curso, código e nome das disciplinas matriculadas no ano corrente. 10. A partir da visão criada, mostre e a quantidade total de disciplinas de cada aluno do curso de Sistemas de Informação no ano corrente. 11. A partir da visão criada, mostre o total de alunos matriculados no curso de Sistemas de Informação no ano corrente. 12. O que acontece com as visões criadas se matricularmos a aluna Michele Silva na disciplina 986? Quais visões seriam afetadas? 13. O que acontece com as visões criadas se atribuirmos a disciplina Estruturas de Dados para o professor Carlos? Quais visões seriam afetadas? 14. Faça um gráfico de dependência das visões criadas nos exercícios anteriores.

ACH2025 Laboratório de Bases de Dados Aula 11 Visões Professora: Fátima L. S. Nunes