Professional Documents
Culture Documents
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
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
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
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
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
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
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
4 14 Edio
SQL Magazine . 5
95
Ol Professor!
No manual do Oracle est escrito: A indexao comple- 75
Dvidas
ndices podem ser vrias vezes maiores do que os dados da 25
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.
75
25
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
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.
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
10 . 14 Edio
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.
SQL Magazine . 11
12 . 14 Edio
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 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);
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);
SQL Magazine . 13
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
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.
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.
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
SQL Magazine . 15
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
16 . 14 Edio
SQL Magazine . 17
18 . 14 Edio
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:
SQL Magazine . 19
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
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.
20 . 14 Edio
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:
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
22 . 14 Edio
SGBD
SQL Magazine . 23
D 8.
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.
O role public
H
Comente esta matria em:
Public um database role especial responsvel por www.sqlmagazine.com.br/sql14/
24 . 14 Edio
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
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
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
28 . 14 Edio
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
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
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
SQL Magazine . 31
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
32 . 14 Edio
SGBD
SQL Magazine . 33
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
patrocnio
Atualize-se agora!
Maiores informaes pelo
telefone (21) 2283-9012,
realizao e-mail info@devmedia.com.br
mtw
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
38 . 14 Edio
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
40 . 14 Edio
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 ... ... ... ... ... ... ...
SQL Magazine . 41
42 . 14 Edio
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.
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
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
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).
SQL Magazine . 45
46 . 14 Edio
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
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
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
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
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
52 . 14 Edio
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.
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
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.
-----------------------------------------------------
<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
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:
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.
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
56 . 14 Edio
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.
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
----------------------------------------------------------------------------------------------------------------
para de cabecalho texto
---------------- --------------------- --------------------------- -------------------------------------------
Leitor Paulo Ribeiro Teste Hello Word !
Aluno Professor Materia da Prova Leitura obrigatoria do texto sobre DW
C 4.
----------------------------------------------------------------------------------------------------------------
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.
58 . 14 Edio
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
C 7.
use NorthWind
go
1 2004-08-18 16:59:00 create table xxx sa 51 create table xxx (codigo int)
alter table xxx add descricao
2 2004-08-18 16:59:00 alter table xxx sa 51
varchar(30)
3 2004-08-18 16:59:00 drop table xxx sa 51 drop table xxx 
60 . 14 Edio
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
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
use NorthWind
go
declare @n smallint
set @n=3
select top(@n) *
from [order details]
----------------------------------------------------------------------------------------------------
(3 row(s) affected)
C 12. C 13.
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
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
64 . 14 Edio
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
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
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.
Parceria indita
SQL Magazine . 67