• Nenhum resultado encontrado

Um Tradutor de Esquemas Relacionais em XML para Esquemas SQL

N/A
N/A
Protected

Academic year: 2021

Share "Um Tradutor de Esquemas Relacionais em XML para Esquemas SQL"

Copied!
7
0
0

Texto

(1)

UNIVERSIDADE FEDERAL DE SANTA CATARINA CENTRO TECNOLÓGICO DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA SISTEMAS DE INFORMAÇÃO

Resumo do Trabalho de Conclusão de Curso Entitulado

Um Tradutor de Esquemas Relacionais em XML para Esquemas SQL

de Autoria de Alisson Giovanni Rosa

Aluno: Renato Sulzbach Orientador: Ronaldo dos Santos Mello

(2)

No contexto do trabalho, o foco foram dados que representam esquemas relacionais.  Muitas ferramentas de projeto de bancos de dados relacionais persistem o resultado do  desenvolvimento, ou seja, o esquema relacional, em formato XML. É o caso de ferramentas  comerciais  como  a  ERWIN   [ERC07]   e  a  Rational   Rose  [IBM07];   ou  gratuitas,   como  DBDesigner  [DBD07]  e a brasileira brModelo  [CHC05],  desenvolvida no GBD/UFSC.  Porém,   cada   ferramenta   segue   um   esquema   proprietário   para   a   disposição   destas  informações   no   arquivo   XML.   Isto   torna   extremamente   caro   o   trabalho   de   extrair   o  esquema relacional destes arquivos XML (na intenção de gerar o modelo físico para um  SGBD específico), na impossibilidade de se ter acesso à ferramenta que criou este arquivo  XML. 

Assim   sendo,   o   trabalho   teve   por   objetivo   criar   uma   ferramenta   de   apoio   ao  mapeamento e extração de esquemas relacionais especificados em arquivos XML, bem  como a geração dos comandos SQL para criação das tabelas componentes do esquema  físico do banco de dados. 

A   finalidade   do   trabalho   foi   permitir   um   mapeamento   flexível   de   esquemas  relacionais representados em XML, ou seja, um método de mapeamento que seja executado  diretamente sobre um arquivo XML.

Uma  possível  solução  para  o problema  (adotada  no trabalho)  é a utilização  da  linguagem   XSLT,   que   tem   como   finalidade  transformar   documentos   XML   em   outros  documentos   XML  ou   outros   documentos   texto   [W3C99b],  em   substituição   aos  processadores de anotações propostos em outras ferramentas. XSLT pode ser utilizada tanto  para   realizar   as   transformações   nos   arquivos   XML   de   entrada   (segundo   as   regras   de  mapeamento definidas pelo usuário) em um arquivo XML semanticamente compreensível  para a fase de geração do SQL de criação de tabelas, quanto na geração do script SQL, que  é a saída da ferramenta. Tal solução evita a necessidade de construir um processador de  anotações fixas (associadas a um esquema XML) e torna a ferramenta mais aberta, uma vez  que XSLT já possui processadores disponíveis livremente, como é o caso dos projetos  Saxon [SXO07] e Xalan [AXA07]. No intuito de facilitar, e ao mesmo tempo assegurar a corretude da tradução do  esquema relacional para o comando SQL, a transformação do arquivo XML de entrada se  dá em duas fases. O objetivo da primeira fase é gerar, a partir do arquivo de entrada, um  arquivo   XML   em   conformidade   com   um   arquivo  XML  Schema  que   descreve   a   BNF  [BNF96]  do   comando   SQL  Create   Table.   Na   segunda   fase,   com   base   neste   arquivo  intermediário, é gerado o  script  SQL de criação das tabelas. Uma vez estando o arquivo  XML   intermediário   de   acordo   com   o   arquivo   XML   Schema   que   descreve   a   BNF   do  comando SQL Create Table, garante­se que a sintaxe do comando SQL resultante está  correta.  Tanto  na primeira  como  na segunda  fase,  as transformações  são especificadas  utilizando a linguagem XSLT.

(3)

Fundamentação Teórica: BNF: A forma de Backus­Naur (também conhecido como BNF, o formalismo de Backus­ Naur, forma normal Backus, ou forma de Panini­Backus) é uma meta­sintaxe usada para  expressar gramáticas livres de contexto, isto é, um modo formal de descrever linguagens  [BNF96].  A BNF é amplamente usada como notação para as gramáticas de linguagens de  programação,   conjuntos   de   instruções   e   protocolos   de   comunicação,   e   também   como  notação para representar partes de gramáticas de linguagens naturais. A maioria dos livros­ texto para teoria de linguagem de programação e/ou semântica documenta linguagens em  BNF.  Uma especificação BNF é um conjunto de regras de derivação, escritas na forma: <simbolo> : = <expressão> onde <simbolo> é um não­terminal e <expressão> consiste em sequências de símbolos e/ou  sequências separadas pela barra vertical ('|'), indicando uma escolha. Esta notação indica as  possibilidades  de substituição  para  o símbolo  na esquerda  da expressão.  Símbolos  que  nunca aparecem no lado esquerdo são ditos terminais [BNF96]. 

XML:

XML (eXtensible Markup Language) define um conjunto de regras (você também  pode   encará­las   como   convenções   ou   diretrizes)   para   projetar   formatos   de   texto   que  permitam estruturar seus dados [W3C99a]. XML não é uma linguagem de programação e  você não precisa ser um programador para usá­la ou aprendê­la. XML torna simples para o  computador gerar e ler dados, e garantir que sua estrutura não seja ambígua.  Entretanto, enquanto HTML especifica o que cada marcador e atributo significam e  geralmente como seu conteúdo aparece em um navegador, XML usa os marcadores apenas  para delimitar conteúdos de dados, deixando a interpretação destes dados completamente à  cargo da aplicação que os lê [W3C99a].  Programas que produzem planilhas, listas de endereços e outros dados estruturados,  freqüentemente gravam estes dados em disco utilizando um formato binário ou textual.  Uma vantagem do formato textual é que ele permite ao usuário ver os dados sem usar o  programa que os produziu, ou seja, você pode ler um formato textual com o seu editor de  textos favorito. Além disso, um documento textual XML não ocupa demasiado espaço,  podendo ser facilmente transferido entre pessoas e aplicações [W3C99a]. Por estes motivos, cresce o numero de aplicativos que persistem seus dados em 

(4)

XML Schema:

XML Schema  é   um  documento  XML   que   descreve   o  esquema  de   um  ou  mais 

documentos XML  [W3C99c]. O propósito  de um documento  XML Schema  é definir a  estrutura de um XML, possibilitando a validação de documentos de dados XML através de  programas denominados parsers XML. Um documento XML Schema define basicamente: • Os elementos que podem aparecer em um documento XML;  • Os atributos de elementos; • A hierarquia permitida de elementos, ou seja, quais elementos são elementos filhos  de outros; • A ordem na qual os elementos filhos aparecem em uma hierarquia; • A quantidade mínima e máxima de elementos filhos em uma hierarquia  (cardinalidade);  • Se um elemento deve ser vazio ou pode incluir texto puro; • Os tipos de dados dos elementos simples (que não possuem uma hierarquia de  elementos); • Os valores padrão e valores fixos para elementos e atributos.  XSLT ­     Extensible Stylesheet Transformations:    XSLT é uma linguagem para transformar documentos XML em outros documentos  XML ou documentos texto em outros formatos [W3C99b]. A XSLT está contida na XSL, que é a linguagem de folhas de estilo (stylesheets)  para   XML.   Além   da   XSLT,   a   XSL   inclui   um   vocabulário   XML   para   especificar  formatação. A XSL especifica a estilização de um documento XML, podendo utilizar a  XSLT para descrever como o documento é transformado em outro documento XML que  usa este vocabulário de estilização.

Uma   transformação   expressa   em   XSLT   descreve   regras   para   transformar   uma  estrutura XML hierárquica fonte (árvore fonte) em uma árvore resultado. A transformação  é obtida associando­se padrões com gabaritos. Um padrão é confrontado com elementos na  árvore fonte. Um gabarito é instanciado para criar parte da árvore  resultado. A árvore  resultado é gerada separadamente da árvore fonte, podendo ser completamente diferente da  estrutura da árvore fonte. Na construção da árvore resultado, os elementos da árvore fonte  podem ser filtrados e reordenados, com a possibilidade de adicionar ainda outras estruturas  arbitrárias. 

(5)

SQL DDL:

SQL   é   uma   linguagem   que   foi   inicialmente   concebida   para   a   consulta   a   BDs  relacionais [ISO03]. Atualmente, ela apresenta diversas funcionalidades no que diz respeito  à definição e manipulação destes BDs. A SQL se divide em subconjuntos de comandos:

Data Definition Language  (DDL)  (Linguagem  de Definição  de Dados).  A SQL 

DDL   fornece   comandos   para   definição   e   modificação   de   esquemas   de   relação,  remoção de relações e criação de índices. Os principais comandos que fazem parte  da DDL são: CREATE, ALTER, DROP;

• Data Manipulation Language (DML) (Linguagem de Manipulação de Dados). A  SQL DML inclui uma linguagem de consulta baseada na álgebra relacional e no  cálculo   relacional.   Ela   compreende   também   comandos   para   inserir,   remover   e  modificar informações em um banco de dados. Os comandos básicos da DML são:  SELECT, INSERT, UPDATE e DELETE;

• Data Control Language (Linguagem de Controle de Dados). Conjunto de comandos  que faz o cadastramento de usuários e determina seu nível de privilégio para os  objetos do BD. Os principais comandos são: GRANT e REVOKE;

• Transaction   control   (Controle   de   Transações).   A   SQL   inclui   comandos   para  especificação do início e fim das transações. Diversas implementações permitem o  isolamento   explícito   de   dados   para   o   controle   de   concorrência.   Os   comandos  principais são COMMIT, ROLLBACK e SAVEPOINT. SAX SAX (Simple API for XML) é um analisador baseado em eventos – o analisador lê  um fluxo de entrada XML e, no caso de eventos, o analisador chama métodos ou rotinas  com nomes semelhantes no programa host, que poderão tomar a ação apropriada. SAX não é um padrão do W3C, mas o resultado de um desenvolvimento conjunto  dos   membros   do   grupo   XML­DEV  [XDE07].   Há   diversos   analisadores   SAX   para  diferentes linguagens de programação, como Java, C++, Perl e Delphi.

DOM:

DOM  (Document   Object   Model)   é uma  interface   de programação  de  aplicação  completa para documentos XML  [W3C99d]. Essa interface permite não apenas navegar  dentro   de   documentos   XML,   mas   também   obter,   acrescentar,   modificar   ou   excluir  elementos e conteúdo.

Como   já   foi   comentado   anteriormente,   dados   XML   são   definidos   através   de  elementos, que por sua vez podem ser compostos de outros elementos. Arquivos XML, por  apresentarem este tipo de estrutura, podem ser representados em forma de uma arvore.

(6)

Trabalhos Relacionados X­Database:

Este trabalho propõe um sistema chamado X­Database. A base deste sistema é um  arquivo  XML   Schema  que   descreve   o   esquema   lógico   dos   dados   a   serem   trocados.  Inicialmente, o sistema analisa a sintaxe do XML Schema e gera a base de dados relacional.  A partir daí, processa a decomposição em tuplas de tabelas de arquivos XML válidos de  acordo  com o  XML Schema. De forma contrária, ele também  realiza  a composição  de  arquivos XML a partir de dados extraídos da base relacional, como pode ser visto na Figura  8 [VAR04].

 

ShreX: 

ShreX  é um sistema  para  decomposição  e carga  de documentos  XML  em BDs 

relacionais. No ShreX, o mapeamento é definido por anotações em arquivos XML Schema  que  indicam  quais elementos  e atributos  devem  ser armazenados  no BD  relacional.  O  processador de anotações executa o  parsing  do arquivo  XML Schema  com as anotações,  verifica   a   validade   do   mapeamento   e   cria   o   esquema   relacional   correspondente.   Esta  informação de mapeamento é guardada em um repositório de mapeamento [AME04].   Trabalho de     Boshernitsan:    O trabalho de Boshernitsan apresenta um formato de troca, baseado em XML, entre  as ferramentas componentes de um framework denominado Harmonia [MAR00]. O formato  de troca modela a representação  de um programa  no Harmonia através de uma árvore  sintática. O parser é dado por uma especificação declarativa da gramática da linguagem. A  arvore sintática produzida pelo parser é, na verdade, uma arvore de parsing cuja forma é  ditada pela mesma especificação da gramática. O framework Harmonia usa duas técnicas  para abstrair gramáticas: uma variante da notação EBNF para expressar seqüências e não­ terminais  opcionais,  e a tecnologia  GLR  de parsing  que  trata  de forma  transparente  a  ambigüidade, incluindo lookahead sintático ilimitado [MAR00]. 

(7)

O Tradutor Proposto No trabalho foi proposto um tradutor de uma especificação XML de um esquema  relacional em um conjunto de comandos SQL que permitissem a geração deste esquema em  um SGBD relacional. Para tanto, ele recebe como entrada um arquivo XML cujo conteúdo  é uma especificação de um esquema relacional e um arquivo XML Schema contendo o  esquema do comando SQL Create Table. A gramática formal da XML é apresentada na especificação XML do W3C pelo uso  de notação na forma estendida de Backus­Naur, a EBNF (Extended Backus­Naur Form)  [BNF96].   Da   mesma   forma,   o   padrão   SQL­92   também   está   especificado   pelo   uso  da  notação   BNF   pela  Organização   Internacional   para   Padronização  (International 

Organization for Standardization ­ ISO) no padrão ISO/IEC 9075:1992.

Existem   programas   que   transformam   automaticamente   um   conjunto   de   regras  BNF/EBNF  em   um  parser,  tornando   a  BNF/EBNF   uma  opção   bastante   eficiente   para  representação de sintaxe de linguagens. Além disto, a geração de código utilizando a definição formal da linguagem é a  garantia de que o resultado final é uma expressão válida naquela linguagem. Por isso,  utiliza­se como ponto de partida para a geração do código SQL um arquivo XML Schema  que contenha a definição do comando Create Table diretamente da especificação em BNF  contida no padrão ISO/IEC 9075:1992 da ISO. Assim sendo, é necessário transformar o arquivo XML de entrada em um arquivo  XML compatível com tal XML Schema. A partir deste novo arquivo compatível, a geração  do código SQL se torna automática e totalmente livre de erros de sintaxe. 

Referências

Documentos relacionados

execução (quando haja motivos no processo para que os respectivos valores sejam incluídos no âmbito do art.º 451.º, do CPC ou quando não seja previsível que o exequente possa

Os processos semi Markovianos são modelos bastante importantes dentro do contexto de Engenharia de Confiabilidade. Tais processos não são mais estritamente Markovianos, mas

O Assentamento Santa Teresa tal qual chamado pelos moradores cujo nome oficial e registrado pelo Incra como: Antônio Avelino de Sousa, nome escolhido pelos representantes da

Resumidamente a forma de comercialização dos apartamentos FLAT e operação de locação dos apartamentos do HOTEL para uma bandeira hoteleira proposta a seguir objetiva a

O método consiste na identificação dessas atividades na revisão da literatura de gerenciamento da construção, em áreas como Construtibilidade, Construção Enxuta, Análise

Cristinne Leus Tomé nos traz, sob o título A segurança: o discurso fundador e os sentidos pedagógicos em uma canção de ninar, apresenta um recorte de sua

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças