Você está na página 1de 68

S Oracle 9i - Implementando um Projeto de banco de dados .

Novo Layout
INA
G
P
6 8
CO
M Novas Ferramentas OLAP
O RA Veja as Tendncias apontadas
AG pela Microsoft e Oracle

Sistemas de informaes
geogrficas no MySQL
Conhea as extenses
Edio 14 :: Ano 2 : R$ 10,50
espaciais

Mini-curso
Desenvolva uma aplicao
Java completa Parte 3

SQL Server 2000


Gerenciando contas e
permisses

Data
Warehouse
SQL Server 2005
Modelando Sistemas
Saiba um pouco mais de Apoio Deciso
do que vem por a
sql14.indb 1 6/10/2004 18:43:18
vv

sql14.indb 2 6/10/2004 18:43:22


vv

Nesta edio
05
News Mini-Curso
44 - Desenvolvimento de
Saiba as ltimas novidades do
mundo SQL
R aplicaes orientadas a
objeto apoiado por tecnologias Java Parte
III Projeto
Neste terceiro artigo abordada a fase de projeto de
sistema, onde mostrado o que deve ser feito para se
06 Dvidas definir as modelagens comportamentais, estruturais e
SQL Magazine explica como arquiteturais de um sistema. visto ainda
funcionam os ndices bitmap no Oracle
P como os conceitos de camada de persistncia

SGBD
so integrados na arquitetura e no projeto
de um sistema. Os conceitos discutidos neste
artigo so aplicados no desenvolvimento do
estudo de caso definido na SQL Magazine 13
L
08 - Extenses Espaciais
em MySQL
Este artigo apresenta como exemplo um modelo de classes
mostrando a modelagem dos dados espaciais e no espa- Novidades
ciais e, em seguida, sua implementao no MySQL. 51 - SQL Server 2005
Veja um passo-a-passo da instalao e
16 - Gerenciando contas e permisses faa um tour pelo Query Analyzer validando novos coman-
dos e procedimentos da verso Beta-2 do futuro substituto
no SQL Server 2000
do Microsoft SQL Server 2000 Desktop Engine (MSDE), o
Apresentao da primeira parte do artigo que trata dos
SQL Server 2005 Express Edition.
mtodos de autenticao, criao de contas, roles e permis-
ses do SQL Server 2000.
63 - Tecnologias OLAP
Saiba o que a Oracle e a Microsoft esto preparando para o
25 - Oracle 9i Parte III
mercado com o lanamento de suas ferramentas OLAP. Veja
Implementao do projeto de banco de dados

K
um balano destes produtos e entenda onde
em Oracle, utilizando como estudo de caso o

J
tudo isso levar.
mesmo projeto visto na srie de seis artigos
publicados na SQL Magazine, edies 02 a 07.

Em foco Legendas
36 - Modelagem de
Data Warehouses e
Data Marts - Parte II
D Tabelas
B Notas

Modelagem de um data warehouse ou um


data mart que atenda as necessidades de
C Listagens O CD-Rom

informao de um gerente
A Figuras
H
M
comercial de uma rede de lojas Downloads
de varejo, utilizando a mode-
lagem dimensional ou multidi-
mensional. E Box T Leitura Obrigatria

sql14.indb 3 6/10/2004 18:43:23


Editorial Coordenador Editorial
Gladstone Matos
gladstone@clubedelphi.net

Editor Geral
Rodrigo Oliveira Spnola
rodrigo@sqlmagazine.com.br

Equipe Editorial
Carlos Cant, Eduardo Bezerra, Eduardo Bottcher, Ge-
raldo Zimbro, Reinaldo Viana, Paulo Ribeiro, Ricardo
Rezende e Vincius Sousa

O
Gerente de Marketing
rganizaes modernas necessitam de sistemas de informaes ecientes e
Kaline Dolabella
fceis de utilizar para sobreviver e obter sucesso em um ambiente globalizado kaline@sqlmagazine.com.br
e altamente competitivo. Recentemente, essas organizaes tm dado maior
Articulistas desta edio
importncia a aplicaes que permitam que os dados coletados sejam analisados e
Arilo Cludio Dias Neto, Evaldo de Oliveira da Silva,
explorados, identicando tendncias teis e criando sumrios dos dados, de forma Isabel Cristina Italiano, Luiz Antonio Esteves, Mark
a suportar o processo de tomada de deciso. Neste contexto est situado o Data Rittman, Paulo S. Ribeiro, Rafael Ferreira Barcelos,
Warehouse. Ele consiste em uma combinao de tecnologias, tendo como principal Ricardo Rezende
objetivo a integrao efetiva de bases de dados operacionais em um ambiente que Traduo
torne possvel o uso estratgico dos dados. Anna Beatriz
O tema Data Warehouse ganha destaque nesta edio da SQL Magazine com abeatriz@visualnet.com.br

enfoque em dois pontos chaves: modelagem e tecnologias. Para isto, traz dois artigos: Design Grfico - pH Design
Modelagem de Data Warehouses e Data Marts Parte 2, e Uma viso do futuro Jaime Peters Junior
do Microsoft e Oracle OLAP. Na primeira matria, capa desta edio, os autores jaime@phdesign.com.br
Isabel Italiano e Luiz Esteves do continuidade discusso sobre modelagem de Tarcsio Bannwart
Data Warehouses iniciada na edio 13 da SQL Magazine. O artigo est concentrado tarcisio@phdesign.com.br

na apresentao de uma metodologia de modelagem conhecida como modelagem Capa


multidimensional. No segundo artigo, feita uma anlise supercial do mercado de Felipe Natividade Machado
soluo OLAP enfocando as tendncias apontadas pelos softwares OLAP da Microsoft felipe@phdesign.com.br

e da Oracle. So destacadas as novidades presentes no OLAP Option da Oracle e o Reviso


que est por vir no Analysis Services 2005. Edison Costa
Destacamos tambm nesta edio as novidades que esto por vir no SQL Server edison@sqlmagazine.com.br
2005. A Microsoft liberou recentemente a verso Beta-2 do futuro substituto do Publicidade
Microsoft SQL Server 2000 Desktop Engine (MSDE), agora conhecido por SQL Luiz Cludio Barreto
Server 2005 Express Edition. Com esta verso temos uma prvia do engine do banco, publicidade@devmedia.com.br
que por sinal agradou bastante. Em um outro artigo do Paulo Ribeiro, so discutidas Atendimento ao Leitor
questes sobre segurana no SQL Server. Seu foco o entendimento de como Luana Gouveia
funciona e como congurar as opes de autenticao em um servidor SQL Server e
Marcio Avelar
denio de roles para que usurios tenham acesso a databases. info@sqlmagazine.com.br
Temos ainda a terceira parte do mini-curso sobre desenvolvimento de aplicaes em (21) 2283-9012
Java seguindo princpios de Engenharia de Software. Dando continuidade ao processo Assinaturas
de desenvolvimento de software denido no primeiro artigo da srie, este artigo assinaturas@sqlmagazine.com.br

aborda a fase de projeto onde so apresentados os diagramas de classe e seqncia Publicao de artigos
para o estudo de caso. rodrigo@sqlmagazine.com.br

Em um outro artigo, Ricardo Rezende apresenta a implementao de um projeto de Web


banco de dados dando continuidade serie sobre o Oracle 9i. www.sqlmagazine.com.br

Por m, temos uma matria do Evaldo Silva sobre um assunto ainda desconhecido Distribuio
para a maioria de vocs, mas que tem um futuro promissor. So as bases de dados Fernando Chinaglia Dist. S/A

espaciais para Sistemas de Informaes Geogrcas. Rua Teodoro da Silva, 907


Graja - RJ - 206563-900
Desejo a todos vocs uma excelente leitura e, mais uma vez, nos colocamos sua
disposio para opinies, crticas e sugestes.
Abraos,
Rodrigo Oliveira Spnola
editor@sqlmagazine.com.br
Realizao Projeto Grfico Apoio

4 14 Edio

sql14.indb 4 6/10/2004 18:43:45


Oracle XML Data Synthesis (XDS)
Technology Preview
A Oracle disponibilizou o preview do Oracle XDS. Ele per-
mite acessar, agregar e integrar em tempo real as informaes
vindas de fontes distintas como SAP, PeopleSoft, DB2, SQL
Server, Excel, XML, etc. O download pode ser feito pelo
endereo http://otn.oracle.com/software/htdocs/eaplic.html?
http://download.oracle.com/otn/utilities_drivers/xml/
xds.zip
News
Fonte: http://otn.oracle.com/tech/xml/xds/index.html

Firebird 1.5.1 Nova verso do Mammoth PostgreSQL


Acaba de ser lanada a primeira atualizao para o Firebird Replicator
1.5. A nova verso traz vrios bugs corrigidos, incluindo a Lanado o Mammoth PostgreSQL Replicator 1.2, fer-
correo de um problema que causava o consumo intensivo ramenta de replicao assncrona de dados para o banco
do processador quando eventos eram utilizados com o ban- de dados PostgreSQL. O sistema utiliza um log de transa-
co de dados e ocorria uma quebra de conexo com a rede. O es distribudo para gerenciar as atualizaes produzidas
download pode ser feito pelo site oficial do Firebird (www. pelo banco de dados mestre, permitindo que mltiplos
firebirdsql.org). bancos de dados escravos recebam as atualizaes de
forma contnua ou em lotes (www.postgresql.org/news/
Dicas para otimizar o Oracle Application Server 180.html).
Steve Button e Tim Blake deram uma palestra na Melbour-
ne Openworld apresentando 10 dicas para a otimizao do 1 Firebird Developers Day
Oracle Application Server. A apresentao pode ser baixada No dia 14 de agosto foi realizado o primeiro Firebird
no endereo http://download-west.oracle.com/openworld/ Developers Day (FDD), promovido pela FireBase (www.
melbourne/all_melbourne_ppts/AS_B_08.PDF firebase.com.br) em parceria com o DUG-BR (Delphi
Users Group Brasil www.dugbr.com.br).
Oracle Data Miner Pr-release Estiveram presentes cerca de 400 pessoas, confirman-
A Oracle acaba de lanar uma interface grfica para o do que o Brasil o pas com uma das maiores bases de
Oracle Data Mining a fim de ajudar os analistas de informa- usurios Firebird em todo o mundo! Os principais temas
o a minerar seus dados de forma fcil atravs de wizards discutidos durante o evento foram: Acessando o Firebird
que guiam o usurio por todo o processo de coleta, prepara- atravs do .Net; Acessando o Firebird via ODBC; Proce-
o e avaliao dos modelos. Com o uso integrado do Oracle dures, Triggers e Eventos; Normalizao de Dados; Migra-
Data Miner e do Oracle Data Mining, os dados no precisam o de dados para o Firebird; Dicas e macetes em C/S
sair do banco de dados eliminando o processo de migrao usando Triggers e Constraints; Opes de acesso ao Fire-
dos dados a serem analisados e permitindo a utilizao com- bird; Replicao usando o IB Replicator; WebServices com
pleta dos recursos de segurana que um BD Oracle oferece. Asp.Net + Firebird; Criando UDFs em Delphi. Maiores
Fonte: www.rittman.net/archives/000963.html detalhes podem ser encontrados na cobertura do evento
publicado em um artigo no site www.sqlmagazine.com.br.

O Simpsio Brasileiro de Banco de Dados SBBD 2004


(SBBD) o evento oficial de banco de dados
da SBC - Sociedade Brasileira de Computao, e tem por objetivo
principal a publicao de resultados de pesquisas da rea de banco
de dados. Em sua dcima nona edio, o SBBD 2004 deve reunir
mais de 800 participantes em Braslia.
O SBBD rene pesquisadores, estudantes e profissionais do Brasil
e do exterior, que discutem problemas relacionados aos principais
tpicos em reas modernas de banco de dados. Alm das sesses
tcnicas e tutoriais, o simpsio inclui palestras ministradas por pes-
quisadores distintos da comunidade de pesquisa internacional.
O SBBD 2004 ser realizado em Braslia, do dia 18 a 20 de Outu-
bro. Programem-se, maiores informaes podem ser obtidas no site
Apoio do evento: www.sbbd.unb.br
Oracle Data Miner

SQL Magazine . 5

sql14.indb 5 6/10/2004 18:43:59


ndices Bitmap no Oracle 100

95
Ol Professor!
No manual do Oracle est escrito: A indexao comple- 75

ta de uma tabela grande com a tradicional rvore B pode


ser proibitivamente cara em termos de espao porque os

Dvidas
ndices podem ser vrias vezes maiores do que os dados da 25

tabela. Os ndices Bitmap tipicamente so s uma frao do


5
tamanho dos dados indexados atravs de rvores B na tabe-
la. Isto correto? Como funcionam os ndices Bitmap? 0

Obrigado,
Renato Cramer RENDA so boas colunas para um ndice bitmap, pois pos-
suem poucos valores possveis, apenas trs para EST_CIVIL
Oi Renato, e REGIAO, dois para GENERO e quatro para NIVEL_REN
Sim, a utilizao de rvore binria, em determinados ca- DA. Um mapa de bit criado para a coluna REGIAO, seria:
sos, pode realmente gerar uma tabela de ndices maior que REGIAO = Sudeste REGIAO = Sul REGIAO = Nordeste
a de dados. Para esses casos, a utilizao de ndices bitmap 1 0 0
passa a trazer maiores benefcios. 0 1 0
Os ndices so ponteiros para linhas da tabela organiza- 0 0 1
dos de forma a melhorar o desempenho para seleo de re- 0 0 1
gistros. No caso dos ndices tradicionais, esses valores so 0 1 0
0 1 0
armazenados em uma lista de rowids para cada chave cor-
respondente, ou seja, criada uma nova tabela (tabela de n- Agora considere a seguinte consulta:
dices) contendo o valor da chave e o rowid correspondente. SELECT COUNT(*)
J um ndice bitmap trabalha criando um mapa de bits para FROM CLIENTE
cada valor ao invs da lista das rowids. Cada bit do mapa WHERE EST_CIVIL = Casado AND REGIAO IN
corresponde a um possvel rowid. Se o bit selecionado, (Sul,Nordeste);
significa que a linha com o valor correspondente contm o
valor da chave. O resultado produzido pela consulta, no mapa de bit, seria:
Uma funo de mapeamento converte a posio do bit no
EST_CIVIL= REGIAO= REGIAO=
valor do rowid, mantendo a mesma funcionalidade dos n- Casado Sul Nordeste
dices tradicionais. Porm, em casos em que a seletividade 0 0 0 0 0 0
baixa, como em uma coluna sexo (valores F ou M), 1 1 0 1 1 1
os ndices bitmap traro um enorme ganho de espao de 1 AND 0 OR 1 = 1 AND 1 = 1
armazenamento, uma vez que no ser necessrio armaze- 0 0 1 0 1 0
0 1 0 0 1 0
COD_CLI EST_CIVIL REGIAO GENERO NIVEL_RENDA 1 1 0 1 1 1
101 Solteiro Sudeste Masculino Grupo_1
Portanto o resultado da consulta seria = 3.
102 Casado Sul Feminino Grupo_4
103 Casado Nordeste Feminino Grupo_2
Apenas um detalhe, os ndices bitmap esto disponveis
104 Divorciado Nordeste Masculino Grupo_4 apenas no Oracle9i Enterprise Edition. Espero que tenha
105 Solteiro Sul Feminino Grupo_2 ajudado. Continue visitando o site da revista e no deixe de
106 Casado Sul Feminino Grupo_3 enviar e-mails com dvidas e sugestes.

nar o valor da coluna e seu respectivo rowid. Vejamos como


exemplo a tabela abaixo: Um abrao,
100
As colunas EST_CIVIL, REGIAO, GENERO e NIVEL_ Ricardo Rezende
95

75

25

sql14.indb 6 6/10/2004 18:44:56


100 100

95 95

75 75

25 25

5 5

0 0

100 100

95 95

75 75

25 25

5 5

0
www.borland.com.br 0

sql14.indb 7 6/10/2004 18:45:30


8 14 Edio

sql14.indb 8 6/10/2004 18:45:54


Extenses
Espaciais em
MySQL
Evaldo de Oliveira da Silva

O
desenvolvimento de sistemas de informaes geogrficas (GIS
- Geographical Information Systems) vem aumentando bastante.
Vrias pesquisas vm sendo realizadas para o desenvolvimento de
ferramentas e tcnicas adequadas para colaborar com a evoluo deste tipo
de software. Um aplicativo GIS rene vrias ferramentas para coletar, arma-
zenar, recuperar, transformar e visualizar dados sobre o mundo real para um
objetivo especfico.
As principais caractersticas de um GIS (tambm conhecido como SIG
Sistemas de Informaes Geogrficas) so:
a capacidade de inserir e integrar, numa nica base de dados, infor-
maes espaciais provenientes de dados cartogrficos, dados censitrios e
cadastros urbano e rural, imagens de satlite, redes e modelos numricos
de terreno;
oferecer mecanismos para combinar as vrias informaes, atravs de
algoritmos de manipulao e anlise, bem como para consultar, recuperar,
visualizar e plotar o contedo da base de dados georreferenciados.

Dados georreferenciados podem ter representao grfica (pontos, linhas


e polgonos), bem como numrica ou alfanumrica (letras e nmeros). Es-
tes dados, tambm chamados de dados referenciados geograficamente, de-
talham e expem fenmenos geogrficos. O dado georreferenciado descreve
a localizao do fenmeno geogrfico ligado a uma posio sobre ou sob a
superfcie da terra.
O armazenamento e a manipulao de dados georreferenciados no uma
tarefa comum. Vrias tcnicas para projetar um banco de dados para SIG
j foram desenvolvidas e aplicadas com xito. Por muitos anos, os pesquisa-
dores desta rea focaram em encontrar solues para estruturao de dados
para SIG, e aps vrias experincias chegaram em dois tipos de estruturas de
dados: vetoriais e matriciais. Resumidamente estas tcnicas para armazena-
mento de dados espaciais podem ser descritas da seguinte forma:

Estruturas Matriciais:
Tambm chamada de raster, este tipo de estrutura tem seus valores asso-
ciados a uma matriz de clulas. Cada clula um endereo identificado por
coordenadas de linhas e colunas representando o mundo real (A1).

Estruturas Vetoriais:
Estruturas vetoriais representam mapas atravs de coordenadas X e Y, ou
longitude e latitude, onde os smbolos do mundo real so localizados por
pontos, linhas e polgonos (A2).

SQL Magazine . 9

sql14.indb 9 6/10/2004 18:46:05


Mundo Real Raster um consrcio internacional com participao de
universidades e empresas no desenvolvimento de
solues conceituais para GIS, tornando-as pblicas
para serem teis a qualquer aplicao que necessite
de dados espaciais.
No final da dcada de 90, o OpenGIS disponibi-
lizou a especificao OpenGIS Simple Features
Specifications For SQL, ou seja, uma documentao
que especificava diversos modelos conceituais para
estender a linguagem SQL para os bancos de dados
A 1. Representao de um mapa do mundo real atravs de estrutura relacionais, permitindo-os manipular dados espaciais.
matricial ou raster.
O MySQL implementa tipos geomtricos propostos
Mundo Real Vector pela OGC. As especificaes da OGC descrevem um
conjunto de tipos geomtricos do SQL, bem como
funes para criar e analisar valores geogrficos. Um
recurso geogrfico qualquer coisa no mundo real
que tenha uma posio geogrfica, por exemplo:
Uma entidade (ex: uma montanha, uma lagoa,
cidade);
Um espao (ex: uma rea de cdigo postal, os
trpicos);
Uma localizao definida (ex: um cruzamento
A2. Representao de um mapa do mundo real atravs de estrutura - lugar especfico onde duas ruas se interceptam).
vetorial.
O Modelo Geomtrico OpenGIS utilizado pelo MySQL
De modo geral, as tcnicas para modelagem de da- Para especificar os tipos geomtricos propostos pelo
dos espaciais um assunto bastante extenso e espe- OpenGIS, foi elaborado um modelo de classes. Nes-
cfico e, portanto no o foco deste artigo, podendo te modelo, cada objeto geomtrico tem as seguintes
ser mais explorado futuramente. No que diz respeito propriedades bsicas:
implementao e manipulao de dados espaciais, associado a um sistema de referncia espacial
os fabricantes de SGBDs (Sistemas Gerenciadores que descreve a coordenada espacial na qual o ob-
de Banco de Dados) tambm esto se adaptando, jeto definido;
procurando satisfazer esta nova realidade. Pertence a alguma classe geomtrica.
A Oracle lanou recentemente o Oracle Spatial,
que contm extenses de comandos SQL para ma- A hierarquia de classes dos tipos geomtricos espe-
nipulao de dados espaciais. Alguns bancos de da- cificados pelo OpenGIS apresentada na A3:
dos gratuitos tambm aderiram a este novo recurso, Geometry a super classe abstrata. As subclasses
como o PostgreSQL e MySQL. instanciveis de Geometry so restritas a objetos
Para o bom entendimento deste artigo, sero citados geomtricos de nenhuma ou mais dimenses, que
inicialmente alguns conceitos e tcnicas para modela- existem no espao de coordenadas bidimensionais. A
gem de dados espaciais. Em seguida, sero apresenta- super classe Geometry tem subclasses para definio
dos os recursos adicionais da linguagem SQL para ma- de objetos espaciais, sendo elas:
nipulao de banco de dados geogrficos no MySQL, A classe Point, que representa um conjunto de
disponveis desde a verso 4.1. O artigo apresenta objetos sem dimenso ou pontos;
como exemplo um modelo de classes mostrando a A classe Curve, representando um conjunto de
modelagem dos dados espaciais e no espaciais e, em objetos com dimenses ou curvas, que contm a
seguida, sua implementao no MySQL. subclasse LineString, que por sua vez contm as
subclasses Line e LinearRing;
Extenses Espaciais usando MySQL A classe Surface usada para objetos bidi-
Os recursos de extenses espaciais para manipulao mensionais ou superfcies, e contm a subclasse
de banco de dados geogrficos foram implementados Polygon;
na verso 4.1 do MySQL seguindo as especificaes GeometryCollection possui classes com co-
do OpenGIS Consortium (OGC). O OpenGIS lees de dimenses chamadas de MultiPoint,

10 . 14 Edio

sql14.indb 10 6/10/2004 18:46:12


Definio e criao do banco de dados
O esquema conceitual da A4 exempli-
fica uma situao que pode ocorrer no co-
tidiano: a necessidade de desenvolver um
SIG para localizar e monitorar trens em
diversos pontos da malha ferroviria onde
os pontos seriam Ptios e Oficinas e, as li-
K

SGBD
nhas seriam os Painis. Alm de localizar
os trens, o SIG poderia ainda monitorar
as condies das locomotivas que os com-
pem. A codificao abaixo mostra como
aplicar as extenses espaciais do MySQL
para criar um banco de dados solucionan-
do a situao apresentada.

A3 Hierarquia de Classes proposta pelo OpenGis. Banco de Dados Ferrovia


CREATE DATABASE FERROVIA;
MultiLineString e MultiPolygon, usadas para mo-
delagem geomtrica correspondente s colees Painel
de pontos, linhas e polgonos. As classes Multi- Painel representa uma seqncia de ptios em um
Curve e MultiSurface so introduzidas como su- determinado trecho da malha ferroviria, onde cada
perclasses abstratas que generalizam a interface ptio representado por um ponto. A tabela Painel
de coleo para tratar Curves e Surfaces. usar o tipo LINESTRING para demonstrar um tipo
de dado espacial representando os pontos da malha
Algumas propriedades destas classes so definidas para formar uma linha. A C1 apresenta a criao da
no manual do MySQL, onde pode-se obter concei- tabela Painel.
tos mais detalhados de como usar cada uma delas.
A seguir ser apresentado um pequeno exemplo de Ptio
como implementar um banco de dados geogrfico em Ptio uma localizao na malha ferroviria, onde so
MySQL. feitas manobras, troca de maquinistas e locomotivas,
alm de outras atividades ferrovirias. Para repre-
Exemplo de um modelo de classes para um banco de sentar o Ptio em um mapa, ser criado um atributo
dados geogrfico
O modelo apresentado abaixo, es-
pecificado utilizando a notao da
UML, representa recursos ferrovi-
rios onde os objetos so modelados
em um pacote de classes persis-
tentes. Em uma ferrovia existem
recursos que podem ser mode-
lados e manipulados atravs de
SIGs, como um sistema de mo-
nitoramento de locomotivas. Ou-
tro exemplo seria um sistema para
gesto ambiental, que pode auxi-
liar na visualizao de impactos
no meio ambiente quando ocorrer
alguma manuteno ou alterao
em algum ponto ou trecho da ma-
lha ferroviria. O modelo da A4
representa apenas recursos simples
para reforar os conceitos obtidos
durante o artigo. A 4. Exemplo de um modelo para um Sistema de Informaes Geogrcas.

SQL Magazine . 11

sql14.indb 11 6/10/2004 18:46:21


C 1. Criao da Tabela Painel
localizado em um Ptio, e dada a localizao do Ptio
CREATE TABLE PAINEL possvel localizar o Trem em um Painel (linha). A
(IDPAINEL INT(5) NOT NULL, C4 apresenta a criao da tabela Trem.
NOMEPAINEL VARCHAR(30),
TAMANHOKM INT(5), Locomotiva
PAINEL LINESTRING NOT NULL, A Locomotiva um recurso ferrovirio que compe
PRIMARY KEY (IDPAINEL), o Trem. Uma Locomotiva pode estar localizada em
INDEX IDXPAINEL (IDPAINEL)); Trem ou em uma Oficina, e dado a localizao da Ofi-
cina possvel localizar a Locomotiva em um Ptio
C 2. Criao da Tabela Ptio (ponto) ou em um Painel (linha). A C5 apresenta a
criao da tabela Locomotiva.
CREATE TABLE PATIO
(IDPATIO INT(5) NOT NULL, Inserindo dados Espaciais
SIGLAPATIO VARCHAR(3) NOT NULL, A partir de agora exemplificaremos como feita a
NOMEPATIO VARCHAR(30), insero de dados espaciais usando os tipos criados na
IDPAINEL INT(5) NOT NULL, seo anterior. Como foi explicado anteriormente, o
LOCALPATIO POINT NOT NULL, painel representa um agrupamento de ptios, e este
POSICAOPATIO INT(2) NOT NULL, agrupamento pode ser um trecho em uma malha fer-
PRIMARY KEY (IDPATIO), roviria. Desta forma um painel pode ser representa-
INDEX IDXPATIO (IDPATIO, IDPAINEL)); do por uma linha.
As C de 6 a 10 apresentam como inserir dados usan-
ALTER TABLE PATIO do tipo de dados especiais definidos pelo MySQL.
ADD CONSTRAINT PATIOFK01 FOREIGN KEY (IDPAINEL) Note que foram utilizadas algumas funes de con-
REFERENCES PAINEL (IDPAINEL); verso:
GeomFromText: converte dados de formato
texto para um formato geomtrico;
LOCALPATIO do tipo POINT usando coordenadas C 4. Criao da Tabela Trem
(X Y) (ver C2).
CREATE TABLE TREM
Oficina (IDTREM INT(5) NOT NULL,
Oficina uma localizao ferroviria pertencente a PREFIXOTREM VARCHAR(8) NOT NULL,
um ptio. Da mesma forma que o Ptio, a oficina ser DATASAIDA DATE NOT NULL,
representada como um ponto no mapa, e para isso PESOTREM INT(4),
ser criado um atributo LOCALOFICINA do tipo QUANTIDADEVAGAO INT(3),
POINT (ver C3). IDPATIO INT(5) NOT NULL,
PRIMARY KEY (IDTREM),
C3. Criao da Tabela Oficina INDEX IDXTREM (IDTREM, IDPATIO));

CREATE TABLE OFICINA ALTER TABLE TREM


(IDOFICINA INT(5) NOT NULL, ADD CONSTRAINT TREMFK01 FOREIGN KEY (IDPATIO)
SIGLAOFICINA VARCHAR(3) NOT NULL, REFERENCES PATIO (IDPATIO);
NOMEOFICINA VARCHAR(30),
IDPATIO INT(5) NOT NULL,
C 5. Criao da Tabela Locomotiva
LOCALOFICINA POINT NOT NULL,
PRIMARY KEY (IDOFICINA), CREATE TABLE LOCOMOTIVA
INDEX IDXOFICINA (IDOFICINA, IDPATIO)); (IDLOCOMOTIVA INT(5) NOT NULL,
ALTER TABLE OFICINA CONDICAOLOCOMOTIVA VARCHAR(20),
ADD CONSTRAINT OFICINAFK01 FOREIGN KEY (IDPATIO) POSICAOLOCOMOTIVA INT(1) NOT NULL,
REFERENCES PATIO (IDPATIO); MODELOLOCOMOTIVA VARCHAR(20),
IDTREM INT(5),
Trem IDOFICINA INT(5),
Trem um recurso ferrovirio fundamental para o PRIMARY KEY (IDLOCOMOTIVA),
funcionamento de uma ferrovia. Um Trem pode ser INDEX IDXLOCO (IDLOCOMOTIVA, IDTREM));

12 . 14 Edio

sql14.indb 12 6/10/2004 18:46:24


PointFromText: converte dados de formato a localizao do primeiro e do ltimo ponto de uma
texto para tipos de dados POINT; seqncia de pontos, e tambm podem localizar uma
LineStringFromText: converte dados de for- coordenada de pontos de um tipo LINESTRING.
mato texto para tipos de dados LINESTRING. Abaixo so citadas algumas funes para seleo de
registros.
Selecionando dados Espaciais
O MySQL fornece vrias funes para seleo de re- Funo ASTEXT()
K

SGBD
gistros de dados espaciais. Estas funes permitem a A funo AsText() fornece acesso textual aos va-
converso de dados geomtricos para dados textuais, lores de geometria. A C11 mostra o uso da funo
C 6. Inserindo dados na tabela de Painel

INSERT INTO PAINEL (IDPAINEL, NOMEPAINEL, TAMANHOKM, PAINEL) VALUES


(1, SAO PAULO, 300, GEOMFROMTEXT(LINESTRING(30 45, 10 10, 50 65, 15 18)));
INSERT INTO PAINEL (IDPAINEL, NOMEPAINEL, TAMANHOKM, PAINEL) VALUES
(2, RIO DE JANEIRO, 300, GEOMFROMTEXT(LINESTRING(50 20, 20 30, 15 35, 35 58)));
INSERT INTO PAINEL (IDPAINEL, NOMEPAINEL, TAMANHOKM, PAINEL) VALUES
(3, MINAS GERAIS, 300, GEOMFROMTEXT(LINESTRING(100 200, 250 300, 350 400, 450 500, 150 200)));

C 7. Inserindo dados na tabela de Patio.

INSERT INTO PATIO (IDPATIO, SIGLAPATIO, NOMEPATIO, IDPAINEL, LOCALPATIO, POSICAOPATIO)


VALUES
(1, PRJ, RIO DE JANEIRO, 2, PointFromText(POINT(15 35)), 1);

INSERT INTO PATIO (IDPATIO, SIGLAPATIO, NOMEPATIO, IDPAINEL, LOCALPATIO, POSICAOPATIO) VALUES
(2, PSP, SAO PAULO, 1, PointFromText(POINT(15 18)), 3);

INSERT INTO PATIO (IDPATIO, SIGLAPATIO, NOMEPATIO, IDPAINEL, LOCALPATIO, POSICAOPATIO) VALUES
(3, PMG, MINAS GERAIS, 3, PointFromText(POINT(250 300)), 1);

INSERT INTO PATIO (IDPATIO, SIGLAPATIO, NOMEPATIO, IDPAINEL, LOCALPATIO, POSICAOPATIO) VALUES
(10, PBP, BARRA DO PIRA, 3, PointFromText(POINT(150 200)),2);

C 8. Inserindo dados na tabela de Oficina.

INSERT INTO OFICINA (IDOFICINA, SIGLAOFICINA, NOMEOFICINA, IDPATIO, LOCALOFICINA) VALUES


(1, OBP, OFICINA BARRA DO PIRA, 10, PointFromText(POINT(260 350)));

C 9. Inserindo dados na tabela de Trem.

INSERT INTO TREM (IDTREM, PREFIXOTREM, DATASAIDA, PESOTREM, QUANTIDADEVAGAO, IDPATIO) VALUES
(1, CCC0102, 2004-08-01, 2000, 132, 10);
INSERT INTO FERROVIA.TREM (IDTREM, PREFIXOTREM, DATASAIDA, PESOTREM, QUANTIDADEVAGAO, IDPATIO) VALUES
(2, NAG5203, 2004-08-02, 1958, 120, 1);

C 10. Inserindo dados na tabela de Locomotiva.

INSERT INTO LOCOMOTIVA ( IDLOCOMOTIVA ,CONDICAOLOCOMOTIVA ,POSICAOLOCOMOTIVA ,MODELOLOCOMOTIVA ,IDTREM ,IDOFICINA)


VALUES (1, BOA , 32 , HITACH , 1 , NULL);

INSERT INTO LOCOMOTIVA ( IDLOCOMOTIVA ,CONDICAOLOCOMOTIVA ,POSICAOLOCOMOTIVA ,MODELOLOCOMOTIVA ,IDTREM ,IDOFICINA)


VALUES (3, AVARIADA, EL-20325 , NULL , 1);

SQL Magazine . 13

sql14.indb 13 6/10/2004 18:46:24


C 11. Uso da funo ASTEXT( )
AsText() para retornar o identificador e
o nome de um painel cuja as coordenadas SELECT IDPAINEL, NOMEPAINEL FROM PAINEL
(x y) sejam: (50 20), (20 30), (15 35), WHERE ASTEXT(PAINEL) = LINESTRING(50 20,20 30,15 35,35 58);
(35 58).
Abaixo seguem algumas funes impor- SELECT PN.NOMEPAINEL, PT.NOMEPATIO, TR.PREFIXOTREM
tantes para a recuperao de informaes FROM PAINEL PN, PATIO PT, TREM TR
em um banco de dados geogrfico. Estas WHERE
funes usam como parmetro um tipo PN.IDPAINEL = PT.IDPAINEL
de dado LINESTRING, que no caso das AND PT.IDPATIO = TR.IDPATIO
listagens seguintes o atributo PAINEL. AND ASTEXT(LOCALPATIO) = POINT(150 200);

Funo STARTPOINT()
C 12. Uso da funo STARTPOINT( )
A funo StartPoint() permite retor-
nar o ponto inicial de um objeto do tipo SELECT ASTEXT(STARTPOINT(PAINEL)) FROM PAINEL WHERE IDPAINEL = 3;
LINESTRING (ver C12). +----------------------------+
| ASTEXT(STARTPOINT(PAINEL)) |
Funo ENDPOINT() +----------------------------+
A funo EndPoint() (C13) permite re- | POINT(100 200) |
tornar o ponto final de um objeto do tipo +----------------------------+
LINESTRING. 1 row in set (0.00 sec)

Funo POINTN()
C 13. Uso da funo ENDPOINT( )
A funo PointN() (C14) permite re-
tornar um ponto de um objeto do tipo SELECT ASTEXT(ENDPOINT(PAINEL)) FROM PAINEL WHERE IDPAINEL = 1;
LINESTRING. +--------------------------+
| ASTEXT(ENDPOINT(PAINEL)) |
Aplicando as extenses espaciais ao +--------------------------+
modelo de classes apresentado | POINT(15 18) |
No item Selecionando Dados Espaciais foi +--------------------------+
mostrado como aplicar as inmeras funes 1 row in set (0.02 sec)
disponveis no MySQL para retorno de da-
dos espaciais. Nesta ltima etapa do artigo,
C 14. Uso da funo POINTN( )
veremos como trabalhar com estas funes
para retorno de dados, baseando-se no mo- SELECT IDPAINEL, NOMEPAINEL, ASTEXT(PAINEL)
delo de classes de ferrovia apresentado no FROM PAINEL WHERE IDPAINEL = 1
artigo. As C de 15 a 19 foram retiradas de AND ASTEXT(POINTN(PAINEL,2)) = POINT(10 10);
situaes do cotidiano no monitoramento e +----------+--------------+-----------------------------------+
visualizao de recursos ferrovirios. |IDPAINEL | NOMEPAINEL |ASTEXT(PAINEL) |
+----------+--------------+-----------------------------------+
Concluso | 1 | SAO PAULO |LINESTRING(30 45,10 10,50 65,15 18)|
Este artigo serviu de introduo para um +----------+--------------+-----------------------------------+
assunto ainda desconhecido para muitos es- 1 row in set (0.00 sec)
tudantes e profissionais da rea de Tecnolo-
gia da Informao. Foram citados recursos
C 15. Retorna todos os Trens com locomotivas que tenham condio igual a
para o entendimento e desenvolvimento de AVARIADA cujo ponto selecionado seja do Ptio Ferrovirio de Barra do Pira (PBP).
banco de dados geogrficos. importante
reforar que existem outros SGBDs que SELECT PREFIXOTREM
permitem implementar extenses espaciais, FROM TREM TR, LOCOMOTIVA LOC, PATIO PAT
e tambm muitas tcnicas que auxiliam na WHERE LOC.IDTREM = TR.IDTREM
modelagem de banco de dados geogrficos. AND PAT.IDPATIO = TR.IDPATIO
Estes assuntos podero ser mais explorados AND LOC.CONDICAOLOCOMOTIVA = AVARIADA
e detalhados num prximo artigo. S AND PAT.SIGLAPATIO = PBP;

14 . 14 Edio

sql14.indb 14 6/10/2004 18:46:25


C 16. Retorna as coordenadas das ocinas cujas Locomotivas estejam com a condio BOA e pertenam ao painel de MINAS GERAIS.

SELECT ASTEXT(OFC.LOCALOFICINA)
FROM OFICINA OFC, PAINEL PN,
PATIO PT, LOCOMOTIVA LOC
WHERE OFC.IDPATIO = PT.IDPATIO AND PT.IDPAINEL = PN.IDPAINEL AND OFC.IDOFICINA = LOC.IDOFICINA
AND LOC.CONDICAOLOCOMOTIVA = BOA
AND PN.NOMEPAINEL = MINAS GERAIS;
K

SGBD
C 17. Retorna a localizao geogrca e a sigla do ptio onde o Trem NAG5203 se encontra.

SELECT ASTEXT(PT.LOCALPATIO), PT.SIGLAPATIO


FROM PATIO PT, TREM TR
WHERE PT.IDPATIO = TR.IDPATIO AND TR.PREFIXOTREM = NAG5203;

C 18. Consulta, atravs da posio geogrca, se o ptio de Barra do Pira (PBP) est dentro do painel do Rio de Janeiro.

SELECT PT.SIGLAPATIO
FROM PATIO PT, PAINEL PN
WHERE PT.IDPAINEL = PN.IDPAINEL
AND PT.SIGLAPATIO = PBP
AND PT.LOCALPATIO = POINTN(PN.PAINEL,PT.POSICAOPATIO) AND PN.IDPAINEL = 2;

C 19. Consulta as posies de todos os ptios contidas em cada painel de acordo com a posio do ptio no painel.

SELECT PT.SIGLAPATIO, ASTEXT(POINTN(PN.PAINEL,PT.POSICAOPATIO)), PN.NOMEPAINEL


FROM PAINEL PN, PATIO PT
WHERE PN.IDPAINEL = PT.IDPAINEL;

ROCHA, Czar Henrique Barra.


Geoprocessamento Tecnologia
Transdisciplinar. Juiz de Fora: Ed. Do Autor,
F Site do OpenGIS :
www.opengis.org I
Manual MySQL sobre extenses espaciais:
2000. www.mysql.com/doc/pt/Spatial_extensions_in_MySQL.html

FILHO, Jugurta Lisboa. Projeto de Banco de

G
Dados para Sistemas de Informao Geogrfica.
(engine@powermail.com.br; eos@mrs.com.
Universidade Federal de Viosa. Disponvel on-line em: br) Analista de Sistemas, Especialista em
www.sbc.org.br/reic/edicoes/2001e2/tutoriais/ProjetodeBDparaSist Cincia da Computao pela Universidade
emasdeInformacaoGeografica.pdf Federal de Viosa. Atualmente prestador
de servios na rea de desenvolvimento de
sistemas da MRS Logstica S.A .Desenvolve
aplicaes em Visual Basic utilizando
Oracle. Tem como rea de interesse
banco de dados geogrcos, Sistemas

H Faa o download e comente esta matria em: de Informaes Geogrcas, Anlise


www.sqlmagazine.com.br/sql14/ Evaldo de Orientada a Objetos e o desenvolvimento
Oliveira da Silva de aplicaes usando a linguagem JAVA.

SQL Magazine . 15

sql14.indb 15 6/10/2004 18:46:27


Gerenciando contas
e permisses no
SQL Server 2000
Parte I
Paulo S. Ribeiro

P
ara acessar um database em um estabelecendo permisses baseadas nos mesmos usurios
servidor MS SQL necessrio e grupos j definidos no servidor de domnio (Windows
ter permisso para logon no ser- 2000/2003/XP ou NT 4.0). Quando um usurio tenta efe-
vidor e acesso no database. Ao criarmos um tuar uma conexo trusted (A1), o SQL Server 2000 ir
usurio no SQL Server, estamos concedendo levantar junto ao Sistema Operacional o SID do usurio e
um login no servidor. Ao definirmos que esse usu- dos grupos a que ele pertence. De posse dessas informa-
rio pode ou no ler e/ou escrever nas tabelas de de- es, realizar algumas buscas na tabela de sistema master.
terminado database, estamos definindo as permisses de dbo.SysXlogins para confirmar a autorizao de acesso.
acesso.
A falta de ateno na definio das permisses para o B SID ou Security Identification um cdigo interno gerado pelo Sistema
usurio pode ser desastrosa, afinal de contas no queremos Operacional no momento do cadastramento do usurio no servidor de
que usurios comuns saiam por a apagando tabelas, bancos domnio. O SID gravado na tabela SysXLogins para contas criadas com
de dados, ou mesmo executando jobs em horrios inopor- autenticao no servidor SQL Server 2000 ser gerado internamente pelo
tunos. Muitas vezes s nos preocupamos em definir uma banco. Para usurios criados com segurana integrada, o SID ser o mes-
poltica de permisses de acesso depois que um incidente mo daquele definido para a conta de logon no servidor de domnio.
grave aconteceu, mas a geralmente j tarde demais.
Nessa edio, estarei apresentando a primeira parte do Mixed Authentication Mode: no modo misto so permi-
artigo que trata dos mtodos de autenticao, criao de tidas autenticaes realizadas pelo SQL Server 2000 ou
contas, roles e permisses do SQL Server 2000. Para a pelo Sistema Operacional. Para que o usurio faa uma co-
segunda parte, reservei uma srie de exemplos reais para nexo autenticada no banco processo tambm conhecido
aproximar o leitor do dia-a-dia de um DBA no que diz res- comoSegurana Standard necessrio informar o usurio
peito ao gerenciando de permisses. e senha (ver A2), que tambm sero validadas na tabela
Comearemos definindo o mtodo padro de auten- de sistema master.dbo.SysXLogins.
ticao durante o processo de instalao do SQL Server O acesso a um database em um servidor SQL Server 2000
2000. pode ser dividido em duas fases: na primeira, o usurio

Escolhendo o mtodo de autenticao durante


a instalao do servidor
O termo autenticao define o meio utilizado pelo ban-
co para validar usurios que desejam utilizar seus servios.
Como analogia considere a autenticao como o controle
exercido pelo porteiro de um edifcio, que permite ou no
a entrada de pessoas aps sua identificao. No processo de
instalao do SQL Server 2000, somos questionados sobre
o mtodo de autenticao. Existem dois tipos bsicos:
Windows Authentication Mode: nesse modelo, tambm
conhecido por Segurana Integrada, o SQL Server 2000 A1. Abrindo sesso no Query Analyzer utilizando
confia na autenticao realizada pelo Sistema Operacional, Segurana Integrada

16 . 14 Edio

sql14.indb 16 6/10/2004 18:46:31


autorizaes de logon coletivas, liberando acesso para
grupos j existentes no servidor de domnio WinNT.
Para conceder acesso (login) para todos os usurios do
grupo G_Vendas no domnio SQLMag, devemos se-
guir os seguintes passos:

... no Query Analyzer


exec sp_GrantLogin SQLMag\G_Vendas

... ou no Enterprise Manager em Security ... New


Login (A5)
A 2. Abrindo sesso no Query Analyzer utilizando a
autenticao do SQL Server 2000 Na A5 podemos observar duas configuraes adi-
cionais, disponveis para os dois modelos de autenti-
deve se conectar no servidor responsvel pelo servio cao:
do banco, utilizando o mtodo de Segurana Integrada Database Default: aps efetuar o logon no
ou o Standard. Na segunda fase, sero verificadas as banco, os usurios so direcionados por padro
permisses de acesso especficas ao database que esse para o database master. Nessa condio, neces-
usurio deseja acessar. srio utilizar o comando T-SQL use para conse-
Continuando nossa analogia, aps passarmos pelo guir entrar em outro database. Podemos tambm
porteiro do edifcio, necessrio que sejamos recebi- configurar um database default para o usurio.
dos pela pessoa que reside no apartamento, que de- Para fazer com que o grupo SQLMag\G_Vendas
ver (em caso de identificao positiva) abrir a porta utilize o database NorthWind aps autentica-
para que possamos entrar. Considere o edifcio como o, abra o Query Analyzer e execute o coman-
sendo o servidor de banco de dados e o apartamen- do T-SQL sp_DefaultDB SQLMag\G_Vendas,
to um database. Assim como passar pelo porteiro em NorthWind. Vale ressaltar aqui que o comando
condies normais no d livre acesso a todos os apar- sp_DefaultDB no d direitos de acesso a um
tamentos, possuir somente uma conta de logon no o database, para isso deve ser utilizado o comando
suficiente para acessarmos todos os databases em um sp_GrantDbAccess, discutido mais adiante.
servidor. Veremos a seguir como criar contas de login
em um servidor SQL Server 2000. B O database master um database de sistema, utilizado pelo
SQL Server 2000 para controle das configuraes vitais para o ser-
Criando contas de login no SQL Server vidor. Nele ficam registrados todos os databases do servidor, assim
2000 como tabelas para registro de usurios, e outras tabelas que contro-
Para criar uma conta de login necessrio informar lam o funcionamento do servidor como um todo.
o mtodo que ser utilizado para autenticao. A pro-
cedure sp_AddLogin utilizada para criar uma conta Language Default: informa o padro, utilizado
standard; j sp_GrantLogin empregada para criar na sesso do usurio, para formatar datas e men-
uma conta que utilizar segurana integrada. sagens do sistema. As opes disponveis podem
A D1 ilustra os comandos T-SQL para criao de ser vistas atravs da procedure sp_HelpLanguage.
dois logins: o primeiro com segurana standard para Apesar de estarmos no Brasil, costumo deixar
o usurio UserSQLMag e senha 123321; o segundo essa opo com o padro americano (us_English),
com segurana integrada, concedendo autorizao de pois inmeros procedimentos armazenados tem
acesso para o usurio PSRibeiro, pertencente ao do- um legado de datas trabalhando no formato mm/
mnio SQLMag no WinNT . Nas A3 e 4 podemos dd/yyyy. Nos casos especficos onde necess-
visualizar o mesmo processo de criao das contas no ria a traduo de datas, a linha de comando set
Enterprise Manager. Language apresentada na C1 pode ser um artifcio
Uma grande vantagem da segurana integrada est na interessante.
possibilidade de trabalhar-
mos com grupos: para no Criando uma conta com segurana standard Criando uma conta com segurana integrada
criar um login diferente exec sp_AddLogin @loginame=UserSQLMag,
exec sp_GrantLogin SQLMag\PSRibeiro
@password=123321
para cada usurio, pode-
se optar pela utilizao de D 1. Criao de contas de login utilizando comandos T-SQL

SQL Magazine . 17

sql14.indb 17 6/10/2004 18:46:33


SQLMag\PSRibeiro
SQLMag\G_Vendas

Assim, completamos a primeira fase do cadastra-


mento de usurios criando trs contas de logon. A
prxima etapa ser configurar o acesso dos usurios
aos databases desse servidor.

Criando regras de acesso nos databases


atravs de roles
Continuando nossa analogia, passamos pelo porteiro
A3. Criao da conta standard UserSQLMag no Enterprise Manager
do edifcio e subimos at o apartamento 102. Aps
um toque na campainha, fomos rapidamente identi-
ficados pelo morador, que abriu a porta. Dentro do
apartamento, nossa movimentao limitada - no
podemos sair andando a esmo sem que sejamos con-
vidados pelo morador. Em um database o modelo
semelhante: aps logon bem sucedido, o usurio deve
possuir permisso para acessar os objetos do banco de
dados. Essas permisses estabelecem regras que de-
vem ser seguidas pelo usurio enquanto estiver dentro
do database. Elas informam, por exemplo, se o usu-
rio tem permisso de escrita ou somente leitura nas
A 4. Criao da conta com segurana integrada para o usurio tabelas; se pode criar, remover, ou alterar tabelas; ou
PSRibeiro, pertencente ao domnio SQLMag
se possui autoridade para conceder permisses para
outros usurios, etc.
C1
Trabalhar com permisses pode ser algo bastante
set Language Portugus altera a linguagem na sesso trabalhoso e passvel de erros em funo do elevado
select DateName(month, getdate()) AS nmero de usurios que normalmente acessam o ser-
Mes_Em_Portugues vidor de banco de dados. Imagine um controle indivi-
----------------------------------------------------- dual de permisso para 150 contas distintas em vrios
Changed language setting to Portugus. databases! Para facilitar a administrao de permisses,
Mes criou-se a figura do role (papel): ao invs de atribuirmos
----------------------------------------------------- as permisses diretamente aos usurios, criamos um
fevereiro role e atribumos as permisses diretamente a ele, as-
(1 row(s) affected) sociando posteriormente os usurios ao role desejado.

Para confirmar as trs contas cadastradas (User


SQLMag, SQLMag\PSRibeiro e SQLMag\G_Ven
das), abra o Enterprise Manager, selecione Security e
depois Logins (ver A6). Observe que existem duas
contas adicionais: BUILTIN\Administrators e sa. Es-
sas contas so criadas automaticamente durante o
processo de instalao e sero discutidas mais adiante.
Outra opo para confirmar o cadastramento das con-
tas realizar uma query na tabela de sistema master.
dbo.SysXLogins, conforme exemplo abaixo:

select name from master.dbo.sysxlogins


Name
-----------------------------------------------------
BUITIN\Administrators
A 5. Concedendo permisso de logon no servidor
UserSQLMag SQL Server 2000 para o grupo WinNT G_Vendas

18 . 14 Edio

sql14.indb 18 6/10/2004 18:46:36


foi marcado automaticamente. Todos os usurios que acessam um
database pertencem ao role Public, independente do conjunto de
permisses que cada um possui.

A descrio resumida dos papis existentes em um


database encontram-se listados na D3.
Para vincular/desvincular o usurio UserSQLMag ao
K

SGBD
A 6. Vericando usurios que possuem conta de login no servidor SQL database role db_DataReader, no database NorthWind,
Server 2000 usamos os seguintes comandos T-SQL:

Dessa maneira, sempre que precisarmos modificar use NorthWind


as permisses desses usurios, alteramos somente exec sp_AddRoleMember db_DataReader,UserSQLMag
as permisses do role! Existem trs grandes grupos exec sp_DropRoleMember db_DataReader,UserSQLMag
de roles: Server Roles, Database Roles e Application go
Roles.
Os Server Roles so papis ligados administrao ou se preferir, no Enterprise Manager, o processo
do servidor como um todo. Servem para estabelecer o mesmo mostrado na A 7.
regras gerais, tais como: criao de logins e jobs, alte-
rao de configuraes do servidor, etc. Os papis de Por fim, nos Application Roles o foco central da per-
servidor bem como uma descrio resumida dos direi- misso deixa de ser o usurio e passa ser a aplicao
tos desses papis encontram-se listados na D2. que mediante um procedimento de ativao, libera as
permisses adequadas para os usurios. Assim, a ativa-
Para credenciar ou desvincular o usurio User o do role estar escrita na aplicao, porque o usu-
SQLMag do server role SysAdmin, utilizamos os rio em si no possui direitos vinculados diretamente
comandos T-SQL: sua conta ou grupo. O exemplo a seguir ilustra uma
situao em que um application role utilizado.
exec sp_AddSrvRoleMember UserSQLMag,SysAdmin O DBA de uma empresa optou por utilizar um
exec sp_DropSrvRoleMember UserSQLMag,SysAdmin application role para controle de permisses no
database db_Cliente, pois seria muito complexo
ou pelo Enterprise Manager (A7). administrar individualmente o elevado nmero de
usurios e grupos existentes. Criou ento o applica-
Os Database Roles criam regras que devem ser tion role ar_Cliente, concedendo permisso de lei-
obedecidas pelos usurios no contexto de um database. tura, escrita e execuo de procedures no database
Esses roles so aplicados para usurios que j esto db_Cliente para esse approle (= abreviao de
autenticados. A procedure
sp_GrantDBAccess credencia
a conta do usurio para entrada B
Como criar um role standard
no database corrente. Um Criar roles para administrar permisses uma medida bastante eficiente. Criamos o role, conce-
exemplo de sua utilizao demos as permisses necessrias e, por ltimo, associamos os usurios. Isto nos permite efetuar
pode ser visualizada no batch qualquer alterao nas permisses desse grupo de usurios alterando apenas o role. Os passos a
a seguir, ou se preferir, pelo seguir explicam o processo de criao de roles.
Enterprise Mananager (A8).
Para criar um role standard de
exec sp_AddRole ro_Geral
nome ro_Geral
use NorthWind Para conceder permisses de exec sp_AddRoleMember db_DataReader, ro_Geral
leitura e escrita ao role exec sp_AddRoleMember db_DataWriter, ro_Geral
exec sp_GrantDBAccess
Para associar o usurio
UserSQLMag exec sp_AddRoleMember ro_Geral, UserSQLMag
UserSQLMag ao role ro_Geral
exec sp_GrantDBAccess
exec p_helprolemember ro_Geral
SQLMag\PSRibeiro
go /* executa todo o lote de Para verificar quais usurios
pertencem ao role ro_Geral dbRole MemberName MemberSID
comandos acima */ ---------------------------------------------------
ro_Geral UserSQLMag 0xEF36B414C2E13645BEBD...

B Quando Permit foi selecionado ao Para retirar o usurio


exec sp_DropRoleMember ro_Geral, UserSQLMag
lado de db_Teste na A8, o role Public UserSQLMag do role ro_Geral

SQL Magazine . 19

sql14.indb 19 6/10/2004 18:46:37


O procedimento para criao e ativao de um
Papel Direitos
Application Role est descrito na D4.
Tem plenos poderes: pode realizar qualquer atividade
SysAdmin nesse servidor e possui livre acesso em todos os A letra N que aparece logo aps o comando
databases. AddRoleMember est informando ao otimizador que
Tem permisso para criar, alterar e remover
DbCreator o prximo parmetro possui formato Unicode, que
databases.
Essa permisso ficou um tanto obscura; tinha sentido um padro mundial para representao de alfabetos
DiskAdmin
at a verso 6.5 quando se referia permisso para em diferentes culturas.
gerenciar devices. A partir da verso 7.0, com a
extino dos devices, perdeu o sentido.

ProcessAdmin
Permisso para manipular processos por exemplo B Para ativar um application role, o usurio precisa estar den-
derrubar uma conexo. tro do database. Isso significa que alm de logon no servidor, o
Tem autoridade para efetuar alteraes na
ServerAdmin configurao geral do servidor (execuo de sp_ usurio precisar de pelo menos permisso de entrada no database.
configure), e efetuar shutdown. Existem duas maneiras para autorizarmos a entrada de um usurio
Possui permisso para configurar replicao de em um database: a primeira via sp_GrantDBAccess, visto ante-
dados e gerenciamento de linked servers. Linked
Server um servidor OLE DB pr-registrado no riormente. A segunda, que por sinal bastante interessante, criar
SQL Server 2000. Isso significa que se o servidor de um usurio chamado GUEST no database. O usurio GUEST um
SetupAdmin banco\\Serv-A estiver registrado como um linked
server no servidor \\Serv-B, poderamos acessar seus usurio especial, que serve de auto-mapeamento para usurios que
databases, abrir transaes ou executar procedures, no possuem acesso ao database. Assim, se um usurio no possui
sem a necessidade de abrir diretamente uma nova
conexo. permisso de entrada no database, caso exista uma conta GUEST,
Possui permisso para criar logins, alterar passwords, ele conseguir entrar e ativar um role.
efetuar leitura no log do banco. Pode tambm
SecurityAdmin
conceder permisso para que outros usurios criem
databases. Trabalhando com permisses utilizando
BulkAdmin
Permisso para executar o comando T-SQL bulk Grant, Revoke e Deny
insert. Os roles de servidor e database servem para estabele-
D 2. cer algumas regras gerais: o usurio pode ler ou escrever
application role). O nome do approle, assim como seu em um Database, pode alterar as configuraes do ser-
comando de ativao foram passados para o progra- vidor, etc. Imagine agora uma sp criada por um usurio.
mador, que embutiu essa informao na aplicao A menos que os demais usurios estejam associados a
de cadastro de clientes. Assim, quando um usurio cli- papis como db_Owner, ou SysAdmin, eles no tero
ca sobre o cone da aplicao, imediatamente o approle permisso para execut-la. necessrio, portanto, li-
executado, liberando acesso ao database. Nesse mo- berar a execuo da procedure para os usurios. Assim
mento, o usurio obrigado a identificar-se, pois so- como as SPs, podero existir determinadas tabelas ou
mente usurios previamente cadastrados na tabela de mesmo outros procedimentos com acesso restrito.
controle de acesso db_Cliente.tb_usuario possuem Quando houver a necessidade de trabalharmos com
permisso para cadastrar clientes (essa tabela foi criada permisses com granularidade menor do que a forne-
para controlar o acesso dos usurios ao cadastro de clien- cida pelos roles, devemos utilizar os comandos Grant,
tes). Se o usurio fornecer uma identificao positiva, Revoke e Deny.
o acesso aplicao de clientes ser concedido; caso GRANT significa conceder, liberar. Quando con-
contrrio o programa ser finalizado com mensagem de cedemos uma permisso com o comando grant, uma
acesso negado. linha adicionada na tabela de sistema SysProtects.
Abaixo, so listadas algumas caractersti-
cas da utilizao dos application roles: Permisso O que pode ser feito
Um application role no contm db_Owner Tem livre acesso no database.
membros pr-cadastrados. O vinculo Pode adicionar ou remover usurios no database em questo.
entre um usurio e o role estabelecido db_AccessAdmin Tem permisso para dizer quem pode e quem no pode
acessar o banco.
com um comando T-SQL;
Requer a execuo de um comando db_DataReader Tem permisso de leitura nas tabelas do database

especfico, seguido de senha, para ser db_DataWriter Tem permisso de escrita nas tabelas do database

ativado; db_DDLAdmin Pode criar e alterar objetos no database.

Quando ativo, o usurio permanece db_SecurityAdmin Tem permisso para dar permisso para que outros usurios
acessem os objetos no banco.
somente com as permisses relativas
ao application role, perdendo quais- db_BackupOperator Tem permisso para efetuar backup desse database.

quer outras permisses associadas sua db_DenyDataWriter No pode escrever nesse database.

db_DenyDataReader No pode ler nesse database.


conta.
D 3. Database Roles.

20 . 14 Edio

sql14.indb 20 6/10/2004 18:46:39


conflitos de permisses. Vamos considerar o seguinte:
Marcos trabalha na empresa SQLMag S/A. H tem-
pos atrs foi definido que Marcos pertenceria ao role
ro_Super; tanto o usurio quanto o role possuem per-
misses de leitura na tabela salario_func. Aps uma
reestruturao, decide-se que Marcos no deve mais
possuir direitos nessa tabela. O DBA optou ento por
K

SGBD
revogar a permisso de Marcos, mas verificou que,
pelo fato dele pertencer ao role ro_Super, ainda pos-
sua direitos sobre a tabela. Ora, ele no poderia revo-
gar a permisso do role, pois estaria tirando tambm
A 7. Associando o usurio UserSQLMag ao server role SysAdmin.
a permisso de todos os outros usurios vinculados a
esse role. Nesse contexto, surge a necessidade de criar-
mos uma proibio. Neste caso, utilizamos o comando
DENY. Ele insere uma linha na tabela SysProtects es-
pecificando uma proibio. Embora Marcos continue
pertencendo ao role ro_Super, a proibio de aces-
so ter efeito, pois em situaes onde identificado
um conflito entre permisses, existe uma regra que
estabelece que uma proibio ir prevalecer sempre
sobre uma concesso. Nesse caso, a proibio atribu-
da a Marcos pelo comando deny ir prevalecer sobre
a permisso concedida ao role ro_Super. Segue um
A 8. Liberando a entrada no DATABASE db_Teste para o usurio
exemplo para impedir que o usurio UserSQLMag
UserSQLMag. possa ler a tabela Orders:

O comando abaixo concede permisso de leitura na deny SELECT on Orders to UserSQLMag


tabela Orders para o usurio UserSQLMag:
Assim como uma procedure no pode receber per-
grant SELECT on Orders to UserSQLMag misso de SELECT, uma tabela no pode receber per-
misso de EXECUTE. Por esse motivo, a sintaxe dos
O comando REVOKE o oposto de Grant, e signi- comandos GRANT, REVOKE e DENY dividida em
fica revogar, retirar uma permisso ANTES conce- dois grupos: o primeiro controla execuo de coman-
dida. Quando revogamos uma permisso, exclumos dos e o segundo a manipulao de objetos.
um registro da tabela de sistema SysProtects. O co-
mando para revogar a permisso atribuida anterior- Permisses relacionadas execuo de
mente seria: comandos
A sintaxe do comando GRANT para tratar a execu-
revoke SELECT on Orders to UserSQLMag o de comandos pode ser vista abaixo:

Permisses so cumulativas, isto , a permisso final GRANT { ALL | statement [ ,...n ] } TO


de um usurio fruto das permisses atribudas a ele, security_account [ ,...n ]
acrescidas de permisses indiretas, recebidas em fun-
o de sua associao com roles. Uma questo bastan- ALL | statement [ ,...n ]: relaciona o(s) comando(s)
te interessante como o SQL Server 2000 resolve os que esto sendo liberados. A D5 apresenta a lista

Descrio Comandos
Criar o Application Role ar_ReadWrite no database NorthWind, com use NorthWind
senha de ativao 123sql456 exec sp_AddAppRole ar_ReadWrite,123sql456
Dar permisso de leitura e escrita para o application role criado use NorthWind
anteriormente exec sp_AddRoleMember Ndb_datareader, ar_ReadWrite
exec sp_AddRoleMember Ndb_datawriter, ar_ReadWrite
Ativar o application role numa sesso use db_NorthWind
exec sp_SetAppRole ar_ReadWrite,123sql456
D 4.

SQL Magazine . 21

sql14.indb 21 6/10/2004 18:46:41


de comandos cuja execuo pode ser controlada por [AS { group | role }]: quando uma permisso de-
Grant. Se ALL for utilizado, todos os comandos sero legada a um grupo com a opo WITH GRANT, to-
liberados. dos os usurios pertencentes a esse grupo adquirem
security_account[,...n]: conta que se deseja aplicar a permisso indireta de repassar essa mesma permisso
permisso. para outros usurios. No entanto, quando um usurio
desse grupo tentar repassar a permisso, ser neces-
Permisses relacionadas manipulao de srio especificar na forma de um alias, o grupo que
objetos originalmente recebeu a permisso. Isso acontece por-
A sintaxe do comando GRANT para manipulao de que a permisso foi atribuda para o grupo, e no para
objetos pode ser vista abaixo: os usurios individualmente. A D8 apresenta exem-
plos de uso do comando Grant.
GRANT Por fim, o assunto sobre permisses ficaria incom-
{ ALL [ PRIVILEGES ] | permission [ ,...n ] } pleto se no falssemos de algumas contas, grupos e
{ roles especiais.
ON { table | view } [ ( column [ ,...n ] ) ]
| ON { stored_procedure | extended_procedure } Conta SA (System Administrator)
| ON { user_dened_function } A conta SA abreviao de System Administrator
} - uma conta especial que pertence ao server role
TO security_account [ ,...n ] SysAdmin, criado durante a instalao do SQL Server
[ WITH GRANT OPTION ] 2000 quando o modelo Mixed Authentication sele-
[ AS { group | role } ] cionado. A senha da conta SA deve ser guardada a sete
chaves pelo administrador do banco. de boa prtica
ALL [ PRIVILEGES ] | permission [ ,...n ] : lista criar outro usurio com privilgios de SysAdm para
das permisses que esto sendo liberadas. Essas per- utilizao no dia-a-dia. Como sugesto, utilize essa
misses so classificadas por objeto, e encontram-se conta na criao de bancos de dados e para aplicao
listadas na D6. Utilizando-se ALL, todas as permis- de patchs; para todas as outras tarefas, crie uma outra
ses relacionadas ao objeto em questo sero libera- conta alterando sua senha periodicamente.
das. PRIVILEGES uma clusula opcional para ser
utilizada com ALL, mantendo-se a sintaxe compatvel O grupo BUILTIN\Administrators
com o padro SQL-ANSI 92. Independentemente do modelo de autenticao es-
A segunda parte do comando depende do tipo de colhido no processo de instalao do banco, Mixed ou
objeto onde se est atribuindo a permisso. Alguns Windows Authentication, ser criada uma conta com
exemplos podem ser vistos na D7. segurana integrada conferindo direitos de SysAdmin
TO security_account [ ,...n ]: informa a conta-desti- para usurios que pertenam ao grupo Local Adminis-
no da permisso; trators e Domain Admins do WinNT.
Essa conta, conhecida por BUILTIN\Administrators,
[WITH GRANT OPTION]: especifica que o usurio abre uma lacuna para que administradores de rede te-
informado na conta-destino ter poderes de delegar nham acesso irrestrito ao servidor do banco, o que ge-
essa mesma permisso para outras contas/usurios, ralmente no desejado. Para evitar riscos desnecess-
lembrando que somente permisses relativas a obje- rios, exclua essa conta, ou limite seus privilgios.
tos podem ser delegadas; permisses sobre execuo
de comandos no podem ser propagadas.
Comando Para que serve
Create database Create function Create procedure Create default Create rule
Concede permisso para selecionar
grant SELECT on Orders
Create table Create database Backup database Create view Backup log dados nas colunas DateShip e
(DateShip, EmployeeID) to
EmployeeId na tabela Orders para
UserSQLMag
D 5 Permisses para execuo de comandos. UserSQLMag

grant EXEC on stp_xyz to Concede permisso de execuo na


Objeto que se deseja Permisses que podem UserSQLMag procedure stp_xyz para UserSQLMag
estabelecer permisso ser aplicadas
Tabela, funo que retorna tabela SELECT, INSERT, DELETE, UPDATE grant exec on fn_xyz to Concede permisso para execuo da
ou view e REFERENCES UserSQLMag funo fn_xyz para UserSQLMag

Stored-Procedures EXECUTE grant create procedure to Concede permisso para criao de


Funo escalar EXECUTE, REFERENCES UserSQLMag procedures para o UserSQLMag

D 6. Permisses por objeto. D 7.

22 . 14 Edio

sql14.indb 22 6/10/2004 18:46:44


K

SGBD

SQL Magazine . 23

sql14.indb 23 6/10/2004 18:46:51


Descrio Comandos
Para dar permisso de select na tabela Orders para o grupo
SQLMag\G_Vendas, permitindo que os usurios associados a esse use NorthWind
grant SELECT on Orders to SQLMag\G_Vendas WITH GRANT
grupo tambm repassem essa permisso a outros usurios

Para que a usuria Livia, pertencente ao grupo SQLMag\G_ use NorthWind


Vendas repasse a mesma permisso para o usurio UserSQLMag, grant SELECT on Orders to
que no pertence a esse grupo UserSQLMag as SQLMag\G_Vendas

D 8.

O usurio guest agrupar todos os usurios que possuem algum tipo


O usurio guest (ou convidado) utilizado no con- de permisso no database. Quando concedemos per-
texto de um database para mapear usurios que pos- misso para que um usurio acesse um database, no
suem uma conta de logon no servidor SQL Server definimos naquele momento se o usurio poder ler,
2000, mas no possuem direitos de acesso no data- escrever, conceder permisses, ou alterar objetos. Em
base em questo. exceo dos databases master e outras palavras, diramos algo do tipo ... Pode entrar,
tempdb, que j nascem com a conta guest, nos demais mas fique quieto no seu canto que depois eu digo o
databases essa conta poder ser criada ou removida. que voc pode fazer .... No momento da liberao
Permisses podem ser aplicadas para a conta guest, da entrada do usurio no database, ele automatica-
entretanto esse procedimento deve ser utilizado com mente vinculado ao grupo public, permanecendo nele
bastante cautela. Evite atribuir permisses diretamen- mesmo aps liberarmos outros acessos (leitura, escri-
te para ela, pois todos os logins que no possuem direi- ta, etc.).
tos em um database podero acess-lo por intermdio O role public pode ser encontrado em todos os da-
dos privilgios que voc destinar a essa conta. tabases, no pode ser apagado, e sua utilizao indi-
Mas porque ento criar uma conta guest sem cada quando h a necessidade de liberar (ou proibir)
privilgios em um database? A resposta : para algum tipo de acesso abrangendo todos os usurios do
ativar um application role. Lembre-se que para ativar database: ao invs de atribuir a permisso individual-
um application role, o usurio precisa estar dentro mente, damos permisso ao role public. Por exemplo,
do database. se todos os usurios do database db_Teste necessitam
de permisso de leitura e escrita, basta atribuirmos a
O usurio dbo permisso para o grupo public.
DBO funciona como um alias que ativado no Apesar de facilitar bastante a administrao, a atri-
momento da entrada no database para usurios que buio de permisses pblicas deve ser feita com cau-
pertenam ao role SysAdmin. A finalidade desse tela, principalmente quando se tm vrios grupos de
apelido estabelecer um nome padro, facilitando a usurios com caractersticas diferentes em um mesmo
identificao dos objetos do banco. Assim, a tabela database.
Produto criada pelo usurio UserSQLMag, perten-
cente ao SysAdmin referenciada como dbo.Produ- Concluso
to e no como UserSQLMag.Produto. Para objetos O objetivo dessa matria foi explorar uma srie de
que possuem owner dbo, a qualificao ocorre de conceitos fundamentais a respeito do cadastramento
maneira automtica durante o processo de execuo de contas e a atribuio de permisses no SQL Server
do comando. 2000. Esse assunto continuar na prxima edio, com
Algumas observaes importantes: uma srie de exemplos prticos e dicas bastante teis
Alm do server role SysAdmin, os papis inter- para resoluo de problemas relacionados s permis-
nos de um database db_DDLAdmin e db_Owner ses. At l! S
tambm possuem permisso para criao de

G
objetos, porm no possuem auto-mapeamento
(psribeiro@hotmail.com)
para dbo; Microsoft MCDBA e membro da
equipe editorial da SQL Magazine. Atua
Usurios pertencentes ao role db_Owner tem como DBA-Snior em SQL Server na
permisso para explicitar o usurio dbo na criao Livraria Saraiava S/A.

de objetos ex. create table dbo.Produto (codigo


int, descricao varchar(30));
O usurio dbo nasce no momento da criao do Paulo
database e no pode ser apagado. Ribeiro

O role public
H
Comente esta matria em:
Public um database role especial responsvel por www.sqlmagazine.com.br/sql14/

24 . 14 Edio

sql14.indb 24 6/10/2004 18:46:59


Oracle 9i Parte III
Implementando um projeto de
banco de dados
Ricardo Rezende

N
este ltimo artigo da srie sobre o Oracle Criando o usurio e esquema
9i vamos implementar um projeto de banco O usurio uma entidade definida no BD que tem
de dados. Aprendemos at aqui como criar acesso conexo e manipulao de objetos deste BD.
um BD no primeiro artigo (SQL Magazine 12), en- J um esquema (Schema) uma coleo de objetos
tendemos parte da arquitetura do Oracle 9i (SQL no BD que interagem diretamente com os dados do
Magazine 13) e agora iremos colocar a mo na massa BD. Esses objetos podem ser tabelas, views, ndices,
dando vida a um determinado projeto. procedures, packages, etc. Esquema o conceito
Todo o processo de projeto do BD foi visto na srie dado ao conjunto de objetos pertencentes a um usu-
de seis artigos publicados na SQL Magazine, edies rio do BD e possui o mesmo nome deste usurio.
02 a 07, onde foi abordado desde o modelo lgico Podemos dizer ento que as tabelas, procedures,
at a implementao (em Firebird 1.0). Utilizaremos ndices, etc. formam o esquema do usurio, desta
o mesmo estudo de caso, mas utilizando desta vez forma, o esquema SQLMagazine pertence ao usu-
o Oracle 9i. Gostaria de fazer um agradecimento a rio SQLMagazine. Esta apenas uma informao
Vinicius Loureno de Souza que brilhantemente es- conceitual, no tendo nenhum impacto funcional no
creveu a srie de artigos sobre o projeto de BD e gen- sistema.
tilmente permitiu sua utilizao como base para este No existe relao entre o esquema e as tablespa-
artigo. ces, portanto os objetos de um esquema podem estar
Para nos ambientar ao projeto, vamos repassar os em diferentes tablespaces, seria o caso, por exemplo,
requisitos levantados junto ao cliente hipottico de separar as tabelas dos ndices em duas tablespa-
( E1). ces diferentes em contrapartida, objetos de diferentes
esquemas podem estar em uma mesma tablespace,
Daremos incio agora implementao do projeto. exemplificando novamente, podem estar na mesma
Para isto, seguiremos a seguinte seqncia: tablespace os ndices de vrios esquemas diferentes.
Criao do usurio e esquema; Para iniciarmos nossa implementao, necessrio
Concesso de privilgios ao usurio criado; que exista um usurio e o esquema para definir os ob-
Criao dos objetos do BD: jetos. No se esquea de estar conectado como um
Criao das tabelas; usurio com privilgios de administrador.
Definio das chaves estrangeiras;
Definio das restries de verificao C 1. Criao do usurio e esquema.
(constraints de Check);
Criao das seqncias (sequences); SQL> CREATE USER SQLMAGAZINE
Criao das Stored Procedures; 2 IDENTIFIED BY SQLMAG
Criao dos pacotes (packages); 3 DEFAULT TABLESPACE USERS
Criao dos gatilhos (triggers) para garan- 4 QUOTA 10M ON USERS
tir a regra de negcio; 5 QUOTA 2M ON INDX
Implementao das mensagens de erro; 6 TEMPORARY TABLESPACE TEMP;
Cria o dos ndices. Usurio criado.

SQL Magazine . 25

sql14.indb 25 6/10/2004 18:47:06


E1: Anlise de Requisitos (Retirado da SQL Magazine 02 pgina 15)

A livraria Book.Net destinada a clientes da rea de informtica. Ela possui cerca de 4500 livros
sobre desenvolvimento, internet, banco de dados, redes e sistemas operacionais entre outros;
A livraria tanto vende os seus livros como tambm os aluga para clientes cadastrados em suas
fichas para fins de estudo;
Os livros podem ser nacionais ou importados;
Os clientes podem alugar no mximo trs livros de uma vez, cuja durao no poder ultrapassar
o perodo de duas semanas. Depois desse tempo, o cliente pode renovar o aluguel. Em toda reno-
vao, dever ser paga uma taxa para cada livro. Caso o cliente passe do tempo e no renove o
aluguel, pagar uma multa na devoluo e/ou renovao;
Os clientes que desejam alugar um livro que j esteja alugado podero fazer uma reserva do mes-
mo;
Os livros que so pouco alugados ou no so alugados, a livraria realiza promoes para vend-
los;
Os clientes que mais alugaram e mais compraram livros so notificados antes dos demais sobre
as promoes, tanto para compra como para aluguel;
Os clientes podem ser pessoas fsicas ou jurdicas. Os livros tambm so vendidos para universi-
dades, centros educacionais e quaisquer cursos que desejam melhorar sua biblioteca;
O cliente pessoa fsica, ao se cadastrar, deve informar os seguintes dados obrigatrios: nome
completo, identidade e/ou CPF, data de nascimento, endereo completo e pelo menos um telefone
de contato. As informaes opcionais so e-mail, home-page pessoal e outros tipos de telefones;
O cliente pessoa jurdica, ao se cadastrar, deve informar os seguintes dados obrigatrios: CNPJ,
razo social, endereo completo e pelo menos um telefone de contato. As informaes opcionais so
e-mail, home-page e outros telefones;
Ao cadastrar um livro, as seguintes informaes so preenchidas: ISBN, nome do livro, nome da
editora, autor, ano de publicao, assunto, se para compra ou aluguel, se nacional ou importado
e quantidade que a livraria tem. Estas so informaes obrigatrias. As informaes opcionais so
preo de venda, preo de aluguel e preo de renovao de aluguel.
Com base nos requisitos, o cliente deseja que o sistema fornea as seguintes funcionalidades:
Controlar o cadastro de todos os clientes que compram e alugam os livros;
Controlar o cadastro de todos os livros;
Controlar os livros mais vendidos e alugados;
Controlar os livros menos vendidos e alugados;
Controlar as re-
servas de livros;
Controlar os
livros que esto
alugados e o tem-
po de aluguel dos
mesmos;
Obter relatrio
da quantidade de
livros de um deter-
minado assunto;
Obter relatrio
da quantidade de
livros de uma de-
terminada edito-
ra.
A A 1 mostra o
modelo conceitu-
al do projeto que
iremos implemen-
tar. A1. Modelo conceitual de nosso projeto.

26 . 14 Edio

sql14.indb 26 6/10/2004 18:47:11


A C1 mostra a criao de um usurio contendo A string de conexo o conjunto de instrues
a maneira que ele acessar o BD e definies de enviadas ao servidor que permitem a conexo ao BD.
armazenamento para seus objetos. Criamos um usu- A string de conexo pode conter toda a instruo de
rio chamado SQLMAGAZINE cuja senha SQLMAG. Ele uti- conexo ou apenas um alias (apelido) dado a esse
lizar como tablespace padro a USERS, ou seja, por conjunto de instrues. Esse alias, juntamente com as
padro seus objetos sero criados nesta tablespace, instrues de conexo podem ser encontradas e con-
que ter uma cota de 10 Mb para criao de objetos. figuradas no arquivo tnsnames.ora. No o configura-
K

SGBD
Estamos atribuindo tambm uma cota de 2 Mb de es- remos agora, pois o DBCA (Database Configuration
pao na tablespace INDX para criao de ndices e por Assistant) j o fez automaticamente quando criamos
fim, sua tablespace temporria padro a TEMP. o BD. Todas as etapas esto no artigo inicial, na edio
12 da revista SQL Magazine.
A definio destes parmetros necessria para Comearemos criando as tabelas que no possuem
que no haja o risco de um usurio criar um obje- chave estrangeira (Foreign Key): ASSUNTO (C 4),
to na tablespace SYSTEM. Esta a tablespace utilizada AUTOR, CLIENTE e EDITORA.
para os objetos do sistema, e no uma boa prtica
desorganiz-la misturando com objetos de usurios. B Neste artigo mostraremos algumas listagens comenta-
A definio das cotas nas tablespaces tambm ne- das. Os scripts completos podero ser baixados em www.
cessria para que haja uma otimizao de espao uti- sqlmagazine.com.br/sql14
lizado. Caso, durante a implementao, a criao dos
objetos ultrapasse esta cota, o DBA poder aumentar Perceba na C4 que o argumento CONSTRAINT define o
o espao destinado a esse usurio. Tambm impor- campo CODIGO como sendo a chave primria (Primary
tante definir qual ser a tablespace temporria padro Key) da tabela e atribui um nome, PK_ASSUNTO, a essa
do usurio, para que o sistema no utilize a tablespa- restrio.
ce SYSTEM para as operaes que requeiram atividades
temporrias. C 4. Criao da tabela ASSUNTO.
Agora precisamos conceder os privilgios necess-
rios ao usurio para trabalhar no BD. A C2 nos mos- SQL> CREATE TABLE ASSUNTO
tra que foram concedidos os privilgios de conectar-se 2 (CODIGO NUMBER NOT NULL,
ao BD (CREATE SESSION), e criao de objetos (tabelas 3 ASSUNTO VARCHAR(50) NOT NULL,
com o CREATE TABLE, seqncias com o CREATE SEQUENCE, 4 CONSTRAINT PK_ASSUNTO PRIMARY KEY (CODIGO));
stored procedures com o CREATE PROCEDURE e gatilhos Tabela criada.
com o CREATE TRIGGER).
Definindo as chaves estrangeiras
C 2. Concesso de privilgios ao usurio SQLMAGAZINE. As chaves estrangeiras so as responsveis pela con-
sistncia dos dados no que se refere integridade
SQL> GRANT CREATE SESSION, CREATE TABLE, CREATE referencial (sempre que existir um relacionamento,
SEQUENCE, CREATE PROCEDURE, CREATE TRIGGER onde os dados de uma tabela dependero dos dados
2 TO SQLMAGAZINE; de outra, haver uma chave estrangeira apontando
Concesso bem-sucedida. para a chave primria da tabela referenciada). Esta
definio deve ser feita aps a criao das tabelas e
especificao de suas respectivas chaves primrias,
pois apesar de ser possvel definir a chave estrangeira
Iniciando a criao dos objetos no momento da criao da tabela, necessrio que a
Precisaremos estar conectados (C3) com o usurio tabela referenciada por esta chave j tenha sido cria-
previamente criado para iniciar a criao dos obje- da anteriormente. A C5 nos mostra a definio de
tos deste esquema. Note que a conexo feita no algumas chaves estrangeiras atravs da instruo ALTER
formato USURIO/SENHA@<STRING_DE_CO TABLE.
NEXO>. Na C5, temos o exemplo da criao de duas chaves
estrangeiras. Na primeira delas (FK_ITEM_ALUGA_ALUGA),
C 3. Conexo ao BD com o usurio SQLMAGAZINE. criada a chave estrangeira no campo COD_CLIENTE da
tabela ITEM_ALUGA que referencia o campo CODIGO da ta-
SQL> CONNECT SQLMAGAZINE/SQLMAG@DBA bela ALUGA. Perceba que o nome dado chave estran-
Conectado. geira (FK_ITEM_ALUGA_ALUGA) nos mostra claramente que

SQL Magazine . 27

sql14.indb 27 6/10/2004 18:47:12


uma chave estrangeira (FK) e tambm nos mostra as h lgica em permitir um aluguel por um perodo me-
duas tabelas que fazem parte do relacionamento. nor ou igual a zero) e se o perodo informado maior
que 14 dias. Caso no se satisfaa uma das duas con-
C 5. Definio de chaves estrangeiras. dies, a incluso do registro ser rejeitada.

SQL>ALTER TABLE ITEM_ALUGA Auto-Incremento das chaves primrias


2 ADD CONSTRAINT FK_ITEM_ALUGA_ALUGA Ainda seguindo os passos da implementao feita no
3 FOREIGN KEY (COD_ALUGA) REFERENCES ALUGA(CODIGO); Firebird 1.0, iremos adotar a mesma metodologia de
Tabela alterada. auto-incremento para as chaves primrias das tabelas.
Este recurso pode ser utilizado atravs da criao de
SQL>ALTER TABLE PESSOA_JURIDICA seqncias (sequence) no Oracle. Uma sequence
2 ADD CONSTRAINT FK_PESSOA_JURIDICA_CLIENTE um objeto que implementa valores seqenciais. Uma
3 FOREIGN KEY (COD_CLIENTE) REFERENCES vez estabelecido o valor de incio da sequence, a pseu-
CLIENTE(CODIGO) docoluna NEXTVAL define qual ser o prximo valor a
4 ON DELETE CASCADE; ser adotado por ela e a pseudocoluna CURRVAL mostra
Tabela alterada. qual o valor atualmente atribudo sequence.
Uma particularidade das sequences que o valor
A segunda criao da chave estrangeira possui uma incrementado nunca mais ser utilizado, independen-
clusula a mais (ON DELETE CASCADE), que significa que a temente de uma confirmao de transao (commit)
excluso de um registro na tabela pai (a que est sendo ou seu cancelamento (rollback).
referenciada pela chave estrangeira, no caso, CLIENTE) Devemos sempre analisar a regra de negcio an-
provoca a excluso de todos os registros referencia- tes de implementar uma sequence como gerador de
dos na tabela filho (PESSOA_JURIDICA) que possuem o auto-incremento, pois o fato de no ser possvel a
mesmo valor de chave. Ou seja, caso um cliente seja reutilizao de um valor da sequence no caso de um
excludo da tabela CLIENTE, as definies deste mes- rollback, isso implicaria em um problema na gerao
mo cliente na tabela PESSOA_JURIDICA tambm sero de nota fiscal, por exemplo. Este um caso tpico
excludos. em que, caso seja cancelada a compra, o nmero da
nota fiscal ser reutilizado em uma nova compra e a
Restries para garantir integridade sequence no permite esta reutilizao.
Podemos garantir que, no momento da insero de A C7 nos mostra uma das sequences que ser im-
um registro, seja verificado se o valor atribudo de- plementada em nosso projeto.
terminada coluna satisfaz uma condio pr-estabe-
lecida. Caso no satisfaa, este registro no poder C 7. Criao da sequence SEQ_ALUGA.
ser aceito como vlido e uma mensagem dever ser
emitida avisando o ocorrido. Este tipo de restrio SQL> CREATE SEQUENCE SEQ_ALUGA
conhecido como Check Constraint. 2 START WITH 1
Normalmente as restries de check esto intima- 3 INCREMENT BY 1
mente ligadas regra de negcio estipulada pelo es- 4 NOCACHE;
tudo de caso e uma dessas regras, no nosso exemplo, Seqncia criada.
nos informa que um aluguel no pode ser efetuado
por mais de 14 dias. A C6 mostra um exemplo de No exemplo da C 7, vemos a utilizao de trs clu-
criao de uma Check Constraint. sulas. A clusula START WITH indica qual o valor inicial
atribudo sequence, a clusula INCREMENT BY define
C 6. Criao da Check constraint. qual o incremento que ser dado a cada novo valor
adotado pela sequence e a clusula NOCACHE define que
SQL> ALTER TABLE ALUGA no ser armazenada uma lista de valores para a se-
2 ADD CONSTRAINT CK_ALUGA_PERIODO_ALUGUEL quence em memria para que os prximos acessos a
3 CHECK(PERIODO_ALUGUEL > 0 AND ela sejam mais rpidos.
PERIODO_ALUGUEL <= 14); Vemos na C 7 simplesmente a criao de um obje-
Tabela alterada. to sequence. Como esse objeto simplesmente um
gerador de nmeros seqenciais, precisamos fazer
No exemplo, ser verificado em um aluguel de livro com que o valor gerado por ele seja atribudo uma
se o perodo a ser alugado maior que zero (pois no coluna da tabela correspondente, ou seja, teremos

28 . 14 Edio

sql14.indb 28 6/10/2004 18:47:14


uma sequence para cada tabela que necessite um compartilhada por todos os usurios, reduzin-
auto-incremento. do a quantidade de memria necessria para a
No momento da insero de um registro na tabela, aplicao;
devemos buscar o prximo valor seqencial gerado Ganho de produtividade: no existe a necessi-
pela sequence e atribu-lo ao campo correspondente dade de vrios desenvolvedores programarem c-
no registro que est sendo inserido, como no exemplo digos at mesmo parecidos nas vrias aplicaes
a seguir: que iro interagir com o BD, uma vez que existir
K

SGBD
apenas um cdigo armazenado no BD que todas
INSERT INTO TESTE (COD_TESTE) as aplicaes podero utilizar.
VALUES (SEQ_TESTE.NEXTVAL); Integridade: toda a aplicao desenvolvida
ao redor de um grupo de procedures em comum,
No exemplo, atribudo ao campo COD_TESTE da reduzindo a probabilidade de erros de codificao
tabela TESTE o prximo valor atribudo sequence por parte da equipe.
SEQ_TESTE.
A nossa implementao utilizar procedures para Em nosso estudo de caso, a grande maioria das
inserir os dados nas tabelas que necessitam de um stored procedures ficaro agrupadas em um pacote,
auto-incremento, desta forma, ser necessrio que a as packages que veremos a seguir. Haver apenas uma
aplicao fornea as informaes do autor, por exem- procedure que implementaremos fora da package por
plo, atravs da passagem de parmetros para a proce- no estar relacionada ao assunto desta package.Ela
dure. O nico valor que no ser passado como par- a procedure responsvel pela renovao do aluguel,
metro, ser justamente o nmero de cdigo do autor, cuja implementao mostrada na C8.
pois este dado ser adquirido atravs da sequence. Na
C10, linhas 20 e 21, apresentado este caso. Pacotes para organizar as rotinas
Como as inseres nas tabelas so procedures com Os pacotes (packages) so objetos armazenados no
o mesmo objetivo, agrupamos todas elas em um mes- BD que funcionam como um container encapsulan-
mo pacote, so os chamados packages, que veremos do objetos que executam funes semelhantes em
mais frente. sistemas. Um pacote dividido em duas partes: a
especificao e o corpo, que opcional. A especi-
Stored Procedures ficao do pacote pblica, podendo ter seu cdi-
Stored procedures so objetos formados por um go acessado por todos os usurios e aplicaes. J o
conjunto de instrues SQL e construes PL/SQL corpo no permite esse acesso ao cdigo, apenas sua
que ficam armazenadas no BD. Uma stored procedu- execuo.
re pode ser executada atravs da utilizao explcita Na especificao necessrio incluir tudo o que
no cdigo da aplicao ou atravs da utilizao expl- ser visvel aos usurios e aplicaes. Ou seja, de-
cita no cdigo de outra stored procedure ou trigger. finiremos quais so as procedures contidas no
A utilizao de stored procedures pode trazer bene- pacote e quais os parmetros e variveis das mes-
fcios em vrios aspectos: mas. Neste ponto, decidiremos se colocaremos o
Garantir a segurana dos dados: possvel res- cdigo da procedure na prpria especificao ou no
tringir o acesso ao BD pelos usurios dando-lhes corpo. Caso opte-se por utilizar o corpo do pacote
permisso apenas para acesso atravs das stored (que ser nossa escolha), devemos repetir no corpo
procedures; todas as declaraes feitas na especificao do pa-
Melhoria de performance: considerando que cote. A C9 mostra um trecho da especificao do
toda a implementao da procedure j se encon- pacote.
tra no servidor de BD, no h a necessidade da No corpo do pacote criaremos toda a lgica das ro-
aplicao enviar todo o cdigo via rede, com isso tinas de insero nas tabelas. O Oracle far a valida-
h uma reduo considervel de trfego de rede, o de cada implementao com as definies feitas
aumentando a performance; Outro fator a re- na especificao. Vejamos na C10 um trecho de nos-
duo de I/O, pois uma vez utilizada a procedu- sa Package Body.
re, a mesma ficar armazenada em memria, na A chamada de uma procedure que se encontra
Shared Pool, no havendo a necessidade de leitu- dentro de um package bastante simples, basta
ra em disco; acrescentar o nome do pacote seguido de um ponto (.)
Alocao de memria: uma nica cpia do antes do nome da procedure e seus parmetros. Ve-
cdigo da procedure estar em memria e sendo jamos um exemplo na C11.

SQL Magazine . 29

sql14.indb 29 6/10/2004 18:47:15


C 8. Criao de stored procedure.

SQL> CREATE OR REPLACE PROCEDURE SP_RENOVA_ALUGUEL


2 (P_COD_ALUGUEL ALUGA.CODIGO%TYPE,
3 P_COD_CLIENTE ALUGA.COD_CLIENTE%TYPE,
4 P_VR_MULTA ALUGA.VR_MULTA%TYPE,
5 P_PERIODO_ALUGUEL ALUGA.PERIODO_ALUGUEL%TYPE)
6 IS
7 V_CODIGO_ALUGUEL ALUGA.CODIGO%TYPE;
8 V_ISBN_LIVRO ITEM_ALUGA.ISBN_LIVRO%TYPE;
9 V_PRECO_RENOVACAO_ALUGUEL ITEM_ALUGA.PRECO%TYPE;
10 BEGIN
11 -- Encerra o aluguel que ser renovado
12 UPDATE ALUGA SET
13 DT_DEVOLUCAO=SYSDATE, VR_MULTA=P_VR_MULTA
14 WHERE CODIGO=P_COD_ALUGUEL;
15 --Cria um novo aluguel
16 INSERT INTO ALUGA(CODIGO, COD_CLIENTE, DT_HORA, PERIODO_ALUGUEL)
17 VALUES(SEQ_ALUGA.NEXTVAL, P_COD_CLIENTE, SYSDATE, P_PERIODO_ALUGUEL);
18 --Obtm todos os itens do aluguel que ser renovado para inclu-los como itens do novo aluguel
19 FOR R_ITEM_ALUGA IN (SELECT ISBN_LIVRO
20 FROM ITEM_ALUGA
21 WHERE COD_ALUGA=P_COD_ALUGUEL) LOOP
22 --Para cada livro, obtm o preo de renovao para colocar como preo do aluguel renovado
23 SELECT PRECO_RENOVACAO_ALUGUEL INTO V_PRECO_RENOVACAO_ALUGUEL
24 FROM LIVRO
25 WHERE ISBN = R_ITEM_ALUGA.ISBN_LIVRO;
26 --Insere os livros como itens do novo aluguel
27 INSERT INTO ITEM_ALUGA(CODIGO, COD_ALUGA, ISBN_LIVRO,PRECO)
28 VALUES(SEQ_ITEM_ALUGA.NEXTVAL, V_CODIGO_ALUGUEL, V_ISBN_LIVRO, V_PRECO_RENOVACAO_ALUGUEL);
29 END LOOP;
30 END;
31 /
Procedimento criado.

Gatilhos para garantir as regras de negcio uma alterao da quantidade comprada, ser tam-
Os triggers nada mais so do que procedimentos ar- bm alterada a quantidade em estoque, considerando
mazenados no BD (stored procedures) que so execu- a diferena na compra e finalmente, se for excludo
tados automaticamente atravs de um evento sempre um livro da compra, a quantidade ser devolvida ao
que uma tabela ou view modificada, tanto por um estoque.
INSERT, um UPDATE ou um DELETE. Os gatilhos podem ser Diferente de outros SGBDs, no Oracle no neces-
disparados de acordo com o momento em que est srio criar um gatilho para cada tipo de evento que
sendo executado o evento, ou seja, antes (before) ou ocorra na mesma tabela. possvel criar um nico
depois (after) da execuo do evento. Esta particula- gatilho que ser disparado caso haja qualquer um dos
ridade dos gatilhos (triggers) nos garante integridade eventos na tabela.
no cumprimento das regras de negcio previamente
definidas. Como eles atuam independente da vonta- Mensagens de erro
de da aplicao, asseguramos que as implementaes Caso alguma regra de negcio seja quebrada, o ga-
que garantem esta integridade sero executadas. tilho no permitir a insero de uma informao e
A C12 nos mostra um gatilho que ser execu- a transao ser abortada. Para que isso no ocorra
tado antes de um INSERT,UPDATE ou DELETE na tabela e ningum fique sabendo o motivo, implementa-
ITEM_COMPRA. Note que no momento em que um li- remos mensagens de erro que sero mostradas caso
vro for inserido como item de compra, ser feita a acontea um fato como o descrito.
baixa na quantidade em estoque do mesmo. Em Para implementar essas mensagens de erro par-

30 . 14 Edio

sql14.indb 30 6/10/2004 18:47:16


ticulares, que no so as mensagens de erro padro 18 (P_NOME AUTOR.NOME%TYPE) IS
Oracle, utilizaremos a tcnica de forar um erro 19 BEGIN
definido atravs da instruo RAISE_APPLICATION_ERROR. 20 INSERT INTO AUTOR(CODIGO, NOME)
A C13 mostra um trecho de um gatilho onde utiliza- 21 VALUES(SEQ_AUTOR.NEXTVAL, P_NOME);
mos esta tcnica. 22 END;
.
.
K
C 9. Trecho da especificao do pacote.

SGBD
.
SQL> CREATE OR REPLACE PACKAGE PCK_INSERIR IS 92 PROCEDURE INS_MEIO_COMUNICACAO
2 PROCEDURE INS_ALUGA 93 (P_COD_CLIENTE MEIO_COMUNICACAO.COD_CLIENTE%TYPE,
3 (P_COD_CLIENTE ALUGA.COD_CLIENTE%TYPE, 94 P_DDD MEIO_COMUNICACAO.DDD%TYPE,
4 P_PERIODO_ALUGUEL ALUGA.PERIODO_ALUGUEL%TYPE, 95 P_NUMERO MEIO_COMUNICACAO.NUMERO%TYPE,
5 P_DT_DEVOLUCAO ALUGA.DT_DEVOLUCAO%TYPE, 96 P_RAMAL MEIO_COMUNICACAO.RAMAL%TYPE,
6 P_VR_MULTA ALUGA.VR_MULTA%TYPE); 97 P_HOMEPAGE MEIO_COMUNICACAO.HOMEPAGE%TYPE,
7 PROCEDURE INS_ASSUNTO 98 P_EMAIL MEIO_COMUNICACAO.EMAIL%TYPE,
8 (P_ASSUNTO ASSUNTO.ASSUNTO%TYPE); 99 P_TIPO MEIO_COMUNICACAO.TIPO%TYPE) IS
. 100 BEGIN
. 101 INSERT INTO MEIO_COMUNICACAO(CODIGO,
. COD_CLIENTE, DDD, NUMERO, RAMAL, HOMEPAGE,
46 PROCEDURE INS_MEIO_COMUNICACAO EMAIL, TIPO)
47 (P_COD_CLIENTE MEIO_COMUNICACAO.COD_CLIENTE%TYPE, 102 VALUES(SEQ_ITEM_COMPRA.NEXTVAL,
48 P_DDD MEIO_COMUNICACAO.DDD%TYPE, P_COD_CLIENTE, P_DDD, P_NUMERO, P_RAMAL,
49 P_NUMERO MEIO_COMUNICACAO.NUMERO%TYPE, P_HOMEPAGE, P_EMAIL, P_TIPO);
50 P_RAMAL MEIO_COMUNICACAO.RAMAL%TYPE, 103 END;
51 P_HOMEPAGE MEIO_COMUNICACAO.HOMEPAGE%TYPE, 104 END PCK_INSERIR;
52 P_EMAIL MEIO_COMUNICACAO.EMAIL%TYPE, 105 /
53 P_TIPO MEIO_COMUNICACAO.TIPO%TYPE); Corpo de Pacote criado.
54 END PCK_INSERIR;
55 / C 11. Execuo de uma procedure contida em um package.
Pacote criado.
SQL> EXECUTE PCK_INSERIR.INS_ASSUNTO(Implementao

C 10. Trecho do corpo do pacote. de um sistema em Oracle 9i);


Procedimento PL/SQL concludo com sucesso.
SQL> CREATE OR REPLACE PACKAGE BODY PCK_INSERIR IS
2 PROCEDURE INS_ALUGA SQL> SELECT * FROM ASSUNTO
3 (P_COD_CLIENTE ALUGA.COD_CLIENTE%TYPE, 2 WHERE ASSUNTO LIKE I%;
4 P_PERIODO_ALUGUEL ALUGA.PERIODO_ALUGUEL%TYPE, CODIGO ASSUNTO
5 P_DT_DEVOLUCAO ALUGA.DT_DEVOLUCAO%TYPE, ---------- ------------------------------------------
6 P_VR_MULTA ALUGA.VR_MULTA%TYPE) IS 21 Implementao de um sistema em Oracle 9i
7 BEGIN
8 INSERT INTO ALUGA(CODIGO, COD_CLIENTE, No trecho mostrado na C13, o gatilho ir verifi-
DT_HORA, PERIODO_ALUGUEL, DT_DEVOLUCAO, VR_MULTA) car se o campo de reserva de um livro nulo (o que
9 VALUES(SEQ_ALUGA.NEXTVAL, P_COD_CLIENTE, indica que o mesmo no est reservado) e caso no
SYSDATE, P_PERIODO_ALUGUEL, TO_DATE(P_DT_DEVOLUCAO, seja, ser disparada a mensagem informando que o
DD/MM/YYY), P_VR_MULTA); livro j est reservado e a insero ser automatica-
10 END; mente abortada.
11 PROCEDURE INS_ASSUNTO
12 (P_ASSUNTO ASSUNTO.ASSUNTO%TYPE) IS ndices para melhorar as consultas
13 BEGIN Os ndices so uma estrutura opcional associada a
14 INSERT INTO ASSUNTO(CODIGO, ASSUNTO) tabelas. Podemos criar ndices em uma ou mais co-
15 VALUES(SEQ_ASSUNTO.NEXTVAL, P_ASSUNTO); lunas de uma tabela para aumentar a performance
16 END; em consultas SQL. Um ndice fornece um rpido
17 PROCEDURE INS_AUTOR caminho de acesso aos dados em uma tabela e o

SQL Magazine . 31

sql14.indb 31 6/10/2004 18:47:16


primeiro recurso a se pensar para reduzir o acesso a Deve-se analisar a estratgia de acesso que est sendo
disco, quando utilizado de maneira lgica e racional. adotada pelo Oracle aps a criao do ndice e con-
cluir se este ndice est ajudando ou no a aumentar a
C 12. Criao de um Trigger que ser disparado antes de uma insero, performance. A C14 mostra a criao de um ndice.
alterao ou excluso na tabela. Na C14, foi criado um ndice com o nome de
IX_NOME_AUTOR sobre a coluna NOME da tabela AUTOR e
SQL> CREATE OR REPLACE TRIGGER B_IUD_QTD_LIVRO foi definido que o mesmo ser criado na tablespace
2 BEFORE INSERT OR UPDATE OR DELETE ON INDX. Partindo-se do fato de que a tablespace INDX est
ITEM_COMPRA armazenada fisicamente em um disco diferente da
3 FOR EACH ROW tablespace USERS, teremos um ganho de performance
4 BEGIN no acesso a leitura do ndice e, posteriormente, dos
5 IF INSERTING THEN dados.
6 PDATE LIVRO C 14. Criao de ndice.
7 SET QUANTIDADE = QUANTIDADE - :NEW.QTD_COMPRADA
8 WHERE ISBN = :NEW.ISBN_LIVRO; SQL> CREATE INDEX IX_NOME_AUTOR ON AUTOR(NOME)
9 ELSIF UPDATING (QTD_COMPRADA) THEN TABLESPACE INDX;
10 UPDATE LIVRO ndice criado.
11 SET QUANTIDADE = QUANTIDADE + :OLD.QTD_COMPRADA
12 WHERE ISBN = :NEW.ISBN_LIVRO; Concluso
13 UPDATE LIVRO Este artigo finaliza a srie passo-a-passo sobre o
14 SET QUANTIDADE = QUANTIDADE - :NEW.QTD_COMPRADA Oracle 9i. Aprendemos como criar um BD Oracle,
15 WHERE ISBN = :NEW.ISBN_LIVRO; entendendo toda a estrutura de trabalho de um ser-
16 ELSIF DELETING THEN vidor Oracle e, finalmente, fizemos a implementao
17 UPDATE LIVRO de um sistema utilizando vrias funcionalidades deste
18 SET QUANTIDADE = QUANTIDADE + :OLD.QTD_COMPRADA SGBD.
19 WHERE ISBN = :NEW.ISBN_LIVRO; Espero ter proporcionado uma leitura agradvel e
20 END IF; de grande valia. Estarei esperando seus comentrios,
21 END; crticas e sugestes. At a prxima. S
22 /

G
Gatilho criado.
(ricardo@sqlmagazine.com.br,
ricarezende@yahoo.com.br)
C 13. Extrato de um Trigger utilizando o RAISE_APPLICATION_ERROR. professor das disciplinas de Banco de
Dados, Linguagem de Programao e
Tcnicas de programao pelo Centro
IF (V_LIVRO IS NOT NULL ) THEN Estadual de Educao Tecnolgica Paula
Souza nas unidades de Taubat-SP e
RAISE_APPLICATION_ERROR (-20503, O livro j est Caapava-SP, DBA Oracle com cursos
oficiais pela Oracle University, consultor
reservado!);
Ricardo de Bancos de Dados e subeditor da revis-
END IF; ta SQL Magazine.
Rezende

importante salientar que a criao de ndices deve


ser criteriosa, pois devemos ter em mente que um
ndice que no ajuda, provavelmente ir atrapalhar. H Faa o download e comente esta matria em:
www.sqlmagazine.com.br/sql14/

32 . 14 Edio

sql14.indb 32 6/10/2004 18:47:29


K

SGBD

SQL Magazine . 33

sql14.indb 33 6/10/2004 18:47:32


TECH WEEK

26 e 27
Vem a
o primeiro grande evento
de novembro
em So Paulo
de web e mobile
j realizado no
Brasil www.portalwebmobile.com.br/eventos/wmtw

sql14.indb 34 6/10/2004 18:47:52


Dois dias surpreendentes com o que h
de mais novo em tecnologias wireless e
web. Sero mais de 78 atividades tcnicas,
distribudas em 5 salas! Este evento ser o
primeiro no Brasil a dedicar mais de 60% de
seu contedo para as tecnologias mveis.

De forma totalmente imparcial o evento


tambm prope uma conferncia das
tecnologias que atualmente lideram esses
mercados: Java e .NET.

Palestras sobre SmartCards, SmartPhones,


Pocket PCs, Tablet PCs,J2ME, CLDC, Personal
Java, JavaCard, tecnologias .NET Compact
Framework, ASP .NET Mobile Applications,
Windows Mobile, Brew, jogos wireless,
bluetooth, JSP, JSTL, Servlets, Java Server
Faces, Struts, ASP.NET, XML Web Services,
ADO.NET, .NET Remoting, Smart Clients e
muito mais!

Qual ser o futuro no desenvolvimento


de software? Que dispositivo ser usado?
Quais recursos j esto disponveis? No
espere essas novas tecnologias dominarem o
mercado para comear a estud-las .

patrocnio
Atualize-se agora!
Maiores informaes pelo
telefone (21) 2283-9012,
realizao e-mail info@devmedia.com.br

mtw

sql14.indb 35 6/10/2004 18:48:48


36 . 14 Edio

sql14.indb 36 6/10/2004 18:48:53


Modelagem de Data
Warehouses e Data Marts
Parte 2 Isabel Cristina Italiano
Luiz Antonio Esteves

SQL Magazine 13
Modelagem de Data Warehouse e Data Marts - Parte 1 T des gerenciais de uma empresa que atua na rea comer-
cial.

As tabelas de dimenso

N
a primeira parte deste artigo apresentamos os A principal funo de uma tabela de dimenso reunir
conceitos bsicos e um conjunto de passos que os atributos que sero utilizados para qualificar as consul-
objetivam o entendimento do modelo de neg- tas e cujos valores sero utilizados para agrupar e sumariar
cios que iremos modelar. Definimos os fatos ou mtri- as mtricas (ou fatos). Ou seja, as tabelas dimenso con-
cas (o que estamos avaliando), as dimenses de negcio tm atributos textuais que funcionam como filtros para as
(como os fatos sero analisados), a granularidade das in- consultas do usurio.
formaes (nvel mais baixo de detalhe) e sua hierarquia Os atributos de uma dimenso podem compor uma hie-
de agrupamento. Para isso, utilizamos um exemplo base- rarquia ou serem apenas descritivos. Em nosso exemplo,
ado em um modelo para a rea comercial de uma rede de a dimenso Produto contm uma hierarquia composta
lojas de varejo tomando por base as possveis necessidades pelos atributos item, linha e categoria, indicando que os
de informao de um gerente comercial. itens de produto esto agrupados em linhas de produto,
Nesta segunda parte do artigo vamos modelar um data que por sua vez esto agrupadas em categorias de produto.
warehouse ou um data mart que atenda estas necessida- Isto ser bastante til, posteriormente, durante a anlise
des utilizando a modelagem dimensional ou multidimen- de informaes pelo usurio. Podemos tambm incluir
sional. Este tipo de modelagem segue a chamada escola uma srie de outros atributos descritivos que no faam,
Ralph Kimball, introdutor do conceito do star schema, necessariamente, parte desta hierarquia, como o tipo de
um esquema bastante utilizado para a modelagem de ba- empacotamento (caixas com 12 unidades etc.), pso e ou-
ses de dados de suporte deciso. Apesar de ser o mais tros que sejam relevantes para o processo de anlise. Ral-
conhecido, o star schema no o nico. Existem uma s- ph Kimball sugere que as tabelas de dimenses possuam
rie de variaes incluindo uma opo normalizada deste
esquema, o snowflake, que tambm iremos discutir
neste artigo.
Assim, de posse das informaes relevantes para
o entendimento das necessidades do negcio,
iniciaremos a modelagem da base de dados. A
A1 mostra, de forma bem simplifica-
da, a representao das informaes
que iremos modelar. Estas informa-
es foram definidas durante o pri-
meiro artigo desta srie, pu-
blicado na edio passada,
onde foram apresentadas
as necessida-
A 1. Representao das informaes a serem modeladas no data warehouse/
data mart.

SQL Magazine . 37

sql14.indb 37 6/10/2004 18:48:56


o maior nmero possvel de atributos textuais para base para se manter o histrico destas alteraes no
enriquecer o modelo de dados e, por conseqn- data warehouse. O tratamento das alteraes de va-
cia, as possibilidades de anlise de informaes. Po- lores da dimenso um tpico complexo, que Ralph
dem existir, inclusive, vrias hierarquias diferentes na Kimball chama de Slowly Changing Dimensions ou
mesma dimenso. Neste caso, porm, nomes de atri- dimenses que mudam lentamente e dever ser tra-
butos e seus valores devem ser exclusivos para cada tado em outro artigo.
uma delas. Isto no significa que no se pode incluir, por exem-
Gostaramos de destacar que devem ser avaliados e plo, o cdigo do produto utilizado nos sistemas tran-
escolhidos os atributos que sejam importantes para sacionais, normalmente bastante conhecido dos usu-
a anlise. O data warehouse/data mart no deve ser rios. Se for bastante conhecido pelos usurios, este
confundido com um grande cadastro de informaes, cdigo pode ser um dos atributos textuais da dimen-
muitas vezes repleto de dados no utilizados pelos so Produto, favorecendo a anlise das informaes,
usurios. mas, no deve ser a chave primria da dimenso, nem
Um atributo muito importante da tabela dimenso fazer parte da chave.
sua chave. A chave primria de uma tabela dimen- Em nosso exemplo, para a dimenso Produto, o pri-
so deve ser sempre um atributo nico e definido meiro registro da dimenso recebe chave com o valor
pelo sistema com um valor genrico, inteiros atribu- 1, o segundo recebe chave com valor 2 e assim por
dos seqencialmente. Por questes de desempenho, diante. O mesmo ocorrer para as outras dimenses.
no se utilizam chaves compostas por vrias partes, A D1 apresenta o detalhe da dimenso Produto em
nem tampouco chaves concatenadas. A ordem aqui nosso exemplo. A D2 apresenta o detalhe da dimen-
a da simplicidade, para facilitar o acesso aos gran- so Tempo e a D3, da dimenso Geografia.
des volumes de dados armazenados. As chaves sero A dimenso Produto ser transformada em uma
utilizadas apenas para possibilitar a juno de tabelas tabela, assim como todas as outras dimenses do
entre uma tabela dimenso e a tabela fato (que ser modelo. Ao analisar o detalhe da dimenso Produto,
o prximo tpico a ser discutido). Tambm no so notamos imediatamente a repetio dos valores dos
utilizadas as chaves ou identificadores provenientes atributos Linha e Categoria. Nosso primeiro impulso
de outros sistemas, como cdigo do cliente ou cdigo o de aplicar as regras tradicionais de modelagem e
do produto. normalizar a tabela, eliminando a redundncia. Deve-
Existem vrias razes para se utilizar chaves genri- mos, porm, resistir a este impulso, pois o processo
cas, tambm chamadas de artificiais, substitutas ou de normalizao da tabela separando os atributos em
surrogate keys. De acordo com Ralph Kimbal, uma vrias tabelas diferentes faz com que as consultas fi-
das razes que o data warehouse deve se manter quem bem mais complexas. Se normalizarmos a tabe-
isolado das regras operacionais para gerar, atualizar, la de dimenso, o banco de dados levar mais tempo
excluir, reciclar e reutilizar os cdigos utilizados nos para recuperar as linhas e, por conseqncia, os usu-
sistemas transacionais. O data warehouse manter as rios esperaro mais tempo pelas respostas. Este custo
informaes durante muito tempo (normalmente v- muito alto como resultado da economia de apenas
rios anos) e no pode ficar vulnervel a problemas de alguns bytes em uma tabela dimenso que, em com-
sobreposio de chaves, no caso de aquisio ou con- parao com uma tabela fato, minscula. Mesmo
solidao de dados. Outra razo o melhor desempe- que nossa tabela de dimenso Produto tenha 150.000
nho no acesso s informaes. Muitas vezes, o cdigo itens, estes estaro agrupados em possivelmente, no
utilizado em um sistema transacional uma string de mximo, 50 categorias diferentes.
caracteres alfanumricos que apresentam desempe- Outro ponto que pode levar tentao da normali-
nho pior nas operaes de Chave do produto Item Linha Categoria
acesso base de dados do 1 Lpis n 2 Faver Carel Lpis Escolar/Escritrio
2 Caneta Clic azul - fina Caneta Escolar/Escritrio
que as chaves genricas,
3 Caneta Clic vermelha - fina Caneta Escolar/Escritrio
que utilizam o menor in- ... ... ... ...
teiro possvel. 36 Caderno espiral 96 folhas - Clip Caderno Escolar/Escritrio
37 Cartucho preto Impressora Vulcan 482 Suprimento Informtica
Existe uma outra razo 38 Caixa presente 20x28 Embalagem Escolar/Escritrio
importante para o uso das 39 CD regravvel - Tent Suprimento Informtica
40 Bloco recibo Jordel Impresso Escolar/Escritrio
chaves genricas. Em caso 41 Teclado computador Micel Hardware Informtica
de alteraes de atributos 42 Personal Firewall Protect v3.4 Software Informtica
nos sistemas transacionais, ... ... ... ...
as chaves genricas sero a D 1. Detalhe do contedo da dimenso Produto.

38 . 14 Edio

sql14.indb 38 6/10/2004 18:48:59


Chave do Tempo Data Ms Semestre Ano Data, quando a granularidade
1 01/01/2003 Janeiro 2003 1o. Semestre 2003 2003 o dia) vai aparecer em to-
2 02/01/2003 Janeiro 2003 1o. Semestre 2003 2003
3 03/01/2003 Janeiro 2003 1o. Semestre 2003 2003
dos os data warehouses/data
... ... ... ... ... marts. Isto porque os data wa-
50 19/02/2003 Fevereiro 2003 1o. Semestre 2003 2003
rehouses/data marts tm como
51 20/02/2003 Fevereiro 2003 1o. Semestre 2003 2003
caracterstica manter a infor-
...
214
...
02/08/2003
...
Agosto 2003
...
2o. Semestre 2003
...
2003 mao temporal, o que possi-
M

Em foco
215 03/08/2003 Agosto 2003 2o. Semestre 2003 2003
216 04/08/2003 Agosto 2003 2o. Semestre 2003 2003 bilita os diversos comparativos
... ... ... ... ... dos indicadores e mtricas ao
520 03/06/2004 Junho 2004 1o. Semestre 2004 2004
421 04/06/2004 Junho 2004 1o. Semestre 2004 2004
longo do tempo. Este um
... ... ... ... ... grande diferencial em relao
D 2. Detalhe do contedo da dimenso Tempo. s bases de informao opera-
cionais. Esta dimenso Tempo
Chave da geografia Loja Cidade Estado Regio
(ou Data) pode ser criada antes
1 Shopping Anlia Franco So Paulo SP Sudeste
2 Leblon Rio de Janeiro RJ Sudeste das outras, armazenando-se da-
3 Shopping Morumbi So Paulo SP Sudeste tas para um perodo de 2, 3 ou
4 Guabiraba Loja 1 Recife PE Nordeste
5 So Jos Recife PE Nordeste
mais anos. Pode-se incluir ou-
6 Guabiraba Loja 2 Recife PE Nordeste tros atributos como o dia da se-
... ... ... ... ...
mana, data em outros formatos
12 Central Curitiba PR Sul
13 Shopping Mueller Curitiba PR Sul etc., tudo conforme as necessi-
14 Cristo Rei Curitiba PR Sul dades de anlise do usurio.
15 Barra Shopping Rio de Janeiro RJ Sudeste
... ... ... ...
D 3. Detalhe do contedo da dimenso Geograa. A tabela fato e suas
ligaes com as dimenses
zao a necessidade de manuteno dos valores da preparando o Star schema
tabela dimenso. Se uma das descries mudar, com Iremos agora preparar a tabela que conter as m-
a tabela no normalizada, teremos que refletir a alte- tricas, ou valores, a serem analisados pelos usurios,
rao em diversas ocorrncias. Porm, devemos lem- atravs das informaes representadas nas dimenses.
brar que esta uma base tipicamente usada para con- Ela chamada de tabela fato. A tabela fato representa
sultas e que as manutenes so bastante controladas quais informaes sero analisadas e as dimenses re-
e efetuadas em conjunto durante o processamento presentam como elas sero analisadas. Assim, estas ta-
peridico (carga dos dados), diferentemente dos sis- belas, fato e de dimenses, tm que ser reunidas para
temas transacionais. Por ser uma base de consultas que as anlises possam fazer sentido para o usurio.
e de grande volume, devemos nos preocupar em fa- A tabela fato contm dois grupos de atributos:
vorecer o tempo de resposta aos usurios, mantendo As mtricas ou fatos numricos e,
as informaes descritivas hierrquicas de modo re- As chaves para cada uma das dimenses do
dundante. Este um dos aspectos onde a modela- modelo.
gem do data warehouse/data mart difere bastante da
modelagem das bases operacionais. Existe, porm, a Logo, a tabela fato ter os atributos e chaves,
possibilidade de normalizar as dimenses, sendo que representados na A3.
a normalizao destas tabelas leva a um outro tipo Note que, pelo fato da chave primria ser com-
de esquema, chamado de Snowflake discutido mais posta por atributos que individualmente correspon-
adiante. Por enquanto iremos nos concentrar no Star dem, cada um, a uma chave estrangeira, as tabelas
schema, que mantm as tabelas
no normalizadas.
Cada dimenso deve correspon-
der a uma tabela fsica na base de
dados, seguindo as orientaes de
sua composio aqui citadas. A
A2 mostra como seriam as tabe-
las em nosso exemplo.
A dimenso Tempo (que tambm
pode ser chamada de dimenso A2. Atributos das tabelas de dimenso, conforme nosso exemplo.

SQL Magazine . 39

sql14.indb 39 6/10/2004 18:49:00


satisfazem s restries impostas pela integridade de Devemos ter em mente tambm a complexidade em
entidade (obrigatoriedade e unicidade da chave pri- se adquirir estas mtricas, j que algumas delas vm
mria) e pela integridade referencial, que garante que diretamente da venda (de algum sistema transacional
uma informao na tabela fato s existe se estiver as- que controla as vendas), algumas vm de um sistema
sociada a uma Loja, a um Item de produto e a uma de oramento (previses de vendas), alm de outros
Data que j existam nas tabelas dimenso. sistemas.
Uma tabela fato ligada s tabelas de dimenso atra- O processo de aquisio destas informaes uma
vs das chaves, representa um modelo simples e si- das etapas mais complexas do projeto de um data wa-
mtrico. O esquema resultante chamado de Star rehouse/data mart e deve ser planejado com bastante
schema devido sua semelhana com uma estrela. cuidado, pois existe uma grande possibilidade de in-
Veja sua representao na A4. sero de erros durante este processo. Se as informa-
Cada linha da tabela fato representa como foi a ven- es armazenadas no data warehouse/data mart no
da (ou um conjunto de vendas), em uma determina- forem precisas e confiveis, ele no ter nenhuma
da data, de um determinado item e em uma deter- utilidade para os usurios.
minada loja. Armazena qual o valor total das vendas claro que iremos utilizar apenas as mtricas que
(valor venda realizado), quantos destes itens foram forem interessantes e necessrias para os nossos usu-
vendidos (quantidade itens realizado), qual o preo rios e o levantamento destas informaes deve ser
mdio das vendas (preo mdio), o custo mdio do muito bem executado. Corrigir o modelo depois que
item vendido (custo mdio), a margem obtida com os processos de carga estiverem prontos bastante
as vendas (margem). Deve-se notar que podem ter custoso.
ocorrido vrias vendas de um certo produto, na mes- O Star schema simples e de fcil entendimento,
ma loja e na mesma data. Todas estas vendas so so- alm de ser altamente familiar aos usurios da rea de
madas e apresentadas em apenas uma linha da tabela negcios que est sendo modelada. normal, ento,
fato. As outras mtricas indicam o que estava previs- discutir e validar com o usurio este modelo antes de
to para ser vendido deste item, nesta data, nesta loja passar para sua implementao.
(valor venda previsto e quantidade itens previsto). A O contedo da tabela fato do nosso exemplo est
mtrica % variao indica qual o percentual de varia- representado na D4.
o entre o previsto e o realizado.
Deve-se observar que algumas mtricas j pode- A tabela fato pode se tornar uma tabela gigantesca,
riam ter sido armazenadas antes da venda, aquelas principalmente se trabalharmos com granularidade di-
de previso: valor venda previsto e quantidade itens ria, como neste exemplo. Imagine uma rede de lojas
previsto. Outras mtricas so carregadas aps a ven- que trabalhe com 12.000 itens de produtos, em uma
da (valor venda realizado, quantidade itens realizado, rede com 40 lojas, armazenando fatos com granulari-
preo mdio, custo mdio), e outras so calculadas dade diria na dimenso Tempo. Poderamos chegar,
antes de serem armazenadas (margem, % variao). em um ano a ter at 175.200.000 linhas (12.000 itens
x 40 lojas x 365 dias), se todos os produtos fossem
vendidos em todas as lojas, todos os dias.
Com as informaes armazenadas na tabela fato e
em conjunto com as informaes nas tabelas de di-
menso, uma infinidade de anlises estar disponvel
para os usurios. Devemos observar que as mtricas
podem ser visualizadas no seu nvel maior de detalhe,
combinadas com agrupamentos nos diferentes nveis
da hierarquia das dimenses.
Quando as informaes so agrupadas atravs da
hierarquia de uma dimenso, normalmente as mtri-
cas so somadas. Por exemplo, para analisar a quan-
tidade de itens vendidos por cidade, basta somar as
quantidades vendidas em cada loja localizada naquela
cidade. O mesmo vale para estado e regio. Porm,
nem todas as mtricas podem ser somadas ao lon-
go das dimenses. Assim, as mtricas em uma tabela
A 3. Atributos da tabela fato, conforme nosso exemplo. fato podem ser classificadas em completamente adi-

40 . 14 Edio

sql14.indb 40 6/10/2004 18:49:02


zado em nossa tabela fato. Na verda-
de, esta mtrica derivada de outras
duas mtricas que so aditivas: valor da
venda realizado e valor da venda pre-
visto. Com os fatos no aditivos, Ralph
Kimbal sugere que se usem contagens
ou mdias possibilitando resumir as
M

Em foco
linhas, caso contrrio, apenas podere-
mos exibir as linhas de detalhe. Neste
caso especfico, pode-se calcular o per-
A 4. Tabela Fato ligada s tabelas de Dimenso representando um Star Schema.
centual sobre os valores agregados das
tivas, semi-aditivas ou no aditivas. Vamos analisar vendas realizadas e previstas. O mesmo ocorre com o
cada uma delas, j que ser bastante importante um preo mdio do item vendido.
tratamento especial para as mtricas no aditivas ou O terceiro tipo de mtrica a semi-aditiva. A m-
semi-aditivas ao se apresentar as informaes aos trica semi-aditiva pode ser sumariada ao longo de
usurios. determinadas dimenses, porem no todas. Vamos
As mtricas mais comuns so as completamente adi- considerar como exemplo o gerenciamento de saldo
tivas. Dizemos que uma mtrica completamente das contas de um banco. O saldo armazenado no
aditiva quando faz sentido sumari-la adicionando final de cada dia, para cada cliente, por conta ao lon-
seus valores ao longo de qualquer dimenso. Em nos- go do tempo. Em alguns casos este saldo aditivo.
so exemplo, o valor da venda (realizado e previsto), a Se um cliente tem uma conta corrente e uma conta
quantidade de itens vendida (realizado e previsto), a poupana, podemos adicionar os saldos de cada conta
margem e o custo so todas mtricas completamen- no final de um dia e obter resultado significativo.
te aditivas. Apesar de serem armazenadas na tabela possvel tambm adicionar os saldos de uma deter-
fato para um determinado produto, uma loja e uma minada agncia para obter um panorama da situao
data especfica, podemos facilmente sumari-las da geral de cada localidade. Entretanto, no faz o menor
maneira que nos interesse. Para verificar as vendas sentido adicionar o saldo de um cliente ao longo do
de um determinado ms, basta adicionar os valores tempo. Por esta razo, a mtrica saldo considerada
das vendas de todas as datas daquele ms. O mesmo semi-aditiva.
ocorre se quisermos verificar a margem obtida para Estes tipos de atributo, no aditivo ou semi-aditi-
uma determinada categoria de produtos. Basta adi- vo, podem ser agregados ou sumariados utilizando-se
cionar os valores de margem para todos os produtos outros operadores como mdia, mximo ou mnimo.
de uma determinada categoria. o caso da mtrica temperatura, que considerada
Em contraste total com este tipo de mtrica, temos no aditiva, j que adicionar temperaturas dificilmen-
as mtricas no aditivas. As mtricas no aditivas no te faz sentido.
podem ser adicionadas ao longo dos valores das di- importante lembrar que todo este trabalho de su-
menses. Vamos considerar o percentual de variao mariao dos valores armazenados na tabela fato so
entre as vendas realizadas e as planejadas Esta mtri- geralmente efetuados pelas ferramentas OLAP. O data
ca no pode ser sumariada de acordo com a dimenso warehouse/data mart deve armazenar as informaes
de nosso interesse. No faz
sentido somar o percentual Chave Chave Valor venda Quantidade Preo
Chave Tempo ...
obtido para um determinado Produto Geografia realizado itens realizado mdio
40 5 6 132,50 53 2,50 ...
item de produto para agru-
40 5 12 52,50 21 2,50 ...
p-los em uma determinada 40 5 4 70,00 28 2,50 ...
linha ou categoria. Tambm 36 5 12 76,80 16 4,80 ...
no faz sentido somar o 36 6 12 105,60 22 4,80 ...
percentual obtido por dia, 2 5 14 27,60 23 1,20 ...
2 5 12 25,20 21 1,20 ...
em meses ou semestres. O
2 6 12 40,80 34 1,20 ...
mesmo vale para a dimenso 2 6 6 63,80 58 1,10 ...
Geografia. 2 5 6 70,40 64 1,10 ...
Aparentemente podemos 5 7 14 122,40 8 15,30 ...
concluir que este tipo de ... ... ... ... ... ... ...

mtrica no pode ser utili- D 4. Detalhe do contedo da tabela Fato.

SQL Magazine . 41

sql14.indb 41 6/10/2004 18:49:06


adequadamente, de forma a permitir que as ferra- ma forma que no esquema Star, atravs de uma chave
mentas OLAP realizem os clculos e os apresentem genrica gerada. A tabela principal da dimenso se
aos usurios, possibilitando anlises nos diferentes conecta logicamente s subdimenses, que so as ta-
nveis de detalhe. Apesar disto, pode-se armazenar belas de lookup, atravs de suas chaves primrias.
na base de dados valores j agregados no processo de Uma das vantagens dessa abordagem que as des-
extrao, transformao e carga (ETL). Isto poderia cries no precisam ser repetidas como no esquema
facilitar o trabalho das ferramentas OLAP. Star, simplificando o armazenamento, reduzindo o
tamanho relativo das tabelas de dimenso e melho-
As variaes do Star schema rando o controle de integridade dos dados. Entretan-
Apesar de ser o mais utilizado, o Star schema no to, esta opo de esquema leva a maior quantidade de
a nica opo de modelagem. Dependendo da ne- joins, se comparado com o esquema Star, pois se deve
cessidade de agregaes armazenadas na base de da- buscar as descries nas tabelas adicionais. Alm dis-
dos, o Star schema pode sofrer variaes como o Fact so, a manuteno da base de dados tambm requer
partitioning que divide a tabela Fato armazenando em custo mais alto de manuteno, pois o nmero de ta-
cada uma das divises os diferentes nveis de agre- belas fsicas distintas torna-se maior.
gao das informaes. A variao mais famosa do A outra opo bastante utilizada o Snowflake
Star schema o esquema normalizado, chamado de chain, que tambm possui subdimenses particio-
Snowflake schema. nadas pelos nveis hierrquicos da dimenso, sendo
O esquema Snowflake emprega uma combinao que a tabela principal da dimenso representa o nvel
de normalizao da base de dados, para manter a in- mais baixo (mais detalhado) da hierarquia. As subdi-
tegridade e reduzir os dados armazenados de forma menses esto encadeadas, sendo que a tabela fato
redundante, com uma desnormalizao para obter fica ligada subdimenso de mais baixa granularidade
melhor desempenho. Neste esquema, as dimenses (chamada de principal ou raiz) que, em nosso exem-
so normalizadas em subdimenses, sendo que cada plo, a subdimenso que representa a Loja. Na A6
nvel da hierarquia fica em uma subdimenso. A ta- encontramos nosso exemplo modelado neste esque-
bela principal da dimenso tem uma chave para cada ma, representando a dimenso Geografia com suas
nvel hierrquico representado na subdimenso e no subdimenses e a tabela fato de vendas.
mais uma nica chave, como no Star. importante perceber que esta hierarquia sempre
O Snowflake apresenta duas variaes bsicas que 1:N, ou seja, 1 elemento do nvel mais alto de granu-
diferem na disposio das tabelas que representam laridade est associado a, no mximo, N elementos
as subdimenses, os Snowflake Lookup e o Snowflake do nvel mais baixo e, no sentido inverso, 1 elemento
Chain. O esquema Snowflake Lookup emprega tabelas do nvel mais baixo de granularidade est associado
adicionais para nomes e descries dos atributos, to- a, no mximo, apenas 1 elemento do nvel mais alto.
das ligadas a uma tabela principal da dimenso. Desta Por exemplo, uma loja est associada a, no mximo,
forma, possvel reduzir o tama-
nho da tabela dimenso eliminando
a redundncia do armazenamento
das mesmas descries em vrias
linhas diferentes. As tabelas adicio-
nais atuam como tabelas de lookup
para a chave ou valores codificados
da tabela principal da dimenso
que, por sua vez, est logicamente
ligada a uma nica tabela de fa-
tos. A A5 mostra parte do nosso
exemplo modelado em Snowflake
Lookup. Nesta figura est represen-
tada apenas a dimenso Geografia e
suas subdimenses Regio, Estado,
Cidade e Loja.
Na A5, pode-se notar que a liga-
o entre a tabela fato e a tabela da A 5. Representao da dimenso Geograa em um data warehouse/data mart
dimenso principal feita da mes- implementando o esquema Snowake Lookup. O mesmo vale para as outras dimenses.

42 . 14 Edio

sql14.indb 42 6/10/2004 18:49:12


que ser utilizada. Algumas ferramentas trabalham
melhor com o Star schema, outras com o Snowflake
schema. Existem aquelas que independem do mo-
delo utilizado e podem ser utilizadas com qualquer
opo de modelagem. Na prtica, se no houver res-
tries por parte da ferramenta OLAP, qualquer uma
das opes pode ser utilizada, desde que represente
M

Em foco
corretamente o modelo de negcios. O Star schema,
porm, tem sido a opo mais utilizada nos projetos e
representa de forma mais simples a modelagem mul-
tidimensional.
Assim, com o objetivo de descrever as principais op-
es utilizadas, na terceira e ltima parte deste artigo,
abordaremos uma outra forma de modelagem de data
warehouses segundo a escola Bill Inmon, que no
utiliza os esquemas Star ou Snowflake. Bill Inmon
A 6. Representao da dimenso Geograa em um data warehouse/ considerado o pai do conceito de data warehouse.
data mart implementando o esquema Snowake Chain. O mesmo
S
vale para as outras dimenses.

uma cidade e uma cidade pode estar associada a N


lojas. O mesmo vale para os outros nveis e outras
dimenses.
Isabel C. Italiano, Joo E. Ferreira, Osvaldo
K. Takai Aspectos conceituais em data
warehouse Relatrio tcnico RT-MAC-
F
Cada tabela da subdimenso contm sua chave pri- 2001-08 Departamento de Cincia da
Computao Instituto de Matemtica e Estatstica
mria e suas descries associadas. Alm disso, con- Universidade de So Paulo, 2001.
tm tambm a chave para o prximo nvel da hierar-
quia da dimenso e assim por diante, at chegarmos Rick Tanler The Intranet Data Warehouse, John
Wiley & Sons, 1997.
ltima subdimenso, que contm o nvel mais alto
(menos detalhado) da hierarquia. Como podemos ve- Ralph Kimball, Margy Ross The Data Warehouse
rificar na A6, a tabela fato j no utiliza uma chave Toolkit, Editora Campus, 2002.
para a dimenso Geografia como um todo, a chave
utilizada diretamente para a subdimenso principal.

G
Fica claro que esta implementao no recomenda- Gerente de Business Intelligence da
da quando os relatrios necessitam freqentemente Consist, com 20 anos de experincia em
tecnologia da informao. Mestre em
de vrios nveis de agregao da informao, j que Cincia da Computao pelo Instituto
de Matemtica e Estatstica da USP e
so necessrios vrios passos na cadeia para se chegar doutoranda em Computao pela Escola
ao resultado. Este esquema oferece um alto grau de Politcnica da USP, ambos com rea de
concentrao em Bancos de Dados e
integridade de dados, pois os nomes e as descries Data Warehouse. Professora em cursos
de graduao e ps, nas reas de bancos
so mantidos em um nico local, reduzindo o tama- Isabel Cristina de dados, data warehouse e business
nho das tabelas de dimenso. A maior desvantagem Italiano intelligence.
est no baixo desempenho, uma vez que todos os n-
veis da cadeia devem ser acessados, mesmo quando

G
se requer apenas os nveis mais altos de agregao. Diretor da LT Consultoria e Tecnologia,
atuando h mais de 25 anos na rea de
Em situaes prticas, existe uma alternativa para tecnologia da informao, em atividades
minimizar este efeito. Pode-se adicionar a cada sub- relacionadas a desenvolvimento de
software, consultoria e planejamento em
dimenso chaves para todos os nveis superiores da bancos de dados e sistemas de suporte
hierarquia. Com isso, pode-se saltar determinados deciso. Graduado em Engenharia
de Produo, Mestre em Management
nveis, utilizando-se a chave que leva diretamente Engineering pelo Rensselaer Polytechnic
Institute-USA. Professor e palestrante em
para o nvel requerido. Luiz Antonio Data Warehousing / Business Intelligence.
Esteves
Concluso
A escolha do melhor esquema para armazenar as
informaes depende do projetista do data warehou-
se/data mart e tambm do tipo de ferramenta OLAP H Comente esta matria em:
www.sqlmagazine.com.br/sql14/

SQL Magazine . 43

sql14.indb 43 6/10/2004 18:49:19


Desenvolvimento de aplicaes
orientadas a objeto apoiado por
tecnologias Java
Parte III Projeto Arilo Cludio Dias Neto
Rafael Ferreira Barcelos

SQL Magazine 12
Desenvolvimento de aplicaes orientadas a objeto
apoiado por tecnologias Java Parte I.
SQL Magazine 13
T
N
o primeiro artigo desta srie apresentamos uma Desenvolvimento de aplicaes orientadas a objeto
viso geral sobre os conceitos e tecnologias que apoiado por tecnologias Java Parte II - Anlise.
apiam o desenvolvimento de sistemas orienta- Projeto de software utilizando UML
dos a objetos. Definimos tambm o processo de desenvol-
vimento que tem sido seguido durante essa srie. No se- de software, as interfaces de comunicao, a entrada e
gundo artigo, descrevemos o estudo de caso que estamos sada do sistema, a forma como os diferentes mdulos que
utilizando para explicar ao leitor a aplicao dos conceitos compem a arquitetura se comunicam, e outras coisas que
de OO e das tecnologias baseadas na plataforma Java. Foi permitam a traduo dos requisitos em uma soluo para
iniciado ento um ciclo de desenvolvimento de software o problema do cliente.
para resolver o problema proposto e comeamos a lidar Vale ressaltar aqui que para um conjunto de requisitos,
com ele realizando a etapa da anlise de requisitos. no existe somente um tipo de projeto possvel. Diversos
Neste terceiro artigo da srie, abordaremos a fase de fatores contribuem para a escolha das caractersticas do
projeto de sistema (A1). Veremos especificamente o projeto a ser desenvolvido, como: experincia da equipe
que deve ser feito para se definir as modelagens com- de desenvolvimento, requisitos no-funcionais, prticas
portamentais, estruturais e arquiteturais de um sistema. organizacionais, estratgia de negcio e o conhecimento
Durante a definio da arquitetura, ser mostrado tam- do projetista.
bm como os conceitos de camada de persistncia so in- Existem vrias formas de se projetar um sistema. A esco-
tegrados na arquitetura e no projeto de um sistema. Ao lha do projeto orientado a objetos ocorreu devido s facili-
longo desse artigo, os conceitos discutidos sero aplicados dades em usar essa abstrao na definio da arquitetura e
no desenvolvimento do estudo de caso definido no artigo no desenvolvimento do sistema. A utilizao desta abstra-
da edio 13 da SQL Magazine. Para apoiar as ativida- o simplifica o mapeamento entre elementos da arquite-
des apresentadas nesse artigo, mecanismos e ferramentas tura para os elementos que iro compor o sistema.
tambm sero apresentados.

Projeto de sistema
O projeto consiste na transformao
dos requisitos identificados para um
sistema em uma soluo de software
especfica. Nesse momento, des-
crito como as funcionalidades iden-
tificadas na especificao de casos
de uso podem ser implementadas.
Assim, um projeto descreve a confi-
gurao de hardware, as necessidades A 1. Etapa do processo abordada neste artigo.

44 . 14 Edio

sql14.indb 44 6/10/2004 18:49:24


Durante a definio do projeto orientado a objetos existir vrios objetos que se comportam de maneira
do estudo de caso, os seguintes passos sero seguidos: semelhante e que se diferenciam somente pelo valor
deciso de projeto, modelagem estrutural, modela- de seus atributos. Um exemplo retirado do estudo
gem conceitual e modelagem arquitetural. Porm, de caso apresentado nessa srie de artigos seria, por
antes de abordarmos esses passos, apresentaremos exemplo, os vdeos encontrados em uma locadora.
os principais conceitos referentes ao paradigma da
orientao a objetos com o intuito de facilitar o en-
Todos os vdeos podem ser caracterizados com as
mesmas informaes (ttulo, elenco, direo, gne- L

Mini-Curso
tendimento desta etapa do processo. ro, etc), o que possibilita a definio de um molde
comum a todos eles. Esse molde representa a classe
Conceitos Bsicos de Orientao a Objetos vdeo.
Quando utilizamos o paradigma OO no desenvol- Assim, uma classe consiste em uma abstrao utili-
vimento de um sistema, as principais abstraes que zada para representar objetos com a mesma estrutura.
devem ser utilizadas para a formao de um software Durante a sua criao, definimos quais os atributos e
so os objetos, que representam as principais enti- mtodos que a compe. A partir de uma classe, vrios
dades do domnio do problema e, as mensagens que objetos podem ser criados.
representam a forma pela qual os objetos se comuni-
cam. Veremos a partir de agora com um pouco mais Herana
de detalhes estes conceitos. Herana um mecanismo presente na modelagem
de relaes entre classes. Esse mecanismo permite a
Objeto definio e a implementao de uma classe (subclas-
Objeto a abstrao de um elemento do mundo se) que se baseia na definio de uma outra classe,
real utilizado durante a modelagem e codificao de previamente definida (superclasse).
um sistema segundo a abordagem orientada a objetos. Para entendermos melhor temos o seguinte exem-
Um objeto modelado somente com os conceitos da plo, se B for uma classe que herda as operaes de A
entidade real que so necessrios para o sistema do ento B considerada a subclasse ou a classe derivada
qual ele faz parte. e A considerada a superclasse ou classe base (A 3).
Diferente da abordagem estrutural, onde os pro- Neste caso, a classe B possui a mesma definio de A,
gramas so compostos por procedimentos que mani- ou seja, os mesmos mtodos e atributos, alm das de-
pulam estruturas de dados (A2a), em orientao a finies especficas a B. Com isso, podemos dizer que
objetos o foco est nos objetos. Essas entidades so um objeto da classe B tambm uma instncia de A,
compostas por atributos, que representam seus da- e dessa forma, onde a classe A for usada B poder ser
dos, e por mtodos, que indicam a forma como os tambm usada.
atributos de um objeto podem ser manipulados e A herana utilizada em casos onde diferentes clas-
como esses objetos se comportam em relao ao am- ses possuem muitos mtodos e atributos em comum.
biente em sua volta (A 2b). Nestes casos, uma classe pai pode ser criada com as
caractersticas comuns a essas classes, deixando ex-
Classes plcitos os atributos e propriedades comuns s sub-
Durante a especificao do projeto, os objetos de- classes.
vem ser modelados a fim de determinarmos exata-
mente suas propriedades. Em muitos casos, podem Polimorfismo
Com o uso de conceitos de herana, logo percebe-
mos a necessidade de que uma mesma mensagem
receba tratamento diferente dependendo do objeto
receptor (o que fornece um servio). Em OO, esse
conceito recebe o nome de polimorfismo. Por exem-
plo, em um sistema bancrio existem diferentes tipos
de contas onde uma das possveis operaes a rea-
lizao de saques. Porm, a implementao da ope-
rao de saque difere de acordo com o tipo de conta
que movimenta (corrente ou poupana).

A 2. Diferena entre abordagem de projeto. (a) estrutural (b) orienta- Encapsulamento


da a objetos Encapsulamento uma propriedade bsica de um

SQL Magazine . 45

sql14.indb 45 6/10/2004 18:49:25


objeto. O encapsulamento Utilizando UML publicado na edio 13 da SQL
em objetos define a restri- Magazine.
o de acesso aos dados e Aps abordarmos os principais conceitos relaciona-
s informaes dos obje- dos orientao a objetos, daremos incio descrio
tos. Com essa restrio, o dos passos que devem ser seguidos durante a defi-
acesso pode ser realizado nio de uma arquitetura atravs de um projeto de
somente atravs de ser- software orientado a objeto. Para exemplificar esses
vios especificados como conceitos, o estudo de caso do sistema de Locao de
pblicos em cada objeto. vdeos ser utilizado.
O conjunto desses servi-
os forma a interface de Deciso de Projeto
A 3. Herana na notao UML um objeto. Durante as tomadas de deciso de um projeto, con-
A principal vantagem em encapsular as propriedades ceitos e tecnologias comeam a ser definidos. Para lis-
est na limitao dos tipos de operaes que podem tar as razes das escolhas realizadas durante esta eta-
ser realizadas nos dados de um objeto, o que facilita a pa, justificativas devem ser apresentadas sobre cada
manuteno da integridade dos dados. deciso relativa s tecnologias e abordagens utilizadas
O conceito de encapsulamento est ligado com os para o desenvolvimento do sistema. Como exemplo
conceitos de mtodos pblicos e mtodos privados. de decises podemos citar a escolha do paradigma
Os mtodos pblicos so aqueles que fazem parte da de desenvolvimento, estilo arquitetural, a forma de
interface do objeto, ou seja, so acessados por outros acesso aos dados, plataforma de desenvolvimento e
objetos. Os mtodos privados so aqueles procedi- banco de dados. No contexto do estudo de caso do
mentos que s podem ser executados pelo prprio sistema de locao de vdeos, a D 1 lista as principais
objeto e por mais ningum. decises tomadas e suas respectivas justificativas.

Relacionamento entre objetos Modelagem Estrutural


Um objeto sozinho possui capacidades limitadas. A modelagem estrutural objetiva a representao
Qualquer sistema complexo deve ser composto por dos aspectos estticos do sistema e os principais
vrios objetos de diferentes classes que interagem elementos que fazem parte do problema, assim como
entre eles. Em sistemas OO, essa interao ocorre suas propriedades e seus relacionamentos. Esses ele-
quando um objeto envia mensagens a um objeto re- mentos so conhecidos como classes.
ceptor para que ele realize um servio disponvel. Na fase de projeto de sistema, a UML define dois
Se um objeto utiliza algum servio de outro objeto, possveis diagramas para a modelagem estrutural de
existe uma associao entre esses dois objetos. Um um sistema: diagrama de objetos e diagrama de clas-
outro tipo de relacionamento comum entre objetos ses. Para maiores detalhes sobre como elaborar um
a agregao, que reflete o relacionamento todo/parte diagrama de classes, recomendamos a leitura do arti-
de. Para um maior detalhamento sobre esse concei- go Projeto de software utilizando UML da edio 13
tos, sugerimos a leitura do artigo Projeto de Software da SQL Magazine. Para o estudo de caso apresentado

Deciso Escolha Justificativa


Razes didticas o artigo busca descrever o desenvolvimento completo de
Paradigma de desenvolvimento Orientao a Objetos
um sistema seguindo este paradigma
Linguagem de programao orientada a objeto, gratuita e que permite
Plataforma de desenvolvimento Java
explorar os conceitos de camada de persistncia
Opo dos desenvolvedores para o estudo de caso. Poderia ser cliente-
Estilo Arquitetural Stand Alone
servidor, Web, etc.
Isolamento entre classes do programa e base de dados. Evita a criao de
Tipo de acesso aos dados Camada de persistncia de objetos scripts SQL, permitindo que o programador sempre desenvolva usando a
abstrao de objetos.
API padro desenvolvida pela SUN para a persistncia de objetos utilizando a
JDO Java Data Object
linguagem Java
Tecnologias facilitadoras
Facilita a criao e a execuo de testes de unidade sobre os objetos que
JUnit
compem o sistema.
Banco de dados MySQL SGBD estvel e gratuito

D 1. Decises e suas justicativas para o estudo de caso.

46 . 14 Edio

sql14.indb 46 6/10/2004 18:49:27


nesta srie, ser construdo o diagrama de classes de cliente;
todo o sistema. Um vdeo pode ser emprestado vrias vezes
(contanto que em momentos diferentes), da mes-
Diagrama de classes ma forma que um emprstimo pode conter vrios
O diagrama apresentado na A4 apresenta o con- filmes.
junto de classes definido para o nosso estudo de caso.
A partir dos requisitos do sistema, foram identifica- Modelagem Comportamental L

Mini-Curso
das quatro classes: A modelagem comportamental de um sistema espe-
Cliente: pessoa que realiza emprstimos na lo- cifica a viso dinmica do sistema. Na fase de projeto
cadora. Cliente deve estar cadastrado no sistema de sistema, a UML define quatro possveis diagramas
antes da realizao de um emprstimo; para a modelagem comportamental de um sistema:
Filme: obra cinematogrfica que disponibiliza- diagrama de seqncia, diagrama de colaborao, dia-
da para locao atravs do sistema; grama de estado e diagrama de atividades.
Vdeo: uma cpia de um filme em um meio f- Para o estudo de caso apresentado nesta srie, sero
sico (DVD ou VHS). Um vdeo est sempre asso- construdos os diagramas de seqncia relativos aos
ciado a um filme previamente cadastrado; casos de uso selecionados para a primeira iterao do
Emprstimo: operao realizada por clientes processo, conforme apresentado no segundo artigo
para locao filmes, feita atravs disponibilizao desta srie.
de um vdeo do filme escolhido. A deciso em especificar somente um tipo de dia-
grama est relacionada com as dvidas e complexida-
As associaes e cardinalidades do diagrama repre- de do problema. Se os casos de uso forem complexos,
sentam as seguintes informaes: com mltiplas interaes de atores ou vrios estados
Um filme pode possuir vrios vdeos (cpias), que um objeto possa assumir, aconselhvel especifi-
porm um vdeo est obrigatoriamente associado car principalmente os diagramas que permitam uma
a um nico cliente; melhor visualizao dessas propriedades (no exemplo
Um cliente pode realizar vrios emprstimos, citado, diagrama de seqncia e diagrama de estado,
porm um emprstimo est associado a um nico respectivamente). Vale lembrar que a UML no im-
pe a utilizao de seus 10 diagramas,
ela recomenda a criao dos diagramas
que o projetista achar mais relevante
de acordo com o sistema que estiver
sendo desenvolvido.

Diagrama de Seqncia
um diagrama de interao que d
nfase ordenao temporal das men-
sagens. Um diagrama de seqncia
mostra o conjunto de objetos e as men-
sagens trocadas entre esses objetos. As
A 5 e 6 apresentam os diagramas de
seqncia para os casos de uso Cadas-
trar Vdeo e Efetuar Locao de Vdeo
do nosso estudo de caso. Para maiores
detalhes sobre como construir esses
diagramas, sugerimos a leitura do arti-
go Projeto de software utilizando UML
publicado na edio 13 da SQL Maga-
zine.
O diagrama da A5 representa a inte-
rao entre o sistema e o ator funcion-
rio atravs da representao temporal
das atividades de acordo com a espe-
A 4. Diagrama de Classes. cificao do requisito apresentada no

SQL Magazine . 47

sql14.indb 47 6/10/2004 18:49:29


A classe Controle solicita a criao
de um novo emprstimo ao siste-
ma. O funcionrio escolhe os vdeos
a serem locados, e ao final a clas-
se Controle calcula e exibe o valor
total, a data de locao e devoluo
do emprstimo e registra essas in-
formaes no sistema.

Modelagem Arquitetural
A 5. Diagrama de Seqncia para o caso de uso Cadastrar Vdeo A modelagem arquitetural de um
sistema visa descrever a arquitetura
fsica do sistema. Essa arquitetura
exibe a decomposio detalhada do
hardware e software que compem
a implementao do sistema. Ao uti-
liz-lo, objetivamos mostrar o mape-
amento da estrutura lgica de clas-
ses para uma arquitetura em termos
de componentes, ou seja, atravs de
mdulos que possuam funcionalida-
des especficas, independentes e que
se comunicam atravs de interfaces.
A UML define dois possveis dia-
gramas para a modelagem arquite-
tural de um sistema: diagrama de
componentes e diagrama de implan-
tao. Para o estudo de caso apre-
sentado nesta srie ser construdo
o diagrama de componentes de todo
o sistema.
A 6. Diagrama de Seqncia para o caso de uso Locao de Vdeo
Diagrama de componentes
segundo artigo desta srie. Inicialmente, o ator fun- Este diagrama empregado para a modelagem da
cionrio preenche as informaes sobre o novo vdeo viso esttica de implementao de um sistema. Isso
e as envia classe Controle. Esta classe solicita ao sis- envolve a modelagem de itens fsicos que residem em
tema a verificao da existncia do filme, e caso no um n, como executveis, bibliotecas, tabelas, etc.
esteja cadastrado, solicita o seu cadastro no acervo Com esse tipo de representao, temos idia do fun-
do sistema atravs de uma nova instncia dos objetos cionamento do sistema computacional. Alm do dia-
Filme e Vdeo. grama (A7) aconselhvel, tambm, uma descrio
A classe Controle responsvel principalmente de cada componente da arquitetura (C 1) para evitar
pela comunicao entre as classes do sistema e o ator interpretaes ambguas relacionadas arquitetura e
Funcionrio. Esta classe tambm responsvel pelo seu funcionamento. Nesta descrio so destacadas
envio de mensagens relativas a eventos do sistema. explicitamente as funcionalidades dos componentes
O diagrama da A 6 representa a interao entre e sua interface de comunicao.
o ator funcionrio e o sistema para a realizao de
um novo emprstimo. Inicialmente, o ator funcion- Camada de persistncia e JDO
rio preenche as informaes sobre o cliente que re- Durante a etapa de projeto, uma das atividades que
alizar o emprstimo e as submete classe Controle normalmente realizada a criao do modelo rela-
(responsvel pela comunicao entre o ator e o siste- cional. Quando pensamos em acessar dados contidos
ma). Esta classe solicita a verificao da situao do em um banco relacional para a criao de objetos, a
cliente, e caso no esteja em dbito com a locadora, forma que nos vem em mente a execuo de co-
disponibiliza os vdeos disponveis para emprstimo. mandos SQL que iro retornar os atributos de ta-

48 . 14 Edio

sql14.indb 48 6/10/2004 18:49:35


C 1. Descrio da arquitetura dor a forma como as converses entre dados e objetos
O Sistema de Vdeo Locadora formado pelos ocorrem.
seguintes componentes: Visando facilitar o uso de camadas de persistncia
Software de Vdeo Locadora em programas Java, a Sun definiu um conjunto de
Parte do sistema responsvel em oferecer APIs, intitulado JDO (Java Data Object). Essas APIs
interfaces para o usurio para o cadastro
de vdeos, pesquisa de ttulos e locao de
vdeos.
foram definidas com o objetivo de padronizar a forma
de acesso a diferentes camadas de persistncia que L

Mini-Curso
adotam esse conjunto de API. Portanto, o que dife-
JDO Genie
rencia as implementaes das camadas de persistn-
Parte do sistema responsvel em fazer a
comunicao com o banco de dados e
cia que seguem o padro JDO a forma como cada
o software de vdeo locadora. Esse implementao acessa o banco e realiza a converso
componente disponibiliza a interface JDO entre dado e objeto, o que permite a troca dessas im-
para que o software utilize somente a plementaes sem a necessidade de alterar o cdigo
abstrao de objetos. fonte.
MySQL As principais vantagens do JDO em relao s ou-
Componente responsvel por armazenar os tras solues para persistncia de objetos so:
dados do sistema. Os objetos no precisam ser escritos de forma
diferente dos objetos Java normais para que pos-
belas. Com esses dados, o programador pode ento sam ser persistidos;
instanciar o objeto desejado. JDO prov um modelo simples de transao
No desenvolvimento de um programa orientado a que se integra muito bem com o banco de dados;
objetos, o acesso a bancos relacionais faz com que o Devido ao fato do JDO utilizar a tecnologia
desenvolvedor deixe de utilizar a abstrao de objetos JDBC, todos os bancos de dados so suportados
e necessite conhecer a estrutura do banco ou as inter- para uso.
faces das stored procedures. Alm de ser trabalhosa
e consumir tempo de desenvolvimento, essa aborda- Existem vrios produtos no mercado que imple-
gem necessita que exaustivos testes sejam realizados mentam a API JDO. Neste artigo, decidimos esco-
para evitar que os dados do banco sejam corrompidos lher a implementao chamada JDO Genie devido
e para comprovar que o mapeamento objeto relacio- a sua maturidade e as facilidades que ela oferece (
nal tenha sido feito de forma conveniente. B Escolha da implementao do JDO). No prximo
Uma possvel forma de gerenciar a persistncia dos artigo da srie ser mostrado como se utiliza o JDO
dados atravs da utilizao de camadas de persis- Genie durante a codificao do estudo de caso discu-
tncia de objetos. Com essa abordagem possvel tido nesta srie.
desenvolver aplicaes de forma mais produtiva, sem
a necessidade de realizar mapeamentos entre diferen-
tes tipos de modelos (modelo de classes modelo
relacional). A tarefa de persistir os dados fica trans-
parente ao desenvolvedor, que passa a se preocupar
principalmente com a modelagem dos objetos de ne-
gcio e sua codificao, enquanto que os dados so
gerenciados atravs da camada de persistncia.
Para que se utilize uma camada de persistncia, uma
configurao prvia deve ser realizada. Essa configu-
rao consiste principalmente em informar cama-
da de persistncia informaes sobre: (1) as classes
que sero persistidas e seus relacionamentos (obtidas
atravs do diagrama de classe) e (2) como acessar o
banco onde os dados sero persistidos.
De posse dessas informaes, o gerenciador res-
ponsvel pela camada de persistncia cria as tabelas
respectivas e disponibiliza mtodos atravs do qual
os objetos e os seus respectivos dados podero ser
acessados, deixando transparente para o desenvolve- A 7. Diagrama de Componentes do Sistema

SQL Magazine . 49

sql14.indb 49 6/10/2004 18:49:36


B Escolha da implementao do JDO o sucesso do restante do seu desenvolvimento, visto
Quando essa srie de artigos foi idealizada, decidimos falar de que toda a codificao do sistema ser baseada nos
tecnologias Java que fossem padres, como por exemplo JDO, e modelos gerados nesta etapa. Um erro durante a eta-
utilizar ferramentas que tivessem ao menos uma licena do tipo pa de projeto pode significar muitas horas de imple-
Community Edition. Baseando-se nesse critrio, a ferramenta JDO mentao perdidas. At o prximo artigo. S
Genie foi escolhida como ferramenta para auxiliar a criao da ca-

G
mada de Persistncia. Porm, em julho/2004, a empresa Versant
(acdn@cos.ufrj.br)
comprou os direitos dessa ferramenta e passou a disponibilizar
Bacharel em Cincia da
somente uma licena trial de 45 dias. Buscamos substituir a JDO Computao formado na
Genie por outras ferramentas que apresentassem funcionalidades Universidade Federal do Amazonas,
atualmente estudante de mestrado
e facilidades semelhantes, mas s encontramos ferramentas com na rea de Engenharia de Software
essas caractersticas que no utilizavam a API JDO, como Cayenne da COPPE/UFRJ. Possui 3 anos
de experincia em anlise e
e Hibernate. Assim, optamos por continuar com a JDO Genie. Caso Arilo Cludio desenvolvimento de software.
algum leitor tenha conhecimento de outra ferramenta que atenda Dias Neto
a essas caractersticas, envie-nos um e-mail com o nome da ferra-

G
menta e o link onde podemos encontr-la. (barcelos@cos.ufrj.br)
Bacharel em Cincia da
Computao formado na
Concluso Universidade Federal do Amazonas,
Apresentamos aqui a etapa de projeto do sistema atualmente estudante de mestrado
referente primeira interao do processo de desen- na rea de Engenharia de Software
da COPPE/UFRJ. Possui 3 anos de
volvimento especificado. Pelo estudo de caso escolhi- experincia em desenvolvimento de
do ser um sistema pequeno, foi possvel realizarmos Rafael Ferreira sistemas para Desktop e para Web
utilizando Java como plataforma.
o projeto de toda a arquitetura do sistema e no so- Barcelos
mente dos casos de uso escolhidos para a primeira
interao do processo.
Como pudemos perceber ao longo da especificao
do projeto de sistema, esta fase fundamental para H Faa o download e comente esta matria em:
www.sqlmagazine.com.br/sql14/

50 . 14 Edio

sql14.indb 50 6/10/2004 18:49:41


SQL Server
2005 Paulo Ribeiro

A
Microsoft liberou recentemente a verso Beta-2 Instalando e Configurando o SQL Server 2005
do futuro substituto do Microsoft SQL Server Express
2000 Desktop Engine (MSDE), agora conheci- Comece fazendo o download do produto em: www.
do por SQL Server 2005 Express Edition. Com a verso microsoft.com/downloads/details.spx?FamilyId=
Express temos uma prvia do engine do banco, que por 62B348BB-0458-4203-BB03-8BE49E16E6CD&display
sinal agradou bastante. A mudana comea pelo nome lang=en.
muitas pessoas no sabiam que o MSDE era uma verso Para que o SQL Server 2005 Express Edition consiga inte-
light do SQL Server e avana por um campo bastante ragir com linguagens CLR (=Common Language Runtimes
amplo, que inclui inmeras inovaes no cdigo T-SQL. como C# ou Visual Basic .NET), necessrio instalar pre-
Comearemos com um passo-a-passo da instalao, de- viamente o .NET Framework verso 2.0, cujo link voc en-
pois faremos um tour pelo Query Analyzer validando no- contra na mesma pgina anterior, ou se preferir www.micro-
vos comandos e procedimentos. soft.com/downloads/details.aspx?familyid=B7ADC595-
717C-4EF7-817B-BDEFD6947019&displaylang=en.
B Vale ressaltar que o Query Analyzer uma ferramenta de apoio Aps a instalao do .NET Framework 2.0, inicie o pro-
e no faz parte do kit de instalao da verso Express. Portanto, para cesso de instalao do SQL Express executando o pacote
acompanhar os exemplos dessa matria voc precisar de uma mquina SQLExpr.Exe; voc precisar de 80 Mb livres. As telas se-
pr-configurada com o client tools do SQL Server 2000. O client tools ro apresentadas e comentadas a seguir.
pode ser encontrado nas verses pagas: Developer, Personal, Standard Inicialmente confirme os termos de licena do produ-
ou Enterprise. to e clique em next. Feito isto ser apresentada a A1.
Neste ponto, clique em finish. Se voc se deparar com
Um detalhe importante: como o prprio nome sugere, a o erro apontado na A2, isto indica que a verso beta-2
verso Beta-2 ainda no a verso final do produto, estan- no suporta lnguas diferentes do ingls. Se esse for o seu
do sujeita a alteraes sem prvio aviso. Essa verso, em caso sua verso do Windows em portugus , d uma
particular, expira em 18 meses; portanto utilize-a somen- olhada no E1.
te para fins de testes de avaliao. Clique em next mais duas vezes at que a tela de infor-
maes gerais (A3) seja apresentada. Nessa tela, alm

SQL Magazine . 51

sql14.indb 51 6/10/2004 18:50:13


das informaes de registro, existe uma terceira
opo um pouco escondida na forma de um check
box: Hide advanced configuration option, que na ver-
dade quer dizer instalao padro. Na instalao pa-
dro (Hide Configuration Options marcado), o SQL
Server 2005 ser instalado como uma instncia, mes-
mo que essa seja a nica verso instalada na mquina.
Na verso customizada (Hide Configuration Options
desmarcado) voc poder alterar essa entre outras
regras. Portanto, aconselho o formato de instalao
customizada.

B At a verso 7.0 era possvel manter uma e somente uma


A1. Tela inicial de instalao de componentes do SQLExpress.
instncia do SQL Server por servidor. Se voc tentasse realizar uma
nova instalao sem desinstalar a anterior o processo era aborta-
do com uma mensagem de erro. A partir da verso 2000 surgiu
o conceito de instncia: voc pode configurar uma mquina para
receber mais de uma instalao do SQL Server; para isso basta de-
finir um nome diferenciado para a segunda instncia no momento
da instalao. Por exemplo, no servidor chamado SrvSQLMagazine A2. Erro Failed to load SqlSpars.dll.
a primeira instncia referenciada pelo prprio nome do servidor
(=SrvSQLMagazine). Se chamarmos a segunda instncia de Inst_2,
no momento da conexo deveremos especificar o nome do servidor
como SrvSQLMagazine\Inst_2

Na prxima tela voc dever selecionar quais com-


ponentes voc deseja instalar. Certifique-se de que
todos esto marcados. Troque o por
(A4)
A seguir voc dever definir se o SQL Server 2005

Desmarque essa opo para
instalao Customizada.
Express ser instalado como uma instncia ou no for-
mato padro. Escolha Named Instance se voc j pos-
sui uma verso instalada do SQL Server 2000 (MSDE
ou Standard); caso contrrio Default Instance a me-
lhor opo (A5).
Clique duas vezes em next at chegar tela para
definio da conta que iniciar o servio (A6). Se A3. Informaes gerais.
voc pretende utilizar o SQL Express apenas por
uma aplicao local selecione Use the Local System
Account. Agora se os servios do banco forem utili-
zados por uma aplicao que compartilha o banco de
dados nesse servidor, opte por Use a Domain User
Account.
Clicando em next ser apresentada a tela para de-
finio do modelo de autenticao (A7): selecione
Windows Authetication Mode para trabalhar somente
com segurana integrada ou Mixed Mode para tra-
balhar com os dois modelos existentes (Standard e
Integrada). Mais informaes sobre mtodos de au-
tenticao, convido o leitor a fazer a leitura do artigo
Gerenciando Contas e Permisses no SQL Server
2000 Parte I desta edio. Clique em next.
Chegou a hora de definir o collation (ler B 3) A4. Assinale os componentes que voc deseja instalar.

52 . 14 Edio

sql14.indb 52 6/10/2004 18:50:28


E1: Solucionando Problemas de Instalao - SQLSPars.dll

1. Reinicie o programa de instalao executando SQLExpr.exe.


2. Selecione a opo I accept the licencing terms and conditions e clique em next.
3. Aguarde pela instalao dos componentes (tela SQL Server Component Update - A 1) mas no clique em
finish nesse momento.
4. Abra o Explorer e crie um diretrio chamado C:\MSSQL (pode ser outro nome de sua convenincia).
J
5. Abra o editor de registro do Windows executando RegEdit.exe no menu Iniciar\Executar.

Novidades
6. Abra a chave de registro em
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\BootStrap
7. Verifique o path que aparece sob a linha BootStrapDir; copie \Setup Bootstrap para o diretrio criado no
item 4. Aps a cpia, o diretrio ficar assim: C:\MSSQL\Setup Bootstrap
8. Altere o valor da chave de
registro, substituindo o conte-
do atual pelo diretrio criado
no item 4
(ver A ao lado).
9. Feche o editor de registro.
10. Volte agora para o pro-
grama de instalao na tela do
item 3 (SQL Server Component Update) e clique em
finish.

A instalao continuar normalmente.

que ser utilizado no servidor. Se voc precisa de pode ser encontrado na mesma pgina de download
compatibilidade com bases legadas em SQL Server do SQL Express, na caixa Related Resources.
7.0, selecione SQL Collations, caso contrrio aceite o
padro Latin1_General (A8). Validando a instalao
Para verificar se a instalao foi bem sucedida, v
B Collation serve para mapear o conjunto de caracteres de uma ao prompt do sistema operacional e execute a linha
lngua, transformando cada caractere em uma seqncia de bits de comando SQLCmd, conforme demonstrado na
para fins de armazenamento e operaes de ordenao. At a ver- A9. Substitua paulosribeiro pelo nome da mquina.
so 7.0, o collation utilizado era SQL_Latin1_General_CP1_CI_AS; \sqlexpress o nome da instncia onde o SQL Server
a partir da verso 2000 passou para Latin1_General_CI_AS. Essa Express foi instalado (se voc instalou o produto em
mudana deve-se a uma padronizao na utilizao das pginas Default Instance omita essa informao).
de cdigo utilizadas pelo SQL Server e o Windows. O que voc tem No exemplo da A9 SQLCmd ir abrir uma conexo
a ver com isso? Bem, procure no criar databases com collations com o banco e recuperar a verso instalada do produ-
diferentes. Procure manter sempre o mesmo collation em suas ins- to. Note que Yukon - 9.00.852 aparece na descrio
talaes; pois tabelas com collations diferentes necessitam de fun- do produto. Yukon o code-name do SQL 2005, e
es especiais para processar joins, causando muitos transtornos dever ser substitudo na verso final. Esse mesmo
por sua ineficincia e no padronizao. teste pode ser reproduzido no Query Analyzer se
voc possuir as ferramentas de client do SQL Server
Clique no boto next mais duas vezes e finalmente 2000. Se voc no conseguiu realizar o teste acima,
em install. Ser apresentada uma tela tpica de instala- siga at o E 2.
o, mostrando o progresso dos componentes medi-
da que esto sendo configurados. No trmino da insta- Testando as novas features
lao, clique em next e por ltimo em finish. Ufa! Veremos a partir de agora algumas novidades que
Aconselho que voc instale tambm o Books On podero estar na verso final do SQL Server 2005.
Line (=BOL). Existem vrias dicas interessantes Os testes sero executados no database NorthWind,
sobre instalao, distribuio e protocolos de rede criado a partir do script encontrado na pgina de
suportados nessa verso. O link para baixar o BOL download do SQL Server 2005 Express.

SQL Magazine . 53

sql14.indb 53 6/10/2004 18:50:31


SnapShot Isolation Level
No nvel de isolamento padro (Read Committed), no
so permitidas leituras em linhas que esto em processo
de alterao. Nesses casos, a transao que requisitou a
leitura fica aguardando pelo trmino da transao res-
ponsvel pela modificao.
No nvel de isolamento SnapShot, a transao que re-
quisitou a leitura consegue acessar uma verso anterior
modificao, sem ter que aguardar pela concluso
da transao responsvel pela modificao da linha. A
grande vantagem desse novo mtodo a eliminao por
completo de travamentos para operaes de leitura de
dados. O teste apresentado na D1 foi executado em A5. Denindo a modalidade de instalao: Instncia ou Padro.
duas sesses, chamadas de sesso-1 e sesso-2

Suporte a XML
A Extensible Markup Language (XML) um padro
definido pelo Word Wide Web Consortium (W3C) para
troca de documentos na Web. Esse padro utiliza tags
definidas pelo usurio para formatar documentos, crian-
do assim um protocolo para validao, interpretao e
troca de informaes entre organizaes. A verso 2005
do SQL Server incorpora um data-type especfico e v-
rias funes para manipular dados XML como veremos
a seguir.
Criando variveis com o data-type XML: o exem-
A6. Denindo a conta que ir iniciar o servio do banco.
plo apresentado na C1 associa um documento XML
no caso uma mensagem para a varivel @var, defi-
nida com o novo data-type XML. A mensagem possui
as informaes de destinatrio ( representada pela tag
<para>), emissor (representado pela tag <de>), cabe-
alho (tag <cabecalho>) e texto (tag <texto>).

C 1.

/* Criando uma varivel com o data-type XML */


declare @var xml
set @var=

A7. Denindo o modelo de autenticao.
<mensagem>
<para>Leitor</para>
<de>Paulo Ribeiro</de>
<cabecalho>Teste</cabecalho>
<texto>Hello Word !</texto>
</mensagem>

print convert(varchar(max),@var)
go

-----------------------------------------------------
<mensagem><para>Leitor</para><de>Paulo Ribeiro</de>
<cabecalho>Teste</cabecalho><texto>Hello Word !
</texto></mensagem> A8. Denindo o collation do servidor.

54 . 14 Edio

sql14.indb 54 6/10/2004 18:50:40


E2: Solucionando Problemas de Instalao - No consigo abrir uma sesso no banco

Caso voc no consiga abrir uma sesso no banco a mensagem de erro apresentada na A abaixo ser apre-
sentada. Para lidar com este erro voc deve seguir alguns passos:

Verifique se o servio foi iniciado. Se voc insta-


lou o SQL Server na instncia padro SQLExpress,
J

Novidades
procure pelo servio de nome SQL Server
(SQLExpress). Caso contrrio voc optou por
Default na instalao procure por SQL Server. Se o
servio no estiver startado, proceda sua inicializa-
o e tente novamente.
Ainda no conseguiu? Verifique se o protocolo
TCP/IP est ativo. Como o objetivo primordial da
verso Express (assim como seu antecessor MSDE)
servir bases locais num computador desktop, pro-
tocolos de rede no so habilitados no processo de
instalao convencional. Voc consegue conectar-se
ao banco com o comando de linha SQLCmd.exe porque esse utilitrio faz acesso direto memria da mquina,
dispensando componentes de rede. J o Query Analyser necessita de suporte de um protocolo de rede, por isso
no funciona. Vamos ento habilitar a escuta do protocolo TCP/IP pelo SQL Server Express: v para o menu
Iniciar, clique em Programas\ Microsoft SQL Server 2005\Computer Manager, procure pelo nome da instncia
que voc criou na instalao (se voc aceitou o padro esse nome SQLExpress) e habilite o protocolo TCP/IP,
conforme demonstrado na A abaixo.

Ainda no conseguiu? Inicialize um servio chamado SQL Browser. Esse


servio intercepta as chamadas padro dos clientes SQL Server nas portas
1434/1433, fazendo um redirecionamento para a porta utilizada pela ins-
tncia. Detalhe importante: se voc possui outra verso do SQL Server ins-
talada (por exemplo o MSDE 2000), imprescindvel que o service-pack
3a esteja aplicado nessa outra instncia para que o SQL Browser funcio-
ne corretamente. Sem o sp3a, a outra instncia pode capturar chamadas
nessas portas antes do servio do SQL Browser agir, levando a erros na
conexo do client do SQL Express. Para confirmar se o service-pack 3a est
instalado na outra instncia, o resultado do comando .. select @@version
deve confirmar 8.00.780 na verso do produto. Se voc ainda no instalou
o service-pack 3a, aproveite para fazer o download em www.microsoft.com/
sql/downloads/2000/sp3.asp.

Criando colunas com o data-type XML: a men- (para, de, cabealho e texto).
sagem criada anteriormente ser gravada na coluna Modificando o contedo de tags no documento
docto, criada com data-type XML, como exemplifica- XML: pode-se modificar o contedo de tags espec-
do na C2. ficas em um documento XML. O mtodo modify()
Extraindo informaes de colunas XML com o utilizado para incluir, alterar ou excluir informaes
auxlio do mtodo query(). Agora que armazenamos pontuais no documento. Um exemplo apresentado
o contedo da mensagem na coluna docto da tabela na C4.
tb_xml, precisamos emitir um relatrio analtico trans- Criando schemas para validao do contedo
formando as tags em colunas e o contedo das tags nas XML: o que difere um documento XML de um tex-
linhas que iro compor o relatrio. O mtodo query() to convencional? Um documento XML criado sob
foi criado para segmentar a informao contida no do- uma formatao especial, com o auxlio de tags para
cumento XML, extraindo somente o contedo da tag identificar e localizar dados. Mas como validar o dado
informada no argumento do comando. A C3 apresenta XML? A resposta est na criao de schemas. Um
a execuo de um select sobre a tabela tb_xml, des- schema pode ser entendido como a estrutura deta-
tacando as informaes contidas no documento XML lhada de um documento XML. Assim, ao criar uma

SQL Magazine . 55

sql14.indb 55 6/10/2004 18:50:42


coluna XML, pode-se estabelecer um
vnculo com um schema especfico para
sua validao. O comando create XML
schema utilizado para definir o esque-
leto do documento XML, ressaltando
o nome e tipo de dado encontrado sob
cada tag. Aps a criao do schema,
podemos utiliz-lo em conjunto com o
data-type XML para fins de validao.
A C5 ilustra o procedimento para cria-
o do schema schema_mensagem_xml,
utilizado para legitimar o contedo da A 9. Executando o utilitrio de linha de comando SQLCmd para validar a instalao.
coluna XML mensagem, pertencente
tabela tb_mensagem: insert into tb_XML (docto)
values (
Tratamento de excees em bloco: TRY CATCH <mensagem>
At a verso 2000, o tratamento de excees era <para>Leitor</para>
efetuado por intermdio da checagem da varivel de <de>Paulo Ribeiro</de>
ambiente @@error aps a execuo de comandos. <cabecalho>Teste</cabecalho>
Numa transao com trs comandos de insero, dois <texto>Hello Word !</texto>
de atualizao e quatro excluses, seriam necessrias </mensagem>
nove checagens em @@error para validar todo o pro- )
cedimento. Provavelmente encontraramos tambm insert into tb_XML (docto)
alguns desvios incondicionais (=GoTo) para trechos values (
do programa cujo objetivo era finalizar a transao <mensagem>
com uma mensagem de erro seguida de um comando <para>Aluno</para>
rollback. <de>Professor</de>
O comando TRY... CATCH surge no SQL Server <cabecalho>Materia da Prova</cabecalho>
2005 como uma opo para tratamento centra- <texto>Leitura obrigatoria do texto sobre DW
lizado de erros numa transao. O bloco de co- </texto>
mandos pertinentes transao colocado logo </mensagem>
abaixo do comando TRY. O controle da exceo fica sob a )
tutela do comando CATCH, que aparece logo a se-
guir. Um detalhe importante: XAct_Abort precisa select * from tb_XML
estar ligado (=ON) para que o comando rollback atue -----------------------------------------------------
sobre toda a transao e no s sobre o comando que
causou a exceo. Na C6 a transao responsvel pela Codigo Data Docto

insero de linhas nas tabelas tb_nf e tb_nf_itens <mensagem><para>Leitor


1 2004-08-23 15:23:00 </para><de>Paulo Ribeiro</de>
est dentro de um bloco begin try ... end try. Como <cabecalho>Tes ...
Xact_Abort est ligado, qualquer erro que acontea
<mensagem><para>Aluno
durante a transao acarretar no desvio incondicio- 2 2004-08-23 15:23:00 </para><de>Professor
nal para o bloco de instrues contido em begin catch </de><cabecalho>Mat ...

... end catch.


DDL Triggers
C 2. At a verso 2000, triggers estavam associadas a
tabelas e views. Na verso 2005 o conceito de trigger
/* Criando uma coluna com o data-type XML */ foi ampliado para comandos DDL (=Data Definition
create table tb_xml Language). Pode-se agora criar mtodos para audito-
( ria de comandos DDL, gravando quem fez, quando
codigo int identity primary key, fez e o que exatamente foi executado para manipular
data smalldatetime default getdate(), a estrutura de um objeto.
docto xml Mas como o SQL Server 2005 realiza essa auditoria?
) Quem est familiarizado com triggers no SQL Server

56 . 14 Edio

sql14.indb 56 6/10/2004 18:50:50


SESSO 1 SESSO 2
Abra a sesso-1 no Query Analyser
Configure o database NorthWind para aceitar o nvel de isolamento
snapshot
Alter database NorthWind set ALLOW_SNAPSHOT_ISOLATION ON
Crie a tabela tb_Teste
use NorthWind
J
go

Novidades
create table tb_Teste (codigo int, nome varchar(30))
insert into tb_Teste values (1, Paulo Ribeiro)
insert into tb_Teste values (2, Ana Lucia)
Inicie uma transao para alterar o nome de codigo=1 para
123456
BEGIN TRAN
update tb_Teste
set nome=123456
where codigo=1
Abra a sesso-2 no Query Analyser
Execute um select para resgatar o codigo=1 na tabela tb_Teste. No nvel
de isolamento padro (=READ COMMITTED) a query ficar aguardando o
trmino da transao iniciada na sesso-1 at sair por timeout.
SET LOCK_TIMEOUT 3000
select * from tb_Teste
---------------------------------------------------------------------
Server: Msg 1222, Level 16, State 45, Line 2
Lock request time out period exceeded.
Altere o nvel de isolamento na sesso-2, tornando possvel o versionamento
de linhas.

set TRANSACTION ISOLATION LEVEL SNAPSHOT

Execute novamente o comando select, repare que o nome CONTINUA


Paulo Ribeiro para codigo=1
SET LOCK_TIMEOUT 3000
select * from tb_Teste
==========================================
codigo nome
----------- ------------------------------
1 Paulo Ribeiro
2 Ana Lucia
Finalize a transao
COMMIT
Execute novamente o comando select
SET LOCK_TIMEOUT 3000
select * from tb_Teste
==========================================
codigo nome
----------- ------------------------------
1 123456
2 Ana Lucia

D1

2000, sabe que conseguimos interceptar as modifi- copo da trigger, como veremos no exemplo prtico a
caes que esto sendo aplicadas nas linhas atravs seguir.
da leitura nas tabelas locais inserted e deleted (essas O problema: o DBA de uma grande empresa possui
tabelas s existem enquanto a trigger est ativa, e s uma equipe responsvel pela implementao de obje-
podem ser acessadas pelo cdigo escrito na trigger). tos no database NorthWind. Como a equipe grande,
Nas triggers para comandos DDL no SQL Server ele gostaria de auditar a criao, excluso e alterao
2005 o processo um pouco diferente. No lugar das de tabelas nesse database.
tabelas inserted e deleted, existe uma funo que re- A Soluo: criaremos uma trigger no database
torna um documento XML com diversas informaes NorthWind para capturar os comandos DDL create
sobre o comando DDL que foi executado. Detalhe table, alter table e drop table. A trigger alimentar
importante: essa funo s pode ser acionada no es- a tabela de nome tb_Log, especialmente criada para

SQL Magazine . 57

sql14.indb 57 6/10/2004 18:50:51


C 3.

select para = convert(varchar(20),docto.query(data(//para)))


,de = convert(varchar(20),docto.query(data(//de)))
,cabecalho = convert(varchar(20),docto.query(data(//cabecalho)))
,texto = convert(varchar(20),docto.query(data(//texto)))
from tb_XML

----------------------------------------------------------------------------------------------------------------
para de cabecalho texto
---------------- --------------------- --------------------------- -------------------------------------------
Leitor Paulo Ribeiro Teste Hello Word !
Aluno Professor Materia da Prova Leitura obrigatoria do texto sobre DW

C 4.

/* Acrescentar o destinatrio Leitor-2 na mensagem de cdigo=1 */


update tb_XML
set docto.modify(insert <para>Leitor-2</para> after (/mensagem/para) [1])
where codigo=1

select para = convert(varchar(20),docto.query(data(//para)[1]))


,para_ins = convert(varchar(20),docto.query(data(//para)[2]))
,de = convert(varchar(20),docto.query(data(//de)))
,cabecalho = convert(varchar(20),docto.query(data(//cabecalho)))
,texto = convert(varchar(40),docto.query(data(//texto)))
from tb_XML
where codigo=1

----------------------------------------------------------------------------------------------------------------
para para_ins de cabecalho texto
-------------------- -------------------- -------------------- -------------------- ---------------------
Leitor Leitor-2 Paulo Ribeiro Teste Hello Word !

esse fim. Utilizaremos a funo EventData() para a clusula into <varivel> obrigatria na sintaxe
capturar o comando e outras variveis de ambiente do comando, servindo como repositrio temporrio
ativadas no momento da conexo. A C 7 apresenta para o contedo das tabelas inserted/deleted. A C8
esta soluo. apresenta um exemplo de uso da clusula output.

Output Tamanho de um database


Imagine a seguinte situao: em seu database existe O tamanho mximo de um database na verso 2005
uma tabela onde alteraes so crticas. A pedido da do SQL Server passou de 2 para 4GB. Ao menos na ver-
auditoria, voc precisa registrar a posio da linha an- so beta-II consegui restaurar e utilizar com xito um
tes da alterao. Qual a soluo? Implemente uma database de 4.4GB, como pode ser confirmado na C 9.
trigger de update e registre o estado da linha a par-
tir de um comando select na tabela deleted. Correto, Large Value Data Types
mas no SQL Server 2005 voc possui tambm o re- At o SQL Server 2000, variveis char/varchar/
curso da clusula Output como parte integrante dos nvarchar no podiam extrapolar os limites de uma
comandos insert, delete e update. Com a utilizao de pgina (8.000 bytes). Na verso 2005 criou-se o argu-
Output, abre-se uma porta para que o prprio coman- mento (max) que puxou esse limite para 231 bytes,
do tenha acesso s tabelas inserted e deleted, antes s ou 2GB. Esses limites tambm foram estendidos
disponveis no escopo de triggers. Alm de Output, para dados unicode (=Nvarchar), porm nesse caso

58 . 14 Edio

sql14.indb 58 6/10/2004 18:50:57


C 5.
create table tb_nf (nro_nf int primary key, data
/* Schema para validar mensagens xml */ smalldatetime, valor dec(10,2))
create XML SCHEMA COLLECTION schema_mensagem_xml AS create table tb_nf_itens (id_item int primary
N<?xml version=1.0 encoding=UTF-16?> key,nro_nf int, cod_item int, qtde smallint)
<xsd:schema elementFormDefault=unqualied
attributeFormDefault=unqualied
xmlns:xsd=http://www.w3.org/2001/XMLSchema >
set xact_abort on
begin TRY
J

Novidades
<xsd:element name=mensagem> begin tran
insert into tb_nf values (1,getdate(),100)
<xsd:complexType mixed=false> insert into tb_nf_itens values (1,1,101014,5)
<xsd:sequence> commit tran
<xsd:element name=para end TRY
type=xsd:string/> begin CATCH
<xsd:element name=de rollback
type=xsd:string/> raiserror (Tentativa de inclusao da nf %d
<xsd:element name=cabecalho falhou,11,1,1)
type=xsd:string/> end CATCH
<xsd:element name=texto
type=xsd:string/> o limite de 1GB. Agora voc tambm tem a opo
</xsd:sequence> de trocar colunas text por varchar(max), o que faci-
</xsd:complexType> lita bastante sua manipulao por funes (left/right/
</xsd:element> substring, etc) e operaes de concatenao. Alguns
</xsd:schema>; exemplos podem ser vistos na C10.
/* Criao da tabela tb_mensagem, validando a coluna
mensagem segundo schema_mensagem_xml */ TOP(@n)
if object_id(tb_mensagem) is not null drop table At a verso 2000, a clusula TOP no aceitava va-
tb_mensagem riveis. Tnhamos que fazer alguns malabarismos com
create table tb_ mensagem o comando exec para montar e executar uma query
( para selecionar um nmero varivel de linhas. Na ver-
codigo int identity primary key, so 2005 podemos passar variveis como parmetro
data smalldatetime default getdate(), da clusula TOP. No exemplo da C11 a varivel @n
mensagem xml (schema_mensagem_xml) utilizada em conjunto com a clusula TOP para li-
) mitar o resultado da pesquisa na tabela order details
em 3 linhas.
/* O comando de insero a seguir ir falhar porque
no est respeitando o schema criado para a coluna Numerando linhas no resultado de uma query
mensagem faltou denir o destino (=coluna para) Como voc faria para numerar seqencialmente as
*/ linhas no resultado de uma query? Provavelmente
criaria uma tabela temporria ou varivel tipo table
insert into tb_mensagem (mensagem) com uma coluna identity, depois faria a insero do
values ( <mensagem> <de>Paulo Ribeiro</de> resultado da query nessa tabela para gerar a numera-
<cabecalho>Teste</cabecalho> <texto>Hello Word ! o. Por fim, listaria o contedo da tabela. Na verso
</texto> </mensagem>) 2005 a funo row_number() over(order by <nome-
----------------------------------------------------- da-coluna>) foi criada para gerar automaticamen-
Server: Msg 6965, Level 16, State 1, Line 1 te a numerao de linhas, ordenando o resultado
XML Validation: Invalid content,expected element(s): da query segundo a coluna especificada na clusula
para where element de was specied over. Na C12 a coluna Recnum ir identificar cada
linha de Order Details com um nmero seqencial.
C 6. A ordenao do relatrio ser baseada na coluna
UnitPrice.
if object_id (tb_nf) is not null drop table tb_nf
if object_id (tb_nf_itens) Ranqueando linhas no resultado de uma query
is not null drop table tb_nf_itens De forma anloga a row_number(), a funo rank()

SQL Magazine . 59

sql14.indb 59 6/10/2004 18:50:57


produzir uma coluna com o ranking segundo critrio trio. Ao executar a mesma query anterior, trocando-
estabelecido na clusula over (order by <critrio>). A se row_number() por rank(), as linhas que possuem o
diferena com relao a row_number() que rank() mesmo preo unitrio (=UnitPrice) ficaro com a mes-
ir gerar posies idnticas para linhas com mesmo cri- ma colocao no ranking como apresentado na C13.

C 7.

use NorthWind
go

/* A tabela tb_log, sera utilizada para auditagem de comandos ddl */


create table tb_log
(
recnum int primary key identity
,data smalldatetime default getdate()
,evento varchar(20)
,tabela varchar(20)
,usuario varchar(30)
,spid int
,comando varchar(1000)
)
go

/* Trigger para captura de comandos DDL create/alter/drop table */


alter TRIGGER TR_DDL
ON database
AFTER CREATE_TABLE, DROP_TABLE, ALTER_TABLE
AS
declare @cmd xml
set @cmd = CONVERT( VARCHAR(max),eventdata() )
insert into tb_log (evento,tabela,usuario,spid,comando) select
evento = convert(varchar(100),@cmd.query(data(//EventType)))
,tabela = convert(varchar(100),@cmd.query(data(//ObjectName)))
,usuario = convert(varchar(100),@cmd.query(data(//LoginName)))
,spid = convert(varchar(100),@cmd.query(data(//SPID)))
,comando = convert(varchar(max),@cmd.query(data(//TSQLCommand/CommandText)))
go

create table xxx (codigo int)


alter table xxx add descricao varchar(30)
drop table xxx
go

select * from tb_log


----------------------------------------------------------------------------------------------------------------

Recnum data evento tabela usuario spid comando

1 2004-08-18 16:59:00 create table xxx sa 51 create table xxx (codigo int)&#x0D;
alter table xxx add descricao
2 2004-08-18 16:59:00 alter table xxx sa 51
varchar(30)&#x0D;
3 2004-08-18 16:59:00 drop table xxx sa 51 drop table xxx &#x0D;

60 . 14 Edio

sql14.indb 60 6/10/2004 18:51:04


C 8. C 10.

use NorthWind declare @text varchar(max)


set NoCount ON set @text=
Agora voc tem a opo de trocar colunas text por
create table tb_cliente (codigo int, nome varchar(50)) varchar(max),o que facilita bastante sua manipulao
insert into tb_cliente values (1,Paulo Ribeiro)
declare @aux table (codigo int, nome varchar(50))
por funes (left/right/substring, etc) e operaes
de concatenao.
J

Novidades
.
update tb_cliente ..
set nome=xxx
output deleted.codigo, deleted.nome into @aux set @text = left(@text,5) + 123
where codigo=1 print @text

select * from @aux -----------------------------------------------------


----------------------------------------------------- Agora123
codigo nome
----------- ---------------------------------------
1 Paulo Ribeiro

C 9.

use db_SQLMag
exec sp_SpaceUsed
----------------------------------------------------------------------------------------------------------------
database_name database_size unallocatted space reserved Data index_size unused
db_SQLMag 4399.31 MB 0.00 MB 4369512 KB 3706488 KB 655792 KB 7232 KB

SQL Magazine . 61

sql14.indb 61 6/10/2004 18:51:05


C 11.

use NorthWind
go
declare @n smallint
set @n=3
select top(@n) *
from [order details]

----------------------------------------------------------------------------------------------------

OrderID ProductID UnitPrice Quantity Discount


----------- ------------ --------------------- -------- ------------------------
10248 11 14.0000 12 0.0
10248 42 9.8000 10 0.0
10248 72 34.8000 5 0.0

(3 row(s) affected)

C 12. C 13.

select top 10 select top 10


RecNum = row_number() over(order by Ranking = rank() over(order by unitprice),
unitprice), PrecoUnitario=UnitPrice,NroPedido=Orderid
PrecoUnitario=UnitPrice, NroPedido=Orderid from [order details]
from [order details] where orderid <=10251
where orderid <=10251 -----------------------------------------------------
----------------------------------------------------
Ranking PrecoUnitario NroPedido
1 7.7000 10250
2 9.8000 10248
RecNum PrecoUnitario NroPedido 3 14.0000 10248
1 7.7000 10250 4 15.6000 10251
2 9.8000 10248 5 16.8000 10251
3 14.0000 10248 5 16.8000 10250
4 15.6000 10251 5 16.8000 10251
5 16.8000 10251 6 18.6000 10249
6 16.8000 10250 9 34.8000 10248
7 16.8000 10251 10 42.4000 10249
8 18.6000 10249
9 34.8000 10248
10 42.4000 10249

G
(psribeiro@hotmail.com)
Microsoft MCDBA e membro da
Concluso equipe editorial da SQL Magazine. Atua
como DBA-Snior em SQL Server na
A verso Express somente uma pequena amostra Livraria Saraiava S/A.
do que podemos esperar das verses mais robustas
do SQL Server 2005. Algumas features importantes
(integrao com linguagens CLR, service-broker, se-
Paulo
gurana por schemas, etc) no foram demonstradas Ribeiro
nessa matria em funo da precariedade da docu-
mentao, mas prometo em breve retornar a esse
tema.
Forte abrao a todos e at a prxima! S H
H Faa o download e comente esta matria em:
www.sqlmagazine.com.br/sql14/

62 . 14 Edio

sql14.indb 62 6/10/2004 18:51:13


O que esperar das novas
tecnologias OLAP da
Microsoft e Oracle
Mark Rittman

A
Oracle lanou recentemente a verso 10g do seu servidor OLAP gratuito fornecido com o SQL Server
banco de dados, que agora vem com um servidor 7.0. O OLAP Services baseava-se na tecnologia Micro-
OLAP multidimensional integrado, conhecido soft obtida na aquisio da tecnologia OLAP da Panorama
como OLAP Option. A Microsoft, que notoriamente to- Software Systems. Apesar de seus preos competitivos e
mou o mercado OLAP com o Analysis Services, que era do conjunto de recursos, a adoo do servidor OLAP da
fornecido juntamente com o SQL Server 2000, est para Microsoft foi limitada at o lanamento do SQL Server
lanar a nova verso do produto no SQL Server 2005. A 2000, onde foi disponibilizado o Analysis Services. Este
Oracle e a Microsoft esto, a seu jeito, procurando re- incorporou alguns recursos de data mining, foi um enor-
modelar a indstria de OLAP com esses lanamentos, e me sucesso e agora o servidor OLAP lder de mercado,
isso certamente ter grandes implicaes para os DBAs com 23% do mercado em 2003, frente do Hyperion que
que tenham data warehouses em execuo em bancos de possui 22% e Cognos com 14%.
dados relacionais tradicionais. Apesar de ser fornecido com o SQL Server 2000, o
H pouco tempo atrs, o mercado OLAP era dominado Analysis Services um produto de servidor parte e
por nichos de fornecedores, como Hyperion, Comshare, freqentemente utilizado com bancos de dados que no
Microstrategy, com servidores OLAP com preos em geral so da Microsoft, como o IBM DB2 e o Oracle. No en-
de dezenas a centenas de milhares de reais, sendo os da- tanto, como o SQL Server foi lanado cinco anos atrs,
dos armazenados em bancos de dados multidimensionais, a tecnologia Analysis Services est ficando ultrapassa-
dedicados e autnomos. No entanto, nos ltimos anos, os da e toda a ateno agora est voltada para a verso do
grandes fornecedores de bancos de dados, como Oracle Analysis Services que est sendo fornecida como parte do
e Microsoft, comearam a entrar no mercado de OLAP, SQL Server 2005.
fornecendo servidores OLAP juntamente com seus ban- O SQL Server Analysis Services 2005 promete ser, pra-
cos de dados relacionais tradicionais. As verses iniciais ticamente, uma reescrita da tecnologia utilizada por trs
desses servidores OLAP se equiparavam s dos fornece- do Analysis Services 2000, com muitas alteraes no pr-
dores de OLAP dedicados, mas novas verses de cada um prio servidor OLAP e uma abordagem radicalmente dife-
dos fornecedores a seu modo ameaam redefinir o mer- rente para carga e acesso a cubos OLAP. Uma das princi-
cado OLAP e afastar do jogo os fornecedores de OLAP pais novidades que viro com o Analysis Services 2005 o
dedicados. Ento, o que a Oracle e a Microsoft esto pre- conceito de UDM (Unified Dimensional Model Modelo
parando? Dimensional Unificado). UDM permite que DBAs e de-
senvolvedores definam dimenses, cubos OLAP e hierar-
Microsoft Analysis Services 2005 quias de forma abstrata que possam subseqentemente
A Microsoft causou um grande impacto sobre o mercado ser armazenados em bases relacionais ou multidimensio-
de OLAP em 1998 quando lanou o OLAP Services, um nais. A Oracle usou esse conceito por algum tempo com

SQL Magazine . 63

sql14.indb 63 6/10/2004 18:51:20


o banco de dados Oracle9i permitindo que dados A principal diferena entre SQL e MDX a
OLAP fossem armazenados em tabelas relacionais capacidade do MDX de fazer referncia a vrias
ou em espaos de trabalho analticos dedicados, com dimenses. Apesar de ser possvel usar a lingua-
um modelo dimensional unificado mantido no cat- gem SQL exclusivamente para consultar cubos no
logo OLAP. A Microsoft agora est implementando Microsoft SQL Server 2000 Analysis Services,
seu prprio modelo dimensional unificado no Analy- o MDX possui comandos designados especifica-
sis Services 2005 e o est utilizando para diminuir mente para recuperar dados como estruturas de
a distncia entre relatrios relacionais e multidimen- dados multidimensionais com praticamente qual-
sionais. quer nmero de dimenses.
O Analysis Services 2000, como muitos servidores O SQL se refere somente a duas dimenses,
OLAP, possua um limite em relao ao nmero de colunas e linhas, ao processar consultas. Como o
dimenses que poderiam ser associadas a um cubo, SQL foi projetado para manipular somente da-
e esse limite est sendo eliminado no Analysis Servi- dos tabulares bidimensionais, os termos coluna
ces 2005. Alm disso, o Analysis Services 2005 ser e linha possuem significado na sintaxe SQL.
fornecido com um recurso chamado Intellicube O MDX, em comparao, pode processar uma,
que, quando usado juntamente com o modelo di- duas, trs ou mais dimenses em consultas.
mensional unificado e com a remoo de todos os Como podem ser usadas vrias dimenses no
limites de dimenso, permitir que o DBA carregue MDX, cada uma considerada um eixo. Os ter-
qualquer esquema relacional no Analysis Services mos coluna e linha no MDX so usadas sim-
2005. Esta ao provocar a criao automtica de plesmente como nomes alternativos para as duas
um esquema de cubo, fator de identificao e tabelas primeiras dimenses de eixo em uma consulta
de dimenso. MDX.
Junto com o UDM, outra tecnologia importante
prometida para o Analysis Services 2005 o cache A A1 apresenta como estes componentes do
pr-ativo, um mtodo de popular cubos OLAP. O Analysis Services interagem. Perceba que entre as
cache pr-ativo permite que, teoricamente, com me- ferramentas externas e o Analysis Services existe
nos esforo de projeto, os DBAs possam implemen- uma API, denominada XML/A, que permite o acesso
tar bancos de dados OLAP em tempo real, possuindo a funcionalidades ferramenta OLAP da Microsoft.
ainda todos os benefcios do OLAP multidimensional Por ora, a prxima verso do Analysis Services am-
otimizado, este ltimo ocorrendo automaticamente plia significativamente a funcionalidade fornecida
se os dados no estiverem sendo alterados. A Oracle pelas duas primeiras verses do servidor OLAP da
est planejando um recurso semelhante para o Oracle Microsoft.
OLAP onde a diviso entre ar-
mazenamento multidimensional
e relacional dever se tornar cada
vez menos ntida (mas no deve
ser lanada uma verso funcional
at o Oracle 11).
Alm do preo e de suas fun-
cionalidades, outra estratgia da
Microsoft em relao ao mer-
cado de OLAP sua linguagem
de consulta OLAP, o MDX que
vem sendo utilizada pela maioria
dos fornecedores de ferramen-
tas de consulta OLAP. O MDX,
primeira vista, parece muito
com o SQL, mas o fato da sin-
taxe ser parecida oculta algumas
diferenas conceituais entre as
duas linguagens. De acordo com
a Comparao entre MDX e
SQL da MSDN: A 1. UDM e Cache Pr-Ativo.

64 . 14 Edio

sql14.indb 64 6/10/2004 18:51:25


O Oracle OLAP Option do espao em disco. O resultado disso que, em de-
Apesar da Microsoft ter tido muito sucesso com terminada janela de lote, o Oracle 10g OLAP agora
o Analysis Services, a Oracle foi o primeiro forne- pode carregar e agregar mais dados que antes e, para
cedor de bancos de dados relacionais a reconhecer determinada quantidade de disco, pode armazenar
a importncia do OLAP, tendo adquirido a tecno- mais informaes que antes. Isso, aliado a avanos
logia Express da IRI em 1995. A entrada da Oracle maiores na escalabilidade interna, torna o Oracle 10g
no mundo OLAP legitimou o mercado OLAP assim OLAP uma plataforma potencialmente muito eficaz
M

Em foco
como mostrou aos fornecedores de OLAP tradicionais na criao de cubos especialmente grandes.
que eles provavelmente enfrentariam concorrncia Outro importante diferenciador entre a abordagem
de fornecedores de bancos de dados relacionais que a Oracle e a Microsoft fazem do OLAP est na
bem mais fortes. escolha das linguagens de consulta. Como vimos an-
Desde o momento em que a Oracle adquiriu a tec- teriormente, a Microsoft d preferncia ao MDX
nologia Express, seu objetivo foi sempre integr-la a como linguagem de consulta multidimensional e
seu banco de dados relacional. Esse objetivo foi fi- XML/A como API para acesso s funcionalidades do
nalmente alcanado com o Oracle 9i, anunciado pela Analysis Services.
Oracle como o primeiro mecanismo de banco de J a Oracle est priorizando o SQL convencional com
dados relacional-multidimensional, fornecido com a extenses analticas como sua opo de linguagem
tecnologia OLAP. Integrando a tecnologia Express ao de consulta OLAP. Como parte do OLAP Option,
banco de dados, a Oracle tomou um rumo diferen- a Oracle disponibiliza a funo OLAP_TABLE, que
te da Microsoft, que manteve sua tecnologia OLAP permite s instrues SQL regulares acessarem tipos
bem separada de sua tecnologia relacional. O Oracle de dados multidimensionais nativos armazenados em
9i e o Olap Option so executados como um processo espaos de trabalho analticos. Essa tcnica abre o
nico, com uma s instncia de banco de dados a ge- Oracle OLAP para ferramentas de
renciar. Por conseqncia, a tecnologia OLAP capaz relatrio relacionais como o Mi-
de tirar proveito dos recursos do Oracle, como Real crostrategy, o Business Objects
Application Clusters, particionamento, DataGuard e, e o Cognos.
agora, grid. O Oracle, diferentemente do Microsoft Outra grande novidade que
SQL Server, tambm executado em plataformas a Oracle est preparando o
no Windows, tornando o OLAP Option portvel lanamento do Oracle 10g Bu-
para todas as plataformas de servidor em que o banco siness Intelligence, o primeiro
de dados Oracle seja executado, incluindo o Linux e conjunto de ferramentas de
o Apple OSX. consulta Oracle que trabalha-
O ponto forte da Oracle, tanto em termos de ban- ro de forma nativa nos espaos
cos relacionais quanto de servidores OLAP, tem sido de trabalho analticos do Ora-
tradicionalmente o foco em ambientes que neces- cle OLAP. At o momento, a
sitam amplos conjuntos de anlise, vrios usurios aceitao do Oracle OLAP Op-
simultneos e exigncias de anlise multidimensio- tion limitada devido ausn-
nal complexa. O OLAP DML (Data Manipulation cia de ferramentas de consulta
Language) da Oracle, baseado no 4GL da Express, prontas. A Oracle espera re-
possui recursos que somente agora esto sendo copia- solver esse problema nos pr-
dos pela Microsoft no MDX, e a prxima verso do ximos meses com o Discoverer
Oracle 10g OLAP vir com diversos novos recursos Plus OLAP, uma nova verso do
de suporte a variados tipos de anlise. Oracle Discoverer que trabalha
O particionamento foi aprimorado no Oracle 10g tanto em fontes de dados rela-
OLAP, com medidas individuais, dimenses e, na re- cionais como em fontes de da-
alidade, qualquer objeto de espao de trabalho ana- dos OLAP.
ltico agora capaz de ser atribudo a parties indi- Por fim, gostaria de informar
viduais. O Oracle 10g tambm apresenta uma nova que o OLAP Option compos-
forma de compresso de cubo, o que promete tanto to basicamente por cinco com-
melhorar o desempenho de consulta (recuperando ponentes chaves:
menos blocos de dados de determinada quantidade Tipos de dados espec-
lgica de dados) quanto reduzir acentuadamente os ficos para suporte a infor-
tempos de carga de lote e de agregao, economizan- maes multidimensionais.

SQL Magazine . 65

sql14.indb 65 6/10/2004 18:51:27


Q
u
no mercado de bancos de dados relacionais, a Oracle a
est colocando o banco de dados relacional no cen- a
tro de sua estratgia OLAP, com o banco de dados e
oferecendo suporte nativo a tipos de dados multi-
dimensionais e a armazenamento de objetos. As es-
colhas da Oracle so o SQL, como a linguagem de
consulta, e a Java OLAP API (no futuro, JOLAP),
como API, reportando-se a dados OLAP que esto
incorporados ao banco de dados Oracle.
O sucesso da abordagem da Microsoft inevitavel-
mente depender dela conseguir substituir o SQL
pelo MDX como a linguagem de consulta escolhida.
J o xito da Oracle depender de dois fatores: do
modo como ela conseguir incorporar o OLAP ao
A 2. Arquitetura do Oracle Olap. mecanismo de banco de dados e da SQL, com ex-
tenses analticas e a funo OLAP_TABLE, ser vi-
Esses tipos de dados so utilizados para manter vel como linguagem de consulta multidimensional.
cubos e dimenses que podem ser armazena-
dos temporariamente ou permanentemente em Qual tecnologia utilizar?
tabelas. Os DBAs que trabalham em ambientes Oracle ou
Uma engine para clculos multidimensionais Microsoft de grande porte migraro naturalmente
com o objetivo de processar os novos tipos de da- para as ofertas OLAP por intermdio de seus forne-
dos citados no ponto anterior. cedores. Mas a questo , como ficaro as organiza-
Um framework para desenvolvedores de apli- es que esto interessadas em implementar a anlise
cao Java com componentes que permitem o OLAP mas no tm uma fidelidade nem Oracle
acesso a dados relacionais e multidimensionais. nem Microsoft? Nesse caso, a situao resume-se
Extenses no SQL para permitir que ele acesse seguinte: se sua organizao tiver experincia com
os tipos de dados multidimensionais. o Microsoft SQL Server, voc ficar satisfeito em
Uma camada de metadados referentes aos da- migrar todos os dados de relatrios para os cubos
dos OLAP conhecida como Olap Catalog. OLAP do Analysis Services e gerar todos os relatrios
usando o MDX e a XML/A. Podemos colocar como
A A2 apresenta alguns desses componentes. ponto favorvel tambm a facilidade de administra-
o e de configurao dos servios. Por outro lado, se
Aonde tudo isso levar? estiver interessado em incorporar a anlise OLAP s
Embora muitos dos novos recursos existentes no suas aplicaes convencionais de banco de dados; se
Oracle 10g OLAP e no Microsoft Analysis Services uma das prioridades for escalabilidade e suporte a um
2005 tenham sido implementados para competir com grande nmero de usurios simultneos; se voc esti-
os novos recursos lanados pela concorrncia, a prin- ver pronto para lidar com uma curva de aprendizado
cipal diferena que podemos observar na abordagem mais acentuada; se estiver considerando outras pla-
feita por esses dois fornecedores de banco de dados taformas alm do Windows e sua organizao quiser
concentra-se na linguagem de consulta escolhida: a usar o SQL para resolver todas as tarefas de gerao
Microsoft optou pelo MDX e a Oracle, pelo SQL. de relatrios, ento vale a pena considerar com aten-
Os recursos que a Microsoft est prestes a lanar, o o Oracle OLAP. S
como a modelagem dimensional unificada, o cache
pr-ativo e o Intellicube, tm por objetivo facili-
tar a manipulao de dados para cubos do Analysis Mark Rittman
Services. Vimos tambm que a linguagem de consul- DBA certicado em Oracle e trabalha como gerente
ta a ser utilizada terminaria definitivamente com a de consultoria na rea de Business Intelligence e Data
Warehouse utilizando tecnologias Oracle.
necessidade de utilizao de consultas relacionais de
data warehouse.
A Oracle, por outro lado, est trabalhando para in-

H
Comente esta matria em:
corporar mais funcionalidades OLAP ao banco de da- www.sqlmagazine.com.br/sql14/
dos relacional. Diante de toda a influncia que exerce

66 . 14 Edio

sql14.indb 66 6/10/2004 18:51:39


Qualidade LocaWeb: segurana e estabilidade para seus e-mails e sites. Da empresa que precisa de
u m s i t e c o m a l t a d i s p o n i b i l i d a d e a t q u e m p r e c i s a d e e - m a i l s s e g u ro s c o n t r a v r u s e S PA M s ,
a LocaWeb oferece a melhor e mais premiada infra-estrutura do Pas: suporte 24 horas, brigada
antivrus, barreira anti-SPAM e servidores de ltima gerao para comportar pequenas ou grandes
empres as. Se voc q uer q ual id ad e e s e g u r a n a n a s u a in t e r n e t , a c e s s e j w w w. lo c aw e b. com. br

PORQUE HOSPEDAGEM A COISA MAIS IMPORTANTE PARA O SEU SITE.


M

Em foco
NA HORA DE INSTALAR
SUA EMPRESA, VOC
ESCOLHEU A CIDADE,
O BAIRRO, A RUA, O PRDIO,
A INFRA-ESTRUTURA,
TUDO PARA
FUNCIONAR DIREITO.

COM O SEU SITE


NA INTERNET
A MESMA COISA.

Parceria indita

Grtis: cupons de R$ 60,00 a R$ 150,00


para divulgar seu site no Google AdWords.
Veja mais no site www.locaweb.com.br

SQL Magazine . 67

sql14.indb 67 6/10/2004 18:51:42


DUEZT REVISTA
sql14.indb 68 6/10/2004 18:51:47