Beruflich Dokumente
Kultur Dokumente
PL/SQL: Oracle.
Transact-SQL: Microsoft SQL Server e Sybase adaptive Server.
SQL PL: IBM DB2.
PL/pgSQL: PostgreSQL.
MYSQL: MySQL.
SELECT Name
FROM Product
WHERE ListPrice >= ALL
(SELECT ListPrice
FROM Product
GROUP BY ProductSubcategoryID);
Tipos de dados
Row Collections UD
Junções
Normalização
1FN: todos os atributos de uma relação devem ter seus valores definidos sobre
domínios atômicos ou indivisíveis. Os campos não devem ser compostos ou
multivalorados.
2FN: uma relação encontra-se na 2fn se e somente se estiver na 1fn e não tiver
dependências funcionais parciais. Cada atributo não chave seja definido por todos os
atributos pertencentes à chave primária da relação.
3FN: se esta na 2fn e nenhum atributo não chave é transitivamente dependente da chave
primária. Não se aceita dependência transitiva. Dependência transitiva acontece quando
uma coluna depende da pk e também depende de outra coluna.
FNBC: ela foi proposta como uma forma mais simples que 3fn, porem mais rígida. Se
uma relação está na fnbc também esta na 3fn. Uma relação esta na fnbc se todo
determinante é chave candidata. Toda dependência funcional de x > y, x é superchave.
4FN: uma relação esta na 4fn se e somente se estiver na 3fn e não possuir dependências
multivaloradas. Dependência multivalorada caracteriza o fato de que embora um
conjunto de atributos não possa determinar o valor de outro atributo, ainda assim, esse
conjunto consegue restringir os valores possíveis para aquele atributo.
*sempre que houver um atributo multivalorado ocorrerá multidependência funcional.
5FN: não pode ter dependência funcional de junção. Algumas relações precisam ser
decompostas para entrar na 4fn.
*As projeções sobre a relação, que são as partes da decomposição da relação original,
devem ser capazes de reconstruir a relação sem perdas.
Regras de inferência
RI 1 (reflexiva): se y é subconjunto de x, então x > y
RI 2 (aumentativa): se x > y, então xz > yz
RI 3 (transitiva): se x > y e y > z, então x > z
RI 4 (decomposição): se x > yz, então x > y e x > z
RI 5 (aditiva): se x > y e x > z, então x > yz
RI 6 (pseudotransitiva): se x > y e wy > z, então wx > z
Notação Peter Chen
Notação pé de galinha
Notação IDEF1X
SQL
DDL:
Principais comandos:
o Alter o Truncate table
o Create o Update statistics
o Drop o Rename
o Disable trigger o Comment
o Enable trigger
Restrições de integridade:
o Restrições em tabelas o Restrições de domínio
o Assertions (afirmações)
*** check é a restrição mais flexível de todas***
DML:
Principais comandos:
o Select o Explain plan
o Insert o Lock table
o Update o Merge
o Delete o Bulk inset
o Call
Consultas aninhadas:
o IN: teste se um valor existe no outro subconjunto.
o UNIQUE: testa se a subconsulta tem alguma tupla repetida.
o EXISTS: retorna TRUE se a subconsulta usada como argumento é não
vazia.
o NOT IN: verifica se o valor não existe em outro subconjunto.
o NOT EXISTS: retorna um valor booleano para aceitação ou não da
tupla em questão caso o argumento da subconsulta seja vazio.
o ALL: serve para comparar o valor da subconsulta externa com todos os
valores da subconsulta interna.
o ANY: serve para comparar o valor da subconsulta externa com todos os
valores da subconsulta interna.
o SOME: funciona da mesma forma que ANY.
o SELECT DISTINCT nome_cliente
FROM devedor
WHERE nome_cliente IN (select nome_cliente from depositante)
o SELECT name
FROM product
WHERE ListPrice >= ALL (SELECT ListPrice
FROM product
GROUP BY productsubcategoryid)
Funções agregadas: Group by, having
Junção:
o Tipos:
Inner join: retorna apenas os dados que atendem às condições de
junção.
Left outer join: sempre contém os registros da tabela a esquerda
mesmo quando não exista registros correspondentes na tabela a
direita.
Right outer join: retorna sempre todos os registros da tabela a
direita mesmo quando não exista registros correspondentes na
tabela a direita.
Full outer join: apresenta todos os dados das tabelas à direita e à
esquerda, mesmo que não possuam correspondência em outra
tabela.
o Condições:
Natural: vai ser utilizado os atributos das duas relações que
possuem os mesmos nomes.
On:
Using: caso não deseje utilizar todos os atributos com nomes
iguais você pode restringi-los passando apenas os atributos que
desejar.
o SELECT department_id, department_name, location_id, city
FROM departments
NATURAL JOIN locations;
o SELECT employee_id, last_name, location_id, department_id
FROM employees JOIN departments
USING (department_id);
TCL:
Principais comandos:
o Commit o Set constraints
o Savepoint o Set transaction
o Rollback o Start (begin) transaction
o Release savepoint
DCL:
Principais comandos:
o Grant
o Revoke
o Deny
Transações
Níveis de isolamento:
Read uncommited: possibilita o problema de leitura suja.
Read commited: permite o erro de leitura não repetível.
Repeatable read: permite o problema de existência de registros fantasmas.
Serializable: a idéia é executar concorrentemente apenas as transações que produzem o
mesmo resultado caso fossem executadas em série.
Protocolo de bloqueio em duas fases:
Etapas: expansão e encolhimento.
Conservador ou estático: bloqueia todos os itens que acessará antes de iniciar a transação.
Só bloqueia quando todos estão disponíveis.
Estrito ou severo: não libera os locks de escrita até o commit ou abort.
Rigoroso: não libera os locks de escrita e leitura até o commit ou abort.
Livelock: uma transação não pode prosseguir por um período indefinido de tempo enquanto
outras transações continuam normalmente, por conta de um sistema injusto de espera.
Starvation: ocorre se o algoritmo seleciona a mesma transação como vitima repetidamente
causando abort repetidos e nunca acabando a execução.
Deadlock: situação em que duas ou mais transações estão em estado simultâneo de espera,
cada um aguardando que uma das demais libere um bloqueio para prosseguir.
Métodos de solucionar impasse:
Wait-die: a transação que solicitou o bloqueio é a mais antiga, pode aguardar. Se for a mais
nova, sofre rollback e recomeça mais tarde com o mesmo timestamping.
Wound-wait: uma transação mais nova solicita o bloqueio e o item estiver bloqueado por
uma mais antiga, a transação mais nova pode aguardar. Se for a mais antiga que estiver
solicitando, então ela interrompe a mais nova, a qual recomeça mais tarde com mesmo
timestamping.
Classificação de falhas:
Erro lógico: devido a alguma condição interna, como entrada inadequada, um dado não
encontrado, overflow ou limite de recurso excedido.
Erro do sistema: sistema entrou em estado inadequado.
Queda do sistema: algum mau funcionamento de hardware ou um bug no software de
banco de dados ou no sistema operacional que causa a perda do conteúdo no armazenamento
volátil e fez o processamento da transação parar.
Falha de disco: Um bloco de disco perde seu conteúdo em função da quebra do cabeçote ou
da falha durante uma operação de transferência de dados.
Modificação adiada e imediata:
Adiada: adia a execução de todas operações write de uma transação até sua efetivação.
Garante a atomicidade.
Imediata: permite que as modificações no banco de dados sejam enviadas enquanto as
transações ainda estão em estado ativo.
Roubada, não-roubada e forçada e não-forçada:
Roubada: se o protocolo permitir o buffer atualizado antes que a transação se efetive será
usado quando o gerenciador do cache (buffer) do SGBD necessitar de um frame de buffer
para outra transação.
Não-roubada: se uma página em cache atualizada por uma transação não puder ser gravada
antes que a transação se efetive.
Forçada: se todas as páginas atualizadas por uma transação forem imediatamente escritas
no disco quando a transação se efetivar.
Não-forçada: se todas as páginas atualizadas por uma transação não forem imediatamente
escritas no disco quando a transação se efetivar.
Backup
Hot backup: é realizado enquanto a instância de banco de dados permanece online e o
acesso simultâneo é possível.
Cold backup: é realizado ao desligar a instância de banco de dados.
Completo: uma cópia integral de todos os dados dos objetos no momento em que a cópia
foi executada.
Incremental: contém apenas os dados que mudaram desde a última cópia completa ou
incremental da imagem.
Diferencial: contém os dados que mudaram desde a última cópia completa da imagem.
Backup on-line: quando o sistema continua funcionando.
Backup off-line: quando o sistema é parado para fazer o backup.
Backup off-site: quando o backup é feito para um lugar diferente de onde esta o servidor.
Tipos de recuperações:
Para o momento presente: para lidar com algum tipo de desastre. Aplicações ficam
completamente indisponíveis até que a recuperação esteja completa.
Point-in-time: para lidar com um problema de nível de aplicativo. Remove os efeitos de
todas as transações que ocorreram desde o ponto especificado no tempo para frente.
Recuperação de transações: aborda as deficiências dos tipos tradicionais, o tempo de
inatividade e a perda de dados de boa qualidade.
Otimização
Fatores que influenciam o desempenho:
Carga de trabalho
Throughput
Recursos
Otimização
Contenção
Metas de ajustes centrais:
Maximizar o ROI
Minimizar a contenção
Metas de ajustes de uso geral:
Minimizar o número de blocos
Usar caching, buffering ou fila
Técnicas para utilização de dados intermediários:
Materialização: o resultado de uma operação é armazenado em disco como uma relação
temporária, essa relação é lida do disco para ser utilizada como entrada para a próxima
operação.
Pipelining: combina diversos algoritmos que correspondem às operações individuais e
utiliza como entrada de uma operação as tuplas que foram geradas pela operação anterior.
Processamento e otimização de consulta
Fatores que influenciam o desempenho do banco de dados:
Carga de trabalho(workloud)
Throughput
Recursos
Otimização
Contenção
Desempenho do banco de dados é a otimização do uso dos recursos para aumentar o
throughput e minimizar a contenção, permitindo que a maior carga de trabalho
possível seja processada.
Arquivos no disco:
Registro: uma coleção de valores ou itens de dados.
Arquivo: uma sequencia de registros.
Alocação continua: é o ideal. Torna a leitura mais rápida, principalmente se
tiver utilizando buffer de leitura.
Alocação ligada: cada bloco contém um ponteiro para o próximo bloco.
Clusters de bloco: junta as opções de alocação continua e ligada. Blocos
contíguos para cada segmento.
Alocação indexada: um ou mais blocos de índice contém ponteiros para blocos
de arquivos reais.
Endereço de hardware de um bloco: combinação de número do cilindro,
número de trilha e número de bloco.
Organização de arquivos:
Organização de arquivos: refere-se a organização dos dados de um arquivo de
registros, blocos e estruturas de acesso. Como registros e blocos são colocados
no meio de armazenamento e interligados.
Métodos de acesso: oferecem operações que podem ser aplicadas a um arquivo.
É possível aplicar vários métodos a uma organização de arquivos, mas alguns
métodos só podem ser aplicados a arquivos organizados de certa maneira.
Arquivos de registros desordenados: ou arquivos de heap são organizados na
ordem em que os registros são inseridos no arquivo. Novos registros são sempre
inseridos no final. A exclusão deixa espaço livre.
Arquivos de registros ordenados: classificados ou seqüencial, são
armazenados de forma ordenada de acordo com algum campo do registro. Na
inclusão podemos ter que deslocar metade do registro.
Arquivos de acesso direto: ou arquivo de hash, utilizam técnicas de hashing
oferencendo uma função h que é aplicada ao valor do campo de hash de um
registro que gera um endereço do bloco de disco em que será armazenado.
Níveis de raid:
Raid 0: divide o arquivo e distribui os dados em todas as unidades de disco em
um grupo raid.
Raid 1: utiliza no mínimo dois discos e basicamente copia os dados de um no
outro.
Raid 2: conta com mecanismo de detecção de falhas e quase não é mais
utilizado.
Raid 3: uma unidade apenas para paridade, são necessários pelo menos 3 discos.
Raid 4: usa esquema de paridade, similar ao raid 3, dividi os dados em blocos
maiores e oferece acesso individual a cada disco.
Raid 5: usa paridade, muito parecido com raid 0 mas com tolerância a falhas .
Raid 6: protege contra até duas falhas de disco simultâneas, parecida com raid 5
com a diferença que trabalha com dois bits de paridade.
Índices: