Um Tradutor de Esquemas Relacionais em XML para Esquemas SQL

Documentos relacionados
Um Tradutor de Esquemas Relacionais em XML para Esquemas SQL

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

Linguagem de pesquisa declarativa para banco de dados relacional; 1ª Versão - Desenvolvida pela IBM no laboratório de pesquisa de San José;

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Banco de Dados. SGBD - Sistema de Gerenciamento de Banco de Dados Parte 2. Prof. Leonardo Vasconcelos


No contexto informático. Requisitos

Um Tradutor de Esquemas Relacionais em XML para Esquemas SQL

Um Tradutor de Esquemas Relacionais em XML para Esquemas SQL

Sistemas de Banco de Dados

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

14/08/2008. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

BCD29008 Banco de dados

[versão para impressão] Link original: comp=24763 Conhecendo o PL/SQL

Banco de Dados I Introdução SQL

LINGUAGEM, TIPOS DE USUÁRIOS DE SGBD E MODELOS DE DADOS

UTFPR - Universidade Tecnológica Federal do Paraná. Processamento e otimização de consultas

S Q L Asserções, Visões e Técnicas de Programação. Daniel Bordignon Cassanelli Fernando Luiz Grando Pedro Patitucci Finamore

Modelagem Física e SQL

BCD29008 Banco de dados

Matéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

BCD29008 Banco de dados

FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS

Banco de Dados. Prof. Gleison Batista de Sousa Aula 01

Banco de Dados Modelo Relacional, Algebra Relacional, SQL

Aula 01 Revisão Geral Banco de Dados I Conceito de Banco de Dados e SGBD

LISTA DE EXERCÍCIOS TEORIA DE BANCO DE DADOS

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de

Banco de Dados. Banco de Dados

Sistemas da Informação. Banco de Dados I. Edson Thizon

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Introdução a Banco de Dados Prof. Msc Denival A. dos Santos

SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS - SGBD

Manipulação de Dados com SQL

A & F Consultoria em Sistemas e Treinamentos 2014 af.tecnoserv@gmail.com. A linguagem SQL. Autor: Hélio de Almeida Fonte: Wikipédia

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

Sistemas de Banco de Dados

Banco de Dados. Aula 2 - Prof. Bruno Moreno 19/08/2011

Informática Parte 4 Prof. Márcio Hunecke

Introdução à Programação

Banco de Dados - Conceitos. Baseado no material da Profa. Vania Bogorny (UFSC)

Caderno de Introdução Bases Dados

AULA 01 Bancos de Dados Relacionais Arquitetura Linguagem SQL Componentes: DDL, DML, DCL. Prof. Msc. Célio R. Castelano

Modelo Entidade-Relacionamento (E-R)

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

6.1. Teste Baseado em Gramática e Outras Abordagens de Teste

Bases de Dados. DDL Data Definition Language

Conceitos de Sistemas de Banco de Dados INE 5323

UERJ Oscar Luiz Monteiro de Farias 1. Bancos de Dados. Mestrado em Engenharia de Computação área de concentração Geomática

MATA60 BANCO DE DADOS Aula 5- Modelo Relacional. Prof. Daniela Barreiro Claro

Planificação Anual. Departamento Expressões e Tecnologias

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Introdução. Bases de Dados (CC2005) Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti.

Python e sua sintaxe LNCC UFRJ

7 Conclusão e Trabalhos Futuros

Formas de Gerência de Dados XML

Modelo para a representação de informações, utilizado por aplicações Web que trabalham com a tecnologia AJAX.

A linguagem SQL

Linguagens de Programação Classificação

MAPEAMENTO DE CONSULTAS SQL EM XML ENTRE SISTEMAS GERENCIADORES DE BANCO DE DADOS RELACIONAIS

Modelagem Física e SQL

Page 1. Prof. Constantino Jacob

INE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:

O que são Bancos de Dados?

A linguagem SQL

CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A F B G C H D I E J

2. Conceitos e Arquiteturas de um SGBD

Banco de Dados. Banco de Dados II. Característica fundamental de SGBDs. Abordagem SGBD x Processamento de Arquivos Tradicional

O TESTE DE DOCUMENTOS MUTANTES PARA REALIZAR UTILIZANDO ANÁLISE DE. Orientadora: Silvia Regina Vergilio XML SCHEMA. Ledyvânia Franzotte

Aula 2 BD Introdução. Profa. Elaine Faria UFU

5.1. Fluxo para geração do Roadmap

Unidade 5 05/11/2008. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Redes de Computadores

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

BANCO DE DADOS. Araújo Lima. Jan / Araújo

Linguagens Formais e Autômatos

Banco de dados POO Márcio Delamaro. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP

DDL). O resultado da compilação dos parâmetros DDLs é

BANCO DE DADOS WEB AULA 9. concessão e revogação de privilégios. professor Luciano Roberto Rocha.

Banco de Dados. Professor: Marcelo Machado Cunha IFS Campus Aracaju

Programação de Computadores I Introdução PROFESSORA CINTIA CAETANO

Programação I Apresentação

BANCOS DE DADOS. CREATE TABLE um registro (formalmente uma tupla) a uma tabela existente. Insert into Pessoa (id, nome, sexo) value;

Um Compilador Simples. Definição de uma Linguagem. Estrutura de Vanguarda. Gramática Livre de Contexto. Exemplo 1

3 Tecnologias Relacionadas

15 - Introdução às Bases de Dados

UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIENCIAS DA COMPUTAÇÃO

Aula 01 Conceito de Banco de Dados e SGBD

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS - Grupo 550 INFORMÁTICA Planificação Anual /Critérios de avaliação

E-Portefólio da especificação ao processamento digital

Rui Carneiro, Rui Pereira, Tiago Orfão

Para criarmos um banco de dados no MySql, utilizamos à instrução:

Como construir um compilador utilizando ferramentas Java

1/26/2009. Metamodelo MMA. Metamodelo MMB. Modelo A2. Modelo A. Modelo B. Transformação M2M

Transcrição:

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 1

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. 2

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 livrostexto 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 XML e um destes usos é justamente a persistência de esquemas relacionais, que é o foco deste trabalho. 3

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. 4

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. Os métodos disponibilizados pelo DOM permitem manipular os nodos desta árvore. 5

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ãoterminais opcionais, e a tecnologia GLR de parsing que trata de forma transparente a ambigüidade, incluindo lookahead sintático ilimitado [MAR00]. 6

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. 7