Prova Banco de Dados II (Old)
=== SEGURANÇA ===
Requisitos BD corporativo:
Gerenciar e fornecer acesso
Controle de disponibilidade para usuários
Controlar leitura e escrita
Restringir acesso a colunas específicas
Todo banco tem um administrador (DBA)
Schema é uma coleção de objetos (tabelas, views, sequences)
Privilégios:
Determinam o que um usuário pode fazer no banco
Fornecem permissões para executar comandos SQL
Privilégios de sistema indicam permissões que o usuários terá no banco (criar sessão, tabelas, views)
Privilégios de objeto para manipular o conteúdo dos objetos (editar tabelas, views, procedure)
=== VIEWS ===
Tabela virtual definida por um select
View não existe no banco como um conjunto de dados armazeados
Vantagens:
Restringe acesso ao banco
Consultas complexas ficam simples
Recupera dados de diferentes tabelas, schemas e databases
Permite acesso a grupos de usuários baseado em seus critérios particulares
Quando uma visão é utilizada, o Servidor Oracle executa as seguintes operações:
Recupera a definição da visão no dicionário de dados (USER_VIEWS)
Confere os privilégios de acesso para a tabela básica da visão
Os dados são recuperados a partir das tabelas básicas
É possível usar DML (insert, update, delete)
Se a view for criada usando “WITH READ ONLY“ não dá pra usar DML
Visão simples:
Uma única tabela
Não utiliza funções ou agrupamento de dados
Pode executar operações DML
Visão complexa:
Várias tabelas
Utiliza funções ou grupos de dados
Normalmente não permite operações DML
Erros comuns:
DUPLICATE COLUMN NAME: duas colunas com mesmo nome na query
MUST NAME THIS EXPRESSION WITH A COLUMN ALIAS: a query tem um count, sum, etc, e a expressão não recebeu um apelido
=== STORED PROCEDURES ===
Server pra resolver problemas complexos, direto no banco
Cada procedure é um módulo de código que pode ser executado a parti de:
Procedures
Trigger
Aplicação cliente
Como parte de um SELECT
Vantagens:
Melhora o desempenho das aplicações
Reduz o volume de dados trafegados na rede
Melhora a manutenção do software
Melhora a segurança no acesso aos dados
Quando usar:
Se a operação pode ser feita no servidor, sem pedir dados do usuários
Se a operação processar muitas linhas
Se a operação é usando com frequência
Se a operação é usada por vários módulos ou processos diferentes
Cursores:
Usados para nomear áreas de memória e acessar os dados
Triggers:
São blocos de código
Armazenados dentro do banco
Disparados sempre que uma instrução SQL (evento DML) for aplicada para uma tabela específica
Aplicações:
Auditoria
Replicação de dados
Controle de dados
Segurança e integridade
Precauções:
Evite criar triggers que dupliquem regras já definidas em CONSTRAINTS do banco
Cuidado ao criar triggers que disparem por uma instrução em uma tabela, para que ela não efetue a mesma operação na própria tabela porque isso iria disparar a trigger N vezes, travando a execução.
=== OTIMIZAÇÃO ===
Indices:
=== VAIR CAIR NA PROVA ===
Funções parser
Baseado em custos
Prática: uma trig, uma view uma functionp
=== SEGURANÇA ===
Requisitos BD corporativo:
Gerenciar e fornecer acesso
Controle de disponibilidade para usuários
Controlar leitura e escrita
Restringir acesso a colunas específicas
Todo banco tem um administrador (DBA)
Schema é uma coleção de objetos (tabelas, views, sequences)
Privilégios:
Determinam o que um usuário pode fazer no banco
Fornecem permissões para executar comandos SQL
Privilégios de sistema indicam permissões que o usuários terá no banco (criar sessão, tabelas, views)
Privilégios de objeto para manipular o conteúdo dos objetos (editar tabelas, views, procedure)
=== VIEWS ===
Tabela virtual definida por um select
View não existe no banco como um conjunto de dados armazeados
Vantagens:
Restringe acesso ao banco
Consultas complexas ficam simples
Recupera dados de diferentes tabelas, schemas e databases
Permite acesso a grupos de usuários baseado em seus critérios particulares
Quando uma visão é utilizada, o Servidor Oracle executa as seguintes operações:
Recupera a definição da visão no dicionário de dados (USER_VIEWS)
Confere os privilégios de acesso para a tabela básica da visão
Os dados são recuperados a partir das tabelas básicas
É possível usar DML (insert, update, delete)
Se a view for criada usando “WITH READ ONLY“ não dá pra usar DML
Visão simples:
Uma única tabela
Não utiliza funções ou agrupamento de dados
Pode executar operações DML
Visão complexa:
Várias tabelas
Utiliza funções ou grupos de dados
Normalmente não permite operações DML
Erros comuns:
DUPLICATE COLUMN NAME: duas colunas com mesmo nome na query
MUST NAME THIS EXPRESSION WITH A COLUMN ALIAS: a query tem um count, sum, etc, e a expressão não recebeu um apelido
=== STORED PROCEDURES ===
Server pra resolver problemas complexos, direto no banco
Cada procedure é um módulo de código que pode ser executado a parti de:
Procedures
Trigger
Aplicação cliente
Como parte de um SELECT
Vantagens:
Melhora o desempenho das aplicações
Reduz o volume de dados trafegados na rede
Melhora a manutenção do software
Melhora a segurança no acesso aos dados
Quando usar:
Se a operação pode ser feita no servidor, sem pedir dados do usuários
Se a operação processar muitas linhas
Se a operação é usando com frequência
Se a operação é usada por vários módulos ou processos diferentes
Cursores:
Usados para nomear áreas de memória e acessar os dados
Triggers:
São blocos de código
Armazenados dentro do banco
Disparados sempre que uma instrução SQL (evento DML) for aplicada para uma tabela específica
Aplicações:
Auditoria
Replicação de dados
Controle de dados
Segurança e integridade
Precauções:
Evite criar triggers que dupliquem regras já definidas em CONSTRAINTS do banco
Cuidado ao criar triggers que disparem por uma instrução em uma tabela, para que ela não efetue a mesma operação na própria tabela porque isso iria disparar a trigger N vezes, travando a execução.
=== OTIMIZAÇÃO ===
Indices:
=== VAIR CAIR NA PROVA ===
Funções parser
Baseado em custos
Prática: uma trig, uma view uma functionp