Professional Documents
Culture Documents
Marcondes Alexandre
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
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)
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
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
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
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
08/09/2011
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
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
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
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
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
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
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
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