protótipo de um atualizador de banco de dados

Propaganda
UNIVERSIDADE REGIONAL DE BLUMENAU
CENTRO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE CIÊNCIAS DA COMPUTAÇÃO – BACHARELADO
PROTÓTIPO DE UM ATUALIZADOR DE BANCO DE DADOS
INTERBASE UTILIZANDO XML
RANGEL JOSÉ BORDIN
BLUMENAU
2004
2004/2-41
RANGEL JOSÉ BORDIN
PROTÓTIPO DE UM ATUALIZADOR DE BANCO DE DADOS
INTERBASE UTILIZANDO XML
Trabalho de Conclusão de Curso submetido à
Universidade Regional de Blumenau para a
obtenção dos créditos na disciplina de
Trabalho de Conclusão de Curso II do curso de
Ciência da Computação — Bacharelado.
Prof. Wilson Pedro Carli – Orientador
BLUMENAU
2004
2004/2-41
PROTÓTIPO DE UM ATUALIZADOR DE BANCO DE DADOS
INTERBASE UTILIZANDO XML
Por
RANGEL JOSÉ BORDIN
Trabalho aprovado para obtenção dos créditos
na disciplina de Trabalho de Conclusão de
Curso, pela banca examinadora formada por:
Presidente:
______________________________________________________
Prof. Wilson Pedro Carli Orientador, FURB
Membro:
______________________________________________________
Prof. Alexander Roberto Valdameri, FURB
Membro:
______________________________________________________
Prof. Oscar Dalfovo, FURB
Blumenau, dia de mês de ano
Dedico este trabalho a todos os amigos,
especialmente aqueles que me ajudaram
diretamente na realização deste.
AGRADECIMENTOS
À Deus, pela minha existência e todos os dons que me deu, para mim chegar aqui.
À meus pais Agenor Bordin e Oneida Pratto Bordin, que sempre estiveram juntos
comigo, e depositaram a confiança em mim dando todos os incentivos necessários.
Aos meus irmãos Anderson Bordin e Eduardo Bordin, que me incentivaram e exigiram
de mim.
À todos os professores os professores do Curso de Bacharelado em Ciências da
Computação da Universidade Regional de Blumenau em especial o professor Wilson Pedro
Carli pela orientação deste trabalho.
Aos amigos que acreditaram em mim e me incentivaram direta ou indiretamente para a
execução deste trabalho.
Também quero agradecer a todos os colegas de faculdade que conviveram comigo e
passaram pelas mesmas barreiras que passei, convivendo diariamente comigo.
A todos muito obrigado.
RESUMO
O trabalho apresenta um protótipo que permite atualizar um banco de dados Interbase
utilizando XML, o protótipo será utilizado gerar arquivos XML com as estruturas das bases
de dados. A partir dos arquivos XML faz a comparação entre as estruturas de dados e gera o
script SQL de alteração fazendo a atualização da base de dados desatualizada.
Palavras chaves: Banco de Dados; XML.
ABSTRACT
The work presents a prototype that allows to update a database Interbase using XML, the
prototype will be used to generate XML files with the structures of the bases of data. Starting
from the files XML to do the comparison among the structures of data and to generate the
script alteration SQL making the updating of the base of data no updated.
Key-Words: Databases; XML.
LISTA DE ILUSTRAÇÕES
Figura 1 – Objetos do Banco de Dados....................................................................................16
Quadro 1 – Sintaxe para criação de tabelas....................................................................................17
Quadro 2 – Exemplo de criação de tabelas....................................................................................17
Figura 2: A XML é independente do meio...............................................................................26
Figura 3 – A estrutura de um documento XML .......................................................................27
Figura 4 – A estrutura de um banco de dados em XML...........................................................27
Quadro 3 - Lista de livros em XML..........................................................................................28
Figura 5: Aplicações trocando dados através da Web..............................................................29
Quadro 4 - Declaração do elemento livro.................................................................................30
Quadro 5 – Exemplo elementos e subelementos......................................................................31
Quadro 6 – Exemplo elementos, subelementos aninhados.......................................................31
Quadro 7 – Exemplos de nomes válidos...................................................................................32
Quadro 8 – Exemplos de nomes inválidos................................................................................32
Quadro 9 - Utilização de atributos............................................................................................33
Quadro 10 - Elemento vazio.....................................................................................................33
Figura 6 - A árvore do catálogo de endereços...........................................................................34
Quadro 11 - Elementos pais......................................................................................................34
Figura 7 - Diagrama de Contexto..............................................................................................36
Figura 8 - DBA seleciona base de dados..................................................................................36
Figura 9- Leitura do metadados da base de dados atualização.................................................38
Figura 10: Leitura do metadados da base de dados produção...................................................38
Figura 11: Gerar arquivo XML.................................................................................................39
Figura 12: Gerar arquivo SQL..................................................................................................39
Figura 13: Atualizar base de dados atualização........................................................................39
Figura 14 – Ambiente de desenvolvimento do Delphi ............................................................. 40
Figura 15 – Banco de dados Interbase...................................................................................... 41
Quadro 12 – Script SQL que faz a leitura dos dominios..........................................................41
Quadro 13 – Script SQL que faz a leitura das tabelas tabelas..................................................42
Quadro 14 – Script SQL que faz a leitura dos campos das tabelas...........................................42
Figura 16: Procedure que gera a nodo dos domínios no arquivo XML...................................43
Figura 17: Procedure que compara as estruturas de domínios dos arquivos XML..................44
Figura 18: Continuação código fonte comparação de domínios...............................................45
Figura 19: Continuação código fonte comparação de domínios...............................................46
Figura 20: Continuação código fonte comparação de domínios...............................................47
Figura 21: Continuação código fonte comparação de domínios...............................................48
Figura 22: Continuação código fonte comparação de domínios...............................................49
Figura 23: Tela principal do Protótipo......................................................................................50
Figura 24 – Domínios da base antiga ....................................................................................... 52
Figura 25 – Tabelas da base antiga........................................................................................... 52
Figura 26 – Lista de domínios depois da atualização............................................................... 52
Figura 27 – Lista de tabelas depois da atualização................................................................... 52
LISTA DE TABELAS
Tabela 1 – Uma lista de livros em um banco relacional........................................................... 28
LISTA DE SIGLAS
DBA – Administrador de Banco de Dados
DFD – Diagrama de Fluxo de Dados
MER – Modelo Entidade Relacionamento
SGBD – Sistema Gerenciador de Banco de Dados
SGML – Standard Generalized Markup Language
UDF – User-defined Function
XML – Extensible Markup Language
SUMÁRIO
AGRADECIMENTOS...........................................................................................................III
RESUMO.................................................................................................................................IV
ABSTRACT..............................................................................................................................V
LISTA DE FIGURAS.............................................................................................................VI
LISTA DE TABELAS............................................................................................................VI
1 INTRODUÇÃO.................................................................................................................. 12
1.1 OBJETIVOS...................................................................................................................... 13
2 SISTEMA DE BANCO DE DADOS................................................................................ 14
2.1 SISTEMA GERENCIADOR DE BANCO DE DADOS.................................................. 14
3 INTERBASE ...................................................................................................................... 16
3.1 CONSTRUINDO BANCO DE DADOS .......................................................................... 16
3.2 TABLES ............................................................................................................................ 17
3.3 COLUMNS........................................................................................................................ 18
3.4 DATA TYPES................................................................................................................... 19
3.4.1 TIPOS DE DADOS NUMÉRICOS ................................................................................ 19
3.4.2 TIPOS DE DADOS DE CARACTERES ....................................................................... 19
3.4.3 TIPOS DE DADOS DE DATA ...................................................................................... 19
3.4.4 TIPOS DE DADOS BLOB ............................................................................................. 19
3.4.5 TIPOS DE DADOS ARRAYS........................................................................................ 20
3.4.6 DOMAINS ...................................................................................................................... 20
3.5 INTEGRIDADE REFERENCIAL ..................................................................................... 20
3.6 INDEXES ........................................................................................................................... 21
3.8 STORED PROCEDURES.................................................................................................. 21
3.9 TRIGGERS......................................................................................................................... 22
3.10 EVENT ALERTERS........................................................................................................ 23
3.11 USER-DEFINED FUNCTIONS ...................................................................................... 23
3.12 GENERATORS................................................................................................................ 24
3.13 EXCEPTIONS.................................................................................................................. 24
4 EXTENSIBLE MARKUP LANGUAGE......................................................................... 25
4.1 APLICAÇÃO DA XML.................................................................................................... 26
4.1.1 APLICAÇÕES DE DOCUMENTOS ............................................................................. 26
4.1.2 APLICAÇÕES DE DADOS ........................................................................................... 27
4.1.3 ANALISADORES SINTÁTICOS DE XML ................................................................. 30
4.1.4 ELEMENTOS DO XML ................................................................................................ 31
4.1.4.1 NOMES EM XML ....................................................................................................... 32
4.1.4.2 ATRIBUTOS................................................................................................................ 33
4.1.4.3 ELEMENTOVAZIO .................................................................................................... 34
4.1.4.4 ANINHAMENTO DE ELEMENTOS ........................................................................ 34
5 PROTÓTIPO PROPOSTO .............................................................................................. 36
6 CONCLUSÕES.................................................................................................................. 54
REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................. 56
12
1 INTRODUÇÃO
Atualmente muitas empresas de software trabalham desenvolvendo aplicativos e a
cada tempo determinado pela empresa são lançadas novas versões destes aplicativos. São
várias as empresas que trabalham desta maneira. Uma software house pode ter diferentes
versões de seu sistema instaladas em seus clientes. Quando surge a necessidade de atualizar o
banco de dados de um cliente, caso não houver compatibilidade da nova versão do software
com a base de dados do cliente, é bem possível que ocorram problemas na implantação desta
versão no cliente, daí a necessidade de um atualizador de base de dados. Assim, a empresa
gera o script de alteração para qualquer versão, sem precisar se preocupar com o que será
alterado, apenas executando o programa de atualização.
Para atualizar o banco de dados de um cliente a empresa desenvolvedora necessita ter
um controle preciso de que versão de base de dados está no cliente e o que será necessário
alterar na base do cliente para ficar com a versão a ser implantada. O script de alteração da
base de dados pode variar de cliente para cliente, dependendo da versão em que se encontra o
cliente no momento, tendo assim a necessidade de vários scripts de atualização. Se este
controle não for seguido, a atualização da base de dados será complexa, sendo necessária
comparação com a base que será implantada e alterada de acordo com as diferenças entre
tabelas, campos e procedimentos.
Com isto, surgiu a idéia de desenvolver um aplicativo atualizador de base de dados,
que venha fazer a comparação entre a estrutura da base de dados do cliente e a estrutura da
nova base de dados, indicando as diferenças e gerando o script de alteração da base de dados
automaticamente. O protótipo do programa foi desenvolvido para atualizar bases de dados em
banco de dados Interbase, disponível na Internet fabricado pela Borland utilizado por vários
desenvolvedores. Segundo Oliveira (2000, p. 4), o Interbase contêm definições e valores por
tabelas, índices, validação de dados, gatilhos, procedimentos, que são armazenados em um
único arquivo. Neste arquivo também estão as tabelas do sistema onde contêm todas as
informações das bases de dados.
Através das tabelas do sistema Interbase é possível reunir todas as informações
necessárias para a atualização da Base de Dados. O protótipo permitirá a atualização de uma
base de dados para outra base de dados onde se quer chegar, distinguindo tabelas, campos,
relacionamentos, procedimentos, geradores, domínios, funções e índices. A estrutura do banco
13
de dados, as diferenças e a base de dados atual estarão disponíveis em um arquivo XML, de
fácil visualização ao usuário.
1.1 OBJETIVOS
O objetivo principal desta proposta é desenvolver um protótipo de um atualizador de
base de dados para um SGBD Interbase.
O protótipo tem como objetivos específicos:
a) gerar script SQL para atualização de tabelas, campos, relacionamentos,
procedimentos, geradores, domínios;
b) gerar estruturas das bases de dados em arquivos XML;
c) fornecer opção de atualização automática da base de dados.
1.2 ESTRUTURA DO TRABALHO
O trabalho foi elaborado a fim de demonstrar as tecnologias utilizadas, as etapas do
trabalho e também o código elaborado no desenvolvimento do protótipo. O trabalho segue
dando uma breve apresentação dos sistemas de banco de dados, também apresenta o banco de
dados Interbase. Também são apresentadas noções sobre a linguagem XML utilizada no
protótipo. Após os fundamentos teóricos é apresentado o desenvolvimento do protótipo
proposto e por fim as conclusões sobre o protótipo desenvolvido.
14
2 SISTEMA DE BANCO DE DADOS
Um sistema de banco de dados é um sistema que permite armazenar as informações
relevantes e específicas dos trabalhos dos usuários, mantendo estas informações centralizadas.
O sistema de banco de dados é feito de duas partes: o “Sistema Gerenciador de Banco de
Dados (SGDB)” que gerencia estas informações e outra que é o “aplicativo” um programa
que é responsável pela interface, restauração e atualização destes dados. Os sistemas de
bancos de dados podem estar armazenados no computador onde estão sendo executados,
chamados de locais, ou também podem resistir em outros terminais da rede, chamados assim
de bancos de dados Cliente/Servidor.
2.1 SISTEMA GERENCIADOR DE BANCO DE DADOS
O SGDB é responsável por fornecer um tipo de serviço de definição de dados, com o
intuito de definir os registro e campos, fornece ainda um mecanismo interno para manter estes
dados no disco e saber onde se encontra cada elemento em particular. Ainda fornece uma
maneira de inserir, consultar, atualizar, eliminar estes dados. Estes serviços também podem
ser fornecidos pelo aplicativo de banco de dados.
Segundo Salemi (1993 p. 4), ter os dados em disco e reavê-los quando quisermos não
serve para nada se não acreditarmos que os dados são precisos. O SGBD precisa fornecer
algum tipo de “integridade de dados” para garantir que ele não sejam corrompidos no meio
exterior, como por falhas de disco ou falta de energia. Ele tem, ainda, a difícil tarefa de
proteger o banco de dados contra alterações não intencionais, causas por usuários ou
aplicativos. Esses serviços são particularmente importantes para bancos de dados
multiusuários, no qual um ou mais usuários podem, ao mesmo tempo, atualizar o mesmo
dado. O SGDB tem de garantir que somente uma das alterações realmente aconteça, e deverá
notificar os outros usuários sobre a mudança feita. Um banco de dados pode armazenar
qualquer tipo de informação que o usuário desejar, mas para ser útil, os dados devem ser
armazenados de acordo com seus domínios. Um domínio é a categoria, e o tipo dos elementos
permitidos em um campo particular, como por exemplo, um conjunto de caracteres
alfabéticos, todas as palavras da língua inglesa ou somente números inteiros. De modo geral,
esse serviço é a tarefa mais importante que um SGBD pode ter. Quanto mais responsabilidade
15
ele tem de prover isso, melhor a integridade dos dados de todo o sistema de banco de dados.
Para harmonizar tudo isso, um SGBD oferece os seguintes serviços:
a) definição de dados fornece um método para definir e armazenar uma população de
dados
b) manipulação dos dados fornece serviços que permitem ao usuário inserir, atualizar,
eliminar e classificar dados.
c) apresentação dos dados fornece, opcionalmente, algum método de apresentação dos
dados para o usuário.
d) integridade dos dados fornece um ou mais métodos para assegurar a precisão dos
dados.
16
3 INTERBASE
Segundo Borland (1995 p. 9), o Interbase é um sistema SGBD, que prove
processamento e compartilhamento de dados em monousuário ou multiusuário. O Interbase é
uma tecnologia de servidor que oferece suporte transparente através de redes heterogêneas. O
Interbase é executado sob sistemas Windows 95, Windows NT, Novell NetWare, e em muitas
implementações em sistemas operacionais baseados em Unix.
O Interbase é executado em Windows 95 e Windows NT sob duas formas: Local
Interbase (monousuário) e Interbase Server (remoto, multiusuário). Ambos os servidores vem
com ferramentas clientes Windows: Windows ISQL para definição de e manipulação de
dados e Server Manager para usuários autorizados e administração do banco de dados.
CONSTRUINDO BANCO DE DADOS
Para criar um banco de dados e seus componentes, o Interbase usa uma implementação
do SQL conforme o padrão ANSI SQL-89 e segue especificações SQL-92 e SQL3 beta para
formas avançadas.
De acordo com Borland (1995 p. 24), construir um banco de dados envolve definição
de dados. Para este propósito, o Interbase provê conjunto de declarações chamado de
linguagem de definição de dados.
Um banco de dados de Interbase é um único arquivo que inclui todos os metadados e
dados do banco de dados, cada arquivo possui a estrutura de seus metadados. Para criar um
banco de dados Interbase, usa-se o Windows ISQL ou linha de comando-linha ISQL. Abaixo,
na figura 1 apresenta-se os objetos do banco de dados.
17
Fonte: Borland (1995, p. 24)
Figura 1: Objetos do Banco de Dados.
Um banco de dados consiste em uma variedade de objetos de banco de dados, como
tables, views, domains, stored procedures, triggers, functions e outros objetos. Objetos de
banco de dados contêm toda a informação sobre estrutura do banco de dados, devido
encapsularem informações sobre os dados, objetos de banco de dados algumas vezes são
chamados de metadados.
3.1 TABLE
Para Borland (1995 p.25), bancos de dados relacionais armazenam todos seus dados
em tables (tabelas). Uma tabela é uma estrutura de dados que consiste em um conjunto de
linhas desordenadas horizontais, cada linha contém o mesmo número de colunas verticais. A
intersecção de uma linha individual e uma coluna é um campo que contém um pedaço
específico de informação. Muito do poder de bancos de dados de relacionais vem de definir as
relações entre as tabelas.
Conforme Oliveira (2000 p. 75), a sentença de criação de tabelas no Interbase é
composta de diversos parâmetros, utilizados para configurar o armazenamento físico. Esses
parâmetros devem ser otimizados pelo DBA, que é um profissional com grande experiência e
conhecimento profundo de banco de dados. Para criar tabela, deve-se utilizar o comando
Create Table, que tem a seguinte sintaxe:
18
create table <nome da tabela> [external file <NomedoArquivo]>] (
<DefColuna> [, <Defcoluna > | <Restrição> ...]
);
Fonte: Oliveira (2000, p. 75)
Quadro 1 – Sintaxe para criação de tabelas
Exemplo:
create table Empregado (
Codigo integer,
Nome varchar,
Sobrenome varchar,
Salário integer,
NomeCompleto computed by (Nome || “” || Sobrenome),
/*...*/
);
Fonte: Oliveira (2000, p. 75)
Quadro 2 – Exemplo de criação de tabelas
onde:
<nome da tabela>: é o nome da tabela que desejamos criar.
<nome do arquivo>: indica o nome do arquivo de dados externo no qual ser guardada a
tabela.
<nome da coluna>: é o nome da coluna (campo) que se deseja criar.
3.3 COLUMNS
Para criar uma tabela envolve principalmente as definições de colunas da tabela. Os
principais atributos de uma coluna incluem:
a) O nome da coluna;
b) O tipo de dados ou o domínio ao qual é definido;
c) Se é permitido ou não gravar nulo em uma coluna;
d) Criação opcional de integridade referencial.
19
3.4 DATA TYPES
Os dados são armazenados em um formato predefinido chamado de um data type (tipo
de dado). Tipos de dados podem ser classificados em quatro categorias: numéricos, caracteres,
data and BLOB. O tipo de dados numérico envolve os tipos inteiros, double-precision e
valores de ponto flutuantes. Tipos de dados de caracteres envolvem string de texto. Tipos de
dados de data são usados para armazenar data e valores de tempo. Interbase também suporta
arrays destes tipos de dados padrões.
3.4.1 TIPOS DE DADOS NUMERICOS
Tipos de dados numéricos são: SMALLINT, INTEGER, FLOAT, DOUBLE
PRECISION, NUMERIC, e DECIMAL. A maioria destes corresponde a um tipo de dado
similar em C. Por exemplo, SMALLINT tipicamente corresponde a short em C, e DOUBLE
PRECISION corresponde a double. Quando comparado ou nomeado para diferentes tipos
numéricos, o Interbase controla muitas conversões automaticamente.
3.4.2 TIPOS DE DADOS DE CARACTERES
Tipos de dados de caracteres são CHAR e VARCHAR. Eles permitem armazenar
múltiplos strings de caracteres em uma coluna. CHAR e VARCHAR diferem do modo que são
tratados caráter extras. O tipo de dado CHAR usam todos os caracteres até o fim da ordem,
mas o tipo de dado VARCHAR difere por aceitar o caractere NULO.
3.4.3 TIPOS DE DADOS DE DATA
O tipo de dado DATE são usados para armazenar datas e valores de tempo. O
Interbase controla o armazenamento e comparação entre strings e datas. Valores em strings
que representam data podem estar em diferentes formatos, como “12-1-94” e “1 de dezembro
de 1994”. Também dá suporte à outras constantes de datas como “HOJE”, “TOMORROW”.
3.4.4 TIPOS DE DADOS BLOBS
De acordo com Borland (1995 p.27), o Interbase da suporte a um tipo de dado BLOB
que pode armazenar dados de tamanho de sem limite. O tipo de dado BLOB é análogo a um
arquivo plano porque podem ser armazenados dados BLOB em qualquer formato (por
20
exemplo, binário ou ASCII). Porém, um BLOB não é um arquivo separado. O tipo BLOB é
armazenado no banco de dados com todos os outros dados. Porque uma coluna BLOB contêm
freqüentemente dados grandes, e variáveis, colunas BLOB são armazenadas e acessadas em
segmentos.
Conversão de dados de BLOB para outros tipos de dados em Interbase não é
diretamente suportado, mas em algumas plataformas, filtros de BLOB podem traduzir dados
BLOB de um formato BLOB para outro.
3.4.5 TIPOS DE DADOS ARRAYS
O Interbase aceita arrays de todos os tipos de dados, exceto BLOB. Um array é uma
coleção de valores, ou elementos, cada um do mesmo tipo de dado. Arrays de elementos
individuais, blocos de elementos contíguos, ou a ordem inteira pode ser acessada usando
declarações de SQL padrões e com chamadas a API.
3.4.6 DOMAINS
Declara os dados a serem inseridos nas colunas, o Interbase permite definições globais
de colunas, ou domains nos quais podem ser feitas certas definições. Um domínio especifica
um tipo de dado, seta atributos e integridades. Subseqüente, outras tabelas podem usar o
domínio definido em suas colunas.
3.5 INTEGRIDADE REFERENCIAL
Conforme Borland (1995 p. 27), o Interbase permite você definir regras de
integridades para uma coluna, chamadas de integridades referenciais. Integridades referenciais
governam relacionamentos de coluna para tabela e tabela para tabela e valida os dados de
entrada. Elas são implementadas através de chaves primárias, chaves estrangeiras, restrições.
Basicamente uma chave primaria, é uma coluna (ou grupo de colunas) que identificam
unicamente uma linha na tabela. Uma chave estrangeira é uma coluna de que o valor precisa
estar inserido em uma coluna de outra tabela. Uma restrição de checagem limita dados de
entrada e especifica o intervalo ou conjunto de valores.
21
3.6 INDEXES
Indexes (Índices), são mecanismos para dar velocidade na consulta aos dados. Um
índice identifica a coluna que pode ser usada para consultar e ordenar as linhas eficientemente
na tabela. Provê um meio para pesquisar apenas um subconjunto de linhas da tabela,
melhorando a velocidade de acesso aos dados.
Segundo Oliveira (2000), o Interbase cria índices de forma automática para manter as
restrições de chave primária e de integridade referencial. Na maioria dos casos, estes índices
são suficientes para que o sistema funcione eficientemente, porém, em algumas condições é
necessário definir índices sobre outras colunas. Esta decisão depende da freqüência com que
se realizem consultas de valores armazenados nelas e a possibilidade de “pedir” que uma
tabela se ordene de acordo com os valores definidos.
Os índices criados pelo Interbase são sensíveis a letras maiúsculas e minúsculas e
todos são mantidos por omissão. O conceito de índice por expressões e condição de filtro é o
mesmo da filosofia SQL, porém este tipo de índices não se adapta facilmente a otimização
automática de consultas.
3.7 STORED PROCEDURES
De acordo com Borland (1995 p. 28), uma stored procedure éum programa autosuficiente escrito em procedimento de Interbase, uma extensão do SQL. São partes do
metadado do banco de dados que podem receber parâmetros de entrada e retornar valores para
as aplicações, e podem ser executados explicitamente em aplicações ou substituir o nome de
uma tabela em uma instrução SELECT.
Stored procedure provê:
a) Design Modular: stored procedures podem ser compartilhadas por aplicações que
acessam o mesmo banco de dados, eliminando código duplicado e reduzindo o
tamanho das aplicações.
b) Manutenção de Streamlinead: quando uma procedure é atualizada, as alterações
são refletidas automaticamente em todas as aplicações que usam o banco sem a
necessidade para recompilar ou conectar novamente ao banco.
22
c) Desempenho melhorado: especialmente para acesso de clientes remotos. Stored
procedures são executadas pelo servidor, não no cliente, isto reduz o trafego na
rede.
3.8 TRIGGERS
Em Oliveira (2000 p.106) é colocado que é uma das possibilidades mais importantes
nos bancos de dados relacionais são os triggers, que são Stored Procedures ativadas
automaticamente ao se executar operações de modificação sobre tabelas de bancos de dados.
A diferença para os triggers de outros sistemas de banco de dados é que os do
Interbase se definem para uma só operação sobre uma tabela. Se compartilhar o código para
eventos de atualização de uma ou de várias tabelas, pode-se colocar este código em uma
Stored Procedure e chamá-lo em todos os triggers.
Conforme Borland (1995 p. 29), uma trigger é uma rotina auto-suficiente associada
com uma table ou view que automaticamente executa uma ação quando uma linha na table ou
view é inserida, atualizada, ou apagada.
Triggers podem prover:
a) Execução automática de restrição de dados para assegurar que os usuários entre só
com valores validos em colunas.
b) Manutenção de aplicação reduzida, porque mudanças para um trigger são
automaticamente refletidas em todas as aplicações que usam a mesma tabela sem
necessidade de recompilar a aplicação.
c) Log automático de mudanças em tabelas. Uma aplicação pode manter um tronco de
mudanças por um trigger que é executado quando a tabela for alterada.
d) Alertas de eventos em triggers podem ser automaticamente notificar as aplicações
de alterações no banco de dados.
Quando uma trigger é invocada, tem dados de acesso imediato que são armazenados,
modificados ou apagados. O triggers também podem acessar dados em outras tabelas. Usando
os dados disponíveis, os triggers podem ser projetados para:
23
a) Abortar uma operação, possivelmente com uma mensagem de erro.
b) Atribuir valores ao registro acessado.
c) Inserir, atualizar, ou apagar colunas em outras tabelas.
d) Sinalizar quando um evento ocorreu usando o alerta de eventos.
3.9 EVENT ALERTERS
De acordo com Borland (1995 p. 29), um Event Alerter (Alerta de Eventos) é uma
mensagem passada do banco de dados para a aplicação, sinalizando a ocorrência de um
evento do banco de dados. Um evento é uma modificação ou um conjunto de modificações no
banco de dados que é importante para a aplicação.
Um alerta de evento pode ser enviado diretamente de uma aplicação ou de um trigger.
Se um trigger é usado, pode-se definir o evento de notificação quando houver uma inserção,
atualização, ou apagado algum registro em uma determinada tabela. Pode-se usar de triggers
para determinar as condições específicas do evento. Assim, um evento poderia ser bem desde
“uma linha foi armazenada na tabela X”, ou mais específico, como “o preço de Y excedeu seu
valor avaliado”. Uma aplicação pode deixar de processar e pode esperar por qualquer número
de eventos para acontecer. Alternativamente, a aplicação pode receber notificação de eventos
assincronamente, permitindo executar outro trabalho até ser interrompido pelo alerta de
eventos.
3.10 USER-DEFINED FUNCTIONS
Conforme Borland (1995 p. 30), uma user-defined function (UDF) é um programa
com linguagem de servidor que é executado no servidor e é chamado através de aplicações de
banco de dados. Uma vez declarada a UDF em um banco de dados, qualquer aplicação que
usa o banco de dados pode usar a função ao acessar dados.
UDFs são usados para executar tarefas customizadas, freqüentemente usadas em
aplicações, para computações estatísticas, ou para conversões de dados que não são apoiadas
diretamente pelo Interbase.
24
3.11 GENERATORS
Segundo Oliveira (2000 p. 108), o generator é um recurso do Interbase para
disponibilizar valores seqüenciais. Um generator é criado do mesmo modo que as Stored
Procedures e triggers.
3.12 EXCEPTIONS
De acordo com Oliveira (2000 p. 109), as exceptions (excessões) são utilizadas para
parar instruções SQL, sendo esta operação necessária para simular restrições de propagação
em cascata de integridade referencial. As exceções do Interbase são criadas associando uma
cadeia de mensagens a um identificador.
25
4 EXTENSIBLE MARKUP LANGUAGE (XML)
Segundo Marchal (2000 p. 8), a XML é uma nova linguagem de marcação
desenvolvida pela W3C (World Wide Web Consortium) principalmente para solucionar as
limitações da HTML. A W3C é a organização encarregada em desenvolver e manter a maior
parte dos padrões da Web, principalmente HTML. A HTML é uma linguagem de marcação
extremamente popular, inicialmente para publicação de documentos na Web. No princípio,
em sua primeira versão, a HTML tinha cerca de uma dúzia de tags, com o passar das versões
este número foi aumentando. Hoje a versão mais recente (HTML 4.0) tem cerca de cem tags
(sem contar os tags específicos do navegador). Com isto a HTML não é mais uma linguagem
pequena, as combinações de tags são quase infinitas e os resultados esperados podem ser
diferentes de um navegador para outro.
A XML não surgiu para substituir a HTML, ao menos a curto e médio prazo. A XML
criou novas possibilidades. Segundo Marchall (2000 p. 9), algumas das áreas, a curto prazo
em que o XML será útil são:
a) Manutenção de grande site Web. A XML trabalharia para simplificar a criação de
documentos HTML;
b) Troca de informações entre organizações;
c) Descarga e recarga de bancos de dados;
d) Conteúdo publicado, onde o conteúdo está disponível a diversos sites Web;
e) Aplicações de comercio eletrônico, onde diferentes organizações colaboram para
atender um cliente;
f) Aplicações científicas com novas linguagens de marcação para fórmulas
matemáticas e químicas;
g) Livros eletrônicos com novas linguagens de marcação para expressar direitos e
propriedade;
h) Dispositivos portáteis e telefones inteligentes com novas linguagens de marcação
otimizadas para esses dispositivos alternativos;
26
i) Com a crescente demanda no mercado de dispositivos portáteis como Palm, e pelo
baixo poder de processamento destes equipamentos para processar páginas HTML,
a necessidade de uma linguagem mais simples é necessária. A XML trouxe-se duas
mudanças essenciais em relação ao HTML que são:
-
Não predefine tag nenhum, ou seja, o autor cria as tags de que precisar.
-
É uma linguagem mais estrita, ou seja, sua sintaxe é mais simples que a do
HTML,
-
por exemplo, muitos desenvolvedores de sites utilizam editores HTML, não se
preocupando com o código HTML gerado, tornando estas páginas maiores e
mais lentas, um problema para os dispositivos portáteis que não pode fazer
transferência de navegadores com mais de 10 MB. Uma linguagem mais estrita
resulta em navegadores menores, mais velozes e mais leves.
4.1 APLICAÇÃO DA XML
Segundo Marchal (2000 p. 32), a XML não é uma linguagem feita apenas para
publicação de sites Web. As aplicações da XML são classificadas basicamente em dois tipos:
aplicações de documentos que manipulam informações voltadas principalmente ao consumo
humano; e aplicações de dados que manipulam informações voltadas principalmente para o
consumo do software. O padrão XML é o mesmo para estes dois tipos, implementado com as
mesmas ferramentas mas para atender objetivos diferentes.
4.1.1 APLICAÇÕES DE DOCUMENTOS
A principal vantagem do uso da XML para este tipo de aplicação é que a XML se
concentra na estrutura do documento e o torna independente do meio de distribuição. Desta
maneira é preciso somente editar estes arquivos serão publicados automaticamente nos
diferentes meios, como ilustrado na figura 2.
27
Fonte: Marchal (2000, p. 33)
Figura 2: A XML é independente do meio.
Por exemplo, numa empresa o desenvolvimento de um site pode ser otimizado para
um browser específico como o internet explorer, quando esta empresa tiver um cliente que
necessite este site sem erros de script em outro browser, surge a necessidade de uma nova
versão dos site. Neste sentido seria útil a utilização de um formato independente do meio,
como o XML, basta converte-lo automaticamente para os formatos de publicação HTML.
Quanto maior a quantidade de mídia e quanto maior for o documento, mais importante será o
papel de automatização da publicação.
4.1.2
APLICAÇÕES DE DADOS
Algumas linguagens que vieram surgindo como a Standard Generalized Markup
Language (SGML), tinha o objetivo de fornecer acesso a banco de dados e outras
ferramentas. Segundo Marchal (2000 p. 34), com o XML, o círculo foi fechado, pois ela traz
uma espécie de distribuição de dados para publicação. Isso leva ao conceito de “a aplicação
como o documento”, onde, por fim, não há diferenças entre documentos e aplicações. Na
verdade, se a estrutura de um documento pode ser expressa em XML, como ilustrado na
Figura 3, a estrutura de um banco de dados também pode, conforme ilustrado na Figura 4.
28
Fonte: Marchal (2000, p. 34)
Figura 3 – A estrutura de um documento XML.
Fonte: Marchal (2000, p. 34)
Figura 4 – A estrutura de um banco de dados em XML.
29
Na Tabela 1, abaixo, temos uma lista de livros em um banco de dados relacional:
Código
Título
Autor
Páginas
01
Projetos de Bancos de Dados Relacionais
Jan L. Harrington
360
02
Fundamentos do Desenho Orientado a Larry L. Constantine
462
Objeto com UML
03
Strategic XML
W. Scott Means
04
Princípios de Análise e Projeto de Eduardo Bezerra
245
286
Sistemas com UML
05
Criando uma Loja Virtual em ASP
Adelize Oliveira
283
Tabela 1: Uma lista de livros em um banco relacional.
Abaixo na tabela 2, mesma lista de livros em XML:
<?xml version=”1.0”?>
<livros>
<livros cod=”01”>
<titulo>Projetos de Bancos de Dados Relacionais</titulo>
<autor>Jan L. Harrington</autor>
<paginas>360</paginas>
</livro>
<livros cod=”02”>
<titulo>Fundamentos de Desenho Orientado a Objeto com UML</titulo>
<autor>Larry L. Constantine</autor>
<paginas>462</paginas>
</livro>
<livros cod=”03”>
<titulo>Strategic XML</titulo>
<autor>W. Scott Means</autor>
<paginas>245</paginas>
</livro>
<livros cod=”04”>
<titulo>Princípio de Análise e Projetos de Sistemas com UML</titulo>
<autor>Eduardo Bezerra</autor>
<paginas>286</paginas>
30
</livro>
<livros cod=”05”>
<titulo>Criando uma Loja Virtual em ASP</titulo>
<autor>Jan L. Harrington</autor>
<paginas>283</paginas>
</livro>
Quadro 3 - Lista de livros em XML
Aplicando estes conceitos podemos fazer troca de informações entre as empresas, bem
como a publicação de alguns destes dados na Web,.com uma extensão das extranets. Segundo
Marchal (2000 p. 35), a XML na Web é um grande banco de dados onde aplicações podem se
comunicar, como ilustrado na figura 5.
Fonte: Marchal (2000, p. 36)
Figura 5: Aplicações trocando dados através da Web.
No banco de dados de uma empresa podem estar informações de seus produtos que
estão disponíveis a usuários da internet assim como empresas. Com a utilização da XML
pode-se fazer uma atualização dinâmica destas informações, deixando estes usuários sempre
atualizados e o aplicativo das empresas clientes pode se comunicar com a XML e importar
estas informações atualizadas.
4.1.3 ANALISADORES SINTÁTICOS DE XML
São responsáveis por processar os documentos XML. Os aplicativos que quiserem
utilizar a XML devem ter seus próprios analisadores sintáticos de acordo com a estrutura da
31
XML. Esta analise sintática de documento pode ser feita de dois métodos diferentes: pela
análise sintática baseada em fluxo (stream) e pela análise sintática baseada em árvore (tree).
Os analisadores baseados em fluxo utilizam o documento como um fluxo de dados,
onde este fluxo é armazenado em um buffer de memória que a medida que forem encontrados
elementos XML eles são tratados e processados de acordo com o que o programador quer
fazer. O principal fato de uso de analisadores baseados em fluxo é por serem rápidos e
utilizarem pouca memória. O modelo mais popular de análise por fluxo é o SAX, ou Simple
Application Progamming Interface for XML.
Os analisadores baseados em árvores constroem o documento XML como se fosse
uma árvore formada por raiz, nós e subnós. Este é a análise mais utilizada, e a mais fácil,
porém apresenta algumas desvantagens em relação a análise baseada em fluxo que seria o
consumo da memória. Quanto maior for o documento XML mais memória precisará ser
alocada. O DOM ou Document Object Model é o mais popular dos modelos de análise
baseada em Arvore.
4.1.4 ELEMENTOS DO XML
Segundo Martinsson (2002 p. 25), os documentos XML são constituídos por
elementos do XML. O elemento do XML é um contêiner de informações com nome e
descritivo. Esse contêiner é formado por uma marca (tag) de abertura e uma marca de
fechamento, e entre as marcas, encontra-se o conteúdo, ou valor, do elemento do XML.
Abaixo, podemos ver a declaração do elemento Livro com o conteúdo Banco de Dados
Interbase com Delphi:
<?xml version=”1.0”?>
<Livro>Banco de Dados Interbase com Delphi</Livro>
Quadro 4 – Declaração do elemento livro
Estes elementos podem conter subelementos. Esses subelementos devem estar
envolvidos por um único elemento chamado de elemento de nível mais alto ou nível-raiz.
Abaixo temos um exemplo onde podemos ver o elemento raiz “Livro” com seus subelementos
“Titulo” e “Autor”:
32
<?xml version=”1.0”?>
<Livro>
<Titulo>Banco de Dados Interbase com Delphi</Titulo>
<Autor>Wilson José de Oliveira</Autor>
</Livro>
Quadro 5 – Exemplo elementos e subelementos
Se tivéssemos mais Livros o documento XML se tornaria mais complexo, e os
elementos livros deverão ser aninhados adequadamente. Se aninhados apropriadamente, o
documento XML se torna organizado e auto-explicativo. Se fossemos inserir mais um livro no
exemplo anterior, nosso elemento de alto nível seria perdido. O analisador sintático reclama,
quando não existe o elemento de nível raiz. Desta maneira teríamos que criar um novo
elemento de nível mais alto chamado “Livros”. Tornando assim nosso documento mais
extensível:
<?xml version=”1.0”?>
<Livros>
<Livro>
<Titulo>Banco de Dados Interbase com Delphi</Titulo>
<Autor>Wilson José de Oliveira</Autor>
</Livro>
<Livro>
<Titulo>Banco de Dados Cliente/Servidor</Titulo>
<Autor>Joe Salemi</Autor>
</Livro>
</Livros>
Quadro 6 – Exemplo elementos, subelementos aninhados
4.1.4.1 NOMES EM XML
Os nomes em XML seguem certas regras, necessariamente tem que começar com o
caractere sublinado (_) ou com uma letra. Os demais caracteres devem ser letras, sublinados,
ponto (.) ou hífen (-). Não são permitidos espaços em branco e o nome não pode começar com
a string ‘xml’, que é reservada para a própria especificação XML. Letras maiúsculas e
minúsculas são diferenciadas em XML.
33
Alguns exemplos de nomes válidos são:
<livro>
<a>
<nome.cliente>
<pré-nome>
Quadro 7 – Exemplos de nomes válidos
Alguns exemplos de nomes inválidos, que não devem ser usados:
<123>
<nome cliente>
<joão&silva>
Quadro 8 – Exemplos de nomes inválidos
Existem algumas convenções utilizadas para nomenclatura dos elementos. Aqui vou
descrever as mais comuns, mas existem outras convenções. Por convenção, os elementos
HTML nos documentos XML aparecem sempre em maiúsculas, os elementos XML são
escritos em minúsculas. Quando um elemento possui um nome com várias palavras, estas
palavras normalmente por convenção são separadas por hífen como “Código-Cliente”, outra
convenção é iniciar com maiúscula a primeira letra de cada palavra como em
“CodigoCliente”.
4.1.4.2 ATRIBUTOS
Os elementos podem conter atributos que descrevem os objetos, anexando
informações. Os atributos possuem um nome e um valor, os nomes utilizando as mesmas
regras de nomes dos elementos. Os elementos podem ter vários atributos, os atributos são
declarados na tag de início e o nome do atributo deve ser separado de seu valor pelo sinal de
igualdade (=). O valor deve estar entre aspas ou apóstrofos. Abaixo um exemplo da utilização
de atributos em elementos, o elemento “Livro” possui um atributo classificação com o valor
“Bom”:
34
<?xml version=”1.0”?>
<Livros>
<Livro Classificação=”Bom”>
<Titulo>Banco de Dados Interbase com Delphi</Titulo>
<Autor>Wilson José de Oliveira</Autor>
</Livro>
</Livros>
Quadro 9 – Utilização de atributos
4.1.4.3 ELEMENTO VAZIO
Os elementos que não possuem conteúdo são considerados “elementos vazios”. Um
elemento vazio normalmente é usado para utilizar o valor de seu conteúdo. Existe uma
notação diferente para elementos vazios, onde é omitida a tag de fechamento e simplesmente
colocada uma barra antes da marca de fechamento da tag de inicio. No exemplo a seguir temse o elemento email com o atributo href que possui o valor [email protected].
<?xml version=”1.0”?>
<email href=”[email protected]”/>
Quadro 10 – Elemanto vazio
4.1.4.4 ANINHAMENTO DE ELEMENTOS
O documento XML é uma árvore de elementos, onde os elementos podem conter texto
ou outros elementos. Necessariamente todos os elementos do documento devem ser filhos de
um elemento que é o elemento raiz do documento XML e não existe um limite para o número
de elementos e nem um limite para a profundidade da árvore. Os elementos podem ter um
mesmo nome, veja na figura 6 abaixo:
35
Fonte: Marchal (2000, p.53)
Figura 6: A árvore do catálogo de endereços.
Os elementos que possuem outros elementos são chamados de pais, e os elementos
contidos nestes elementos pais são chamados de filhos. Os tags de fim dos elementos filhos
nunca aparecerão depois dos elementos pai, ficando sempre no limite de seu pai, como no
exemplo:
<?xml version=”1.0”?>
<Clientes>
<Cliente Cód=”01”>
<Nome>João da Silva</Nome>
<Sexo>Masculino</Sexo>
<Idade>38</Idade>
</Cliente>
<Cliente Cód=”02”>
<Nome>Cláudia Machado</Nome>
<Sexo>Feminino</Sexo>
<Idade>20</Idade>
</Cliente>
</Clientes>
Quadro 11 – Elementos pais
36
5 DESENVOLVIMENTO DO TRABALHO
O interesse de desenvolver um protótipo de atualizador de banco de dados surgiu no
dia a dia onde se usava o Interbase como banco de dados numa aplicação que vários
estabelecimentos comerciais utilizavam. Os clientes usavam uma versão de um software
comercial enquanto era desenvolvida na empresa uma nova versão do sistema. Quando havia
a necessidade de atualizar um cliente, por solicitação de uma rotina nova, correções, ou
qualquer outro motivo, e quando estas atualizações envolviam alterações no banco de dados,
essas alterações deviam ser muito bem documentadas para na atualização serem efetuadas no
cliente. Com a idéia do atualizador, apenas executando o aplicativo no cliente bastaria para
deixar o banco de dados do cliente exatamente como deve ficar para a nova versão a ser
implantada.
Neste capítulo, serão apresentadas as etapas de desenvolvimento do aplicativo,
descrevendo todas as etapas de desenvolvimento, iniciando pela especificação, depois
implementação e desenvolvimento.
5.1 REQUISITOS PRINCIPAIS DO PROBLEMA A SER TRABALHADO
Os principais requisitos do aplicativo atualizador de base de dados são:
a) permitir escolha das bases de dados a serem comparadas;
b) manter informações do banco de dados;
c) gerar documentos XML com as informações dos bancos de dados;
d) gerar script SQL de alteração;
e) permitir atualização automática;
f) atualizar banco de dados;
Seu principal foco é voltado para a atualização do banco de dados, com o aplicativo de
atualização, o usuário (DBA) não irá se preocupar com as estruturas, apenas atualizar os
dados.
37
5.3 ESPECIFICAÇÃO
A metodologia utilizada foi a análise estruturada, utilizando a ferramenta Power
Designer para representação. A especificação segue até o diagrama de fluxo de dados, não
havendo necessidade de uma representação do modelo entidade relacionamento (MER).
5.3.1 DIAGRAMA DE CONTEXTO
No diagrama estão representadas as entidades externas envolvidas.
Figura 7: Diagrama de Contexto
5.3.2 DIAGRAMA DE FLUXO DE DADOS
Na figura 8, temos o DFD que representa o DBA selecionando as bases de dados:
Figura 8: DBA seleciona base de dados.
38
Na Figura 9, abaixo, está representando o aplicativo fazendo a leitura do metadados da
base de dados da atualização:
Figura 9: Leitura do metadados da base de dados atualização.
Na figura 11, representa o aplicativo fazendo a leitura do metadados da base de dados
produção, que servirá de modelo para a base dados de atualização:
Figura 10: Leitura do metadados da base de dados produção.
39
Na figura 11, tem-se o DFD representando o arquivo XML que deverá ser gerado para
o DBA:
Figura 11: Gerar arquivo XML
Na figura 12, tem-se o DFD representando o arquivo SQL que deverá ser gerado para
o DBA:
Figura 12: Gerar arquivo SQL.
Na figura 13, o DFD representando a atualização da base de dados de atualização:
Figura 13: Atualizar base de dados atualização.
40
5.3.1 TÉCNICAS E FERRAMENTAS UTILIZADAS
Para implementação do protótipo foram utilizadas as ferramentas Delphi 7 (na figura
7), onde mostra o ambiente de desenvolvimento desta ferramenta e os componentes utilizados
para conexão com o banco de dados Interbase e também o componente utilizado para gerar os
arquivos XML.
Figura 14: Ambiente de desenvolvimento do Delphi
41
Na figura 8, é apresentado o IBConsole do Banco de dados Interbase que permite o
gerenciamento do banco de dados. Nesta figura é visualizado os objetos do banco de dados, e
mostrando mais em específico as tabelas de um banco de dados exemplo.
Figura 15: Banco de dados Interbase
Com o Delphi, através dos componentes da paleta Interbase, foi possível fazer a
conexão com os bancos de dados, e utilizar queries com scripts SQL que permitem a extração
dos metadados dos bancos de dados. Abaixo no quadro 12 tem-se o script utilizado para
retirar as informações referentes aos domínios:
SELECT * FROM RDB$FIELDS WHERE RDB$SYSTEM_FLAG<>1 AND
RDB$FIELD_NAME NOT LIKE 'RDB$%' ORDER BY RDB$FIELD_NAME
Quadro 12 – Script SQL que faz a leitura dos dominios
No quadro 13 abaixo está o script para retirar as informações do metadado das tabelas:
42
SELECT
RDB$RELATION_NAME
RDB$RELATION_NAME
NOT
from
LIKE
RDB$RELATIONS
'RDB$%'
WHERE
ORDER
BY
RDB$RELATION_NAME
Quadro 13 – Script SQL que faz a leitura das tabelas.
No quadro 14 está o script para retirar as informações do campo da tabela, onde é
passado como parâmetro o nome da tabela, através da propriedade master source da query.
Trazendo assim informações referentes aos campos da tabela passada como parâmetro:
SELECT * FROM RDB$RELATION_FIELDS where RDB$SYSTEM_FLAG<>1
AND
RDB$RELATION_NAME
=
:RDB$RELATION_NAME
ORDER
BY
RDB$FIELD_POSITION
Quadro 14 – Script SQL que faz a leitura dos campos das tabelas.
Existe no Delphi um componente da paleta Internet chamado de “XML Document”,
que permite criar e manipular arquivos do tipo XML. Percorrendo a query após feita a leitura
e manipulando o componente XML Document foi possível criar os nodos das estruturas lidas.
43
No figura 16 abaixo está o código fonte para gerar as estruturas dos
domínios:
Figura 16: Procedure que gera a nodo dos domínios no arquivo XML
As estruturas para generators, tabelas e campos de tabelas foram feitas de maneira
semelhante, apenas obedecendo suas partivularidades.
Depois de gerados os arquivos XML das duas estruturas de dados, é feita então a
comparação entre as estruturas destes arquivos através da manipulanção o componente XML
Document.
Abaixo, na figura 17, está o código fonte que faz a comparação entre os domínios:
44
Figura 17: Procedure que compara as estruturas de domínios dos arquivos XML.
45
Figura 18: Continuação código fonte comparação de domínios.
46
Figura 19: Continuação código fonte comparação de domínios.
47
Figura 20: Continuação código fonte comparação de domínios.
48
Figura 21: Continuação código fonte comparação de domínios.
49
Figura 22: Continuação código fonte comparação de domínios.
3.4 APRESENTAÇÃO DO PROTÓTIPO
Nesta etapa, será demonstrada a utilização do aplicativo passo a passo, de acordo com
a funcionalidade do mesmo.
O protótipo do aplicativo atualizador dispõe apenas de uma tela principal, onde estão
todas as informações necessárias para o processo de atualização. Na tela principal, o DBA irá
escolher o banco de dados do cliente a ser atualizado e também o banco de dados ao qual se
quer comparar, entrando com os respectivos usuários e senhas. Também nesta tela estarão
disponíveis opções para o DBA escolher o que atualizar no banco de dados como tabelas,
índices, domínios, etc. A tela também permite uma visualização em grids de quais
informações estão sendo extraídas. O DBA poderá escolher em que diretório serão gerados os
arquivos XML, gerar um arquivo SQL com os scripts de alteração de base, também pode
50
escolher uma opção de atualização automática de banco de dados. Quando o aplicativo é
executado, a primeira janela, sua janela principal e única abrirá. A Figura 16 abaixo mostra a
janela principal do protótipo:
Figura 23: Tela principal do Protótipo.
De acordo com a numeração na tela da figura acima será demonstrada a
funcionalidade da tela do atualizador. As funcionalidades são as seguintes:
a) O DBA irá selecionar o arquivo de extensão (*.GDB) do banco de dados atual
(modelo de banco de dados).
b) Nome do usuário do banco de dados atual;
51
c) Senha do usuário do banco de dados atual;
d) O DBA selecionará o banco de dados que será atualizando, selecionando o arquivo e
(*.GDB).
e) Nome do usuário do banco de dados que será atualizado;
f) Senha do usuário do banco de dados que será atualizado;
g) O DBA irá escolher um diretório para serem armazenados os arquivos XML e
também o script SQL se posteriormente ele optar por esta opção. O nome dos
arquivos XML gerados serão “BaseAtual.xml“ para a base atual e “BaseAntiga.xml”
para a base de dados que será atualizada. O nome do arquivo SQL será
“CriaBanco.sql”;
h) O DBA irá escolher as estruturas do banco de dados a serem atualizadas;
i) O DBA irá utilizar está opção se quiser que o sistema forneça um script SQL de
alteração;
j) Se marcar está opção o programa irá fazer uma atualização automática da base de
dados a ser atualizada.
k) Permite visualizar as estruturas que estão sendo geradas. Só para fins de visualização.
Após as etapas acima é só pressionar o botão rodar para que o aplicativo execute de
acordo com as opções selecionadas. No lado direito, é possível visualizar as estruturas que
estão sendo geradas no arquivo XML.
Na figura 17 e 18 abaixo, está o banco de dados que será atualizado, nota-se que o
banco de dados não apresenta nenhum domínio e nenhuma tabela criada.
52
Figura 24: Domínios da base antiga. Não existe domínio criado
Figura 25: Tabelas da base antiga. Não existe nenhuma tabela no banco de dados.
53
Após o DBA pressionar o botão “rodar”, o programa cria as estruturas exatamente
como se encontra no banco de dados exemplo do Interbase Employee. Podemos verificar na
figura 19 e figura 20.
Figura 26: Lista de domínios depois da atualização
Figura 27: Lista de tabelas depois da atualização
54
6 CONCLUSÕES
Após o término deste trabalho, concluiu-se que os objetivos foram atingidos. Os
arquivos XML foram gerados a partir dos bancos de dados selecionados pelo DBA. Os scripts
SQL de alteração foram gerados para domínios, generators, exceptions, e criação de tabelas.
Mas bastou para demonstrar a técnica utilizada, sendo que para as outras estruturas o princípio
é o mesmo, apenas mudariam as regras de comparação. À partir do arquivo SQL gerado foi
possível fazer a atualização automática. Foi efetuada a criação dos documentos XML e
posteriormente a comparação entre as estruturas criadas nestes documentos. Pode-se verificar
como válida a utilização da linguagem XML para armazenar as estruturas de bases de dados,
bem como a comparação entre elas, manipulando os documentos criados. A geração dos
scripts de alteração foram feitas para algumas estruturas como generators, domínios. Outras
estruturas funcionam de maneira parcial, como as tabelas, que devido a complexidade e
quantidade de restrições de integridades referenciais dificultaram o estudo. Foi de grande
dificuldade também descobrir os campos necessários (o que cada campo significava) para a
atualização na estrutura do banco de dados Interbase, algumas sendo sanadas através do guia
de usuário. Outra dificuldade encontrada foi na maneira de manipular o arquivo XML, ainda
desconhecidas no princípio, mas de fácil domínio depois da aprendizagem. Foram criados
scripts de SQL, estes um pouco dificultosos, mas precisos, que possibilitaram extrair as
informações das bases de dados e após este armazenagem no documento XML.
Acredita-se que aplicações possam ser criadas a partir desta. Um exemplo seria um
aplicativo que pode utilizar dos arquivos XML gerados para importar as informações do
metadados utilizado para um controle de versões. A utilização de uma ferramenta deste porte
se tornará viável a empresas que utilizam o banco de dados Interbase e tem suas bases de
dados ou de seus clientes alteradas constantemente.
Com este trabalho pode-se ter um melhor entendimento dos objetos que compõe um
banco de dados relacional, mas especificamento o Interbase. Sugestões para trabalhos futuros
seria criar os scripts de alteração das estruturas não geradas, e criar as rotinas que gerem o
arquivo XML, e o script SQL de criação/alteração de views, permitindo atualizar
automaticamente.
Quanto às ferramentas utilizadas para fins de implementação, a ferramenta Rational
Rose possibilitou a criação do diagrama de casos de usos , assim como o Power Designer
55
mostrando-se eficiente na implementação das demais etapas da metodologia da análise
estruturada. O ambiente de programação Delphi deu todos os recursos necessários para a
criação e manipulação dos documentos XML.
56
REFERÊNCIAS BIBLIOGRÁFICAS
BORLAND INTERBASE. Data Definition Guide. Scotts Valley: Borland International,
1995.
CANTU, Marco. Dominando o Delphi 3. São Paulo: Makron Books, 1997.
CARDOSO, Caíque. UML na prática: do problema ao sistema. Rio de Janeiro: Ciência
Moderna, 2003.
DEITEL, et al. XML: como programar. Tradução Luiz Augusto Salgado e Edson
Furmankiewicz. São Paulo: Bookman, 2003. 972 p.
HARRIGTON, Jan L. Projetos de bancos de dados relacionais: teoria e prática. Rio de
Jameiro: Campus, 2002.
HEUSER, Carlos Alberto. Projeto de banco de dados. Porto Alegre: Sagra Luzzato, 2000.
KERN, Vinícius Medina. Bancos de dados relacionais: teoria e prática de objetos. São
Paulo: Èrica, 1994.
KORTH, Henry F; SILBERSCHATZ, Abraham. Sistema de banco de dados. São Paulo:
Makron Books, 2. edição, 1993. 748p.
LIGHT, Richard. Iniciando em XML. São Paulo: Makron Books, 1999. 404 p.
MARCHAL, Benoît. XML: conceitos e aplicações. Tradução Daniel Vieira. São Paulo:
Berkeley, 2000.
MARTINSSON, Tobias. Desenvolvendo Scripts XML e WMI para o Microsoft SQL
Server 2000. São Paulo: Makron Books, 2002.
MEANS, Scott. Strategic XML. Indianápolis: Sams, 2002. 247 p.
MULLER, Robert. Projeto de banco de dados: usando UML para modelagem de dados.
Tradução Bazan Tecnologia e Lingüística. São Paulo: Berkeley Brasil, 2002.
OLIVEIRA, Wilson. Banco de dados Interbase com Delphi. Florianópolis: Visual Books,
2000.
PAGE-JONES, Melir. Fundamentos do desenho orientado a objeto com UML. São Paulo:
Makron Books, 2001.
57
RUMBAUGH, James et. al. Modelagem e Projetos baseados em Objetos. Rio de Janeiro:
Campus, 1994.
SILVA, Ivan. Interbase 6: guia do desenvolvedor. Rio de Janeiro: Book Express, 2000.
SONNINO, Bruno. Desenvolvendo aplicações em Delphi 5. São Paulo: Makron Books,
2000.
Download