Você está na página 1de 30

A lgebra Relacional

uma linguagem de consulta procedural. Os operadores da lgebra relacional recebem


uma ou duas relaes como operandos e produzem uma nova relao como resultado.
Operaes fundamentais da lgebra relacional so:
seleo;
projeo;
produto cartesiano;
unio;
diferena entre conjuntos.
Com estas operaes fundamentais possvel exprimir qualquer consulta em lgebra
relacional.
Seleo
Seleciona tuplas (linhas) que satisfazem um dado predicado (uma condio lgica) nos
valores dos atributos.

Projeo
Copia a relao dada como argumento, deixando alguns atributos (colunas) de lado.
Pode ser entendida como uma operao que filtra as colunas de uma tabela. Por operar
sobre apenas um conjunto de entrada, a projeo classificada como uma operao
unria.

HISTRICO DA LINGUAGEM DE CONSULTA SQL


SQL (Strutured Query Language Linguagem Estruturada de Consulta) a
formao de seu nome caracteriza sua finalidade. No uma linguagem especificamente
criada para desenvolver sistemas, como so as linguagens de programao:
PASCAL,C,DELPHI, entre outras. to somente uma linguagem utilizada para facilitar
o acesso de informaes (por meio de consultas, atualizaes e manipulaes de dados)
armazenadas em bancos de dados do tipo relacional
VISO GERAL DA LINGUAGEM SQL
A linguagem de consulta estruturada SQL composta por dois grupos de
instrues utilizadas no processo de administrao e controle de bancos de dados,
sendo: DDL (Data Definition Language Linguagem de Definio de Dados) e DML
(Data Manipulation Language Linguagem de Manipulao de Dados), descritos
em seguida:

As instrues do tipo DDL( Data Definition Language) permitem efetuar a


criao das estruturas de tabelas, ndices e bancos de dados como um todo.
Permitem tambm efetuar alteraes nas estruturas criadas, bem como remover
estruturas existentes, Neste grupo esto as instrues: CREATE TABLE, DROP
TABLE, ALTER TABLE, CREATE INDEX e DROP INDEX.

As instrues do tipo DML( Data Manipulation Language) permitem efetuar a


manipulao dos dados que estejam armazenados nas tabelas de um determinado
banco de dados. Desta forma possvel cadastrar, alterar e excluir registros
existentes. Neste grupo encontram-se as instrues: INSERT, SELECT, UPDATE
e DELETE.

De todos os comandos existentes , o comando SELECT o mais importante e


utilizado, pois com ele que se obtm a extrao de listas de informao.

Os comandos do tipo DML possuem uma grande variedade de aplicao. Para


que isto ocorra, eles operam com um grande conjunto de clusulas (FROM, WHERE,
GROUP BY, HAVING e ORDER BY) predefinidas que permitem efetuar a aplicao
de condies que alteram a forma de funcionamento.
SQL uma linguagem de Quarta gerao muito poderosa, porque com poucas
instrues possvel fazer acessos informao de bancos de dados. Ao passo que, se
esses acessos forem feitos com uma linguagem de terceira gerao, como C e PASCAL
ou mesmo linguagens de macrocomandos como CLIPPER, obrigariam a escrever
muitas vezes algumas pginas de programas.

Devido a esta caracterstica operacional, a linguagem de consulta estruturada


SQL ganhou grande espao, e utilizada atualmente como linguagem padro de acesso
a bases de dados dos variados distribuidores de software para esta rea.
CONCEITOS BSICOS

Banco de Dados est associado ao conjunto de tabelas (ou arquivos, dependendo


do banco de dados em uso) existente para a administrao de um determinado
evento do mundo real .

SGBD ( Sistema de Gerenciamento de Banco de Dados) est relacionado ao


software (ferramenta) que possibilita a facilidade de gerenciar as funes de edio,
consulta, controle e remoo de registros ou tabelas de um banco de dados

Chave Primria Seu conceito est associado ao campo ou conjunto de campos de


uma tabela que possuir um nico valor, que no ser repetido para nenhum outro
registro. Como exemplo desta situao podem-se considerar os nmeros de
CPF,CNPJ,RG ou qualquer cdigo de controle utilizado.

Chave Estrangeira Caracteriza-se por ser uma chave de uma tabela que possui
associao com a chave primria de uma outra tabela. Assim sendo, podem ocorrer
trs situaes de utilizao de chave estrangeira:

Relacionamento Um para Um A chave estrangeira pode ser criada em


qualquer uma das tabelas;

Relacionamento Um para Muitos A chave estrangeira pode ser criada apenas


na tabela do lado muitos;

Relacionamento Muitos para Muitos - A chave estrangeira deve ser criada


numa terceira tabela que faa o relacionamento entre as outras duas tabelas.

Integridade Referencial - um mecanismo utilizado que evita a quebra de ligao


entre os relacionamentos estabelecidos entre tabelas.

CRIAO DO BANCO DE DADOS


Na criao de um Banco de Dados o Interbase cria um banco de dados na
forma de um nico arquivo, o qual conter todos os elementos de formao do banco de
dados agregados.
Para criar um banco de dados no Interbase proceda da seguinte maneira:
1* Menu Database comando CREATE DATABASE
Ex.: CREATE DATABASE Nome_Banco

Em que a indicao nome deve ser substituda pelo nome do banco de dados a ser
criado.

REMOO DO BANCO DE DADOS


A remoo de banco de dados em SQL faz-se normalmente com a utilizao do
comando DROP DATABASE, seguido do nome do banco de dados. No caso do
programa Interbase est ao conseguida com a utilizao dos comandos :

A CRIAO DE TABELAS
As tabelas so os componentes mais importantes para a efetivao do trabalho
de manuteno dos bancos de dados, pois nas tabelas so inseridos os registros.
A criao de tabelas em SQL se faz com a utilizao do comando CREATE
TABLE, seguido do nome da tabela, bem como de outros parmetros para a
determinao de sua estrutura.
A sintaxe padro pode ser:

CREATE TABLE Nome da-Tabela


( nome-do-campo tipo-do-campo NULL/NOT NULL,
nome-do-campo tipo-do-campo,
nome-do-campo tipo-do-campo,
primary key (nome-do-campo que chave primria));
CRIANDO TABELA COM CHAVE ESTRANGEIRA ( FOREIGN KEY)
CREATE TABLE Nome-da-tabela
( nome-do-campo tipo-do-campo NULL/NOT NULL,
nome-do-campo tipo-do-campo,
nome-do-campo tipo-do-campo,
primary key (nome-do-campo ),
nome-do-campo tipo-do-campo ,* que chave estrangeira *
Foreign Key (nome-do-campo) references (nome-tabela-da-chave-estrangeira)
(nome_do_campo));

Sendo:

Nome_da_tabela a definio do nome da tabela a ser criada;


Nome_do_campo o nome do campo a ser definido;
Tipo_do_campo indica o tipo do campo;
NULL ou NOT NULL a definio do campo em aceitar ou no valores nulos;
PRIMARY KEY determina que o campo a chave primria da tabela;
FOREIGN KEY determina que o campo a chave estrangeira;

Nome_tabela_da_chave_estrangeira determina a tabela Foreign Key

EX.:
1

FUNCIONARIO

Matr_Func

Nome

Dept

Funo

Cod_Dep

DEPENDENTES

Matr_Func

Nome

Sexo
Salario
Dt_Nasc

CREATE TABLE CadFun (


MatrFunc
INTEGER NOT NULL PRIMARY KEY,
Nome
CHAR(40) NOT NULL,
Dept
CHAR(2),
Funcao
CHAR(20),
Salario
DECIMAL(10,2));

EX.: COM CHAVE ESTRANGEIRA


CREATE TABLE DepFun(
CodDep INTEGER NOT NULL,
Nome
CHAR(40),
Sexo
CHAR(8),
DataNasc DATE,
MatrFunc
INTEGER NOT NULL, * Campo-chave-estrangeira*
PRIMARY KEY (CodDep),
FOREIGN KEY (CodFun) references CadFun(CodFun));

TIPOS DE DADOS
O TIPO NUMRICO
Pode ser utilizado no tratamento de valores numricos inteiros ou reais. Esto
disponveis os seguintes tipos:

SMALLINT [(tamanho)] Utiliza-se este tipo de dado quando houver a


necessidade de fazer uso de valores inteiros curtos entre a faixa de valores de
32.768 at 32.767. O parmetro tamanho opcional e permite estabelecer o tamanho
mximo do valor a ser exibido, podendo ser um valor mximo 255;

INTEGER [(tamanho)] Utiliza-se este tipo de dado quando houver a


necessidade de fazer uso de valores inteiros longos entre a faixa de valores de
2.147.483.648 at 2.147.483.647. O parmetro tamanho opcional e permite
estabelecer o tamanho mximo do valor a ser exibido, podendo ser um valor
mximo 255;

FLOAT Utiliza-se este tipo de dado quando houver a necessidade de fazer uso
de valores com ponto flutuante com sete dgitos de preciso decimais. Este tipo
permite trabalhar com valores na faixa de 3,4 * 10-38 at 3,4 * 1038 ;

DECIMAL[(tamanho[,decimal])] Utiliza-se este tipo de dado quando houver


a necessidade de fazer uso de valores com ponto flutuante. O parmetro tamanho
opcional e permite estabelecer o tamanho mximo do valor a ser exibido, podendo
ser um valor mximo 255. Se omitido, o tamanho assumido 10. O parmetro
opcional decimal permite estabelecer o tamanho mximo de casas decimais a ser
exibido, podendo, ser um valor mximo de 30;

NUMERIC[(tamanho[,decimal])] Utiliza-se este tipo de dado quando houver


a necessidade de fazer uso de valores com ponto flutuante, sendo semelhante ao tipo
DECIMAL;

DOUBLE PRECISION[(tamanho.decimal)] Utiliza-se este tipo de dado


quando houver a necessidade de fazer uso de valores com ponto de dupla preciso.
O parmetro tamanho deve estar entre 25 e 53 para estabelecer o tamanho mximo.
O parmetro opcional decima permite estabelecer o tamanho mximo de casas
decimais a ser exibido, podendo ser um valor mximo de 30.

O TIPO TEMPORAL
Pode ser utilizado no tratamento de valores relacionados a data e horrio.
Esto disponveis os seguintes tipos:

DATE Utiliza-se este tipo de dado quando houver a necessidade de fazer uso
de uma data de calendrio no formato AAAA-MM-DD (formato
ANSI).
O intervalo aceito depende da ferramenta de gerenciamento de banco de dados em uso.

TIME Utiliza-se este tipo de dado quando houver a necessidade de fazer uso
de uma informao relacionada a um determinado horrio.

O TIPO LITERAL
O Tipo Literal pode ser para a recepo de valores baseados em cadeias de
caracteres(strings dados alfanumricos delimitados por aspas ou apstrofos). Esto
disponveis os seguintes tipos:

CHAR(tamanho) Utiliza-se este tipo de dado quando houver a necessidade de


fazer uso de seqncias de caracteres de tamanho fixo que estejam limitadas at 255
caracteres de comprimento. O parmetro tamanho determina o valor mximo em
caracteres que pode conter a seqncia;

VARCHAR(tamanho) Utiliza-se este tipo de dado quando houver a


necessidade de fazer uso de seqncias de caracteres de tamanho varivel que
estejam limitadas at 255 caracteres de comprimento. A diferena entre este tipo e o
CHAR que neste caso, os espaos em branco excedentes do lado direito da
seqncia de caracteres no utilizados so automaticamente desprezados. O
parmetro tamanho determina o valor mximo em caracteres que pode conter a
seqncia .

COMO EXCLUIR UMA TABELA


Uma tabela pode ser apagada utilizando o comando DROP TABLE
SINTAXE:
DROP TABLE NOME DA TABELA;
DROP TABLE TESTE;

INSERO DE REGISTROS
A partir do momento em que uma tabela est criada, ela j pode receber a
entrada de dados.
Para isto usamos o seguinte comando:

SINTAXE
INSERT INTO tabela (campo,campo,....,campo) VALUES
(valor,valor,....,valor);

INSERT INTO cadfun (CodFun,Nome,Dept,funcao,Salario)


VALUES
(15, MARCOS HENRIQUE,2,GERENTE,1985,75);

O comando de insero de registros bem trabalhoso, pois s deve-se inserir


um
aps o outro executando o comando Execute Query;

Os valores do tipo CHAR ficam definidos entre apstrofos;


A entrada de dados baseada em caracteres deve ser efetuada com caracteres em
maisculo e sem acentuao, pois se algum acento for utilizado, pode criar
problemas no momento de uma pesquisa com uma palavra idntica que no possua
acento.

OBSERVAES IMPORTANTES:
NOT NULL Os atributos que os contm, devero apresentar um valor
qualquer em determinado instante. Ou seja, as colunas nunca podero estar
vazias.

A chave primria Sempre deve ser definida como NOT NULL, ou


Interbase rejeitar a instruo com uma mensagem de erro.

LISTAGEM DE REGISTROS
Para extrair listagens de registros de uma tabela necessrio utilizar o comando
SELECT com alguns parmetros.A sintaxe deste comando baseia-se na seguinte
estrutura bsica:
SELECT TIPO CAMPOS FROM TABELA CONDIO;
ONDE:

TIPO - Parmetro opcional que possibilita determinar o tipo de registro a ser


selecionado, que pode ser:
DISTINCT Suprime as linhas duplicadas
ALL - visualizamos todos os registros

EX. COM ALL


SELECT * FROM DEPENDENTES;

Todos os registros sero visualizados


EX.: COM DISTINCT
SELECT DISTINCT SEXO FROM DEPENDENTES;
Se houver registros repetidos no sero visualizados.
OBS.:
O comando DISTINCT suprime apenas linhas duplicadas e no valores
duplicados.

CAMPOS a lista de campos a serem selecionados podendo ser utilizado o


valor * (asterisco) representando todos os campos da tabela.

EX.:
SELECT * FROM CADFUN;
SELECT ADMISSAO,SEXO FROM DEPENDENTES;

TABELA a indicao da tabela ou tabelas de onde se deseja efetuar a


visualizao dos registros.

EX.:
SELECT * FROM CADFUN,DEPENDENTES;

CONDIO Caracteriza-se por ser um parmetro opcional que determina a


condio de ao de pesquisa, sendo aceito os valores:
WHERE Determina o critrio de seleo dos registros nas tabelas
especificadas.

EX.:
SELECT NOME_FUNCIONARIO,ADMISSAO FROM FUNCIONARIO
WHERE NOME_FUNCIONARIO = Vanete Dias;
GROUP BY determina o agrupamento de informaes para atender a
consulta.
EX.:
SELECT NOME_DEPENDENTE,CODIGO_FUNCIONARIO
FROM DEPENDENTE
GROUP BY NOME_DEPENDENTE,CODIGO_DEPENDENTE;
Nesta pesquisa se houver registro repetido, ou seja, igual no ser apresentado na
listagem.

ORDER BY Determina a forma de ordenao dos registros podendo


ser ASC ASCENDENTE e DESC DESCENDENTE.
EX.:
SELECT NOME_FUNCIONARIO FROM FUNCIONARIO ORDER BY
NOME_FUNCIONARIO ASC
SELECT CODIGO_FUNCIONARIO, ADMISSAO FROM FUNCIONARIO
ORDER BY CODIGO_FUNCIONARIO DESC;
SELECT CODIGO_FUNCIONARIO,DEPT FROM FUNCIONARIO
WHERE DEPT = INFO ORDER BY CODIGO_FUNCIONARIO

FUNES AGREGADAS
COUNT - Retorna a quantidade de registros existentes no campo especificado. Quando
a opo * (asterisco) utilizada o resultado a quantidade de registros existentes.
Quando referenciado o nome de um campo retorna a quantidade de valores existentes
na coluna.
SUM Retorna a soma dos valores existentes no campo especificado. Quando a opo
DISTINCT utilizada so consideradas apenas os diferentes valores existentes no
campo.
AVG Retorna a mdia dos valores existentes no campo especificado. Quando a opo
DISTINCT utilizada so consideradas apenas os diferentes valores existentes no
campo
MAX Retorna o maior valor existente no campo especificado
MIN Retorna o menor valor existente no campo especificado

EXEMPLOS DAS FUNES AGREGADAS


UTILIZANDO COUNT
SELECT COUNT (*) MATR FUNCIONARIO
FROM DEPENDENTES;
SELECT COUNT(MATRFUNCIONARIO), COUNT(CODDEP)

FROM DEPENDENTES;
SELECT COUNT(*) FROM cadfun WHERE Dept = 3;
SELECT COUNT(DISTINCT Dept) FROM cadfun

UTILIZANDO SUM
SELECT SUM(MATRFUNCIONARIO) FROM DEPENDENTES;
SELECT SUM(MATRFUNCIONARIO), SUM(CODDEP)
FROM DEPENDENTES;
SELECT SUM(salario) FROM cadfun
SELECT SUM(salario) FROM cadfun WHERE Dept = 5;

UTILIZANDO MAX E MIN


SELECT MIN(MATRFUNCIONARIO), MAX(MATRFUNCIONARIO)
FROM DEPENDENTES;
SELECT MAX(salario) FROM cadfun
SELECT MIN(salario) FROM cadfun
UTILIZANDO AVG
SELECT AVG(CODDEP)
FROM DEPENDENTES;
SELECT AVG(MATRFUNCIONARIO), AVG(CODEDEP)
FROM DEPENDENTES;
SELECT AVG(salario) FROM cadfun WHERE Dept 3;

ALTERAO DE REGISTROS

No processo de manuteno de registros em bancos de dados necessrio


periodicamente atualizar ou inserir dados e informaes existentes.
Ento utilizaremos o comando UPDATE com a seguinte sintaxe:
UPDATE NOME-TABELA SET CAMPO = EXPRESSO CONDIO;
ONDE:
NOME-TABELA a indicao da tabela em que se deseja efetuar a atualizao dos
registros;
CAMPO a indicao de um campo da tabela;
EXPRESSO a indicao do valor do campo a ser atualizado;
CONDIO Caracteriza-se por ser um parmetro opcional que determina a condio
de ao da pesquisa baseada no argumento WHERE

EX.:
UPDATE FUNCIONARIO SET DEP = PROTOCOL WHERE DEP = INFO;
Aqui onde o Departamento INFO passar para PROTOCOL
UPDATE FUNCIONARIO SET NOME_FUNCIONARIO = FRANCISCO JUNIOR
WHERE NOME_FUNCIONARIO JUNIOR

Aqui mudaremos o Nome funcionrio Jnior para Francisco Jnior


UPDATE FUNCIONARIO SET ADMISSAO = 03/31/1980 WHERE
CODIGO_FUNCIONARIO = 001;
Aqui mudaremos a data de admisso do funcionrio 001
UPDATE CADFUN SET ADMISSAO = 03/12/2002 WHERE CODFUN = 3;
Inserir a data de admisso onde o Cdigo do funcionrio = 3

REMOO DE REGISTROS

Para remoo de registros utilizamos o comando DELETE, que possui a seguinte


sintaxe:

DELETE FROM NOME-DA-TABELA CONDIO;


ONDE:
TABELA a indicao da tabela que se deseja efetuar a remoo de registros;
CONDIO Caracteriza-se por ser um parmetro opcional que determina a condio
de ao da pesquisa baseada no argumento WHERE.
De todos os comandos existentes em SQL, este o mais delicado e perigoso, pois se
acionado de forma inadequada, pode ocasionar alguns bons prejuzos.

EX.:
DELETE FROM FUNCIONARIO;
Aqui ocorrer a remoo de todos os registros da tabela funcionrio.

DELETE FROM FUNCIONARIO WHERE MATR_FUNCIONARIO = 2


Todos os funcionrios que possurem a matricula 2 sero removidos

MODIFICAO DA ESTRUTURA DE UMA TABELA


A Estrutura de uma tabela algo que pode ser modificado com o tempo, devido
a alguma necessidade especfica. Existe uma grande possibilidade de precisar incluir um
determinado campo, retir-lo ou at mesmo modificar a sua estrutura.
Para isto usaremos ento o seguinte comando:
ALTER TABLE <tabela> <operao>;

EM QUE:

Tabela a indicao da tabela em que se deseja efetuar a alterao de registros;

Operao Caracteriza-se por ser um parmetro que pode receber um dos seguintes
valores:

ADD <campo> <tipo> - Utiliza-se este valor quando da necessidade


de insero de um novo campo em uma determinada tabela. O
parmetro campo representa o nome do novo campo e tipo a sua
estrutura (INTEGER, DECIMAL, CHAR, VARCHAR, etc);

DROP <campo> - Utiliza-se este valor quando da necessidade de


remover um campo de uma determinada tabela. O parmetro campo
representa o nome do campo a ser retirado da tabela.

EX.:
ALTER TABLE cadfun ADD admissao DATE;
Com este comando ser inserido o campo Admissao na tabela cadfun. O novo campo
conter o valor NULL (vazio).
Use o comando UPDATE para atualizar a tabela com as datas de admisso
EX.:
UPDATE cadfun SET admissao = ' 1999-10-21' WHERE matrfunc = 3

ALTER TABLE turma DROP horario ;


Aqui ser excludo o campo horario na tabela turma
OPERADORES ARITMTICOS
Os operadores aritmticos so responsveis pela execuo de operaes matemticas
simples, que venham a efetuar adio, subtrao, multiplicao e diviso
Operador
+
*
/

Descrio
Efetua adio
Efetua subtrao
Efetua multiplicao
Efetua diviso

Pode-se utilizar o comando SELECT para selecionar registros em que a


condio est sendo fornecida com um clculo.

Por exemplo, apresentar os registros dos funcionrios que ganham acima de


1.700,00 (valor do salrio) mais uma comisso de 50,00 (totalizando 1.750,00). Desta
forma poderia ser executado o comando:
SELECT nome, salario FROM cadfun WHERE salario > 1700 + 50;
Os clculos podem ter sua prioridade matemtica alterada com a utilizao de
parnteses.
OPERADORES RELACIONAIS
Os operadores relacionais so utilizados em condies em que h necessidade
de efetuar comparao entre dois valores. Um operador relacional pode ser um dos
seguintes tipos:
Operador
>
<
=
<>
>=
<=

Descrio
Maior que
Menor que
Igual a
Diferente de
Maior ou igual a
Menor ou igual a

Exemplo:
SELECT * FROM cadfun WHERE dept = 5;
SELECT * FROM cadfun WHERE funcao = vendedor;
SELECT * FROM cadfun WHERE salario <= 1700;

OPERADORES LGICOS
Existem ocasies em que necessrio trabalhar com o relacionamento de duas
ou mais condies ao mesmo tempo, efetuando desta forma testes mltiplos. Para estes
casos necessrio trabalhar com a utilizao dos operadores lgicos, tambm
conhecidos como operadores booleanos. Um operador lgico pode ser:

Operador
AND
OR
NOT

Descrio
Operador de conjuno
Operador de disjuno
Operador de negao

O operador do tipo AND utilizado quando dois ou mais relacionamentos lgicos de


uma determinada condio necessitam ser verdadeiros. Em seguida apresentada a
tabela-verdade para este tipo de operador:

Condio 1
Falsa
Verdadeira
Falsa
Verdadeira

Condio 2
Falso
Falsa
Verdadeira
Verdadeira

Resultado
Falso
Falso
Falso
Verdadeiro

O operador AND faz com que somente seja executada uma determinada
operao se todas as condies mencionadas forem simultaneamente verdadeiras,
gerando assim um resultado lgico verdadeiro.
EX.:
SELECT * FROM cadfun WHERE (dept = 5) AND (funcao = vendedor);
Neste comando efetuado a apresentao dos dados de todos os funcionrios que
pertenam ao departamento 5 e que sejam vendedores.
O operador do tipo OR faz com que seja executada uma determinada operao
se pelo menos uma das condies mencionadas gerar um resultado lgico verdadeiro.
SELECT *
supervisor);

FROM cadfun WHERE (funcao = supervisora) OR (funcao =

Aqui neste comando ele efetua a apresentao dos dados de todos os


funcionrios que tenham a funo supervisora ou a funo de supervisor.
O operador NOT utilizado quando se necessita estabelecer que uma
determinada condio deve no ser verdadeira ou deve no ser falsa. O operador NOT
se caracteriza por inverter o estado lgico de uma condio. Em seguida apresentada a
tabela-verdade para este tipo de operador:

Condio
Verdadeira
Falso

Resultado
Falso
Verdadeira

O operador NOT faz com que seja executada uma determinada operao, invertendo o
resultado lgico da condio.

EX.:
SELECT * FROM cadfun WHERE NOT (funcao = vendedor);
Aqui o comando efetua a apresentao dos dados de todos os funcionrios que na sua
funo no so vendedores (VENDEDOR)

RELACIONAMENTO ENTRE TABELAS


MLTIPLAS TABELAS
Uma das grandes caractersticas de um sistema de banco de dados relacional
a capacidade de interagir com mltiplas tabelas, como se elas fossem apenas uma.
Para determinar o relacionamento entre tabelas, necessrio ter no mnimo
duas tabelas que possuam entre si algum campo em comum.
A obteno desta informao existente em tabelas relacionadas conseguida
com o comando SELECT, que utiliza a seguinte sintaxe:
SELECT <tabela1.campo>, <tabela2.campo>, <...>
FROM <tabela1>, <tabela2>
WHERE tabela1.campo PK = tabela2.campo FK;
Onde:
tabela1.campo Ser o campo da primeira tabela a ser apresentado na extrao das
informaes;
tabela2.campo Ser o campo da segunda tabela a ser apresentado na extrao das
informaes;
O campo da segunda tabela ser diferente do campo da primeira tabela e devem estar
indicados na ordem em que se deseja v-los na extrao.
tabela1 Ser a indicao da primeira tabela a ser pesquisada;
tabela2 Ser a indicao da segunda tabela a ser pesquisada;
A ordem de definio das tabelas no influencia na extrao das informaes.
tabela.campo PK Ser a tabela que contm o campo com chave primaria;
tabela.campo FK ser a tabela que contm o campo que a chave estrangeira, que
chave primria na tabela1
Ex.:

Imagine a necessidade de obter uma listagem das duplicatas (tabela venda) existentes
em cobrana e o nome (tabela cliente) dos clientes que esto com essas duplicatas:
SELECT venda.duplic, cliente.nome
FROM cliente, venda
WHERE cliente.codigo = venda.codigo
ORDER BY cliente.nome;
Exemplo com informaes agrupadas:
SELECT cliente.nome, COUNT(*)
FROM cliente, venda
WHERE cliente.codigo = venda.codigo
GROUP BY cliente.nome
Exemplo 2 :
SELECT funcionario.matrfuncion, funcionario.nome, dependentes.nomedep
FROM funcionario, dependentes
WHERE funcionario.matr.funcion = dependentes.matr.funcion;

SELECT funcionario.nomefuncion, COUNT(*)


FROM funcionario , dependentes
WHERE funcionario.matrfuncion = dependentes.matrfuncion
GROUP BY funcionario.nomefuncion;

12 - Sistemas OLAP
Definies

O Processamento Analtico em Linha, ou ainda Online Analytical Processing


(OLAP), d origem aos Sistemas OLAP. Estes sistemas so tambm conhecidos como
bancos de dados multidimensionais, planilhas de clculo multidimensionais, sistemas de
informaes executivas e sistemas de data warehousing. OLAP consiste em uma
maneira especial de organizar e exibir dados para facilitar o acesso e a anlise por parte
dos usurios.
As variaes de OLAP denotadas por ROLAP e DOLAP referem-se a
Relational OLAP e Database OLAP. Estas variaes tratam de produtos de frontend OLAP que utilizam bancos de dados relacionais (ROLAP) ou no (DOLAP).
A popularidade das aplicaes OLAP devida maneira poderosa e amigvel
fornecida aos usurios para a navegao atravs de grandes bancos de dados
multidimensionais de maneira intuitiva.
Exemplo de Aplicao

Como exemplo considere-se uma cadeia de lojas de animais de estimao. A


cadeia tem centenas de lojas organizadas por cidade, estado e regio do pas e esta
organizao constitui a primeira dimenso ou hierarquia geogrfica.
Existe tambm uma organizao por famlias de animais (peixes, mamferos,
rpteis, insetos, etc.), dentro de cada famlia existem diversos tipos (mamferos
compreendem ces, gatos, roedores, etc.), em cada tipo existem diversas raas (ces
compreendem dobermans, filas, pastores, etc.) e em cada raa existem diversos animais
(dobermans podem chamar-se rex, lulu, brutus, etc.). Esta seqncia consiste a segunda
dimenso, a hierarquia de animais, como se pode ver abaixo:
Mamferos

Ces

Doberman

Pastor
Fila
Gatos
Roedores

Siams
Angor
Rato
Camundongo
Hamster

rex
lulu
brutus
mike
paquita
lassie
pluto
capeto
milu
duque
flix
mimi
jerry
mickey
peralta

O banco de dados organiza-se tambm por vendedores, por gerentes de distritos


e gerentes regionais consistindo na terceira dimenso ou hierarquia de vendas.
Para montar uma aplicao necessrio definir quais os dados reais que o
usurio ir poder pesquisar. No exemplo em tela ser considerado o dado volume de

vendas. Em casos reais seriam necessrios dezenas de valores, tais como preos de
animais, lucro, etc.
A tela inicial do sistema poderia ser do tipo:
Ttulo
Dimenso

Animais Ltda. - Relatrio por regio


Geografia
Animais
Norte
Sul
Leste
Oeste

Vendas
$100000
$400000
$250000
$150000
$900000

Uma tela seguinte mostra a quebra por regio de vendas:


Ttulo
Dimenso

Animais Ltda.
Geografia

Animais
Volume total de vendas

Vendas
$900000

Caso fosse acionado um clique sobre o indicador de uma das regies obter-se-ia:
Ttulo
Dimenso

Animais Ltda. - Gerentes de Distrito na Regio Leste


Geografia
Animais
Vendas
Jos de Souza
$80000
Manoel
da
$70000
Conceio
La lvares
$100000
$250000

Caso se desejasse obter as vendas para um certo gerente de distrito pode-se


acionar um clique no nome do gerente e ento acionar outro clique no indicador de
animais obtendo a tela.
Ttulo
Dimenso

Animais Ltda. - Venda de Animais por Manoel da Conceio


Geografia
Animais
Vendas
Mamferos
$40000
Peixes
$20000
Rpteis
$10000
$70000

Pode-se navegar em cada uma das hierarquias.


Histrico

OLAP originou-se em 1962 com a linguagem APL que introduziu o conceito de


anlise e processamento multidimensional de grandes arrays de dados para tornar
inteligvel informao complexa.
O primeiro produto tpico de OLAP foi o Express, da IRI, liberado nos anos 70.
Esta ferramenta atualmente faz parte dos produtos Oracle.
Nos anos 80 surgiu um novo paradigma, na forma dos Executive Information
Systems, ou EIS. O ponto de vista da observao dos EIS levou os produtores de
software a introduzir as interfaces que se tornariam conhecidas como OLAP.
Opes de Visualizao

Os produtos OLAP podem apresentar diversos estilos de fornecimento de


capacidade de gerao de relatrios multidimensionais.
1- Estilo direto de linhas aninhadas, uma varivel, uma dimenso e uma hierarquia em
quatro partes.
Pas
Brasil
Brasil
Brasil
Brasil
Brasil
Brasil
Brasil
Mxico
Mxico
Mxico
Mxico

Regio
Leste
Leste
Leste
Sul
Sul
Norte
Norte
Centro
Oeste
Sul
Leste

Cidade
Rio de Janeiro
Rio de Janeiro
Niteri
Curitiba
Florianpolis
Manaus
Belm
Cidade do Mxico
Acapulco
Cancun
Vera Cruz

2- Estilo esparso de linhas aninhadas.

CEP
20510-000
20062-970
24001-000
80001-000
88010-000
69001-000
66017-000
1
4
9
2

Vendas
215440
5720
38450
45300
21770
15830
28710
150880
90120
50430
7540

Pas
Brasil

Regio
Leste

Sul
Norte
Mxico

Centro
Oeste
Sul
Leste

Cidade
Rio de Janeiro
Niteri
Curitiba
Florianpolis
Manaus
Belm
Cidade do Mxico
Acapulco
Cancun
Vera Cruz

CEP
20510-000
20062-970
24001-000
80001-000
88010-000
69001-000
66017-000
1
4
9
2

Vendas
215440
5720
38450
45300
21770
15830
28710
150880
90120
50430
7540

3- Estilo empilhado de linhas aninhadas.


Brasil
LESTE
Rio de Janeiro

CEP

Vendas

Renda

Custo

20510-000
20062-970

215440
5720

115440
3720

100000
2000

24001-000

38450

38450

10000

80001-000

45300

25300

20000

88010-000

21770

11770

10000

69001-000

15830

8830

7000

66017-000

28710

18710

10000

Niteri
SUL
Curitiba
Florianpolis
NORTE
Manaus
Belm

Seja qual for o estilo adotado o resultado final deve ser uma exibio de dados
na qual se possa navegar facilmente.

O Desafio das grandes massas de dados

O grande problema das ferramentas OLAP consiste em armazenar e recuperar


dados de forma que os tempos de resposta sejam pequenos e os custos do sistema
baixos.
Para visualizar o significado de processamento de informao multidimensional
considere-se o exemplo abaixo:

* Uma linha com uma pessoa e uma dimenso.


Eusbio Pimentel

Rua Cotingo, 735

$ 5200

Abr

* Muitos indivduos, com a mesma informao, resultando em duas dimenses.


Eusbio Pimentel
Aurlio Tarqunio
Pedro Almeida
Luza Franco

Rua Cotingo, 735


Praa Seca, 412
Rua Viuva Lacerda, 15
Rua General Artigas, 443

$ 5200
$ 1700
$ 3800
$ 2900

Abr
Jan
Mar
Fev

* Trs dimenses.

Abr
Mar
Fev
Jan

* Quatro dimenses.

Abr
Mar
Fev
Jan

Vendas de 1996

Abr
Mar
Fev
Jan

Vendas de 1997

Abr
Mar
Fev
Jan

Vendas de 1998
A exploso combinacional vem do fato que o processamento multidimensional
trata com o produto cartesiano dos dados.
Suponha-se que deva-se tratar com dados tais como volume de vendas e que se
deseje sumariar este volume de vendas sobre uma dimenso, por exemplo a dimenso
geogrfica.
Hipteses
Quantidade de animais vendidos por ano
Espao para armazenar o volume de vendas
Itens de anlise na dimenso geogrfica

Espao para armazenar cada chave


Espao para o ncleo de dados
Espao para as demais chaves

1.000.000
5 Bytes
Pas
Regio
Estado
Cidade
Loja que fez a venda
10 Bytes
5 MB
50 MB

O Banco de dados resultante armazena tabelas totalmente no normalizadas com


55 MB, do qual um pequeno trecho seria da forma:
Hierarquia de Animais
Mamferos Ces
Mamferos Ces
Mamferos Ces
Mamferos Ces
Mamferos Ces
Mamferos Ces
Mamferos Ces
Mamferos Ces
Mamferos Ces
Mamferos Gatos
Mamferos Gatos
Mamferos Gatos
Mamferos Roedores
Mamferos Roedores
Mamferos Roedores

Doberman
Doberman
Doberman
Pastor
Pastor
Pastor
Fila
Fila
Fila
Siams
Persa
Angor
Rato
Camundongo
Hamster

rex
brutus
mike
paquita
lassie
pluto
capeto
milu
duque
flix
tom
mimi
jerry
mickey
peralta

$ 1412
$ 1315
$ 1280
$ 750
$ 980
$ 670
$ 1100
$ 790
$ 910
$ 340
$ 480
$ 440
$ 80
$ 150
$ 230

Este tipo de armazenamento muito eficiente para determinar o volume de


vendas de mamferos, por exemplo: basta fazer acumulao de registros seqenciais.
Todavia, esta eficincia s existe ao longo da dimenso escolhida. Basta imaginar um
usurio desejando saber qual o volume de vendas de animais cujos nomes comecem
com a letra f, por exemplo, e verificar que a eficincia ser muito baixa pois haveria
necessidade de varredura total do Banco de Dados.
evidente que nenhum DBA adotaria relaes no normalizadas como estas.
Em vez disso usam-se ndices e executam-se junes de tabelas. Pode-se criar um ndice
para cada dimenso ou criar um ndice dimensional que engloba toda a hierarquia e
aponta para os ndices. Isto permite reduzir a demanda de armazenamento e aumentar o
rendimento. Contudo os problemas no desaparecem. Se os ndices acompanham as
dimenses e as consultas so apenas sobre informaes sumariadas ao longo dessas
linhas os resultados sero bons. Por outro lado, informaes no dimensionais podem
requerer a varredura de todo o banco de dados.

Acrescentando mais uma dimenso

Quando se adiciona outra dimenso no mais ser possvel ter os dados


organizados para que sejam otimizadas as consultas sumariadas em ambas as
dimenses. Pode-se apenas fazer a classificao ao longo de uma das dimenses.
Nem sempre a incluso de nova dimenso traz impacto muito negativo pois, em
alguns casos, as novas dimenses so complementares s j existentes.
A ttulo de exemplo, caso fosse adicionada a dimenso de tempo loja de
animais armazenando os valores de vendas por cinco anos haveria novo critrio de
hierarquia. Passam a existir dimenses de ano, trimestre, ms e data no banco de dados.
A agregao de vendas por diferentes perodos de vendas complica o BD mas no
muito. Adicionando a dimenso de tempo ao BD existente, o que se obteria seriam
dados organizados primeiro por ano e depois por hierarquia animal. Utilizando ndices
ainda possvel obter bom rendimento do BD cuja amostra se segue:
Hierarquia de Animais
1995 Mamferos
1995 Mamferos
1995 Mamferos
1996 Mamferos
1996 Mamferos
1996 Mamferos
1996 Mamferos
1997 Mamferos
1997 Mamferos
1997 Mamferos
1997 Mamferos
1997 Mamferos
1998 Mamferos
1998 Mamferos
1998 Mamferos

Ces
Gatos
Gatos
Ces
Ces
Ces
Gatos
Ces
Ces
Ces
Roedores
Roedores
Ces
Ces
Roedores

Pastor
Angor
Siams
Doberman
Doberman
Fila
Persa
Doberman
Fila
Fila
Hamster
Rato
Pastor
Pastor
Camundongo

paquita
mimi
flix
brutus
mike
capeto
tom
rex
milu
duque
peralta
jerry
lassie
pluto
mickey

$ 750
$ 440
$ 340
$ 1315
$ 1280
$ 1100
$ 480
$ 1412
$ 790
$ 910
$ 230
$ 80
$ 980
$ 670
$ 150

Dimenses No Complementares

Suponha-se o caso de se desejar adicionar outras dimenses tais como:


Clientes
Vendedores
Cor do animal
Qualquer outro nmero de critrios de consulta perfeitamente vlidos
Nesta situao descobre-se que no h maneira de organizar os dados para
otimizar todas as opes.
Em resumo, processamento do tipo OLAP necessita tratamento diferente do
processamento normal dos bancos de dados. Quanto mais dimenses existirem mais
complexo ser o processamento a ponto de se tornar invivel.
Uma soluo alternativa para esse problema efetuar o clculo prvio de todas
as agregaes previsveis. Assim, qualquer consulta pode ter resposta quase instantnea
uma vez que tudo que o sistema tem de fazer fornecer cada viso possvel dos dados,
encontrar o registro adequado de agregao e exibi-lo.
Este clculo prvio resolve o problema mas aumenta a quantidade de dados que
necessrio armazenar. O ncleo de dados ou dados de nvel mais baixo, no exemplo
presente, compreende de 5 MB. As outras chaves necessitam de mais 50 MB. Alm
disso passa a ser necessrio armazenar os valores pr calculados e suas chaves. Em
conseqncia os volumes de dados a armazenar crescem exponencialmente.
Para determinar o nmero necessrio de valores pr calculados precisa-se
descobrir quantos valores de agregao existem (a agregao dos nmeros de vendas
para todos os diferentes nveis de agregao que um usurio possa pedir).
Em uma hierarquia simples unidimensional o nmero de valores a ser
n

x di
armazenados pode ser obtido de

i 1

, onde:

x nmero de valores ao nvel bsico ou nmero de registros da base original


n nmero de dimenses a considerar
d1 nmero de valores na dimenso 1 ou nmero de valores nicos que a
dimenso de mais alto nvel possa conter
d2 nmero de valores na dimenso 2 ou nmero de valores nicos que a
dimenso de segundo mais alto nvel possa conter

dn nmero de valores na dimenso n ou nmero de valores nicos que a


dimenso de n-simo mais alto nvel possa conter

Para o banco de dados do exemplo, o que se tem :


Abrangncia
Pases
Regies por pas
Estados por regio
Cidades por estado
Nmero de registros base
Total

Quantidade Indicao
5
1x5
4
5x4
5
20 x 5
3
100 x 3
1.000
1 x 1.000

Resultado
5
20
100
300
1.000
1.425

O nmero de valores pr calculados necessrio de 1.425.


O acrscimo de volume para uma dimenso no quase nada comparado com o
que acontece quando mais de uma dimenso envolvida.
Adicionando a dimenso do tempo necessrio armazenar dados sumariados
para anos, trimestres, meses, semanas e dias, alm daqueles para a geografia.
Abrangncia
Anos
Trimestres
Meses
Semanas
Dias
Total

Quantidade Indicao
5
1x5
4
5x4
3
20 x 3
4
60 x 4
7
240 x 7

Resultado
5
20
60
240
1.680
2.005

Deve-se armazenar ento 1.000.000 + 425 + 2.005 = 1.002.430 dados. Caso se


desejasse verificar as vendas em um dado perodo de tempo e um dado espao (vendas
em Belo Horizonte no dia 12 de Maro de 1997, por exemplo) dever-se-ia armazenar as
intersees de dados.
Multiplicando os nmeros de nveis das duas hierarquias obter-se-ia 2.005 x 425
= 852.125. Em resumo, um BD com 1.000.000 de valores de vendas armazenados em 5
bytes cada cresce para 852.125 x 5 = 4.260.265 Bytes que devem ser adicionados aos 5
MB devidos ao milho de registros iniciais, obtendo 9.272.775 Bytes. Acrescentando
ainda mais dimenses ao BD os nmeros explodem.

Soluo do Problema nos Produtos OLAP

Uma primeira abordagem de soluo do problema consiste em armazenar todos


os dados ao mais baixo nvel e permitir ao sistema calcular dinamicamente as
intersees do sistema medida que forem solicitadas. O problema bsico dessa
abordagem que medida que se acrescentam novas dimenses diminui a capacidade
do projetista do BD de otimizar o projeto.
Uma segunda abordagem consiste no clculo prvio de todos os valores que os
usurios possam desejar e armazenamento desses valores. Esta abordagem necessita de
enorme quantidade de espao de armazenamento e de rotinas de manuteno do BD
extremamente complexas consumindo muito tempo de processamento.

Como se v ambas as abordagens so problemticas e os produtos comerciais


consistem em misturas das duas abordagens.

Abordagens Fundamentais OLAP

O quadro abaixo resume algumas abordagens da tcnica OLAP e suas


caractersticas.
Abordagem
Esquema estrela
Clculo prvio
Clculo dinmico
Arquiteturas hbridas com clculo prvio e
dinmicas
Modelos de extrao incremental

Caracterstica
Utilizao de uma tabela de fatos e de
mltiplas tabelas de dimenses ou atributos
dos registros de fatos.
Exige demasiado do espao de
armazenamento.
Exige demasiado da memria e do
processador.
O sistema armazena os dados de base e
alguns valores pr calculados relacionados
estrategicamente.
Por este modelo quando um usurio entra no
sistema ele identifica um subconjunto dos
dados nos quais deseja navegar. O sistema
encontra os dados bsicos no BD e
interativamente constri o cubo de dados
desejado.

Concluso

OLAP nada mais do que uma extenso lgica dos mesmos tipos de
funcionalidades de BD com os quais sempre se conviveu.
Em verdade os problemas de OLAP restringem-se natureza fsica dos dados e
do BD, capacidade do projetista na preveno da natureza das consultas que o usurio
possa propor e capacidade do software de fornecer os dados de acordo com esses
critrios.