Buscar

SISTEMA GERENCIADOR DE BANCO DE DADOS

Prévia do material em texto

SISTEMA GERENCIADOR DE BANCO DE DADOS
Views: São métodos que facilitam a disponibilização de dados para a consulta.
Indices: O endereço de uma coluna
Os Índices
No SQL os índices são utilizados, principalmente para:
Localizar os registros que atendem a cláusula where;
Recuperar registros de outras tabelas ao realizar joins;
Encontrar o valor MIN () ou MAX () quando a coluna indicada está indexada;
Ordenar ou agrupar uma tabela, se a ordenação ou agrupamento for feito com campos indexados;
 A instrução para criar índice pode ser aplicada durante ou após a criação da tabela. A instrução é aplicada a cada campo que se queira tornar um índice. Para tornar um campo indexado na criação da tabela utiliza-se a instrução: “INDEX(nome_da_coluna)” Por exemplo:
create table alunos(
id int not null primary key,
nome varchar(80), 
dtnasc datetime,
fone varchar(45),
email varchar(100),
INDEX(nome),
INDEX(email),
INDEX(fone));
Para tornar um campo indexado após a criação da tabela, utiliza-se o comando:
CREATE INDEX nome_do_index ON nome_tabela (nome_coluna);
O nome_do_index é um identificador para o índice que está sendo criado. Usualmente é colocado um prefixo que distingue como um identificador para um índice. É utilizado para remover, desabilitar ou habilitar o referido índice.
O nome_tabela é a tabela que contem a coluna que será indexada.
O nome_coluna é a coluna que será indexada.
Exemplo:
CREATE INDEX idx_nome ON alunos (nome);
Remover índices
DROP INDEX nome_do_index ON nome_tabela;
O nome_do_index é o nome que foi dado ao índice na sua criação.
O nome_tabela é o nome da tabela de onde o referido índice está sendo removido.
É necessário indicar o nome da tabela no processo de exclusão do índice, pois o nome do índice pode ser repetido em diferentes tabelas, mas não pode ser repetido na mesma tabela.
DROP INDEX idx_nome ON alunos;
DROP INDEX idx_nome ON professores;
A atualizações dos índices são realizadas pelo próprio SGDB, não podemos interagir no processo.
Cuidados
Os índices dão um grande ganho na performance das consultas, mas degradam a performance nas operações de inserção. Isto se dá pela necessidade de indexar os novos valores
As Views
O resumo de uma tabela, mas ela é apenas o resultado de uma consulta, ela não existe fisicamente.
Uma view (visão) é uma tabela derivada de outras tabelas. Essas outras tabelas podem ser tabelas de base ou views previamente definidas. Uma view não existe, necessariamente, em forma física. É considerada uma tabela virtual, ao contrário das tabelas da base, cujas tuplas sempre estão armazenadas fisicamente no banco de dados. Isso limita as operações de atualização que lhes podem ser aplicadas, mas não limita sua consulta. 
Uma fonte de dados
As views tem como característica principal a disponibilização de dados como se fosse uma tabela. Os dados que uma view disponibiliza são oriundos de outras views e/ou de tabelas.
Atualização da view
Toda vez que consultarmos uma view os dados que ela fornecer estarão atualizados, pois o SGDB faz a verificação a cada utilização da mesma.
View em linha ou sub-query
a view é anônima, o que implica que a mesma não será reutilizada em outros processos, ao terminar o select ela é deletada. 
CRIAR OU SUBSTITUIR UM VIEW
CREATE [OR REPLACE] 
VIEW view_name [(column_list)]
AS select_statement
view_name: um nome para a view, e que seja único. 
column_list: uma lista com os nomes da colunas que a view terá.
select_statement: esta parte é uma instrução “SELECT” que será a fonte de dados para a view.
A utilização das view: Simplificar Consultas, Integridade dos Dados, Autorização de acesso.
Excluindo uma view
Para excluir uma view, utiliza-se a instrução DROP indicando que é uma VIEW e o nome da view.
DROP VIEW [IF EXISTS]
view_name [, view_name] ...
Consultando uma view
Para incluir uma view em uma consulta SQL basta tratá-la como uma tabela. No exemplo a seguir, a instrução SELECT está listando os cinco primeiros registros, resultantes da seleção ordenada pela primeira coluna, da view lista_nomes. Observe:
SELECT * 
FROM lista_nomes 
ORDER BY 1 
LIMIT 5;
Aula 02: 					Segurança 
Ameaças ao Banco de Dados
Perda de confidencialidade. A confidencialidade do banco de dados refere-se à proteção dos dados contra exposição não autorizada. 
Disponibilidade A perda de disponibilidade implica na interrupção de uma ou mais atividades por não poder acessar algum dado vital na atividade.
Integridade implica que os dados disponibilizados estão correto, ou seja, não foram adulterados. 
Perda de integridade. A integridade do banco de dados refere-se ao requisito de que a informação seja protegida contra modificação imprópria
Responsabilidades
As políticas de segurança devem ser criadas e trabalhadas por um comitê, envolvendo os diversos setores e níveis da organização, envolve decisões em que os gestores devem estar envolvidos e as quais devem aprovar. Uma política de segurança deve ser implementada para que aja processos, critérios e legalidade nas ações adotadas.
As responsabilidades do administrador do banco de dados (DBA) incluem conceder privilégios aos usuários que precisam usar o sistema e classificar os usuários e dados de acordo com a política da organização. O DBA tem uma conta de DBA no SGDB, também conhecida como conta do sistema ou conta de superusuário, que oferece capacidade poderosas que não estão disponíveis às contas e usuários comuns do banco de dados.
O controle de acesso neste ponto está tratando do acesso lógico, ou seja, aos dados propriamente dito. O DBA tem responsabilidades em implementar as restrições de acesso, seguindo as definições das políticas de segurança da organização.
Controle de Acesso
O controle de acesso consiste em conceder ou revogar privilégios, classificar e/ou definir um grupo de permissões. Pode-se começar definindo o pressuposto do controle de acesso, ou seja:
No acesso é tudo permitido exceto se for expressamente proibido.
No acesso é tudo proibido exceto se for expressamente permitido.
Discricionário: controle de acesso discricionário, é bastante comum e bases de dados com poucos colaboradores. Nesta estratégia de “controle de acesso trata-se de conceder, revogar e propagar privilégios de acesso aos dados por campos (colunas), registros (tuplas), tabelas, views etc.
- Nível de conta Este nível de controle de acesso discricionário está voltado às permissões de utilizar os comandos DDL (linguagem de definição de dados) do SQL
- Nível de relação é dado ou não permissão de leitura, gravação, exclusão ou alteração sobre um dado ou um conjunto de dado. Uma tabela ou uma view são exemplos de conjuntos de dados
View: As views podem ser utilizadas como mecanismos de segurança. A view, por sua natureza, não permite inserção, alteração ou exclusão de dados, garantindo, assim, integridade nos dados, e a confidencialidade pode ser implementada com a seleção somente das colunas e registro que são permitidos aos que têm permissão de leitura na view.
Obrigatório: Esta técnica é recomendada para dados altamente sensíveis, ou seja, dados que têm muitas variações de permissões. Apresenta classificação para os dados e para os colaboradores, seguindo uma classe de segurança.
Altamente confidencial ou top secret – TS;
Secreta ou secret – S;
Confidencial ou confidential – C e
Não classificada ou unclassified – U.
- Baseado em papéis: é o mais comum.  Cria-se um grupo denominado “programador”, a este grupo atribui-se as permissões conforme visto na técnica discricionário. Todos os colaboradores que devam ter as permissões de acesso de um “programador” devem receber a permissão “programador”.
Outras Medidas
Criptografia: pode ser aplicada tanto no dado que está armazenado na base de dados quanto na transmissão do mesmo.
Log de operações: são os registros das operações realizadas contendo, entre outras informações, a data, a hora, o colaborador, o processode origem e outras informações úteis. Os logs não implementam medidas de segurança, eles são úteis para identificar a origem de uma falha na segurança. Isso possibilitará uma análise para implementar uma medida de segurança.
Controle de acesso físico: É fundamental que alguns locais sejam de acesso restrito. Alguns desses locais podem estar ao longo do caminho da rede de dados, da rede elétrica, dos servidores, dos nobreaks etc.
Determinar o nível de restrição do acesso físico a alguns locais implica determinar o grau do risco quanto à confidencialidade, disponibilidade e integridade.
Backup: Os backups, ou cópias de segurança, são fundamentais no processo de implementar segurança na base de dados. É a principal fonte de restauração após um desastre.
Aula 03 – Procedures e Triggers
Programas armazenados
O objetivo da linguagem procedural é trazer para dentro do banco de dados operações que não precisam ser realizadas nos aplicativos, diminuindo o tráfego de dados na rede, diminuindo o processamento nas estações de trabalho, entre outros benefícios.
✔ Procedures: são uma sequência de códigos acionadas pelos aplicativos ou por console de instruções SQL. Elas podem receber parâmetros para serem utilizadas em seu processamento;amos tratando.
✔ Functions: se assemelham às procedures e podem ser chamadas de locais, que a procedures não podem.
✔ Triggers: se a semelham às procedures e são executadas automaticamente antes ou depois de um dos comandos de DML (insert, update e delete), conforme definido na sua criação.
Delimitadores
Para ficar mais claro, vamos considerar a criação de uma procedure. A procedure se chamará “totaliza” e executará três instruções SQL. O delimitador padrão é o ponto e vírgula (;) e vamos usar como delimitador temporário o caractere asterisco (*).
	seq
	Código
	Explicação
	1
	Delimitador *
	Primeiramente, alteramos o delimitador padrão
para o delimitador temporário.
	2
	Cria procedure totaliza()
INÍCIO
Instrução SQL 1;
Instrução SQL 2;
Instrução SQL 3;
FIM*
	Escreve-se o código de criação da procedure
utilizando em cada instrução SQL o delimitador padrão.
Para terminar a instrução de criação da procedure,
utiliza-se o delimitador temporário.
	3
	Delimitador ;
	Volta-se a definir o delimitador com o caractere padrão.
Variáveis
Exemplos:
1. Para declarar uma variável do tipo inteiro de nome “vlr”, faz-se o seguinte:
DECLARE vlr int;
Atribuição
Para atribuir um valor a uma variável após sua criação, utiliza-se a instrução SET; o operador de atribuição é o caractere igual (=). Para atribuir o valor 10 à variável “vlr”, faz-se o seguinte:
SET vlr = 10;
Atribuição no SELECT
No exemplo a seguir, está sendo selecionado o menor e o maior valor do ID dos alunos e atribuído respectivamente as variáveis num1 e num2:
SELECT MIN(id), MAX(id) INTO num1, num2 FROM alunos;
Retornando o valor de uma variável
Para retornar o valor de uma ou mais variáveis de dentro de um programa de armazenamento, basta chamar o SELECT e as respectivas variáveis.
Exemplo:
No exemplo anterior, as variáveis num1 e num2 ficaram, respectivamente, com o valor do menor e do maior ID dos alunos. Para fazer esses valores retornarem, faz-se da seguinte forma:
SELECT num1, num2;
Controle de fluxo

Continue navegando