Upload
kakyuu411
View
7
Download
4
Embed Size (px)
DESCRIPTION
Conteúdo da disciplina de implementação de banco de dados.
Citation preview
Aula 01
Modelo relacional
O modelo relacional tem se mostrado dominante nos SGBD comercial. De fato os principais SGBD como oracle,
SqlServer, SYBase, PostgreeSQL, MySQL utilizam o modelo relacional ou sua extenso o modelo objeto relacional. O
modelo relacional foi propost pelo Dr. Codd em 1970, baseando-se em conceitos matemticos para proporcionar uma
representao confivel para banco de dados. O modelo relacional se propem a representar os dados em uma colao
de relaes. Desta forma as relaes so vistas como tabelas de valores, onde cada linha representa uma coleo de
dados relacionados. Estes valores podem ser interpretados como fatos descrevendo uma instancia de uma entidade ou
de um relacionamento do mundo real. Os nomes da tabela e das colunas so utilizados para facilitar a interpretao dos
valores armazenados em cada linha da tabela.
AULA 2
PROJEO
PRODUTO CARTESIANO
JUNO
OPERAO DE CONJUNTOS
OPERAO DE DIVISO
AULA 3
A Linguaqem SQL como Padro. SQL quer dizer Structured Query Language e o padro mundial de acesso s bases
de dados relacionais.
DDL - Create, Alter, Drop, Rename, Truncate. Permitem a criao e definio de objetos como tabelas, views e outros
objetos no banco de dados.
DRL Select. o comando mais comum do SQL. Utilizado amplamente para recuperao dos dados de uma base.
DML Insert, Delete, Update. Comandos de manipulao dos dados. Usados nas aplicaes que mantm a base de
informaes com inseres, atualizaes e delees de dados.
DCL Grant, Revoke. So utilizados para atribuir ou remover direitos de acesso a objetos do banco de dados e suas
estruturas.
Controle de transaes - Commit, Rollback, Savepoint. Faz parte do padro SQL a efetivao total, parcial ou o
abandono de uma transao atravs da utilizao destes comandos.
Adicionando campo: ALTER TABLE TABELA ADD CAMPO VARCHAR(30) NOT NULL
Comando: Describe tabela OU desc tabela, descreve a tabela
Alterando um campo: ALTER TABLE DEPARTAMENTO MODIFY DESCRICAO NULL
Remover coluna: alter table drop column ;
Mais Constraints
At agora utilizamos apenas as constraints NOT NULL e PRIMARY KEY, vejamos agora as Constraints UNIQUE e FOREIGN
KEY.
Campos nicos: Esta constraint determina que uma coluna no pode ter valor repetido; no significando, entretanto,
que deva possuir valor, ou seja, que tenho preenchimento obrigatrio. Isso significa que podemos ter mais uma linha
nula em uma coluna nica. Para estabelecer essa restrio, estabelecemos UNIQUE como restrio da coluna, por
exemplo: CPF char(11) UNIQUE,
Reforando a integridade referencial com chaves estrangeiras:
Os relacionamentos entre tabelas so criados, gerando-se chaves estrangeiras (foreign key FK) nas tabelas FILHO que
referenciam colunas chaves nas tabelas PAI.
Para estabelecer essa restrio, acrescentamos REFERENCES definio da coluna como exemplo:
ID_DEPTO number(7) References Departamento(ID),
Onde:
Id_depto o nome da coluna.
Number(7) o tipo da coluna.
References identifica a restrio de chave estrangeira.
Departamento o nome da tabela para onde aponta a chave estrangeira.
(ID) coluna da tabela departamento apontada pela chave estrangeira.
Constraint de Colunas e Tabelas
As constraints podem ser definidas junto com a coluna. ou separadamente (no final do comando create table ou com o
comando alter table). As constraints not null s podem ser definidas junto com a definio da coluna. As constraints de
tabela so utilizadas principalmente para criar constraints compostas. onde duas ou mais colunas fazem parte da
constraint. como por exemplo, chaves primrias compostas.
Vejamos um exemplo:
A tabela Turmas possui uma chave primary composta pelas colunas CODIGO_TURMA e CODIGO_CURSO. O comando
para sua criao :
CREATE TABLE TURMAS (CODIGO_TURMA NUMBER(6), CODIGO_CURSO NUMBER(3), CODIGO_FUNCIONARIO
NUMBER(6), DATA_INICIO DATE, DATA_FIM DATE , SALA NUMBER(2), PRIMARY KEY (CODIGO_TURMA,
CODIGO_CURSO) );
Incluindo uma Foreign Key numa Tabela Existente
Tambm podemos incluir a constraint de Foreign Key aps a criao da tabela, para tal, basta especificar a adio da
constraint no comando ALTER TABLE.
Para exemplificar, vamos primeiro criar a tabela CLIENTE, utilizando o comando abaixo:
CREATE TABLE CLIENTE ( ID NUMBER(7) PRIMARY KEY, NOME VARCHAR2(40) NOT NULL, VENDEDOR NUMBER(7))
A tabela foi criada, mas a coluna Vendedor deveria ser uma chave estrangeira para a tabela Empregado na coluna ID,
podemos dar o seguinte comando de ALTER TABLE:
ALTER TABLE CLIENTE ADD FOREIGN KEY (VENDEDOR) REFERENCES EMPREGADO(ID)
----------
Trocar nome de tabela
RENAME TABELA TO NOVATURMA.
Dropar tabelas
Drop table tabela
Se voc aplicar este comando em uma tabela que possua filhos, como por exemplo, a tabela Departamento ir
gerar um erro ( veja figura). O erro ocorre porque essa tabela referenciada por uma foreign key de outra
tabela, que ficaria inconsistente caso esta fosse removida; o banco de dados, muito acertadamente, no
permite este comando DROP TABLE. Caso seja realmente necessrio eliminar essa tabela, posso solicitar que
todas as constraints a ela vinculadas sejam eliminadas tambm, para isso acrescentamos CASCADE
CONSTRAINTS ao comando.
DROP TABLE DEPARTAMENTO CASCADE CONSTRAINTS
Resumo:
CREATE TABLE X_EMPR( ID NUMBER(5) PRIMARY KEY,NOME VARCHAR2(40) NOT NULL,CPF CHAR(11) NOT NULL
NIQUE,SALARIO NUMBER(9,2),CNH CHAR(15) UNIQUE,ID_DEPTO NUMBER(5) REFERENCES
X_DEPTO(ID),ID_GERENTE NUMBER(5))
ALTER TABLE X_EMPR MODIFY (SALARIO NOT NULL)
ALTER TABLE X_EMPR ADD FOREIGN KEY (ID_GERENTE) REFERENCES X_EMPR(ID)
DROP TABLE X_EMPR
DROP TABLE DEPARTAMENTO CASCADE CONSTRAINTS
Aula 04
Select uma tabela
OBS:
Aula 05
Ordenao: Order by.
Funes de grupo:
Group by;
AVG(x): Retorna o valor mdio das colunas, ignora nulos;
MAX
MIN
SUM
Count(x): retorna o numero de linhas de uma tabela, ignora valores nulos.
Count(*): Retorna o numero de linhas de uma tabela, considera valores nulos.
Funcoes de grupo no podem estar no WHERE. Deve se usar HAVING.
Aula 06 JUNO
Juno Cruzada cross join
Uma juno cruzada de tabelas, tambm chamada juno irrestrita de duas tabelas gera um resultado formado por
todas as combinaes possveis de uma linha da primeira tabela com uma linha da segunda. No existe uma condio de
juno. Esse resultado chamado produto cartesiano das duas tabelas.
Por exemplo desejamos realizar a Juno Cruzada das tabelas Empregado e Departamento cujo contedo mostrado na
figura.
Nesse caso, como a tabela Empregado possui 6 linhas e a tabela Departamento 3 linhas , o resultado final ser 18 linhas
que 6 * 3 = 18 linhas, formadas por todas as combinaes possveis de empregado e departamento. Teramos como
resultado ento esta tabela.
select * from empregado cross join departamento;
Juno interior -inner join
A juno interior de tabelas [inner join]. conecta as duas tabelas e retorna apenas as linhas que satisfazem a condio
de juno. Uma juno interior chamada de equijoin quando as colunas so comparadas usando o =, e as duas colunas
aparecem no resultado, mostrando dados redundantes, j que elas tm o mesmo valor.
Juno exterior outer join ou left join
FULL JOIN as linhas de ambas as tabelas so includas, mesmo as que no esto relacionadas com a outra
tabela. ~
Auto-juno: inner join com a mesma tabela.
dasda
Aula 07 Subconsulta e operadores de conjunto.
Subconsulta uma consulta dentro de um outro comando SQL que pode ser:
CREATE TABLE
CREATE VIEW
SELECT
INSERT
DELETE
UPDATE
Exemplos: SELECT * FROM EMPREGADO WHERE ID_DEPTO = ( SELECT ID FROM DEPARTAMENTO
WHERE UPPER(NOME) = VENDAS)
Subconsultas correlatas
SELECT * FROM EMPREGADO E WHERE SALARIO > (SELECT AVG(SALARIO) FROM EMPREGADO I WHERE ID_DEPTO =
E.ID_DEPTO)
UNION: retorna duas consultas sem repetio.
UNION ALL: Resulta na combinao de todas as linhas de duas ou mais tabelas participantes do UNION, mantendo todas
as linhas duplicadas.
INTERSECT: Resulta na interseo entre todas as linhas de duas ou mais tabelas participantes do INTERSECT, ou seja,
apenas as linhas comuns entre ela: No existe INTERSECT ALL
SELECT ID FROM EMPREGADO WHERE ID_DEPTO IN (10,30)
INTERSECT
SELECT ID FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR'
MINUS: Resulta nas linhas existentes na primeira tabela, mas que no existem na segunda. As linhas comuns tambm
no so resultantes. No existe MINUS ALL
Obs: ODER BY apenas na ultima consulta.
Aula 08 OUTROS OBJETOS DE BANCO DE DADOS.
A sintaxe do comando de criao de uma Sequence :
CREATE SEQUENCE sequence_name
[ INCREMENT BY n ]
[START WITH n]
[MAXVALUE n I NOMAXVALUE]
[MINVALUE n I NOMINVALUE]
[CYCLE I NOCYCLE]
[CACHE l NOCACHE]
[ORDER I NOORDER ]
importante observar que ndices so objetos atualizados pelo Oracle, em todas as operaes de INSERT, UPDATE e
DELETE na tabela indexada, portanto, se por um lado aceleram a pesquisa aos dados atravs do comando SELECT, por
outro lado, quanto mais ndice tiver a tabela, maior o tempo de atualizao da mesma.
Aula 09 - TRANSAES
Aps uma transao, o banco de dados deve continuar consistente. Para assegurar a integridade dos dados, um sistema
de banco de dados deve ter as seguintes propriedades das transacoes.
Atomicidade: indivisibilidade, a propriedade que garante que todas as operaes de uma transao so
refletidas corretamente no banco de dados ou nenhuma ser. Uma transao indivisvel.
Consistncia: a execuo de uma transao isolada (ou seja, sem a execuo de outra transao qualquer
concorrentemente) preserva a consistncia do banco de dados.
Isolamento: embora diversas transaes possam ser executadas concorrentemente, o SGBD deve garantir que,
para todo par de transaes Ti, Tj, Ti tem a sensao de que Tj terminou suas operaes, antes de Ti comear
com as suas. Assim, cada transao no toma conhecimento de outras transaes concorrentes no sistema. O
sistema pode executar um pedao de Ti parar e executar um pedao de Tj, mas para as transaes elas so
nicas no sistema.
Durabilidade: depois de a transao completar-se com sucesso, as mudanas que ela faz no banco dedados
persistem, at mesmo se houver falha no sistema.
So as chamadas propriedades ACID das transaes.
Transaes concorrentes
Os sistemas de processamento de transao de banco de dados, normalmente permitem que diversas transaes sejam
executadas de modo concorrente. Permitir que essas transaes concorram na atualizao dos dados traz diversas
complicaes em relao consistncia dos bancos de dados.
Principal desvantagem das execues concorrentes:
o Assegurar a consistncia de transaes, exige trabalho adicional, mais fcil assegurar as propriedades
ACID em transaes com execuo seqencial do que em execues concorrente.
Principais vantagens de execues concorrentes:
o Uma transao consiste de diversos passos. Alguns envolvem atividades de E/S, outros, atividade de
UCP; logo, atividades de E/S podem ser feitas em paralelo com o processamento de UCP; assim, o
paralelismo entre atividades de E/S e atividades de UCP podem ser explorando para executar diversas
transaes em paralelo aumentando o throughput do sistema (um maior nmero de transaes
podem ser executadas num determinado tempo);
o reduz o tempo mdio de resposta para uma transao se completar aps ser submetida, pois as
transaes curtas no precisam esperar que as transaes longas terminem para serem iniciadas.
Aula 10 Execuo de comandos e otimizao
JUNES Os algoritmos classicos utilizados em juncoes so.
Fases do processamento de comandos SQL no oracle
O Otimizador Oracle
FULL TABLE SCAN: O nmero de blocos visitados para executar um full table scan 80/8 = 10;
PESQUISA NO INDICE I_COD_DEPART: Este um ndice no-nico, logo a seletividade calculada como 0,17 (6 valores
distintos para codigo_depart). O custo total 0,17 * 80 = 14;
PESQUISA NO INDICE I_MATRIC: Este um ndice nico porm em um intervalo limitado de valores. A seletividade
calculada como 0,19(intervalo da condio 250 100 dividido pelo intervalo do ndice 800 1). O custo total 0,19 * 80
= 16;
FULL TABLE SCAN: Este caminho est disponvel para todos os comandos SQL. Seu rank 15;
PESQUISA NO INDICE I_COD_DEPART: Este caminho est disponvel por causa da condio codigo_depart = 3. Seu
rank 9 (single-column index);
PESQUISA NO INDICE I_MATRIC: Este caminho est disponvel por causa da condio matricula BETWEEN 100 AND
250. Seu rank 10 (bounded range search);
Opo COMPUTE STATISTCS: Voc calcula estatsticas exatas com esta opo. Ela bloqueia a tabela e executa um full
table scan. Pode levar muito tempo se a tabela muito grande. Voc jamais dever usar esta opo enquanto usurios
esto logados e acessando a tabela.
Opo ESTIMATE STATISTICS: Voc somente estima estatsticas com esta opo. Contudo, se voc utiliz-la com uma
proporo de dados aceitvel, ela pode ser considerada to realista quanto a opo COMPUTE STATISTICS.
Opo DELETE STATISTICS: Limpa todas as estatsticas com esta opo. No necessrio us-la antes de reanalisar um
objeto.