Visões Visão tabela derivada a partir das tabelas do BD tabela virtual

Slides:



Advertisements
Apresentações semelhantes
Ana Paula B. Barboza Ivana Xavier Rodrigues
Advertisements

O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Banco de Dados Prof. Antonio.
SQL Renata Viegas.
Segurança Renata Viegas.
SQL Avançado Continuação
SQL Structured Query Language (continuação)
Prof.: Bruno Rafael de Oliveira Rodrigues
Prof.: Bruno Rafael de Oliveira Rodrigues
Banco de Dados SQL TRIGGERS (Gatilhos)
SISTEMAS DE INFORMAÇÃO
Disciplina Banco de Dados II Segurança em BD
Visões Marilde Santos.
SQL Structured Query Language Juliano Brito da Justa Neves PESCD – Programa de Estágio Supervisionado de Capacitação Docente.
Maurício Edgar Stivanello
SGBD.
Sistema Gerenciador de Banco de Dados SGBD
Sistema Gerenciador de Banco de Dados SGBD
Exemplo Hospitalar Exemplo: BD para uma realidade hospitalar
Restrições de Integridade
Subconsultas ou Consultas Aninhadas
SQL – DML Consultas envolvendo relacionamentos entre tabelas
Ordenação de Resultados
Introdução à Engenharia da Computação
SCC Bancos de Dados e Suas Aplicações
Conceitos Básicos Dado: fato do mundo real que está registrado e possui um significado implícito no contexto de um domínio de aplicação Exemplos: endereço,
Material III-Bimestre Wagner Santos C. de Jesus
FRB - Maio 2002MCS9–1 Regras (Restrições) de Integridade Sistemas comerciais relacionais são muito finos de restrições para garantir a qualidade dos dados.
Linguagem de Banco de Dados - SQL
Alertas de Segurança e Vigilância
Banco de dados Profª Kelly Medeiros.
PostgreSQL.
1 SQL (Structured Query Language) Linguagem padrão usada em BD relacionais –SQL1 ou SQL-86: primeira versão do padrão. –SQL2 ou SQL-92: versão usada atualmente.
Usuário de SGBD Álvaro Vinícius de Souza Coêlho
SQL Álvaro Vinícius de Souza Coêlho
Capítulo 24 Segurança de banco de dados
Capítulo 6: Integridade e Segurança
BANCO DE DADOS UNIVERSIDADE ESTADUAL DE SANTA CRUZ
Design Patterns / Acesso ao banco de dados (java.sql)
Tipos de Linguagens do Banco de Dados
(Linguagem de Consulta Estruturada)
Desenvolvendo um script SQL
VIEW - VISÕES Professor Esp. Diego André Sant’Ana
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
Banco de dados.
Treinamento PHP Módulo 2 PHP Avançado Waelson Negreiros waelson.com.br “Está conosco o Senhor dos Exércitos”
Baseado no material do Professor Raul Paradeda
REVISÃO Comandos SQL - DML SELECT * FROM ?.
Banco de Dados Aplicado ao Desenvolvimento de Software
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
SCC Bancos de Dados e Suas Aplicações
Banco de Dados I I Comandos SQL
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
SQL (Structured Query Language)
SQL – DML Consultas envolvendo mais de uma tabela
Subconsulta na Cláusula FROM
Subconsultas ou Consultas Aninhadas Forma alternativa de especificar consultas envolvendo relacionamentos entre tabelas Otimização –filtragens prévias.
Sumário 1 Processamento de Consultas 2 Introdução a Transações
Conceitos básicos Professor Esp. Diego André Sant’Ana
Professor Me. Jeferson Bussula Pinheiro.
Daniel Paulo Introdução Neste capítulo trataremos a relação entre tabelas e FILEGROUPS, bem como a alocação interna de dados.
Daniel Paulo SQL Server 2014 Módulo II Daniel Paulo
UCSal – Bacharelado em Informática
VBA – Visual Basic para Aplicativos
Linguagem de definição de dados - SQL
BD SQL (Insert, Update, Delete) e Select Hayslan Nicolas Colicheski Bucarth – IFRO / 2015 –
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
1 Programação de Banco de Dados José Antônio da Cunha George Azevedo da Silva.
Prática de Banco de Dados Créditos: Prof. Jefferson Silva Adaptações: Prof. Nécio de Lima Veras.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 5 Mais SQL: Consultas Complexas, Triggers e Views.
Transcrição da apresentação:

Visões Visão tabela derivada a partir das tabelas do BD tabela virtual isto é transparente para usuários e aplicações visões são manipuladas como tabelas normais do BD Visões fazem parte dos esquemas externos da arquitetura de um SGBD Usuários finais/Aplicações . . . Esquema Externo 1 Esquema Externo n Esquema Lógico

Definição de Visões Exemplo Definição em SQL o setor de câncer do hospital lida apenas com dados de pacientes que têm esta doença Definição em SQL create view PacCâncer (código, paciente, idade) as select codp, nome, idade from Pacientes where problema = ‘câncer’; tabela base

Definição de Visões Especificação da visão mantida no DD a consulta que a define Definições recursivas são permitidas create view PacCanJovens as select * from PacCâncer where idade < 21; Dependência Visão X Tabela/Visão Base drop {table | view} nome [restrict | cascade] SQL padrão (não vale para o SQL-Server!)

Operações DML sobre Visões São executadas na(s) tabela(s) base Exemplos select * select codp, nome, idade from PacCâncer from Pacientes where paciente like ‘J%’; where problema = ‘câncer’ and nome like ‘J%’; delete from PacCâncer delete from Pacientes where idade > 90; where problema = ‘câncer’ and idade > 90; Considerações toda visão é passível de consulta nem toda a visão é passível de atualização

Atualização de Visões Situação 1 I / A nas visões DadosMed e Horários? create view DadosMed as select codm, nome, RG, especialidade from Médicos; create view Horários as select data, hora from Consultas; I / A nas visões DadosMed e Horários?

Atualização de Visões Situação 1 Conclusão 1 create view DadosMed as select codm, nome, RG, especialidade from Médicos; create view Horários as select data, hora from Consultas; I nas visões DadosMed e Horários? Conclusão 1 uma visão atualizável deve preservar a chave primária da tabela base mapeamento 1-1 entre tupla da visão e tupla da base

Atualização de Visões Situação 2 I / A na visão ConsultasMedPac? create view ConsultasMedPac (med, pac, nroConsultas) as select codm, codp, count(*) from Consultas group by codm,codp; I / A na visão ConsultasMedPac?

Atualização de Visões Situação 2 Conclusão 2 create view ConsultasMedPac (med, pac, nroConsultas) as select codm, codp, count(*) from Consultas group by codm,codp; I / A na visão ConsultasMedPac? Conclusão 2 uma visão atualizável deve conter atributos que tenham correspondência direta com atributos da tabela base mapeamento 1-1 entre atributo da visão e atributo da tabela base

Atualização de Visões Situação 3 supor que a chave primária na tabela Consultas é (codm, codp, data, hora) create view ConsultasMP (codigoM, especialidade, codigoP, data) as select Médicos.codm, especialidade, codp, data from Médicos join Consultas on Médicos.codm = Consultas.codm;

Atualização de Visões Situação 3 intenção 1: marcação de uma consulta create view ConsultasMP (codigoM, especialidade, codigoP, data) as select Médicos.codm, especialidade, codp, data from Médicos join Consultas on Médicos.codm = Consultas.codm; intenção 1: marcação de uma consulta insert into ConsultasMP values (2, ’pediatria’, 3, ’12/10/03’);

Atualização de Visões Situação 3 intenção 1: marcação de uma consulta create view ConsultasMP (codigoM, especialidade, codigoP, data) as select Médicos.codm, especialidade, codp, data from Médicos join Consultas on Médicos.codm = Consultas.codm; intenção 1: marcação de uma consulta insert into ConsultasMP values (2, ’pediatria’, 3, ’12/10/03’); Problemas: - nulos em atributos da chave primária - inclusão em várias tabelas (?)

Atualização de Visões Situação 3 create view ConsultasMP (codigoM, especialidade, codigoP, data) as select Médicos.codm, especialidade, codp, data from Médicos join Consultas on Médicos.codm = Consultas.codm; intenção 2: o médico de código 13 transferiu as suas consultas do dia 15/06/03 para o médico de código 15 update ConsultasMP set codigoM = 15 where códigoM = 13 and data = ‘06/15/03’;

Atualização de Visões Situação 3 create view ConsultasMP (codigoM, especialidade, codigoP, data) as select Médicos.codm, especialidade, codp, data from Médicos join Consultas on Médicos.codm = Consultas.codm; intenção 2: o médico de código 13 transferiu as suas consultas do dia 15/06/03 para o médico de código 15 update ConsultasMP set codigoM = 15 where códigoM = 13 and data = ‘06/15/03’; Problema: efeito imprevisível! (dados de mais de uma tabela base podem ser alterados (?))

Atualização de Visões Situação 3 Conclusão 3 create view ConsultasMP (codigoM, especialidade, codigoP, data) as select Médicos.codm, especialidade, codp, data from Médicos join Consultas on Médicos.codm = Consultas.codm; Conclusão 3 uma visão atualizável deve ser derivada de apenas uma (1) tabela base garantia de um mapeamento sempre 1-1 entre uma tupla da visão e uma tupla do BD

Atualização de Visões Atributo definido no predicado da visão não é um atributo da visão create view PacCâncer (código, paciente, idade) as select codp, nome, idade from Pacientes where problema = ‘câncer’; tuplas incluídas em PacCâncer não serão vistas por ela! solução: trigger que define problema = “câncer”

Atualização de Visões Atributo definido no predicado da visão é um atributo da visão create view MédicosJovens as select codigo, nome, especialidade, idade from Médicos where idade < 35; [ with check option; ] cláusula with check option controle de valores válidos para os atributos da visão que fazem parte do seu predicado inclusão ou alteração em MédicosJovens apenas idades < 35 serão permitidas!

Uso de Visões Vantagens Problemática de visões atualizáveis independência lógica dos dados cada usuário ou aplicação “enxerga” a porção do BD que deseja segurança de acesso cada usuário ou aplicação “enxerga” a porção do BD que tem permissão Problemática de visões atualizáveis limita o uso de visões tema de pesquisa na área de BD

Autorização de Acesso Objetivo proteção contra acessos mal intencionados Subsistema de Autorização de Acesso (SAA) controla quais dados um usuário/grupo de usuários pode ter acesso controla quais operações um usuário/grupo de usuários pode realizar sobre estes dados Funções do subsistema de autorização especificação de autorizações verificação de autorizações

Funções do Subsistema de AA Cadastro de usuários/grupos login + password Especificação de autorizações envolve três dimensões agente (usuário ou grupo) grânulo (BD, tabela, atributos, atributo, tuplas, ...) operação (select, update, create, ...) DBA superusuário (pode tudo!) alguns privilégios são exclusivos dele recovery do BD, configuração de parâmetros do SGBD, ... concede/retira (revoga) privilégios de acesso outros agentes todos os privilégios de acesso aos grânulos (BDs e tabelas) que criou concede/revoga privilégios para estes grânulos a outros agentes

Classificação de AA Baseadas no grânulo + operação é ou não é válido para todos os usuários permissões públicas ou secretas Baseadas nas três dimensões grânulo + operação + agente utiliza matrizes de autorização de acesso Baseadas em restrições utiliza visões

Matriz de AA G1 G2 G3 . . . Gn A1 A2 A3 ... Am select select, insert create A2 update A3 delete, exec update, grant ... Am

Matriz de AA – SQL Server Uma matriz por usuário/grupo para cada BD select update insert . . . exec ambulatórios X médicos ... consultas

Visões Maior flexibilidade na definição de grânulos Exemplos independentes ou dependentes de valor Exemplos create view Med as select CRM, nome,RG, especialidade from Médicos create view MedOrtoped as select CRM, nome, idade where especialidade = ‘ortopedia’ acesso apenas a alguns atributos (indep. valor) acesso apenas a alguns atributos e tuplas (dep. valor)

Outras Considerações sobre AA Premissa básica “quem não consulta não pode atualizar” Administrar corretamente permissões sobre tabelas e visões responsabilidade do DBA exemplo não faz sentido uma mesma permissão sobre uma tabela base e uma visão derivada dela

Autorização de Acesso em SQL Concessão de acesso grant {all privileges | listaPrivilégios} on grânulo to {listaUsuários | public} [with grant option] | grant all to {listaUsuários | public} Exemplos grant select, insert on Médicos to U1, U2 with grant option grant update on (idade, problema) Pacientes to U2 grant select on Consultas to public grant all privileges on Ambulatórios to U1,U2, U4 grant exec on RemoveConsultasAntigas to U1 grant all to U5

Autorização de Acesso em SQL Retirada de acesso revoke [grant option for] {all privileges | listaPrivilégios} on grânulo from listaUsuários [cascade] | revoke all from {listaUsuários | public} Exemplos revoke all privileges on Ambulatórios from U1, U4 revoke delete on Pacientes from U3 revoke select on Médicos from U1 cascade revoke all from U5