Sie sind auf Seite 1von 37

TECNOLOGIA EM ANALISE E DESENVOLVIMENTO DE SISTEMAS

SISTEMA DE BANCO DE DADOS

TUTOR A DISTNCIA E PRESENCIAL: FELIPE DES SIMONE QUEIROZ

ALEXANDRE FREDERICO MACIEL

RA: 1299516852

CELSO KATSUHIRO KUSHI

RA: 1299516848

ELDER LEME

RA: 7308548826

ELITON COSTA

RA: 9976718683

JAKUB JERZY WINKOWSKI

RA: 6056524814

JULIANO RIBEIRO AMERICO

RA: 1299516843

Sumrio
1.

2.

3.

4.

5.

Atividade: Consultas SQL e DML......................................................................................3


1.1

Consultas e Filtros........................................................................................................3

1.2

DMLData Manipulation Language (Linguagem de Manipulao dos Dados)..........5

Atividade: Procedures e Trigger.........................................................................................7


2.1

Criao de Procedures e Triggers.................................................................................7

2.2

Procedures..................................................................................................................14

2.3

Triggers......................................................................................................................16

Atividade: Otimizao de Consultas e Gerenciamento de Transaes..............................18


3.1

Tutorial Otimizao de Consultas..............................................................................18

3.2

Otimizao de Consultas............................................................................................20

3.3

Gerenciamento de Transao.....................................................................................21

Atividade: Banco de Dados Distribudos e Data Warehouse............................................24


4.1

Banco de Dados Distribudos.....................................................................................24

4.2

Data Warehouse..........................................................................................................29

BIBLIOGRAFIA...............................................................................................................34

1. Atividade: Consultas SQL e DML


SQL Structured Query Language, ou Linguagem de Consulta Estruturada a linguagem
padro do banco de dados relacional que inicialmente foi chamada de SEQUEL (Structured
English Query Language). As caractersticas da linguagem SQL foram inspiradas pela lgebra
relacional.
O SQL foi originalmente desenvolvido pela IBM em San Jose em meados dos anos 70,
dentro do projeto System R que tinha por objetivo demonstrar a viabilidade da implementao
do modelo relacional proposto por E.F.Codd. Ao passar dos anos a linguagem foi recebendo
melhorias e expanses por este motivo a linguagem sofreu uma padronizao pela ANSI e
ISO. Em base dessa padronizao a linguagem SQL foi dividida em subconjuntos que
descrito a seguir.
Subconjuntos da linguagem SQL:

1.

DML Data Manipulation Language (Linguagem de Manipulao de Dados).


DDL Data Definition Language (Linguagem de Definio de Dados).
DCL Data Control Language (Linguagem de Controle de Dados)
DTL Data Transaction Language (Linguagem de Transao de Dados).
DQL Data Query Language (Linguagem de Consulta de Dados).
CaonsulteFir

A SQL possui um comando bsico para consultas que o SELECT. As consultas em SQL tem
uma estrutura bsica que composta por trs-clasulas: Select-From-Where e tem a seguinte
forma:
Select <lista de atributos> From <lista de tabelas> where <condio>.
<Lista de atributos>: uma lista dos nomes dos atributos cujo os valores sero mostrados na
consulta.
<Lista de tabelas>: o nome da tabela que ser consultada.
<condio> uma expresso condicional (booleana) que identifica os atributos que sero
mostrados na consulta.
Em SQL temos operadores lgicos bsicos da lgebra relacional que so: =, <, >, <=, =>, e
<>.
3

Outra forma de consultas o inner join, right outer join, left outer join que faz a unio de
tabelas e tem a seguinte a forma:
Select <lista de atributos> from <lista de tabelas> inner join <lista de tabelas> on <lista de
operador lgico>
Exemplo: Select nome, CPF from cliente c inner join vendas v on c.id = v.id;
O exemplo acima uniu duas tabelas que possui uma relao entre elas.
Caso usa-se o Right ou left que significa direita ou esquerda usa-se o comando da seguinte
forma:
Exemplo: Select * from cliente c right outer join vendas v on c.id = v.id;
O exemplo acima uniu todas as colunas da tabela vendas na tabela cliente, sendo assim, se
houver 3 registros na tabela cliente e somente 2 registros na tabela vendas, aparecer 2 linhas
da tabela cliente na consulta.

Consulta cliente: Select nome, cidade, UF, datanascimento, gnero from cliente order

by nome where cidade = nome_da_cidade;


Consulta Funcionrios: Select nome, cargo, idade, datanascimento, dataadmissao,

comisso from funcionrios order by cargo where ativo = 1;


Consulta Vendas por Funcionrio: Select funcionrio venda, valortotal from venda

order by valortotal DESC where Day(data) = 12;


Consulta Vendas por Produto: Select p.descrio, p.precovenda iv.valortotal from
produto p inner join itemvenda iv on p.idproduto = iv.produto_itemvenda order by

iv.valortotal desc where month(data) = 09;


Consulta Vendas por Cliente2: Select c.nome, c.cidade, v.cliente_venda, v.valortotal
from cliente c inner join venda v on c.idcliente = v.cliente_venda order by nome,
cidade where month(data) = 09;

21.

DMLatpnouilge(mdsDa)

No SQL podem ser usados trs comandos para modificar os dados no banco de dados que so:
INSERT, DELETE E UPDATE.
O comando INSERT adiciona dados na tabela. A seguir mostrado o exemplo:
Insert into cliente (nome, id) values (Juliano, 1);
No exemplo acima inserido os atributos para as colunas cliente e id que est localizada
tabela cliente.
O comando DELETE deleta tabela, banco de dados e atributos. A seguir mostrado
exemplos:
Delete table cliente;
Delete from cliente where id = 1;
No ltimo exemplo de Delete o comando descrito exclui apenas os atributos da linha que o
id =1.
O comando UPDATE atualiza atributos na tabela. A seguir mostrado exemplos:
Update cliente set nome = Juliano where id = 1;
O exemplo acima atualiza o atributo nome no id 1 na tabela cliente.
A seguir sero mostradas tabelas com os comandos DML.
AO/TABELA

DML
Insert into cliente (Juliano, 111.111.11111, 11.111.111-9, Rua 25 de Dezembro,

Inserir registro cliente

Campinas, SP, 3872-3534, 19555556666, juliano.americo@aedu.com, 20-05-

Apagar registro cliente


Alterar registro cliente

2014, M);
Delete from cliente where idcliente = 1;
Update cliente nome = Francisco where
idcliente = 1;
Tabela -1 Cliente

Desenvolvido pelos Autores da ATPS

AO/TABELA

DML
Insert into funcionrio (Juliano,

Inserir registro cliente

111.111.111-11, 11.111.111-9, CTPS,

Apagar registro cliente


Alterar registro cliente

Tcnico, 20-06-1995, 1-01-2013);


Delete from funcionrio where idfuncionario
= 2;
Update funcionario nome = Fernando
where idfuncionario = 2;
Tabela -2 Funcionrio

Desenvolvido pelos Autores da ATPS

AO/TABELA
Inserir registro cliente
Apagar registro cliente
Alterar registro cliente

DML
Insert into venda (1, 12-09-2012, 16:00,
400,00, 1,);
Delete from venda where idvenda = 2;
Update venda valortotal = 500,00 where
idvenda = 1;
Tabela -3 Venda

Desenvolvido pelos Autores da ATPS

AO/TABELA
Inserir registro cliente
Apagar registro cliente
Alterar registro cliente

DML
Insert into Itemvenda(1, 2, 9, 20.99, 18.99,
200);
Delete from itemvenda where iditemvenda =
5;
Update itemvenda set valortotal = 300 where
iditemvenda = 4;
Tabela -4 Item venda

Desenvolvido pelos Autores da ATPS

AO/TABELA
Inserir registro cliente
Apagar registro cliente
Alterar registro cliente

DML
Insert into produto (Mouse, 20, 12,
Kmek, ptico);
Delete from produto where idproduto = 3;
Updade produto set precovenda = 30 where
id = 1;
Tabela -5 Produto

Desenvolvido pelos Autores da ATPS

2. Atividade: Procedures e Trigger


12.

aCoridePucsTg

Um procedure, ou rotina, simplesmente um repositrio para um conjunto de declaraes


SQL que podem conter declaraes condicionais e processamento lgico. Por exemplo uma
procedure pode contar com comandos de loop ou condicionais, bem como do/ while,
if/then/else, entre outros, permitindo a realizao de operaes mais complexas. Estas
procedures ficam diretamente no banco de dados que executa com uma melhor
perfomance/velocidade as rotinas dos procedures.
Tutorial Procedures
Suponha que precisemos de uma funo que, dado o nome de um departamento, retorne a
contagem do nmero de instrutores desse departamento. Essa funo pode ser usada em uma
consulta que retorna nomes e oramentos de todos os departamentos com mais de 12
instrutores. Veja abaixo a definao da funo:
create function cont_dept(nome_dept varchar(20))
returns integer
begin
declare cont_d integer;
select count(*) into cont_d from instrutor where instrutor.nome_dept = nome_dept
return cont_d;
end
select nome_dept, oramento from departamento where cont_dept(nome_dept) >12;
O padro SQL admite funes que podem retornar tabelas como resultado, essas funes so
chamadas funes de tabela. Um exemplo de consulta sem utilizar funes da tabela:
Select * from table(instrutor_de(Finance));

Esta consulta retorna todos os instrutores do departamento Finance. As funes de tabelas


podem ser imaginadas como views parametrizadas, permitindo o uso de parmetros. Veja
abaixo a funo de tabelas:
Create function instrutor_de (nome_dept varchar(20))
Returns table ( ID varchar(5), nome varchar(20), nome_dept varchar(20), salario
numeric(8,2))
Return table
(select ID, nome, nome_dept, salario from instrutor where instrutor nome_dept =
instrutor_de_nome_dept);
A SQL tambm suporta procedimentos. A funo cont_dept poderia ser um procedimento.
Veja a seguir o procedimento:
Begin
Select

count(*)

into

cont_d

from

instrutor

where

instrutor

nome_dept

proc_cont_dept.nome_dept
End
As palavras-chave in e out indicam, respectivamente, parmetros que devero ter valores
atribudos e parmetros cujos os valores so definidos no procedimento, a fim de retornar
resultados.
Procedimentos podem ser chamados por um procedimento SQL ou por SQL embutida, pelo
comando call:
Declare cont_d integer;
Call proc_cont_dept(Physics, cont_d);
A SQL permite que mais de um procedimento tenha o mesmo nome, desde que o nmero de
argumentos dos procedimentos com o mesmo nome seja diferente. O nome, juntamente com o
nmero de argumentos, usado para identificar um procedimento. A SQL tambm permite
que mais de uma funo tenha o mesmo nome, desde que as diferentes funes com o mesmo

nome tenham diferentes nmeros de argumentos ou que as funes com o mesmo nmero de
argumentos tenham pelos menos um argumento com tipo diferente.
Construes da linguagem para procedimentos e funes
A SQl aceita construes que lhe do quase todo o poder de uma linguagem de programao
de uso geral. O mdulo de armazenamento persistente ou Persistent Storage Module(PSM)
o que trata dessas construes.
Para declarar uma varivel usado o comando declare e para realizar atribuies usado o
comando set.
Um comando composto tem a forma begin... end, podem conter vrios comandos SQL. Um
comando composto com a forma begin atomic... end garante que todos os comandos contidos
dentro dele so executados como uma nica transao. Veja abaixo a seguinte sintaxe usando
o while e o repeat:
While <expresso booleana> do
Sequencia de comandos;
End while
Repeat
sequencia de comandos;
until expresso booleana
end repeat
H tambm um loop for que permite a iterao por todos os resultados de uma consulta:
Declare n integer default 0;
For r as
Select oramento from departamento where nome_dept = Music
Do set n=n r.oramento
End for
10

O programa busca os resultados da consulta uma linha por vez. O comando leave pode ser
usado para sair do loop, enquanto iterate passa para a prxima tupla, a partir do incio do loop,
saltando os comandos restantes.
Os comandos condicionais aceitos pela SQL incluem comandos if-then-else, usando esta
sintaxe:
If expresso booleana
Then comando ou comando composto
Elseif expresso booleana
Then comando ou comando composto
Else comando ou comando composto
End if
A SQL tambm aceita um comando case. A seguir ser mostrada uma construo de
procedimento em SQL. A funo registraAluno, que ser definida nos comandos abaixo,
registra um aluno em uma seo de curso, depois de verificar se o nmero de alunos na seo
no superior capacidade da sala alocada seo. A funo retorna um cdigo de erro, com
valor maior ou igual a 0 significando sucesso, um valor negativo significando uma condio
de erro; uma mensagem indicando o motivo para a falha retornada como um parmetro out.
- Registra um aluno depois de garantir que a capacidade da sala no foi excedida.
- Retorna 0 para sucesso e -1 se a capacidade foi excedida.
create function registraAluno(
in est_id varchar(5),
in est_id_curso varchar(8),
in est_id_sec varchar(8),
in est_semestre varchar(6),
int est_ano numeric (4,0),
11

int msgErro varchar(100)


returns integer
begin
declare matrAtual int;
select count(*) into matrAtual
from realiza where id_curso = est_id_curso and id_sec = est_id_sec and semestre =
est_semestre and ano = est_ano;
declare limite int;
select capacidade into limite from sala natural join seo where id_curso = est_id_curso
and id_sec = est_id_sec and semestre = est_semestre and ano = est_ano;
if(mastrAtual < limite)
begin insert into realiza values (est_id, est_id_curso, est_id_sec, est_semestre, est_ano,
null);
return (0);
end
- Caso contrrio, o limite de capacidade da seo j foi atingido set msgErro = Limite
de matrcula j alcanado para o curso II est_id_curso II seo II est_id_sec;
Return(-1);
End;

12

Tutorial Triggers
Um trigger (gatilho) um comando que o sistema executa automaticamente que modifica
diretamente o banco de dados. Antes da criao de um trigger preciso entender dois
conceitos que so:
1 Especificar quando uma trigger deve ser executada. Isso dividido em um evento que faz
com que a trigger seja verificada e uma condio que deve ser satisfeita para que a execuo
da trigger prossiga.
2- Especificar as aes a serem tomadas quando a trigger for executada.
Necessidades de triggers
As triggers podem ser usadas para implementar certas restries de integridade que no
podem ser especificadas usando o mecanismo de restrio da SQL. As triggers tambm so
mecanismos teis para alertar as pessoas ou iniciar certas tarefas automaticamente quando
certas condies so atendidas. As triggers s interfere no banco de dados e no em outros
sistemas que tem relao com o banco de dados.
Triggers em SQL
Agora iremos examinar de como os triggers so implementadas em SQL. Utilizaremos uma
sintaxe padro SQL, mas nem todos os bancos de dados possuem este padro. Abaixo ser
mostrada como as triggers podem ser usadas para garantir a integridade referencial sobre o
atributo id_perodo da relao seo. A primeira definio de trigger iniciada aps qualquer
insero na relao seo e garante que o valor de id_perodo sendo inserido seja vlido. Um
comando insert da SQL poderia inserir vrias tuplas na relao, e a clasula for each row no
cdigo da trigger percorreria explicitamente cada linha inserida. A clasula referencing new
row as cria uma varivel linhaNova (chamada varivel de transio) que armazena o valor de
uma linha inserida aps a insero.
Create trigger verif_periodo1 after insert on seo
Referencing new row as linhaNova
For each row

13

When (linhaNova.id_periodo not in (select id_periodo from periodo)) /*id_periodo no


presente em periodo*/
Begin
Rollback
End;
Create trigger verif_periodo2 after dleete on periodo referencing old row as linhaAnt for
each row
When(linhaAnt.id_periodo not in (select id_periodo from periodo) /*ultima tupla para
id_periodo excluda de periodo */ and linhaAnt.id_periodo in (select id_periodo from
seo)) /* e id_periodo ainda referenciada por seo*/
Begin
Rollback
End;

14

2.

oPcedurs

Abaixo ser mostrado o cdigo de criao de uma procedure que retorna a comisso do
funcionrio, com a insero do ms e ano da consulta da comisso e o id do funcionrio.
Cdigo:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `ret_comissao_funcionario`(IN
IDFUNCIONARIO INTEGER,
IN M INTEGER, IN A INTEGER)
BEGIN
IF IDFUNCIONARIO > 0 THEN
SELECT F.NOME, V.VALORTOTAL *(F.COMISSAO/100) AS COMISSAO FROM
VENDAS V
INNER

JOIN

FUNCIONARIOS

IDFUNCIONARIO

AND

WHERE

F.IDFUNCIONARIO

V.FUNCIONARIO_VENDA
=

IDFUNCIONARIO

AND

MONTH(DATA) = M AND YEAR(DATA) = A;


ELSE
SELECT F.NOME, V.VALORTOTAL *(F.COMISSAO/100) AS COMISSAO FROM
VENDAS V INNER JOIN FUNCIONARIOS F WHERE V.FUNCIONARIO_VENDA =
F.IDFUNCIONARIO AND MONTH(DATA) = M AND YEAR(DATA) = A;
END IF;
END
Na

rea

de

cdigo

do

SQL

inserir

comando:

CALL

RET_COMISSAO_FUNCIONARIO(1, 09, 2011);


Com este comando o SQL ir invocar a procedure, e os valores entre parenteses so os
argumentos declarado na procedure que consultado na tabela. O 1 parmetro a id do

15

respectivo funcionrio. O 2 parmetro o ms que quer ser consultado. O 3 parmetro o


ano que quer ser consultado.

16

Abaixo ser mostrado o cdigo de criao de uma procedure que aps a insero dos dados o
cdigo retorna a tabela itemvenda com o clculo do valortotal do produto, utilizando como
base quantidade, valor unitrio e valor de desconto do produto.

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `inc_item_venda`(IN OP


VARCHAR(1), IN VENDA_ITEMVENDA INTEGER,
IN PRODUTO_ITEMVENDA INTEGER, IN QTDE INTEGER, IN
VALORUNITARIO INTEGER, IN VALORDESCONTO INTEGER)
BEGIN

IF OP = 'p' then

INSERT INTO ITEMVENDA(VENDA_ITEMVENDA, PRODUTO_ITEMVENDA,


QTDE,
VALORUNITARIO, VALORDESCONTO, VALORTOTAL) VALUES
(VENDA_ITEMVENDA, PRODUTO_ITEMVENDA, QTDE, VALORUNITARIO,
VALORDESCONTO, VALORUNITARIO * (QTDE*(100-VALORDESCONTO)/100));
else
INSERT INTO ITEMVENDA(VENDA_ITEMVENDA, PRODUTO_ITEMVENDA,
QTDE,
VALORUNITARIO, VALORDESCONTO, VALORTOTAL) VALUES
(VENDA_ITEMVENDA, PRODUTO_ITEMVENDA, QTDE, VALORUNITARIO,
VALORDESCONTO, (VALORUNITARIO * QTDE)-VALORDESCONTO);
END IF;
SELECT * FROM ITEMVENDA;
END
Na rea de cdigo do SQL inserir o comando: CALL inc_item_venda('p', 2, 2, 10, 30.00,
5.00);
17

Com este comando o SQL ir invocar a procedure, e os valores entre parenteses so os


parmetros declarado na procedure que inserido na tabela itemvenda. Os 1 parmetro
representa p = porcentagem ou v = valor para realizar o desconto. O 2 parmetro o id da
venda do produto. O 3 parmetro o id do produto. O 4 parmetro quantidade do produto
a ser vendido. O 5 parmetro o valor do produto. O 6 parmetro o valor do desconto
sobre o produto.
32.

gTries

Abaixo ser mostrado o cdigo de criao de uma Trigger que aps a insero, atualizao ou
excluso de um dado na tabela itemvenda, invocado a procedure que soma os valores totais
de uma venda e transfere este valor para a tabela venda na coluna valortotal do respectivo
produto.
Cdigo:
DELIMITER $$
CREATE

TRIGGER

ATUALIZA_VALOR_VENDA

AFTER

INSERT

ON

ITEMVENDA FOR EACH ROW


BEGIN
CALL SOMA_VALORES(1);
end$$
AFTER UPDATE ON ITEMVENDA FOR EACH ROW
BEGIN
CALL SOMA_VALORES(1);
END$$
AFTER DROP ON ITEMVENDA FOR EACH ROW
BEGIN
CALL SOMA_VALORES(1);
END$$
18

DELIMITER ;
Cdigo Procedure:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `SOMA_VALORES`(IN OP
INTEGER)
BEGIN
UPDATE VENDAS SET VALORTOTAL = (SELECT SUM(IV.VALORTOTAL) FROM
ITEMVENDA IV WHERE IV.VENDA_ITEMVENDA = OP) where idvenda = OP;
END

19

3. Atividade: Otimizao de Consultas e Gerenciamento de Transaes


13.

TutoriamlOzdeCns

Neste tutorial ser apresentada tcnicas de otimizao e consultas de instrues SQL. Dentro
destas tcnicas sero aplicados 4 instrues principais do SQL que so: SELECT, INSERT,
UPDATE e DELETE.
Um dos principais fatores que impactam no desempenho de uma instruo SQL so ndices.
Com a criao de um ndice pode reduzir a quantidade de passos internos para a execuo de
instrues SQL. Para cada consulta o SQL seleciona o melhor indice a partir de critrios por
ele definidos. Para que um ndice tenha maior desempenho o importante que o indice
englobe o maior nmero de campos por exemplo: Se o ndice for buscar os campos A, B, C
alm de ser usado para buscar A, B, C tambm pode ser usado para buscar A, B e tambm
somente A. Dessa forma, o ndice ter bom desempenho e aproveitamento nas consultas.
Abaixo mostrado um cdigo para criao de ndices na linguagem SQL. Vamos utilizar
como exemplo a tabela vendas da ATPS.
CREATE TABLE VENDA (
IDVENDA INT NOT NULL AUTO_INCREMENT,
CLIENTE_VENDA INT NOT NULL,
DATA DATE NOT NULL,
HORA TIME NOT NULL,
VALORTOTAL NUMERIC(15,2) NOT NULL,
FUNCIONARIO_VENDA INT NOT NULL,
INDEX FK_CLIENTE_VENDA (CLIENTE_VENDA),
INDEX FK_FUNCIONARIO_VENDA (FUNCIONARIO_VENDA),
FOREIGN KEY (CLIENTE_VENDA) REFERENCES CLIENTE (IDCLIENTE).

20

FOREIGN

KEY

(FUNCIONARIO_VENDA)

REFERENCES

FUNCIONARIO

(IDFUNCIONARIO),
PRIMARY KEY (IDVENDA));
Quando utilizamos os filtros os SGBDs efetua uma ao chamada de TABLE SCAN. Essa
consiste em percorrer toda a tabela, avaliando cada registro. Caso o registro atenda as
condies definidas no filtro ele includo no conjunto de retorno, seno apenas
desconsiderado.
J quando criamos um ndice numa coluna, o gerenciador do banco de dados ordena tabela
por essa coluna e a partir de ento os filtros (sobre essa coluna) so feitos atravs de uma
busca binria. Na busca binria, a tabela dividida ao meio, onde os registros com os menores
valores no campo indexado ficam na parte superior, e os registros com os maiores valores na
parte inferior. O gerenciador verifica ento em que parte est contido o valor pesquisado, se
na primeira metade ou na segunda. Isso facilmente feito comparando o valor pesquisado
com o registro intermedirio.Se o valor pesquisado for maior que o do registro intermedirio,
o registro desejado encontra-se na segunda metade, caso contrrio, encontra-se na primeira
metade.
Caso j tenha criado uma tabela sem ndices possvel adicionar um ndice numa tabela j
criado. Abaixo mostrado o cdigo, ainda utilizando como exemplo a tabela vendas, mas sem
ndices:
CREATE TABLE VENDA (
IDVENDA INT NOT NULL AUTO_INCREMENT,
CLIENTE_VENDA INT NOT NULL,
DATA DATE NOT NULL,
HORA TIME NOT NULL,
VALORTOTAL NUMERIC(15,2) NOT NULL,
FUNCIONARIO_VENDA NOT NULL,
FOREIGN

KEY

(FUNCIONARIO_VENDA)

REFERENCES

FUNCIONARIO

(IDFUNCIONARIO),
21

FOREIGN KEY (CLIENTE_VENDA) REFERENCES CLIENTE (IDCLIENTE),


PRIMARY KEY (IDVENDA);
Agora adicionando um ndice aps ter criado a tabela sem ndice:
CREATE INDEX PK_IDVENDA ON VENDA (IDVENDA);
Conclundo, o uso de ndices uma tima tcnica para otimizar a consulta no banco de dados,
melhorando a performance de consulta no mesmo.
Outra dica importante para otimizao de consultas selecionar somente os campos que se
desejar ver ao invs de utilizar o SELECT *.
23.

mOizatodeuCnsl
Consulta cliente: Select nome, cidade, UF, datanascimento, gnero from cliente order
by nome where idcliente selecionar_numero_id;//Nesse filtro foi utilizado a idcliente
pelo fato de ser um nmero e pode ser utilizado com uma ndex no banco de dados,

tornando a consulta mais rpida.


Consulta Funcionrios: Select nome, cargo, idade, datanascimento, dataadmissao,
comisso from funcionrios order by cargo where ativo = 1; // Atualizando a coluna

ativo como ndex e a consulta ser otimizada.


Consulta Vendas por Funcionrio: Select funcionrio venda, valortotal from venda
order by valortotal DESC where Day(data) = 12; //Atualizando a coluna data como

ndex e a consulta ser otimizada.


Consulta Vendas por Produto: Select p.descrio, p.precovenda iv.valortotal from
produto p inner join itemvenda iv on p.idproduto = iv.produto_itemvenda order by
iv.valortotal desc where month(data) = 09; //Atualizando a coluna data como ndex a

consulta ser otimizada


Consulta Vendas por Cliente2: Select c.nome, c.cidade, v.cliente_venda, v.valortotal
from cliente c inner join venda v on c.idcliente = v.cliente_venda order by nome,
cidade where month(data) = 09; //Atualizando a coluna data como ndex a consulta
ser otimizada.

22

3.

GaernmcitodTs

Neste ttulos vamos falar sobre transaes. Transaes so sequncias de aes (operaes de
banco de dados) que so executadas como um conjunto: Todas so executadas com sucesso ou
nenhuma delas. Por exemplo:
Um banco transfere dinheiro entre duas contas (saque + depsito) se qualquer uma das
operaes falhar, a transferncia ser cancelada.
A sintaxe de uma transao a seguinte: START TRANSACTION;//Inicia a transao
<COMANDOS SQL>
ROLLBACK; //Este comando utilizado quando houver falha na transao retornado os
valores iniciais antes da transao.
COMMIT; //Finaliza da transao
As transaes garantem a consistncia e integridade dos banco de dados. Todas as
modificaes durante a transao so temporrias aps o comando COMMIT as modificaes
so persistidas. E em qualquer momento antes do COMMIT as modificaes podem ser
canceladas atravs do comando ROLLBACK.
Vamos ao um exemplo de uma conta bancria onde faremos um saque. Exemplo:
Saque R$100
1.
2.
3.
4.

LER O SALDO ATUAL


SALDO = SALDO ATUAL SAQUE
REGISTRAR SALDO
ENTREGAR DINHEIRO

Outro exemplo de transferncia da conta poupana. Exemplo


Transferncia R$100
1.
2.
3.
4.
5.
6.

LER POUPANA
SALDO POUPANA = SALDO ATUAL -100
LER SALDO CCORR
SALDO CCORR = SALDO ANTERIOR + 100
GRAVAR SALDO POUPANA
GRAVAR SALDO CCORR.
23

Se em algum desses conjuntos de aes falhar a transao finalizada e volta aos valores
iniciais antes da transao. Seno parte dos dados podem ser perdidos e isto compromete
totalmente o banco de dados.
Propriedades das Transaes
Os SGDBS possuem suporte imbutido Transaes. ACID significa: Atomicidade,
Consistencia, Isolamento e Durabilidade.
Atomicidade significa que so executadas como uma unidade. O SGDB garante que todas as
transaes so executadas ou desfeitas.
Consistncia significa que os dados consistentes antes e depois da transao. Apenas dados
vlidos foram gravados. A transao no pode quebrar regras de integridade e respeita chave
primria, estrangeira e nicas. Por exemplo: aps uma transao no haver chave primria
duplicada.
Isolamento significa que mltiplas transaes simultneas no afetam umas as outras.
Transaes no enxergam dados commitados. O nvel de isolamento define quanto uma
transao enxerga alteraes das outras. Por exemplo: Gerentes podem ver transferncias
entre contas dbito ou crdito mas no as duas operaes.
Durabilidade significa que se uma transao confirmada (COMMIT) ela ser persistente.
No pode ser perdida e nem desfeita. Garantida atravs de LOGS e TRANSAO e Backup.
Por exemplo: Aps concluda a transferncia, a energia falha. Ao retornar os dados continuam
ntegros e registrados conforme o momento anterior da queda de energia.
Abaixo ser mostrado um cdigo de transao em um SGDB:
Primeiro vamos criar uma tabela chamada Conta_bancaria;
CREATE TABLE CONTA_BANCARIA (
ID INT NOT NULL AUTO_INCREMENT,
TITULAR VARCHAR(50) NOT NULL,
SALDO DOUBLE (15,2) NOT NULL,
PRIMARY KEY (ID));
24

Aps criado a tabela vamos inserir pelo menos 3 dados:


INSERT INTO CONTA_BANCARIA (TITULAR, SALDO) VALUES (JULIANO,
220);
INSERT INTO CONTA_BANCARIA (TITULAR, SALDO) VALUES (CELSO, 315);
INSERT INTO CONTA_BANCARIA (TITULAR, SALDO) VALUES (ALEXANDRE,
-220);
Agora vamos atualizar o saldo acrescido do juros de 5% sobre o valor do saldo positivo na
conta bancria dos 3 registros que inserimos anteriormente. Mas antes vamos colocar o
comando da transao e em seguido a atualizao sobre os saldos:
START TRANSACTION;
UPDATE CONTA_BANCARIA SET SALDO = SALDO/0,95 WHERE SALDO > 0;
O comando acima vai atualizar os saldos que sejam positivo com o aumento de 5%. Esta
atualizao dentro de uma transio temporria. Caso esta operao estiver errada podemos
utilizar o comando ROLLBACK;, e retorna o valor inicial antes da transio.
Para finalizar uma transio utilizamos o comando COMMIT;, que mantm o alterao dos
dados da tabela permanentemente, caso no ter ocorrido nenhuma falha durante a transio. E
caso seja usado o comando ROLLBACK; aps o COMMIT; o mesmo no funcionar os
valores aps o comando COMMIT; iro se manter.

25

4. Atividade: Banco de Dados Distribudos e Data Warehouse


14.

BancodeDbsitru

Banco de Dados Distribudos ou BDDs so vrios banco de dados se inter-relacionando,


distribudos por uma rede de computadores. Existem dois tipos de BDDs os homogneos e os
heterogneos. Os homogneos so banco de dados dos mesmo tipo, e os heterogneos so
compostos por banco de dados de tipos distintos. No banco de dados distribudos os arquivos
podem estar replicados ou fragmentdaos. Quando os dados se encontram replicados, existe
uma cpia de cada um dos dados em cada n (n = computador onde est o banco de dados),
tornando as bases iguais (tabela). Na fragmentao, os dados se encontram divididos ao longo
do sistema, ou seja, cada n possui um catlogo que contm cada informao dos dados dos
bancos adjacentes.
Num banco de dados distribudos os arquivos podem estar replicados ou fragmentados, esses
dois tipos podem ser encontrados ao longo dos ns do sistema de BDD's. Quando os dados se
encontram replicados, existe uma cpia de cada um dos dados em cada n, tornando as bases
iguais (ex: tabela de produtos de uma grande loja). J na fragmentao, os dados se encontram
divididos ao longo do sistema, ou seja a cada n existe uma base de dados diferente se
olharmos de uma forma local, mas se analisarmos de uma forma global os dados so vistos de
uma forma nica, pois cada n possui um catlogo que contm cada informao dos dados
dos bancos adjacentes. A replicao dos dados pode se dar de maneira sncrona ou assncrona.
No caso de replicao sncrona, cada transao dada como concluda quando todos os ns
confirmam que a transao local foi bem sucedida. Na replicao assncrona, o n principal
executa a transao enviando confirmao ao solicitante e ento encaminha a transao aos
demais ns.
Aplicaes locais: No requerem dados de outros lugares.
Aplicaes global: Requerem dados de outros lugares.
Existem duas consideraes que so importantes em um banco de dados distribudos:
A distribuio transparente: usurios devem interagir com o sistema como se ele fosse um
nico sistema.

26

Transaes transparentes: cada transao deve manter a integridade dos dados dentre os
mltiplos banco de dados.
Processamento de consultas distribudas
A transparncia para leitura mais fcil de se conseguir e manter do que a transparncia para
atualizao. O maior problema para a atualizao garantir que todas as rplicas e fragmentos
sejam atualizados, aps uma atualizao em uma das rplicas ou fragmentos.
Um dos fatores mais importantes no desempenho de uma consulta, em uma base centralizada,
a quantidade de acesso a disco necessria para atingir o resultado. Em um banco distribudo
os problemas aumentam, pois existe tambm a preocupao com a transmisso de dados na
rede. Um fator interessante para a consulta realizada em uma base distribuda que para os
diversos sites podem processar partes da consulta em paralelo.
Na realizao de uma consulta simples (trivial), como consultar todas as tuplas da relao
CONTA, pode caracterizar um processamento no to trivial, pois CONTA pode estar
fragmentada, replicada ou ambas.
Vantagens nos sistemas de Banco de Dados Distribudos
Reflete a estrutura organizacional fragmentos do banco de dados esto localizados nos
departamentos que se relacionam com os dados que estes persistem.
Autonomia Local um departamento pode controlar seus dados (j que o mais
familiarizado com estes).
Maior disponibilidade uma falha em um banco de dados afetar somente um fragmento,
ao invs do banco de dados inteiro.
Melhor performance os dados esto localizados prximo do local de maior demanda e os
sistemas de banco de dados por si s so paralelizveis, permitindo carregar no banco de
dados para o balanceamento entre servidores (a elevada carga em um mdulo do banco de
dados no ir afetar os outros mdulos de banco de dados em um banco de dados distribudo).
Econmico custa menos criar uma rede de pequenos computadores com o mesmo poder
que um nico computador maior.

27

Modularidade sistemas podem ser modificados, adicionados ou removidos do banco de


dados distribudo sem afetar os outros mdulos (sistemas).

28

Desvantagens dos Banco de Dados Distribudos


Complexidade trabalho extra deve ser feito pelos DBAs para garantir que a natureza da
distribuio do sistema seja transparente. Trabalho extra deve ser feito para manter sistemas
mltiplos diferentes, ao invs de um nico grande. Design de banco de dados extra deve
tambm ser feito para levar em conta a natureza desconectada do banco de dados - por
exemplo, joins tornam-se proibitivamente caros quando so rodados entre mltiplas
plataformas.
Implantao mais cara o aumento da complexidade e uma infraestrura mais extensa
significa custo extra de trabalho
Segurana fragmentos de banco de dados remotos devem ser seguros e, como eles no so
centralizados ento os lugares remotos tambm devem ser seguros. A infraestrutura tambm
deve ser segura (por exemplo, pela encriptao dos links de rede entre os lugares remotos).
Difcil de manter a integridade em sistemas distribudos, reforar a integridade ao longo
de uma rede pode exigir demais dos recursos da rede para ser vivel.
Inexperincia Dificuldades no gerenciamento. Pode ser difcil trabalhar com banco de
dados distribudos e como uma rea relativamente nova ainda no h tantos casos (ou
experincias) prticos de seu uso disponveis como exemplo.
Falta de padres ainda no h metodologias e ferramentas para ajudar usurios a converter
um SGBD centralizado para um SGBD distribudo.
Design do banco de dados mais complexo alm das dificuldades normais, o design de um
banco de dados distribudos tem que considerar a fragmentao dos dados, alocao dos
fragmentos em lugares especficos e a replicao de dados.

29

SGDB MySQL
Verso. MySQL Workbench 6.1.7 e MySQL Community Server 5.6.20
Arquitetura de Replicao Disponvel
O MySQL permite um tipo de replicao conhecido como Master-Slave, ou seja, temos um
servidor MySQL atuando como Master e um ou mais servidores MySQL atuando como
Slaves. O servidor Master grava em um log binrio de alteraes todos os comandos de
atualizao da base de dados. Os slaves por sua vez se conectam ao master, lem o arquivo de
log binrio e executam os comandos encontrados neste log. Desta forma, todas as alteraes
ocorridas no master so imediatamente replicadas para os outros servidores slaves.
A replicao Master-Slave um processo que poder existir um atraso de informaes entre o
master e os slaves dependendo do meio de comunicao entre eles. Alm disto, como os
slaves copiam as alteraes do master, todas as modificaes dos dados devem ser aplicadas
ao master, caso contrrio os servidores ficaro sem sincronismo. Este processo incremental
com a execuo de todas as alteraes indicadas no log binrio a partir de um determinado
momento, no garante que os dados existentes antes do incio da replicao eram idnticos.
Neste caso, antes de iniciar a replicao preciso sincronizar todos os servidores, colocando
em todos eles uma cpia da base de dados a ser replicada.
Para configurar a replicao cada servidor MySQL dever possuir um server-id nico e o
master deve estar com o log binrio habilitado. Alm disto, crie um usurio no master com o
privilgio FILE (3.23.x) ou REPLICATION SLAVE (4.x ou superior), para que os slaves
possam se conectar a este servidor e fazer a leitura do seu log binrio. Nos slaves preciso
indicar o endereo do servidor master e o usurio que ser utilizado para fazer a conexo. A
seguir esta um exemplo de configurao do master e slave:
Master my.cnf

Slave my.cnf

[mysqld]

[mysqld]

...

...

server-id=1

server-id=2
#

log-bin
...

IP

ou

DNS

da

mquina

master

master-host=master.com.br
master-user=user_replication
30

master-password=senha_usuario
master-port=3306
Uma vez configurado os servidores, coloque a imagem dos dados a serem replicados em cada
um dos servidores e reinicie o MySQL em todos os hosts. Depois disto a replicao estar
funcionando.
Ferramentas de Apoio
Para verificar o sucesso da configurao execute os comandos SHOW MASTER STATUS e
SHOW SLAVE STATUS, respectivamente nos servidores master e slaves.
SGDB PostgreSQL
Verso: PostgreSQL 9.2
Arquitetura de Replicao Disponvel
Ferramentas de Apoio
SGDB SQL Server
Verso: SQL Server 2014 Express
Arquitetura de Replicao Disponvel
A replicao usa os seguintes componentes no Microsoft SQL Server Compact 3.5:

SQL Server Compact 3.5 Mecanismo de Banco de Dados;


Agente de Cliente do SQL Server Compact 3.5;
Agente de Servidor do SQL Server Compact 3.5;
Provedor de Replicao do SQL Server Compact 3.5;

Ferramentas de Apoio

31

24.

DatWrehous

Neste ttulo iremos abordar um pouco sobre, que consiste num sistema que atravs de
diferentes transaes e processos, faz uma cpia das informaes registradas nos diversos
sistema espalhados na organizao atravs da minerao de dados, organizando-os em
diferentes nveis ou camadas de dados para facilitar as consultas, relatrios e analises atravs
de ferramentas OLAP.
O grande crescimento do ambiente de negcios, mdias e grandes empresas armazenam
tambm um alto volume de informaes, onde que juntamente com a tecnologia da
informao, a correta extrao destas informaes um fator chave para se conseguir
destaque no mercado cada vez mais competitivo.
Segundo Date (2004) Data Warehouse (que no portugus significa, literalmente armazm de
dados) um deposito de dados orientado por assunto, integrado, no voltil, varivel com o
tempo, para apoiar as decises gerenciais.
Refere-se aos sistemas transacionais organizados em uma determinada aplicao de uma
empresa. A orientao por assunto uma caracterstica importante, pois toda a modelagem do
DW (Data Warehouse) orientada a partir dos principais assuntos da empresa.
Uma caracterstica importante do Data Warehouse, a integrao, que feita do ambiente
operacional para as aplicaes do Data WareHouse. A integrao realizada visando
padronizar os dados dos diversos sistemas em uma nica representao, para serem
transferidos em uma nica base de dados do Data Warehouse.
Outra caracterstica a no-volatilidade. Nos sistemas transacionais os dados sofrem diversas
alteraes como, por exemplo, a incluso, alterao e excluso de dados. No ambiente do
Data Warehouse os dados, antes de serem carregados, so filtrados e limpos gerando
informao. Aps esta etapa esses dados sofrem somente operaes de consulta e excluso,
sem que possam ser alterados, e esta caracterstica representa a no-volatilidade.
Outra caracterstica a variao. A variao em relao ao tempo consiste na manuteno de
um histrico de dados em relao ao perodo de tempo maior que dos sistemas comuns, isto
significa que as tcnicas de minerao de dados no so aplicadas em tempo real, de forma a
no comprometer o desempenho dos bancos transacionais OLTP. Ao analisarmos um dado de
um Data Warehouse, o mesmo sempre estar relacionado a um perodo determinado de
32

tempo, pois ter uma chave de tempo que ir indicar o dia no qual esses dados foram
extrados.
O Data Warehouse consiste a juno de diversas tecnologias que permitem fazer consulta no
banco de dados, para posterior anlise das informaes. Devido ao ambiente projetado, o Data
Warehouse tem uma nica fonte de dados, que facilita muito o trabalho do analista, porque os
dados que l existem esto tratados e no h redundncia das informaes.
Fonte de dados
Sistemas transacionais da empresa, pode ser composto por diversas formas de dados.
Data Stage
Composta por uma rea de armazenagem e um conjunto de processos. Sua funo extrair os
dados dos sistemas transacionais, proceder a limpeza, a transformao, combinao, de
duplicao e preparao dos dados para o uso no Data Warehouse. Estes dados no so
apresentados ao usurio final.
Servidor de apresentao
Ambiente onde os dados so organizados e armazenados para consulta direta pelos usurios
finais. Normalmente os dados esto disponveis nestes servidores em bancos de dados
relacionais.

Data Mart
Subconjunto lgico do Data Warehouse, geralmente divididos por departamento ou vises
necessrias para os usurios.
Ferramentas de acesso aos dados
Maneira em que os dados so extrados e integrados com cada processo distinto do Data
Warehouse. As funes para a transformao dos dados so:

Extrao: retirada dos dados dos sistemas transacionais e armazenagem na rea de


data stage;
Carga de dimenses processadas: realimentao do processo para garantir a
representao correta dos dados em novo formato.
33

Carga, Replicao e Recuperao: quando pronto, o dado carregado no data mart


correspondente e so criados (ou atualizados) ndices para melhorar a performance das
consulta.
Alimentao: apresenta as vises do data mart de acordo com as necessidades dos

usurios.
Carga dos resultados dos modelos: serve para realimentar possveis modificaes no
data mart, caso este no esteja adequado a aplicao que o utiliza.

Arquitetura Data Warehouse Genrica

Figura-1 Arquitetura DW
Desenvolvido pelos autores da ATPS

Data Mining
A minerao de dados formada por um conjunto de ferramentas e tcnicas que atravs do
uso de algoritmos de aprendizagem ou classificao baseados em redese neurais e estatsticas,
so capazes de explorar um conjunto de dados, extraindo ou ajudando a evidenciar padres
nestes dados e auxiliando na descoberta de conhecimento. Esse conhecimento pode ser
apresentado por essas ferramentas de diversas formas: agrupamentos, hipteses, regras,
rvores de deciso, e grafos.
Na era do computador a novidade o volume enorme de dados que no pode mais ser
examinado procura de padres em um prazo razovel. A soluo instrumentalizar o
prprio computador para detectar relaes que sejam novas e teis. A minerao de dados
34

(MD) surge para essa finalidade e pode ser aplicada tanto para a pesquisa cientifica como para
impulsionar a lucratividade da empresa madura, inovadora e competitiva.
Diariamente as empresas acumulam grande volume de dados em seus aplicativos
operacionais. So dados brutos que dizem quem comprou o qu, onde, quando e em que
quantidade. a informao vital para o dia-a-dia da empresa. Se fizermos estatstica ao final
do dia para repor estoques e detectar tendncias de compra, estaremos praticando o Bussiness
Intelligence (BI) traduzindo para o portugus Inteligncia nos Negcios. Se analisarmos os
dados com estatstica de modo mais refinado, procura de padres de vinculaes entre as
variveis registradas, ento estaremos fazendo minerao de dados. Buscamos com a MD
conhecer melhor os clientes, seus padres de consumo e motivaes. Atravs da MD, esses
dados agora podem agregar valores s decises da empresa, sugerir tendncias, desvendar
particularidades dela e de seu meio ambiente e permitir aes melhores informadas aos seus
gestores.
Exemplos de empresas que utilizam Data Mining
Vestibular PUC RJ
Utilizando as tcnicas da minerao de dados, um programa de obteno de conhecimento
depois de examinar milhares de alunos forneceu a seguinte regra: se o candidato do sexo
feminino, trabalha e teve aprovao com boas notas no vestibular, ento no efetivava a
matrcula. Estranho, ningum havia pensado nisso. Mas uma reflexo justifica a regra
oferecida pelo programa: de acordo com os costumes do Rio de Janeiro, uma mulher em idade
de vestibular, se trabalha porque precisa, e neste caso deve ter feito inscrio para ingressar
na universidade pblica gratuita. Se teve boas notas provavelmente foi aprovada na
universidade pblica onde efetivar matrcula. Claro que h excees: pessoas que moram em
frente PUC, pessoas mais velhas, de alto poder aquisitivo e que voltaram a estudar por
outras razes que ter uma profisso, etc. Mas a grande maioria obedece regra anunciada.

35

Estado civil x cargos de servidores da SEFAZ-AM


Com o uso de data mining foram verificadas correlaes entre o estado civil e salrios da
Secretaria de Fazenda do Estado do Amazonas. Notava-se que cerca de 80% dos servidores de
maior poder aquisitivo deste rgo eram divorciados/desquitados, enquanto que em outras
instituies, como por exemplo na Secretaria de Educao (composta em sua maioria por
professores), esta mdia de divorciados/desquitados era inferior a 30%. Longe de parecer
coincidncia, os dados sugerem que servidores com maior poder aquisitivo se envolvam com
relaes extra-conjugais, resultando geralmente em desfazimento do casamento.

36

5. BIBLIOGRAFIA
http://pt.wikipedia.org/wiki/SQL#DML__Linguagem_de_Manipula.C3.A7.C3.A3o_de_Dados <Acesso em 05/09/2014>.
http://www.metropoledigital.ufrn.br/aulas_avancado/web/disciplinas/banco_de_dados/aula_1
1.html <Acesso em 08/09/2014>.
ELMASRI, Ramez; NAVATHE, Shamkant (orgs). Sistemas de Banco de Dados 4 ed. Rio de
Janeiro: Pearson Addison Wesley, 2005.
http://www.devmedia.com.br/artigo-sql-magazine-74-utilizando-stored-procedures-views-etriggers-no-mysql/16471 <Acesso em 09/09/2014>.
PLT Sistema de Banco de Dados Abraham Silberschatz, Henry F. Korth e S. Sudarshan
https://docs.google.com/file/d/0Bwtkydm_xvOrc24xcU81a1dueFU/edit?pli=1 <Acesso em
14/09/2014>
http://www.webgoal.com.br/como-otimizar-consultas-no-mysql/ <Acesso em 14/09/2014>
http://www.linhadecodigo.com.br/artigo/3620/indices-mysql-otimizacao-de-consultas.aspx
<Acesso em 15/09/2014>
http://www.devmedia.com.br/otimizacao-do-mysql-otimizacao-de-consultas-sql-parte-2/294
<Acesso em 15/09/2014>
http://pt.slideshare.net/ViniciusPaluch/transacoes-em-banco-de-dados-pt1

<Acesso

em

15/09/2014>
http://pt.wikipedia.org/wiki/Banco_de_dados_distribu%C3%ADdos

<Acesso

em

15/09/2014>
http://www.devmedia.com.br/o-que-e-um-banco-de-dados-distribuido/24762

<Acesso

em

15/09/2014>
http://www.devmedia.com.br/replicacao-de-dados-no-mysql/2054 <Acesso em 15/09/2014>
http://pt.wikipedia.org/wiki/Armaz%C3%A9m_de_dados <Acesso em 15/09/2014>
37

Das könnte Ihnen auch gefallen