You are on page 1of 14

08/09/2011

Marcondes Alexandre

Dois objetivos principais das vises:


Simplificar consultas Autorizao de acesso (segurana)

08/09/2011

Viso: um meio de prover ao usurio um modelo personalizado do banco de dados uma relao que no armazena dados, composta dinamicamente por uma consulta que previamente analisada e otimizada.

Um SGBD pode dar suporte a um grande nmero de vises sobre qualquer conjunto de

relaes

O SGBD armazena a definio da viso, mas ela instanciada quando uma consulta sobre ela for executada
Toda viso pode ser consultada mas nem toda viso pode ser atualizada

08/09/2011

Em SQL uma viso definida como; Create view nomeDaVisao <expresso de consulta>, Onde <expressao de consulta> qualquer expresso de consulta vlida em SQL

Projeto (codProj, tipo, descricao) ProjetoEmpregado (codProj, codEmp, dataInicial, dataFinal) Empregado (codEmp, nome, categoria, salario)

Create view vAltoEscalao as select codEmp, nome, salario from empregado where salario>10000

Esta viso ter os atributos especificados na consulta

08/09/2011

Outra forma

Create view vAltoEscalao (a, b, c) as select codEmp, nome, salario from empregado where salario>10000

Esta viso ter os atributos a, b, c, que sero instanciados com os respectivos valores recuperados pela consulta (codEmp, nome, salario)

Projetos do alto escalo ( viso com vrias tabelas)


Projeto (codProj, tipo, descricao) ProjetoEmpregado (codProj, codEmp, dataInicial, dataFinal) Empregado (codEmp, nome, categoria, salario)

Create view vProjetoAltoEscalao as select e.codEmp, e.nome, e.salario, p.descricao from empregado e, projeto p, projetoEmpregado pe where e.salario>10000 AND e.codEmp=pe.codEmp AND pe.codProj=p.codProj

08/09/2011

Projetos do alto escaloo (viso sobre viso)


Projeto (codProj, tipo, descricao) ProjetoEmpregado (codProj, codEmp, dataInicial, dataFinal) Empregado (codEmp, nome, categoria, salario) vAltoEscalao (codEmp, nome, salario)

Create view vProjetosAltoEscalao as select e.codEmp, a.nome, a.salario, p.descricao from altoEscalao a, projeto p, projetoEmpregado pe where a.codEmp=pe.codEmp AND pe.codProj=p.codProj

Consultas SQL podem ser especificadas sobre a viso

select nome from vProjetosAltoEscalao Where descricao = Projeto A

Uma viso est sempre atualizada: Ao modificar tuplas nas tabelas envolvidas na viso, a viso vai automaticamente refletir as alteraes A viso no realizada quando criada mas quando executamos uma consulta sobre ela

08/09/2011

Quando

uma viso no mais necessria podemos eliminla, usando o comando drop view

DROP VIEW nomeDaVisao

08/09/2011

Objetivo
proteo contra acessos mal intencionados controlar quais dados um usurio/grupo de usurios pode ter acesso controlar quais operaes um usurio/grupo de usurios pode realizar sobre estes dados

Exemplo 1: Em um sistema bancrio, um funcionrio precisa saber os dados dos clientes, mas apenas os que tem conta poupana na agncia 1899-6

Cliente (#codCli, nome, endereco, codCidade) Agencia (#codAgencia, nome, descricao) Poupana (# numConta, # codAgencia, # codCli, saldo)

Exemplo 2: um funcionrio de uma empresa deve ter acesso aos nomes dos funcionrios e aos seus projetos, mas no de ter acesso ao salrio dos funcionrios

Empregado (#codEmp, nome, categoria, salario) Projeto (#codProj, tipo, descricao) ProjetoEmpregado (# codProj, # codEmp, dataInicial, dataFinal)

08/09/2011

Um usurio do Banco de dados pode ter diversas formas de autorizao a partes do BD: O DBA o superusurio do BD, que pode tudo

alguns privilgios so exclusivos dele, como a recuperao do BD, a configurao de parmetros do SGBD, etc. concede/retira (revoga) privilgios de acesso aos outros usurios

Duas formas principais de acesso: Nvel de conta (usurio): o administrador do BD pode dar permisses aos usurios para criar esquemas, modificar e criar tabelas e selecionar dados
O DBA estabelece permisses da conta, independente das relaes do BD

Nvel de relao/viso: o DBA pode controlar o


definidas para SQL Para cada usurio podem ser dadas permisses de leitura(seleo), modificao e referncia

privilgio de acesso de cada usurio a relaes ou vises especficas do BD

08/09/2011

Autorizao de leitura: permite apenas recuperar dados de uma relao


permisso select

Autorizao de modificao: privilgios para insert, delete e update


Para insert e update possvel restringir os

atributos

Autorizao de referncia: uma conta (de usurio) pode fazer referncia a uma relao ao especificar restries de integridade
Pode ser por atributo

Lista basica: alter, delete, index, insert, select e update Sintaxe: Exemplo: grant select on cliente to U1, U2, U3 grant update (saldo) on deposito to U1, U2

grant <lista de privilgios> on <nome da relao ou viso> to <lista de usurios>

08/09/2011

Exemplo 1: Em um sistema bancrio, um funcionrio precisa saber os dados dos clientes, mas apenas os que tem conta poupana na agncia 1899-6

Cliente (codCli, nome, endereco, codCidade)

Soluo: usar views

Agencia (codAgencia, nome, descricao) Poupana ( numConta, # codAgencia, # codCli, saldo)

Create view vClientePoupancaAgencia as select c.codCli, c.nome, p.numConta from cliente c, poupanca p where c.codCli=p.cod_cli and p.codAgencia=1899-6

grant select on vClientePoupancaAgencia to U10

Exemplo 2: um funcionrio de uma empresa deve ter acesso aos nomes dos funcionrios e aos seus projetos, mas no de ter acesso ao salrio dos funcionrios

Create view vEmpregadoProjeto as select e.codEmp, e.nome, p.tipo, p.descricao, j.dataInicial, j.dataFinal from empregado e, projeto p, projetoEmpregado j where e.codEmp=j.codEmp and j.codProj=p.codProj

grant select on vEmpregadoProjeto to U50

Empregado (codEmp, nome, categoria, salario) Projeto (#codProj, tipo, descricao) ProjetoEmpregado (# codProj, # codEmp, dataInicial, dataFinal)

10

08/09/2011

Roles (Papis): so interessantes quando um grupo de usurios tem as mesmas restries de acesso:

ex: vrios caixas de um banco (vrias agncias) tem permisso para creditar e debitar valores na conta dos clientes. Ao invs de dar permisso de incluso, alterao e excluso para cada um dos caixas que tem este direito, cria-se o papel movimentao

Create role movimentaao


E d-se a permisso ao papel Grant insert, update, delete to movimentaao Vincula todos os usuarios ao papel GRANT movimentao TO A, B, C, C

Suponha que o DBA crie 4 contas U1, U2, U3 e U4. 1) Somente U1 deve criar relaes no banco (privilgio de conta)
grant createTab to U1

2) com essa autorizao o usurio U1 pode criar relaes e ter TODOS os privilgios sobre elas
Suponha que U1 criou as relaes
Empregado (codEmp, nome, categoria, salario) Projeto (#codProj, tipo, descricao) ProjetoEmpregado (# codProj, # codEmp, dataInicial, dataFinal)

11

08/09/2011

3) Suponha que U1 quer dar ao usurio U2 permisso para incluir e remover tuplas em Empregado e Projeto 4) Suponha que U1 quer dar ao usurio U3 permisso para recuperar tuplas em Empregado e seja capaz de PROPAGAR este privilgio
grant SELECT ON EMPEGADO TO U3 WITH GRANT OPTION

grant INSERT, DELETE ON EMPEGADO, PROJETO TO U2

Empregado (codEmp, nome, categoria, salario) Projeto (#codProj, tipo, descricao)

4) Agora U3 pode conceder privilgio de seleo para U4 sobre a relao Empregado


grant SELECT ON EMPEGADO TO U4 Obs: U4 no pode propagar este privilgio

5) Suponha que U1 queira revogar a permisso de U3


REVOKE SELECT ON EMPEGADO FROM U4

Empregado (codEmp, nome, categoria, salario) Projeto (#codProj, tipo, descricao)

12

08/09/2011

6)Suponha que U1 queira dar ao usurio U3 permisso apenas para consultar empregados que trabalhem no projeto AATOM.

Create view vEmpregadoProjeto as select e.codEmp, e.nome, e.categoria, e.salario from empregado e, projeto p, projetoEmpregado j where e.codEmp=j.codEmp and j.codProj=p.codProj and p.descricao=AATOM

grant SELECT ON vEMPEGADOProjeto TO U3

Empregado (codEmp, nome, categoria, salario)


Projeto (codProj, tipo, descricao) ProjetoEmpregado (# codProj, # codEmp, dataInicial, dataFinal)

grant all to {listaUsurios | public}

13

08/09/2011

Escreva uma viso que contenha o nome do medico, o nome do paciente e a data da consulta Escreva uma viso que contenha o nome dos mdicos que no atendem em nenhum ambulatrio Escreva uma viso que recupere os funcionrios que nunca consultaram

14