D`Ilton Moreira Silveira. Mapeamento de DTDs para Esquemas Lógico-Relacionais RELATÓRIO FINAL TCC
|
|
- Raquel Bento Leal
- 6 Há anos
- Visualizações:
Transcrição
1 D`Ilton Moreira Silveira Mapeamento de DTDs para Esquemas Lógico-Relacionais RELATÓRIO FINAL TCC Palmas TO 2003
2 D`Ilton Moreira Silveira Mapeamento de DTDs para Esquemas Lógico-Relacionais Monografia apresentada como requisito parcial da disciplina Prática de Sistemas de Informação II (TCC) do curso de Sistemas de Informação, coordenada pela Profª. M.Sc. Deise de Brum Saccol Palmas TO 2003
3 D`ILTON MOREIRA SILVEIRA Mapeamento de DTDs para Esquemas Lógico-Relacionais Monografia apresentada como requisito parcial da disciplina Prática de Sistemas de Informação II (TCC) do curso de Sistemas de Informação, coordenada pela Profª. M.Sc. Deise de Brum Saccol Aprovado em dezembro de BANCA EXAMINADORA Profª. Deise de Brum Saccol, M.Sc. Centro Universitário Luterano de Palmas Prof. Eduardo Kessler Piveta, M.Sc. Centro Universitário Luterano de Palmas Prof. Fabiano Fagundes, M.Sc. Centro Universitário Luterano de Palmas
4 AGRADECIMENTOS Prezados leitores, alguns anos atrás eu tinha um sonho que por alguns motivos eu pensava que não ia realizá-lo. Um certo dia me ligaram e deram-me uma notícia, eu estava sendo chamado para fazer a minha matrícula na faculdade, nesse instante eu não sabia se o meu sonho estava se tornado realidade ou em um pesadelo, pois eu não tinha dinheiro para pagar a matriculo e muito menos as mensalidades. Eu, naquele instante tomei uma decisão, peguei dinheiro emprestado para pagar a matrícula e me ingressar na vida acadêmica. E graças a Deus, estou nesse momento escrevendo os agradecimentos do meu trabalho de conclusão de curso universitário. Agradeço primeiramente a Deus, que nunca me abandonou. E, nos momentos mais difíceis da minha vida, Ele sempre tem me ajudado fazendo com que eu enxergue caminhos que me levam a vitória. E graças a Ele eu estou concretizando um sonho dentre vários outros que serão realizados. Agradeço ao meu pai Neuton, posso dizer o melhor pai do mundo. Ele sempre está ao meu lado pronto para me ajudar. Pai, te agradeço pelo senhor ter me ajudado a realizar esse sonho. Agradeço também a minha mãe, Hilda. Mãe, obrigado pelas suas orações, e eu digo que a senhora é a melhor mãe do mundo. Agradeço aos meus irmãos, Denilton, Castilio, e Lucinéia, obrigado por fazerem parte da minha vida. Professor Fabiano, obrigado pelos momentos de distração no LABMIDIA, pelas broncas nos momentos em que eu estava precisando, pelos incentivos, obrigado também por ter me ajudado a escrever parte da minha história dentro da faculdade. Você é uma pessoa especial que mora dentro do meu coração. Professora Parcilene, obrigado pela tua amizade e pelo conhecimento que você me proporcionou, sou muito grato a você. Que Deus possa vir te recompensar. Professora Deise, a professora queridinha. Deise, foi muito bom trabalhar no
5 mesmo local que você, ser seu aluno, e é claro ser o seu orientando. Obrigado por fazer parte de uma das minhas conquistas. Que a graça de Deus esteja sobre você. Agradeço também a todos os demais professores, pela amizade, pelo conhecimento a mim proporcionado. Que Deus possa vir recompensá-los. Agradeço ainda as seguintes pessoa, Kênia, Polly, Elaine, Nábia, Suellen, Anderson, Michael, Marcus, Danilo, Álvaro, Bruno. Vocês são pessoas especiais que moram dentro do meu coração. O temor do Senhor é o princípio da sabedoria... Salmos 111:10a
6 SUMÁRIO 1. INTRODUÇÃO REVISÃO DE LITERATURA DADOS SEMI-ESTRUTURADOS E DADOS ESTRUTURADOS EXTENSIBLE MARKUP LANGUAGE (XML) DOCUMENT TYPE DEFINITION (DTD) ARMAZENAMENTOS DE DOCUMENTOS XML USO DE SGBDS RELACIONAIS PARA O ARMAZENAMENTO DE XML DB SQL Server Oracle 9i GERAÇÃO DE ESQUEMA LÓGICO RELACIONAL A PARTIR DE DTD Primeira abordagem Segunda abordagem Terceira abordagem Quarta abordagem MATERIAIS E MÉTODOS RESULTADOS E DISCUSSÕES PROPOSTA ESTUDO DE CASO REPRESENTAÇÃO DA DTD EM FORMATO XML ALGORITMO DE GERAÇÃO DE ESQUEMAS LÓGICOS A PARTIR DA DTD Elementos PCDATA Elemento complexo Elemento vazio Elemento misto SISTEMA IMPLEMENTADO COMPARAÇÃO ENTRE OS ALGORITMOS APRESENTADOS NA REVISÃO DE LITERATURA E O ALGORITMO DESENVOLVIDO NESSE TRABALHO CONSIDERAÇÕES FINAIS E TRABALHOS FUTUROS... 61
7 6. REFERÊNCIAS BIBLIOGRÁFICAS... 63
8 Lista de Abreviaturas DTD SGBD SQL SGML XML W3C Document Type Definition Sistema Gerenciador de Banco de Dados Structured Query Language Standard Generalized Markup Language extensible Markup Language World Wide Web Consortium
9 Lista de Figuras FIGURA 1 EXEMPLO DE UM DOCUMENTO XML FIGURA 2 - EXEMPLO DE UMA DTD QUE VALIDA O DOCUMENTO XML DA FIGURA FIGURA 3 DTD EXEMPLO PARA AS ABORDAGENS DE MAPEAMENTO FIGURA 4 ESQUEMA LÓGICO RELACIONAL GERADO SEGUNDO A DTD DA FIGURA 3 (ABORDAGEM 1) FIGURA 5 GRAFO DA DTD DA FIGURA 3 (SEGUNDA ABORDAGEM) FIGURA 6 ESQUEMA LÓGICO RELACIONAL GERADO SEGUNDO A DTD DA FIGURA 3 (ABORDAGEM 2) FIGURA 7 REGRAS PARA ELIMINAR A COMPLEXIDADE DOS DTDS (LU ET AL 2003) FIGURA 8 ALGORITMO INLINING (LU ET AL 2003) FIGURA 9 GRÁFICO INLINING DA DTD (LU ET AL 2003) FIGURA 10 GRAFO INLINING DA DTD DA FIGURA FIGURA 11 ESQUEMA LÓGICO RELACIONAL GERADO SEGUNDO A DTD DA FIGURA 3 (ABORDAGEM 3) FIGURA 12 DOCUMENTO XML VÁLIDO SEGUNDO A DTD DA FIGURA FIGURA 13 GRAFO DO DOCUMENTO XML DA FIGURA FIGURA 14 ARQUITETURA DO SISTEMA FIGURA 15 DTD PARA PUBLICAÇÕES DE LIVROS E ARTIGOS FIGURA 16 DOCUMENTO XML VÁLIDO SEGUNDO A DTD DA FIGURA 15 EXEMPLO FIGURA 17 DOCUMENTO XML VÁLIDO SEGUNDO A DTD DA FIGURA 15 EXEMPLO FIGURA 18 DOCUMENTO XML VÁLIDO SEGUNDO A DTD DA FIGURA 15 EXEMPLO FIGURA 19 DTD MSG FIGURA 20 REPRESENTAÇÃO XML DA DTD DA FIGURA FIGURA 21 INICIO DO ALGORITMO FIGURA 22 PARTE DO ALGORITMO QUE TRATA DE ELEMENTO PCDATA E MONOVALORADO FIGURA 23 PARTE DO ALGORITMO QUE TRATA DE ELEMENTO PCDATA E MULTIVALORADO FIGURA 24 PARTE DO ALGORITMO QUE TRATA DE ELEMENTO FILHO MULTIVALORADO E ELEMENTO PAI MULTIVALORADO OU ELEMENTO FILHO MONOVALORADO E ELEMENTO PAI MULTIVALORADO... 48
10 FIGURA 25 PARTE DO ALGORITMO QUE TRATA DE ELEMENTO FILHO MULTIVALORADO E ELEMENTO PAI MONOVALORADO FIGURA 26 PARTE DO ALGORITMO QUE TRATA DE ELEMENTO FILHO MONOVALORADO E ELEMENTO PAI MONOVALORADO FIGURA 27 PARTE DO ALGORITMO QUE TRATA DE ELEMENTO VAZIO FIGURA 28 INICIO DO ALGORITMO QUE TRATA DE ELEMENTO MISTO FIGURA 29 PARTE DO ALGORITMO QUE TRATA DE ELEMENTO MISTO QUANDO O FILHO DO ELEMENTO MISTO É PCDATA FIGURA 30 PARTE DO ALGORITMO QUE TRATA DE ELEMENTO MISTO QUANDO O FILHO DO ELEMENTO MISTO POSSUI FILHOS FIGURA 31 PARTE DO ALGORITMO QUE TRATA DE ELEMENTO MISTO QUANDO O FILHO DO ELEMENTO MISTO FOR UM PCDATA FIGURA 32 PARTE DO ALGORITMO QUE TRATA DE ELEMENTO MISTO QUANDO O FILHO DO ELEMENTO MISTO FOR UM ELEMENTO VAZIO FIGURA 33 INTERFACE DO SISTEMA FIGURA 34 MODELO LÓGICO RELACIONAL GERADO A PARTIR DA DTD DA FIGURA
11 Lista de Tabelas TABELA 1 EXEMPLO TABELA BASEADO EM ARCO COM BASE NO GRAFO DA FIGURA TABELA 2 TAUTOR MAPEAMENTO COM INLINING TABELA 3 TNOME MAPEAMENTO COM INLINING... 34
12 RESUMO Esse trabalho busca definir um algoritmo capaz de mapear uma DTD (Document Type Definition) para um modelo lógico relacional. Após a definição desse algoritmo, implementá-lo em uma linguagem de programação, desenvolvendo assim, uma ferramenta que gerará um script SQL do modelo lógico relacional, o qual poderá ser executado, como por exemplo, no SQL Server.
13 ABSTRACT This work aims to define an algorithm to map a DTD (Document type definition) to a relational logical model. After the definition of this algorithm, to implement it in a programming language. In this way, a tool will be developed to generate a SQL script, which can be executed over SQL Server, for instance.
14 13 1. INTRODUÇÃO Sistemas Gerenciadores de Banco de Dados (SGBDs) específicos para documentos XML (extensible Markup Language) ainda estão em fase de amadurecimento e são relativamente pouco utilizados, principalmente devido ao pequeno número de produtos comerciais disponíveis. Atualmente, para o armazenamento de documentos XML, SGBDs relacionais têm sido mais usados. Para isso, faz-se necessário um mapeamento de documentos XML para o modelo relacional. Várias abordagens têm sido utilizadas neste mapeamento, dentre elas, a criação de esquemas lógicos relacionais a partir de DTDs. Nesse trabalho foi desenvolvido um algoritmo capaz de realizar o mapeamento de DTDs para modelos lógico relacionais, e uma aplicação que gera um script SQL (Structured Query Language), tendo como base o algoritmo proposto nesse trabalho. Uma vez que se tenha o script SQL gerado pela aplicação, o usuário pode executá-lo no SQL Server (SGBD utilizado neste trabalho), criando um banco de dados com todas as tabelas definidas no script, assim como os relacionamentos entre elas. Atualmente, existem várias abordagens sobre algoritmos que fazem o mapeamento de DTDs para um modelo lógico relacional. Dentre eles, pode-se citar as seguintes referências: (BOU 2001), (SHA 99) e (LU et al 2003). O trabalho está organizado da seguinte forma: o capítulo 2 apresenta a revisão de literatura que está subdividida em: Dados Semi-Estruturados e Dados Estruturados; uma descrição sobre XML; DTDs; uma demonstração de armazenamento de documentos XML; uma abordagem sobre o uso de SGBDs relacionais para o armazenamento de documentos XML; e também são apresentados alguns algoritmos que realizam o mapeamento de DTDs para modelo lógico relacional. No capítulo 3 têm-se os materiais e métodos. O capítulo 4 relata os resultados e discussões. E o 5 mostra as considerações finais e os trabalhos futuros.
15 14 2. REVISÃO DE LITERATURA Este capítulo apresenta uma abordagem sobre dados semi-estruturados e estruturados, XML, DTD, armazenamento de documentos XML, o uso de SGBDs Relacionais para o armazenamento de XML e por fim sobre geração de esquemas lógicos relacionais a partir de DTDs. 2.1 Dados Semi-estruturados e Dados Estruturados Atualmente, têm-se muitas informações disponíveis em sistemas eletrônicos. Essas informações encontram-se em diversos formatos, como textos, imagens, tabelas etc. Neste trabalho são citados dois formatos de dados: semi-estruturados e estruturados. Para dados semi-estruturados têm-se um exemplo clássico que são os dados da Web, como bibliotecas digitais, sites de comércio eletrônico etc. Este tipo de dado geralmente não possui um esquema associado no momento de sua criação. Dados semi-estruturados apresentam as seguintes características (MELLO et al, 2000): Definição de esquema a posteriori: esquemas de dados são criados após a existência dos dados; Estrutura irregular: os dados estão organizados de formas diferentes; Estrutura implícita: mesmo existindo uma estrutura para os dados, essa estrutura está implícita na forma como os dados são apresentados. É necessário realizar uma computação para obter essa estrutura ; Estrutura parcial: apenas parte dos dados seguem uma estrutura; Estrutura extensa: a ordem de magnitude de uma estrutura para estes dados é grande, uma vez que os mesmos são muito heterogêneos. Supondo diferentes formatos para um curriculum vitae, uma união de atributos significativos em cada formato pode produzir um esquema extenso ;
16 15 Estrutura evolucionária: há uma modificação constante tanto da estrutura dos dados quanto dos seus valores; Estrutura descritiva e não prescritiva: dada a natureza irregular e evolucionária dos dados semi-estruturados, as estruturas de representação implícitas ou explícitas normalmente se restringem a descrever o estado corrente de poucas ocorrências de dados similares. Desta forma, não é possível prescrever esquemas fechados e muitas restrições de integridade com relação à semântica dos atributos. Um sinônimo para estrutura descritiva é estrutura indicativa ; Distinção entre estrutura e dados não é clara: a estrutura depende da descrição dos dados, tornando a distinção entre estrutura e valor confusa. Ao contrário de dados semi-estruturados, os dados estruturados possuem um esquema definido no momento de sua criação; têm-se como exemplo de dados estruturados os modelos de dados relacionais, orientados a objetos etc. Dados estruturados possuem as seguintes características (MELLO et al, 2000): Esquema pré-definido: esquemas de dados são definidos antes da existência dos dados; Esquema independente dos dados: a estrutura dos dados não depende dos dados para existir; Estrutura reduzida: a estrutura não vária dentro de um mesmo esquema; Fracamente evolutiva: não sofre mudanças em sua estrutura freqüentemente; Distinção entre estrutura e dados: a estrutura não depende da descrição dos dados, tornando a distinção lógica entre estrutura e valor clara; No próximo tópico têm-se uma breve abordagem sobre XML, uma linguagem de representação de dados. 2.2 extensible Markup Language (XML) Documentos XML seguem uma estrutura hierárquica, podendo ser divididos em tags iniciais, tags finais, elementos, atributos etc. Um documento XML pode ser validado segundo uma DTD. Elementos são representados por tags (<resp></resp>) e cada elemento pode possuir atributos, elementos e textos. Na figura 1 têm-se um exemplo de um
17 16 documento XML. <?xml version='1.0' encoding = "ISO "?> <!DOCTYPE listacompra SYSTEM "listacompra.dtd"> <listacompra> <resp> <nome>kênia</nome> </resp> <local> <nome>quarteto</nome> </local> <compra> <data dia="12" mes="8" ano="2002"/> </compra> <setor> <nome>frios</nome> <produto> <quant>2</quant> <unid>kg</unid> <nome>queijo</nome> <precoant>9.00</precoant> <precoat>10.00</precoat> </produto> </setor> </listacompra> Figura 1 Exemplo de um documento XML A estrutura tem como elemento raiz listacompra, sendo que ele possui vários elementos filhos. O primeiro é resp e é composto por nome que possui como conteúdo Kênia. O segundo é local que possui um filho nome com um conteúdo Quarteto. O próximo filho é o elemento compra, o qual possui um elemento data constituído de três atributos com seus respectivos valores. E por fim, o elemento setor constituído por dois elementos filhos, nome e produto. No próximo tópico têm-se uma breve abordagem sobre DTD. 2.3 Document Type Definition (DTD) DTDs são utilizadas para descrever a estrutura de documentos XML e podem ser consideradas esquemas para estes documentos. Para isso, utiliza-se de regras de sintaxe e de palavras-chaves. A estrutura de uma DTD está dividida em elementos e atributos (ANDERSON 2001).
18 17 Elementos são declarados em uma DTD através da tag ELEMENT, sendo que o conteúdo de um elemento pode ser vazio, outros elementos, misto ou qualquer. Possui também dois elementos de ordem que são:, (seqüência estrita) e (escolha). Para um elemento, define-se também a sua cardinalidade, operadores que especificam quantas vezes um elemento pode se repetir em um documento XML. Os operadores podem ser:? (opcional), * (zero ou mais vezes) ou + (uma ou mais vezes) (ANDERSON 2001). Conteúdos de um elemento (ANDERSON 2001): Elemento vazio: são elementos que não possuem elementos filhos e nem texto; elementos vazios podem ter atributos e são definidos pela palavrachave EMPTY; Elemento: a definição do elemento só possui elementos filhos e não contém texto; Elemento misto: é uma mistura de #PCDATA (texto) e elementos; Elemento qualquer: é um elemento de conteúdo aberto a qualquer conteúdo que não viole a sintaxe do XML bem-formado; éb definido pela palavrachave ANY. Atributos complementam e modificam elementos, oferecendo meios de associar propriedades simples a elementos (ANDERSON 2001). Os atributos de um elemento são declarados dentro de uma tag ATTLIST seguida pelo nome do elemento. Existem quatro definições padrões para atributos que são (ANDERSON 2001): #REQUIRED: o atributo é obrigatório em cada instância do elemento; #IMPLIED: o atributo é opcional em cada instância do elemento; #FIXED mais valor padrão: o atributo sempre tem o valor padrão mesmo não aparecendo no documento; Somente valor padrão: se o atributo não aparecer, o valor padrão é presumido pelo parser. Se o atributo aparecer, pode ter outro valor. Atributos podem ser dos seguintes tipos (ANDERSON 2001): CDATA: string; ID: permite um único valor em todo o documento; IDREF: Referência a algum elemento que tenha um atributo ID existente no documento;
19 18 IDREFS: Referência a mais de um elemento que tenha um atributo ID existente no documento; ENTITY: nome de uma entidade pré-definida; ENTITIES: série de ENTITY; NMTOKEN: uma declaração NMTOKEN fica em aberto podendo ser alterado em qualquer ponto da DTD, ou seja, receber outro valor em outro elemento; NMTOKENS: uma série de NMTOKEN; NOTATION: aceita um ou uma série de nomes indicando tipo de anotações declarados na DTD; Valor enumerado: uma série de valores definidos pelo usuário com finalidade de explicitar os valores possíveis de serem aceitos. <!ELEMENT listacompra (resp*,local*,compra,setor+, )> <!ELEMENT resp (nome)> <!ATTLIST resp id ID #REQUIRED> <!ELEMENT nome (#PCDATA)> <!ELEMENT local (nome)> <!ELEMENT compra (data)> <!ELEMENT data EMPTY> <!ATTLIST data dia CDATA #REQUIRED mes ( ) "1" ano NMTOKENS #REQUIRED> <!ELEMENT setor (nome,produto+)> <!ATTLIST setor id_resp IDREF #REQUIRED> <!ELEMENT produto (quant,unid,nome,precoant,precoat)> <!ELEMENT quant (#PCDATA)> <!ELEMENT unid (#PCDATA)> <!ELEMENT precoant (#PCDATA)> <!ELEMENT precoat (#PCDATA)> <!ELEMENT EMPTY> <!ATTLIST usuario CDATA #REQUIRED dominio NOTATION (ulbrato.br bol.com.br yahoo.com.br)"ulbra-to.br"> <!ENTITY site "lista.txt"> Figura 2 - Exemplo de uma DTD que valida o documento XML da figura 1 O exemplo de um elemento pode ser visto em listacompra, que é um elemento raiz, o qual possui uma lista de elementos que são: resp* (o asterístico * indica a cardinalidade do elemento, ou seja, esse elemento pode repetir zero ou mais vezes em um mesmo documento), local*, compra, setor+ (o sinal de + também indica
20 19 a cardinalidade do elemento, ou seja, esse elemento pode ocorrer uma ou mais vezes em um mesmo documento) e o elemento . Para exemplificar a definição de um atributo têm-se os atributos dos elementos data, resp, setor e . O elemento data é um elemento vazio (definido pela palavra-chave EMPTY) e possui três atributos que são: dia, do tipo CDATA e é obrigatório (definido como REQUIRED); mes, definido com uma lista de valores e valor padrão 1 ; e ano, do tipo NMTOKENS. O elemento resp possui um atributo id do ID e é obrigatório. O elemento setor possui o atributo id_resp do tipo IDREF e também é obrigatório. Para o elemento existem dois atributos; um deles (dominio) é do tipo NOTATION. Para exemplificar uma entidade têm-se a declaração da entidade site. 2.4 Armazenamentos de Documentos XML Para o armazenamento e posterior acesso a documentos XML, pode-se utilizar quatro abordagens principais (FLO, 99). A primeira seria a utilização de repositórios de dados nativos, como por exemplo, Rufus (SHO, 93), Lore (McH, 97), Tamino (SOFTWARE AG, 1999) e Strudel (FER, 98). Esses são sistemas voltados especificamente para o armazenamento de documentos XML, sendo que os mesmos seguem uma estrutura própria para trabalhar com índices, otimização de consultas etc. A segunda abordagem é a utilização de um banco de dados orientado a objetos. Nessa abordagem, são exploradas as técnicas de modelagem orientadas a objetos. Atualmente, são encontrados alguns sistemas comerciais que suportam essa abordagem, como, por exemplo, O2 ou Objectsore (CHR 94), e o projeto Monet (ZWO 99). A terceira abordagem é a utilização de bancos de dados relacionais. Armazenar documentos XML em um banco de dados relacional implica, primeiramente, em definir o esquema lógico deste banco. Assim, torna-se necessário realizar o mapeamento entre o modelo de dados semi-estruturados e o esquema lógico relacional. Os dados XML são mapeados para tabelas em um modelo relacional; as consultas submetidas aos dados semiestruturados são mapeadas para SQL. A última abordagem é armazenar os documentos XML em arquivos texto. Arquivos são formados por uma estrutura hierárquica, sendo que, essa estrutura é composta por tags
21 20 iniciais e tags finais (elementos), atributos, valores de atributos e conteúdo de elementos. Algumas considerações sobre as abordagens apresentadas (FLO, 99): Os sistemas nativos deveriam apresentar-se como a melhor alternativa, uma vez que são construídos especificamente para o armazenamento deste tipo de documento. Como ainda estão em fase de desenvolvimento, apresentam-se pouco escaláveis. O mesmo acontece com base de dados orientada a objetos. Ainda estão em fase de maturidade e tendem a apresentar queda de performance no acesso a bases de dados muito grandes. Já os sistemas de bancos de dados relacionais são sistemas maduros e trabalham bem com uma escala grande de dados. Permitem trabalhar com dados extraídos de documentos XML e dados tradicionais (estruturados). Além disso, pode ser aproveitada a SQL na manipulação dos dados. 2.5 Uso de SGBDs relacionais para o armazenamento de XML Bases de dados relacionais apresentam um esquema pré-definido e uma estrutura homogênea a nível de atributos e tipos (MELLO et al, 2000). Já para dados semiestruturados, ocorre a heterogeneidade para cada ocorrência de dados tanto a nível de atributos quanto de tipos. Dada essa heterogeneidade, em geral a estrutura de um dado semi-estruturado está presente na própria descrição do dado, necessitando ser identificada e extraída. Estas tarefas são complexas, uma vez que a distinção entre esquema e dados nem sempre é clara, se compararmos ocorrências de dados semanticamente iguais (MELLO et al, 2000). Sistemas de bases de dados relacionais têm-se apresentado como uma das abordagens mais utilizadas atualmente para o armazenamento de dados XML. São sistemas maduros, apresentam uma boa escalabilidade, são encontrados muitos produtos comerciais disponíveis, é uma tecnologia bastante conhecida, além do uso de SQL com processadores de consultas bem otimizados. SQL é a linguagem padrão para se lidar com bancos de dados relacionais, e é aceita por quase todos os produtos existentes no mercado (DATE, 2000). As operações básicas realizadas por SQL são: INSERT: permite inserir dados em tabelas da base de dados
22 21 o Exemplo: INSERT INTO <tabela> [<campos>] [VALUES <valores>] UPDATE: permite atualizar dados em tabelas da base de dados o Exemplo: UPDATE <tabela> SET <campo> = <expressão> [WHERE <condição>] DELETE: permite deletar dados em tabelas da base de dados; o Exemplo: DELETE FROM <tabela> [WHERE <condição>] SELECT: permite selecionar dados em tabelas da base de dados. o Exemplo: SELECT * FROM [<nome da tabela>] WHERE [<condição>] Para utilizar sistemas de bases de dados relacionais para o armazenamento de XML, tem se a necessidade de fazer o mapeamento de dados XML para o modelo de dados relacional. No tópico 2.6 serão apresentadas algumas abordagens sobre esses mapeamentos. A seguir, são apresentados três SGBDs e algumas funcionalidades para o armazenamento de XML DB2 O DB2 é um SGBD relacional desenvolvido pela IBM (DB2 2003a). A partir da segunda versão passou a suportar o armazenamento e manipulação de objetos complexos, acoplando as características comuns do DB2 Universal Database (DB2 UDB) à extensibilidade da XML (DB2 2003b). Para trabalhar com XML, utiliza-se o DB2 XML Extender. Essa ferramenta permite trabalhar com dois meios de armazenamento de documentos XML (DB2 2003a). O primeiro é armazenar o documento XML inteiro, sem modificações, em uma coluna da base de dados (XML column). O segundo permite fazer uma decomposição do documento XML, armazenando os dados extraídos em tabelas relacionais (XML collection). Abaixo são apresentados algumas das funcionalidades oferecidas pelo DB2 XML Extender (DB2 2003c): Armazenamento, recuperação e atualizações dos dados XML em uma única coluna;
23 22 Facilita o levantamento de informações para soluções de business-tobusiness e e-business através de formato XML-based; Extração de elementos e atributos em tipos de dados tradicionais SQL, (sistema de indexação e funcionalidades de SQL query para DB2); Armazena documentos XML como uma coleção de dados DB2, em múltiplas colunas e em tabelas SQL Server 2000 É um produto da Microsoft que trabalha com modelo de dados relacional e suporta aplicações Cliente/Servidor. A partir do SQL Server 2000, a Microsoft disponibilizou suporte para trabalhar com XML, permitindo importar e exportar dados XML, formas de adaptação entre dados XML e dados relacionais etc (SERVER 2000b). As principais funções de manipulação oferecidas pelo SQL Server 2000 para trabalhar com dados XML (SERVER 2000a) são: OpenXML: fornece visões relacionais de dados XML; podem ser usadas para consultas a dados XML e junção de dados XML com tabelas relacionais existentes; FOR XML: fornece acesso a dados XML existentes em uma base de dados relacional, com a utilização de SELECT e de palavras-chaves de OPenXML T/SQL. Com o SQL Server 2000, os usuários podem realizar consultas e retornar o resultado em formato XML, fazer combinações de dados de tabelas relacionais com dados originados de documentos XML, mapear múltiplas tabelas em uma junção com atributos e elementos específicos de documentos XML etc (SERVER 2000a) Oracle 9i O Oracle é um SGBD relacional desenvolvido pela Oracle Corporation. Suporta três tipos de armazenamento de documentos XML (ORACLE 2002): Tipo de dados Char: é um campo string. Nesse caso, os dados são armazenados em uma tabela do banco de dados como uma única cadeia de
24 23 caracteres. Uma das maiores dificuldades na utilização desse tipo de armazenamento é a lentidão no processamento de consultas aos dados, pois o conteúdo dos dados pode ser muito extenso; Tipo de dados CLOB: nesse tipo de armazenamento, o documento XML fica armazenado em um grande arquivo texto na base de dados e há um ponteiro no campo da tabela para esse documento. Uma das maiores dificuldades de se trabalhar com esse tipo de dados é que o documento só pode ser recuperado por completo; Tipo de dados XMLType: esse tipo de dados armazena o documento XML como é feito com o tipo CLOB, mas com o auxílio de métodos que vêm acoplados a ele permite criar, extrair e indexar os dados contidos no documento e recuperar tags específicas com a utilização de XPath. Algumas funções do XMLType: CreateXML(); ExistsNode(); Extract() etc. 2.6 Geração de esquema lógico relacional a partir de DTD DTDs são utilizadas como esquemas para documentos XML. Através de DTDs, pode-se prever o que existirá em um documento XML e o que o documento pode conter, com a definição de elementos e atributos ligados aos elementos. Há na literatura várias abordagens para o mapeamento de uma DTD para um esquema lógico relacional. Algumas destas abordagens são apresentadas a seguir Primeira abordagem A primeira destas abordagens é definida da seguinte forma (BOU 2001): Para cada elemento complexo, cria-se uma tabela e uma coluna de chave primária; Para cada elemento com conteúdo misto, cria-se uma tabela separada para armazenar o PCDATA, ligando à tabela pai através da chave primária da tabela pai; Para cada atributo monovalorado de um elemento e para cada elemento filho simples de ocorrência única, cria-se uma coluna na tabela do elemento.
25 24 Se o elemento ou atributo do elemento for opcional, a coluna também é opcional; Para cada atributo multivalorado e para cada elemento filho simples de múltipla ocorrência, cria-se uma tabela separada para armazenar os valores, ligada à tabela pai através da chave primária da tabela pai; Para cada elemento filho complexo, liga-se a tabela do elemento pai à tabela do elemento filho com a chave primária da tabela pai. Na figura 4 têm-se o exemplo do funcionamento desse processo. Para esse exemplo têm-se a DTD da figura 3: <!ELEMENT artigo (autor,titulo_artigo,resumo,secao*,bibliografia)> <!ELEMENT autor (nome,instituicao?,endereco?)> <!ELEMENT nome (#PCDATA)> <!ELEMENT instituicao (#PCDATA)> <!ELEMENT endereco (#PCDATA)> <!ELEMENT secao (paragrafo figura)+> <!ELEMENT paragrafo (#PCDATA)> <!ELEMENT figura EMPTY> <!ATTLIST figura tipo NOTATION (gif jpg) "gif" nome CDATA "figura1"> <!ATTLIST artigo data CDATA #REQUIRED ultima_revisao CDATA #REQUIRED versao CDATA #IMPLIED> <!ATTLIST secao titulo CDATA #REQUIRED numero ID #REQUIRED> <!ELEMENT bibliografia (referencia+)> <!ELEMENT referencia (obra,autor+,ano?,local?)> <!ATTLIST referencia id ID #REQUIRED> <!ELEMENT obra (#PCDATA)> <!ELEMENT ano (#PCDATA)> <!ELEMENT local (#PCDATA)> <!ELEMENT titulo_artigo (#PCDATA)> <!ELEMENT resumo (#PCDATA paragrafo)*> Figura 3 DTD exemplo para as abordagens de mapeamento. Seguindo os passos citados anteriormente, têm-se o seguinte esquema lógico relacional da figura 4.
26 25 Tb_artigo(id,id_autor,titulo_artigo,id_resumo,id_bibliografia, data,ultima_revisao,versao) Tb_autor(id,nome,instituicao,endereco) Tb_resumo(id) Tb_pcdata(id,id_resumo,pcdata) Tb_paragrafo_resumo(id,id_resumo,paragrafo) Tb_secao_artigo(id_artigo,id_secao) Tb_secao(id,numero) Tb_paragrafo(id,paragrafo) Tb_paragrafo_secao(id_paragrafo,id_secao) Tb_figura(id,tipo,nome) Tb_figura_secao(id_figura,id_secao) Tb_bibliografia(id) Tb_referencia(id,id_bibliografia,obra,ano,local) Tb_autor_referencia(id_autor,id_referencia) Figura 4 Esquema lógico relacional gerado segundo a DTD da figura 3 (abordagem 1) Notação: na representação do modelo relacional as chaves primárias estão definidas em negrito e sublinhadas; as chaves primárias e estrangeiras estão em negrito, sublinhadas e em itálico; as chaves estrangeiras estão em itálico Segunda abordagem Um dos problemas em se mapear DTDs para esquemas lógicos relacionais é a grande fragmentação do documento, como pode ser visto no exemplo anterior. A segunda abordagem visa diminuir essa fragmentação. Abaixo, têm-se os principais pontos que são tratados na segunda (SHA 99): A complexidade permitida na declaração de elementos, a cardinalidade dos elementos (opcional, obrigatório e multivalorado), elemento filho, elemento raiz etc; Os conflitos de mapeamento entre o esquema relacional (atributos e tabelas) e o aninhamento arbitrário de elementos na DTD; Os atributos multivalorados e a recursão entre elementos. Abaixo seguem as transformações necessárias para tratar os pontos citados acima (SHA 99): 1. Transformações de nivelamento: converter uma definição aninhada em uma representação plana. Por exemplo: (a,b)* é transformado em a*,b*
27 26 (a,b)? é transformado em a?,b? (a b) é transformado em a?,b? 2. Transformações de simplificação: reduzir vários operadores unários em um único. Por exemplo: a** é transformado em a* a*? é transformado em a* a?* é transformado em a* a?? é transformado em a? 3. Transformações de agrupamentos: agrupar sub-elementos que possuem o mesmo nome. Por exemplo:...,a*,...,a*,... é transformado em a*,......,a*,...,a?,... é transformado em a*,......,a?,...,a*,... é transformado em a*,......,a?,...,a?,... é transformado em a*,......,a,...,a,... é transformado em a*, Transformação de operadores + em *; Um elemento definido como (SACCOL 2001): <!ELEMENT a ((b c e)?(e? (f?,(b,b)*))*)> é transformado em: <!ELEMENT a (b*,c?,e*,f*)>. Após a simplificação da DTD, gera-se um grafo simplificado, o qual servirá como base para gerar o modelo lógico relacional. Abaixo têm-se um exemplo de um grafo. Figura 5 Grafo da DTD da figura 3 (segunda abordagem)
28 27 Cria-se tabelas para todos os elementos da DTD que não possuem nó apontando para ele (artigo). Elementos que são apontados por mais de um nó geram tabelas quando são recursivos. Todos os elementos apontados por * geram tabelas separadas. Elementos apontados por um único nó são agrupados nas tabelas já existentes. Na existência de elementos mutuamente recursivos e alcançáveis por um único nó, um deles deve gerar uma tabela separada. Os outros elementos existentes devem ser agrupados nas tabelas existentes (SACCOL 2001). Abaixo têm-se o esquema lógico relacional da DTD da figura 3 gerado a partir da abordagem citada acima. Tb_artigo(id,nome,instituicao,endereco,ultima_revisao,data,versoa, titulo_artigo,id_resumo,id_bibliografia) Tb_resumo(id) Tb_pcdata(id,id_resumo,pcdata) Tb_paragrafo(id,paragrafo) Tb_resumo_paragrafo(id_resumo,id_paragrafo) Tb_secao(id,id_artigo,numero) Tb_secao_paragrafo(id_secao,id_paragrafo) Tb_figura(id,id_secao,tipo,nome) Tb_bibliografia(id) Tb_referencia(id,id_bibliografia,local,ano,obra) Tb_autor(id,id_referencia,nome,instituicao,endereco) Figura 6 Esquema lógico relacional gerado segundo a DTD da figura 3 (abordagem 2) Terceira abordagem Segundo (LU et al 2003): Elementos XML e atributos são modelados como elementos. Uma DTD D é modelada como um conjunto de elementos XML {d 1, d 2,..., d k. Cada elemento XML d i (i=1,..., k) é da forma n i =e i, onde n i é o nome do elemento XML e e i é a expressão da DTD. Cada expressão da DTD é composta de nomes de elementos XML (expressões primitivas) e outras subexpressões DTD com os seguintes operadores:, * +? Uma expressão DTD e é definida recursivamente na seguinte notação BNF, onde n varia sobre os nomes de elementos XML e e 1,..., e m sobre as expressões DTD. Essa abordagem contém três etapas, que são (LU et al 2003): Eliminação da complexidade das DTDs;
29 28 Criação e inlining de grafos DTD; Geração de um esquema relacional. A figura 6 mostra as regras utilizadas para eliminar a complexidade das DTDs. 1.e+ e* 2.e? e 3.(e1 e n ) (e 1,,e n ) 4.(a)(e 1,,e n )* (e 1 *,,e n *) (b) e** e* 5.(a),e,,e,,e*,, (b),e,,e*,,e*,, (c),e*,,e,,e*,, (d),e*,,e*,,e*,, Figura 7 Regras para eliminar a complexidade dos DTDs (LU et al 2003). Regra 1. Aplicando a regra 1 o DTD resutante não conterá +. Regra 2. Aplicando a regra 2 o DTD resultante não conterá?. Regra 3. Aplicando a regra 3 o DTD resultante não conterá. Regra 4(a) e 4(b). Aplicando as regras 4 (a) e 4(b) o DTD resultante fica da seguinte forma: (e 1,e 2,...,e n ). Cada ei =e ou e* (i=1,...,n), onde e é o nome do elemento. Regra 5(a), 5(b), 5(c) e 5(d). Aplicando essas regras o DTD resultante fica da seguinte forma: (e 1,e 2,...,e n ). Sendo que, cada e i contém um nome distinto do elemento. Aplicando as regras citadas acima nesse DTD (LU et al 2003): <ELEMENT a ((b+,c*,d?)?,(e?,f,(g*,h?)+)?)> o seu DTD resultante é: <ELEMENT a (b*,c*,d,e,f,g*,h*)>. Segundo (LU et al 2003) as regras para eliminar a complexidade dos DTDs apresentadas acima sofreram algumas melhorias em relação às regras apresentadas por (SHA 99): Completude: Considera todas as combinações possíveis dos operadores e elementos XML. Como por exemplo, (e 1 e n )?. Essa condição não é tratada por (SHA 99); Eficiência: O algoritmo garante que as regras sejam aplicadas de acordo com a ordem apresentada na figura 7, reduzindo o número de regras a serem
30 29 aplicadas a cada passo; Simplificação extra: Eliminar o? simplifica o grafo resultante da DTD. Na etapa de criação e inlining do grafo da DTD, cria-se o grafo correspondente à DTD simplificada. No grafo, cada nó representa um elemento de XML e cada arco representa um operador de, ou *. O procedimento inlining considera três casos (LU et al 2003): Caso 1: O elemento a é conectado a b por a, e b não tem nenhum outro arco chegando a ele. Em outras palavras b não é um nó compartilhado; Caso 2: O elemento a é conectado a b por a, mas b contém outros arcos chegando a ele. Ou seja b é um nó compartilhado; Case 3: O elemento a é conectado a b por a. Nesse caso, cada a contém ocorrências múltiplas do elemento b. Abaixo têm-se o algoritmo apresentado por (LU et al 2003): Algorithm Inline(DTDGraph G) Begin For each node e in G do If not visited(e)then InlineNode(e) End If End For End Algorithm InlineNode(Node e) Begin Mark e as visited For each child c of e do If not visited(c)then InlineNode(c) End If End For For each child c of e do If inlinable(c)then e.inlinedset =c.inlinedset; assign all children of c as the childrenof e AndthendeletecfromG End If End For End Figura 8 Algoritmo inlining (LU et al 2003) O algoritmo inlining pode ser executado em O(n) onde n é o número dos elementos
31 30 na DTD da entrada. Abaixo são mostrados os grafos inlining da DTD (LU et al 2003): Figura 9 Gráfico inlining da DTD (LU et al 2003) Usando o procedimento inlining da figura 8, o grafo da DTD mostrado na figura 9.A será inlined no grafo mostrado na figura 9.B, e o grafo da DTD mostrado na figura 9.C será inlined no grafo mostrado na figura 9.D. Após aplicar o algoritmo, observa-se que um grafo da DTD tem as seguintes propriedades: os nós são conectados por um arco, ou * e um arco, deve apontar para um nó compartilhado (LU et al 2003). Abaixo tem se o grafo inlining da DTD da figura 3. Figura 10 Grafo inlining da DTD da figura 3
32 31 Depois do grafo simplificado da DTD, a última etapa é gerar um esquema relacional baseado neste grafo. O esquema relacional gerado suporta operações como insert, select, delete e update de um elemento arbitrário de XML declarado na entrada da DTD (LU et al 2003). Gerando o esquema lógico relacional (LU et al 2003): 1. Para cada nó e uma relação e é gerada com os seguintes atributos relacionais. o O ID é a chave primária, e para cada atributo XML A de e, um atributo relacional correspondente ao atributo A é criado com o mesmo nome; o If e.inilinedset >=2, introduz-se o nodetype do atributo para indicar o tipo do elemento XML a ser armazenado em uma tupla; o O nome de todo elemento XML terminal em e.inilinedset. Uma vez que um elemento não terminal é armazenado com valores de ID e nodetype, e o armazenamento de sub-elementos contidos nele, nenhum atributo adicional é necessário; o Se houver um arco de e para o nó c, introduz-se c.id como uma chave estrangeira em e referenciando a relação c. 2. Se houver ao menos duas relações t1(id) e t2(id) geradas pelo item 1, então combina-se todas as relações da forma t(id) em uma única relação table1(id,nodetype), sendo que o nodetype indica qual elemento XML é armazenado em uma tupla; 3. Se houver ao menos duas relações t1(id,t1) e t2(id,t2) geradas no item 1, então combina-se toda as relações da forma t(id,t) em uma única relação table2(id,nodetype,pcdata), sendo que o nodetype indica qual elemento XML é armazenado em uma tupla; 4. Se houver ao menos um arco * no grafo inlined da DTD, introduz-se uma relação edge(parentid,childid,parenttype,childtype) para armazenar todos os relacionamentos parent-child
33 32 correspondentes a arcos *. Aplicando esta abordagem à DTD da figura 3, têm-se o seguinte esquema gerado: Tb_artigo(id,id_autor,ultima_revisao,data,versao,id_resumo, id_bibliografia) Tb_autor(id,nome_autor,instituicao,endereco) Tb_resumo(id) Tb_pcdata(id,id_resumo,pcdata) Tb_paragrafo(id,paragrafo) Tb_resumo_paragrafo(id_resumo,id_paragrafo) Tb_secao(id,id_artigo,numero) Tb_secao_paragrafo(id_secao,id_paragrafo) Tb_figura(id,tipo,nome) Tb_secao_figura(id_secao,id_figura) Tb_bibliografia(id) Tb_referencia(id,id_bibliografia,local,ano,obra) Tb_referencai_autor(id_referencia,id_autor) Figura 11 Esquema lógico relacional gerado segundo a DTD da figura 3 (abordagem 3) Quarta abordagem A abordagem proposta por (FLO 99) define um esquema relacional a partir de um grafo resultante de um documento XML. Neste grafo, nos modelam objetos, arcos modelam atributos do objeto (rótulos) e folhas contém valores de dados (cadeias de caracteres). Essa abordagem é dividida em duas categorias: mapeamento de atributos e mapeamento de valores. O mapeamento de atributos pode ser feito de 4 formas distintas: armazenar todos os atributos em uma única tabela (abordagem dos arcos); agrupar todos os atributos com o mesmo nome em uma mesma tabela (abordagem dos atributos); armazenar todos os atributos em uma mesma tabela, mas com nomes de colunas diferentes para cada atributo (tabela universal); armazenar atributos multivalorados em tabelas separadas (abordagem universal normalizada). A figura 12 mostra um documento XML válido segundo a DTD da figura 3
34 33 <?xml version='1.0'?> <!DOCTYPE artigo SYSTEM "artigo.dtd"> <artigo ultima_revisao="2001" data="10/02/2001"> <autor> <nome>d`ilton</nome> </autor> <titulo_artigo>xml</titulo_artigo> <resumo> resumo 1 <paragrafo>paragrafo 1</paragrafo> </resumo> <bibliografia> <referencia id="ref1"> <obra>obra 1</obra> <autor> <nome>d`ilton</nome> </autor> </referencia> </bibliografia> </artigo> Figura 12 Documento XML válido segundo a DTD da figura 3 A figura 13 mostra e representação em forma de grafo do documento XML da figura 12. Figura 13 Grafo do documento XML da figura 12 Com base no grafo da figura 13, têm-se abaixo a tabela gerada seguindo o mapeamento de atributos abordagem dos arcos.
35 34 Tabela 1 Exemplo tabela baseado em arco com base no grafo da figura 13 Origem Ordem Nome Destino R 1 artigo ultima_revissao data 10/20/ autor nome D`ilton O mapeamento de valores pode ser feito de duas formas (FLO 99): tabelas separadas de valores (uma tabela para cada tipo de dados) e mapeamento Inlining (valores e atributos nas mesmas tabelas). Na tabela 2 têm-se uma representação do mapeamento Inlining, tendo como base o grafo da figura 13. Tabela 2 Tautor mapeamento com Inlining Tautor Origem Ordem Val_int Val_string Destino 1 3 Null Null 2 Tabela 3 Tnome mapeamento com Inlining Tnome Origem Ordem Val_int Val_string Destino 2 1 Null D`ilton null Maiores detalhes destas abordagens podem ser encontradas em (FLO 99).
36 35 3. MATERIAIS E MÉTODOS O trabalho foi desenvolvido no Laboratório de Multimídia (LABMIDIA) do CEULP/ULBRA Palmas TO. A ferramenta de desenvolvimento utilizada foi o Delphi 7. Foi utilizado também o compilador javacc e o j2sdk para a utilização do DTDParser.jj (Parser utilizado para gerar a representação da DTD em XML). Seguiu-se a seguinte metodologia: primeiro definiu-se uma DTD para validar os documentos XML gerados pelo DTDParser. A partir desta DTD, utilizou-se o componente XML Data Binding (Delphi) para gerar uma interface que acessa os documento XML gerados pelo DTDParser. Em seguida, foi implementado o algoritmo proposto nesse trabalho, o qual gera um script.sql, sendo que esse script é a representação da DTD em um modelo relacional.
37 36 4. RESULTADOS E DISCUSSÕES Este capítulo apresenta a proposta para o mapeamento de DTDs para um modelo lógico relacional. Também são mostrados o estudo de caso utilizado, a representação da DTD em formato XML e o algoritmo proposto para o mapeamento. No tópico abaixo têm-se a proposta de desenvolvimento desse trabalho. 4.1 Proposta Esse trabalho visa desenvolver um algoritmo para o mapeamento de DTDs para um modelo lógico relacional e também a sua implementação. Primeiramente, será feita uma representação da DTD em um formato XML através de um Parser javacc. Após, será realizado o mapeamento da DTD através do aplicativo que gerará um script.sql com o modelo lógico relacional da DTD para o SQL Sever. Para entender melhor a proposta desse trabalho é apresentada na figura 14 a arquitetura do sistema proposto. Figura 14 Arquitetura do Sistema
38 37 A arquitetura do sistema está dividida da seguinte forma: 1. DTD.dtd: entra-se no sistema com uma DTD válida; 2. JavaCC: nesse módulo do sistema utiliza-se de um parser, gerado por uma gramática com ações semánticas DTDparser.jj, que valida uma DTD (JAVACC 2003). Esse DTDparser.jj foi modificado de forma a gerar uma representação XML de uma DTD; 3. DTD.XML: é o documento XML gerado pelo parser do módulo JavaCC, o qual será utilizado para gerar os script.sql através do aplicativo; 4. XML Data Binding (Delphi): este é um componente do Delphi que a partir de uma DTD gera uma interface que permite acessar qualquer documento XML válido segundo esta DTD. Essa interface é utilizada para fazer a leitura do DTD.XML, possibilitando a implementação do algoritmo proposto neste trabalho; 5. script.sql: modelo lógico relacional gerado com a utilização do algoritmo proposto nesse trabalho; 6. SGBD SQL Server: SGBD utilizado para executar os comandos SQL de criação de tabelas. 4.2 Estudo de caso DTDs são utilizadas para definir uma estrutura para documentos XML. Nessa seção, têm-se exemplos de utilização de DTD e de documentos XML válidos segundo uma DTD. A DTD utilizada para o exemplo tem sua definição voltada para publicações de artigos e livros. Um artigo pode ter um título, autor, bibliografia etc. Um livro pode ter um título, autores, bibliografia, capítulo, seção etc. A próxima figura mostra a DTD definida para publicações.
39 38 <!ELEMENT publicacoes (livro artigo)+> <!ELEMENT livro (titulo,(autores autor),editora?,capitulos?,secao*,bibliografia?)> <!ATTLIST livro data CDATA #IMPLIED ultima_revisao CDATA #IMPLIED versao CDATA #IMPLIED cod ID #REQUIRED edicao CDATA #IMPLIED > <!ELEMENT autores (autor*)> <!ELEMENT autor (#PCDATA nome)*> <!ELEMENT nome (#PCDATA)> <!ELEMENT editora (#PCDATA)> <!ELEMENT capitulos (capitulo+)> <!ELEMENT capitulo (#PCDATA referencia paragrafo)*> <!ATTLIST capitulo titulo CDATA #REQUIRED numero ID #REQUIRED > <!ELEMENT referencia EMPTY> <!ATTLIST referencia cod IDREF #REQUIRED > <!ELEMENT paragrafo (#PCDATA referencia)*> <!ELEMENT secao (paragrafo figura)+> <!ATTLIST secao titulo CDATA #REQUIRED numero (s1 s3) #REQUIRED > <!ELEMENT bibliografia (ref+)> <!ELEMENT ref (obra, autor)> <!ATTLIST ref id ID #REQUIRED > <!ELEMENT obra (#PCDATA)> <!ELEMENT figura EMPTY> <!ATTLIST figura tipo CDATA #REQUIRED nome (figura1.gif figura2.gif) #REQUIRED > <!ELEMENT artigo (titulo,autor+,bibliografia?)> <!ELEMENT titulo (#PCDATA)> Figura 15 DTD para publicações de livros e artigos Para a DTD da figura 15 foram definidos três documentos XML. Na figura 16 têmse o primeiro documento XML válido segundo a DTD da figura 15.
40 39 <?xml version="1.0"?> <!DOCTYPE publicacoes SYSTEM "publicacoes.dtd"> <publicacoes> <livro data="05/09/2000" ultima_revisao="10/01/2001"cod="l1"> <titulo>xml</titulo> <autor>d`ilton</autor> <editora>ciência Moderna</editora> <capitulos> <capitulo titulo="introducao" numero="n1"> Texto teste... <paragrafo>paragrafo teste 1</paragrafo> </capitulo> </capitulos> <bibliografia> <ref id="f1"> <obra>xml</obra> <autor> <nome>deise</nome> </autor> </ref> </bibliografia> </livro> </publicacoes> Figura 16 Documento XML válido segundo a DTD da figura 15 exemplo 01 Para esse primeiro documento XML (figura 16) foi armazenado somente um livro, o qual está composto por titulo, autor, editora, capitulos e paragrafo. A figura 17 mostra o segundo documento XML válido conforme a DTD da figura 15.
41 40 <?xml version="1.0"?> <!DOCTYPE publicacoes SYSTEM "publicacoes.dtd"> <publicacoes> <artigo> <titulo>ionosoft</titulo> <autor> <nome>d`ilton</nome> <nome>washington Luiz Carvalho Lima</nome> Piveta </autor> <bibliografia> <ref id="f3"> <obra>ionosfera</obra> <autor> <nome>washington</nome> </autor> </ref> </bibliografia> </artigo> <livro data="05/09/2000" ultima_revisao="10/01/2001"cod="l1"> <titulo>xml</titulo> <autor>d`ilton</autor> <editora>ceiencia Moderna</editora> <capitulos> <capitulo titulo="introducao" numero="n1"> Texto teste... <paragrafo>paragrafo teste 1</paragrafo> </capitulo> </capitulos> <bibliografia> <ref id="f1"> <obra>xml</obra> <autor> <nome>deise</nome> </autor> </ref> </bibliografia> </livro> </publicacoes> Figura 17 Documento XML válido segundo a DTD da figura 15 exemplo 02 O documento XML da figura 17 possui um artigo e um livro, sendo composto por titulo, autor e bibliografia. O livro possui titulo, autor, editora, capitulos e paragrafo. Como pode ser visto, os documentos da figura 16 e 17 são válidos segundo a mesma DTD e possuem estruturas diferentes. A figura 18 mostra outro exemplo de um documento XML válido segundo a DTD da figura 15.
42 <?xml version="1.0"?> <!DOCTYPE publicacoes SYSTEM "publicacoes.dtd"> <publicacoes> <artigo> <titulo>ionosoft</titulo> <autor> <nome>d`ilton</nome> <nome>washington Luiz Carvalho Lima</nome> Piveta </autor> <bibliografia> <ref id="f3"> <obra>ionosfera</obra> <autor> <nome>washington</nome> </autor> </ref> </bibliografia> </artigo> <livro data="05/09/2000" ultima_revisao="10/01/2001"cod="l1"> <titulo>xml</titulo> <autor>d`ilton</autor> <editora>ceiencia Moderna</editora> <capitulos> <capitulo titulo="introducao" numero="n1"> Texto teste... <paragrafo>paragrafo teste 1</paragrafo> </capitulo> </capitulos> <bibliografia> <ref id="f1"> <obra>xml</obra> <autor> <nome>deise</nome> </autor> </ref> </bibliografia> </livro> <artigo> <titulo>mapeamento de DTDS</titulo> <autor>d`ilton</autor> <bibliografia> <ref id="f1"> <obra>database DTDs</obra> <autor> <nome>d`ilton</nome> </autor> </ref> </bibliografia> </artigo> </publicacoes> Figura 18 Documento XML válido segundo a DTD da figura 15 exemplo 03 41
43 42 Para validar os documentos XML da figura 16, 17 e 18 foi utilizada a mesma DTD. Como pode ser visto, todos os documentos possuem estruturas diferentes, sendo que estas estruturas estão previstas na DTD. Ao se mapear essa DTD para um modelo lógico relacional, deve-se levar em conta a cardinalidade dos elementos, flexibilidade do documento, atributos e garantir que todos os dados sejam representados no modelo lógico relacional. 4.3 Representação da DTD em formato XML Para facilitar o mapeamento da DTD para um modelo lógico relacional, essa DTD será representada em formato XML, através de um analisador sintático e léxico. O analisador léxico (AHO et al, 1995) tem como função principal ler os caracteres de entrada e produzir uma seqüência de tokens que o parser utiliza para a análise sintática. O analisador sintático (AHO et al,1995) obtém uma cadeia de tokens proveniente do analisador léxico, e verifica se ela pode ser gerada pela gramática da linguagem-fonte. O analisador sintático relata todos os erros de sintaxe, como por exemplo (AHO et al,1995): Léxicos: grafia errada de um identificador, palavras-chaves ou operador; Sintático: uma expressão aritmética com parênteses não-balanceados; Semânticos: um operador aplicado a um operando incompatível; Lógicos: uma chamada infinitamente recursiva. Um exemplo de um analisador sintático e léxico é o Java Compiler-Compiler (JavaCC) (JAVACC 2000). Para mapear a DTD para um formato XML será utilizado um parser DTDParser (DTDParser 2001) compilado pelo JavaCC. Esse parser recebe em sua entrada uma DTD e após, validá-la, gera em sua saída um documento XML representando a DTD. Segue em anexo o DTDParser. Para melhor entender a representação de uma DTD em um formato XML será apresentada na figura 19 uma DTD e na figura 20 a sua representação em XML. <!ELEMENT msg (de,para*,conteudo)> <!ELEMENT de (#PCDATA)> <!ELEMENT para (#PCDATA)> <!ELEMENT conteudo (#PCDATA)> Figura 19 DTD msg O DTDParser faz um mapeamento de todos os elementos, atributos, cardinalidades,
44 43 montando um documento XML como o mostrado na figura 20. <dtd> <elemento> <pai> <filho><nome>de</nome></filho> <filho><nome>para</nome></filho> <filho><nome>conteudo</nome></filho> <nome>msg</nome> </pai> </elemento> <elemento> <pai> <pcdata>pcdata</pcdata> <nome>de</nome> </pai> </elemento> <elemento> <pai> <pcdata>pcdata</pcdata> <nome>para</nome> </pai> </elemento> <elemento> <pai> <pcdata>pcdata</pcdata> <nome>conteudo</nome> </pai> </elemento> </dtd> Figura 20 Representação XML da DTD da figura 19 A figura 20 mostra a representação XML da DTD da figura 19. O documento XML tem como elemento raiz <DTD> e para armazenar o elemento raiz e seus filhos definidos na DTD têm-se a tag <Elemento> e dentro da mesma tem a tag <pai> e dentro dela zero ou várias tags <filho> com seu respectivo nome, zero ou uma tag <pcdata> e a tag <nome>, que é o nome do elemento raiz. No próximo tópico têm-se a apresentação do algoritmo desenvolvido nesse trabalho. 4.4 Algoritmo de geração de esquemas lógicos a partir da DTD Nessa seção será apresentado o algoritmo desenvolvido nesse trabalho. Para
45 44 melhor compreensão do algoritmo, ele será divido por tipos de elementos como: elemento PCDATA, elemento complexo, elemento vazio e elemento misto. A figura 19 mostra o início do algoritmo. inicio para cada elemento da DTD{ se o elemento for raiz{ gera uma tabela; cria um coluna chave primaria para esta tabela; se possui atributos{ addatributoselemento(pai); para cada filho do elemento{... Figura 21 Inicio do algoritmo Como mostra a figura 21, primeiramente verifica-se o elemento raiz da DTD e criase uma tabela com uma chave primária para esse elemento. Após, verifica-se se o mesmo possui atributos; sendo verdade, adiciona-se os tributos do elemento em sua tabela através do procedure addatributoselemento(filho). Em seguida, verifica-se todos os seus elementos filhos. Nas próximas seções têm-se um comentário sobre cada tipo de elemento filho descrevendo, o seu mapeamento para o modelo relacional Elementos PCDATA Para elemento PCDATA são consideradas duas categorias: os elementos monovalorados (para esses elementos são considerados os elementos que podem existir ou não no documento XML) e os elementos multivalorados. No primeiro caso, os elementos são mapeados para a tabela do pai, caso não possua atributos. Possuindo atributos e somente um pai, é armazenado na tabela do pai juntamente com seus atributos. Possuindo atributos e mais de um pai, gera-se uma tabela para o elemento com seus respectivos atributos e gera-se também uma tabela auxiliar referenciando a tabela do pai e a tabela do filho. Para o segundo caso, elementos multivalorados, gera-se uma tabela para o elemento filho referenciando a tabela do pai, caso não possua atributos. Possuindo atributos e somente um pai, gera-se uma tabela para o elemento com seus respectivos atributos e uma
46 45 referência à tabela do pai. Caso possua atributos e mais de um pai, gera-se uma tabela para o filho com seus respectivos atributos e gera-se também uma tabela auxiliar referenciando a tabela do elemento filho e a tabela de seu pai. Na figura 22 é tratada a primeira abordagem. se for PCDATA e monovalorado{ senão possui atributos{ adiciona uma coluna para este elemento na tabela pai; senão{ se possui somente um pai{ adiciona uma coluna para este elemento na tabela pai; addatributoselementopcdata(pai,filho,modifier, cont_pai); senão{ gera uma tabela para o filho com uma coluna chave primaria e uma coluna para o elemento filho; adiciona o id do filho na tabela pai; addatributoselementopcdata(pai,filho,modifier,cont_pai); Figura 22 Parte do algoritmo que trata de elemento PCDATA e monovalorado. A figura 22 mostra o mapeamento de elemento PCDATA e monovalorado para um modelo relacional. Primeiramente, verifica-se se o elemento possui atributos; caso o elemento não possua atributos, cria-se uma coluna para o elemento na tabela pai, sendo que também é levado em conta se o elemento é opcional ou obrigatório. Se o elemento possui atributos são levadas em conta duas condições: verificar se o elemento possui somente um pai ou mais de um pai. Acontecendo do elemento possuir somente um pai, adiciona-se na tabela pai uma coluna para o elemento filho, e através do procedure addatributoselementopcdata(pai,filho,modifier,cont_pai) adiciona-se os atributos do elemento filho na tabela pai. O elemento, possuindo mais de um pai, é definido uma tabela para o filho, sendo adicionado nessa tabela uma chave primária, uma coluna para o elemento e seus atributos através do procedure addatributoselementopcdata(pai,filho,modifier,cont_pai). Para as duas condições acima é levado em conta se o elemento é obrigatório ou opcional.
47 46 A figura 23 descreve a segunda abordagem dessa seção. se for PCDATA e multivalorado{ senão possui atributos{ gera uma tabela com o nome do filho junto ao nome do pai, uma coluna chave estrangeira referenciando a tabela do pai e uma coluna para o elemento filho; senão{ se possui somente um pai{ gera uma tabela para o filho com uma coluna chave primaria, uma coluna chave estrangeira referenciando a tabela do pai e uma coluna para o elemento filho; addatributoselementopcdata(pai,filho,,modifier, cont_pai); senão{ gera uma tabela para o filho com uma coluna chave Primaria e uma coluna para o elemento filho; gera uma tabela auxiliar com duas colunas chaves estrangeiras, uma que referencia a tabela do filho e a outra a tabela pai; addatributoselementopcdata(pai,filho,modifier, cont_pai); Figura 23 Parte do algoritmo que trata de elemento PCDATA e multivalorado. A figura 23 descreve o mapeamento de um elemento PCDATA e Multivalorado para um modelo relacional. Como a abordagem anterior, verifica-se se o elemento possui atributos; caso o elemento possua atributos, é gerada uma tabela com o nome do filho junto ao nome do pai (tb_filho_pai) com suas respectivas colunas (chave primária, chave estrangeira que referencia a tabela pai e uma coluna para o elemento). Para os elementos que possuem atributos são levadas em conta duas condições: a primeira, elementos que possuem somente um pai, e a segunda, elementos que possuem mais de um pai. Para a primeira condição, cria-se uma tabela para o filho com duas chaves (uma primária e outra estrangeira referenciando a tabela pai), uma coluna para o elemento filho e por fim adiciona à tabela os seus atributos. Na segunda condição, cria-se uma tabela para o filho e uma tabela auxiliar que faz a ligação entre a tabela do filho e a tabela do pai. Na próxima seção têm-se uma abordagem sobre o mapeamento de elementos complexos para um modelo relacional.
48 Elemento complexo Os elementos complexos foram divididos nas seguintes categorias: Elemento filho multivalorado e elemento pai multivalorado. No caso de possuir somente um pai, gera-se uma tabela para o filho com seus respectivos atributos, caso existam, e uma referência a tabela do pai. Possuindo mais de um pai, gera-se uma tabela para o filho com seus respectivos atributos, caso existam, e gera-se também uma tabela auxiliar referenciando a tabela do filho e a tabela do pai; Elemento filho monovalorado e elemento pai multivalorado. Faz-se o mesmo mapeamento da primeira categoria; Elemento filho multivalorado e elemento pai monovalorado. Faz-se o mesmo mapeamento da primeira categoria; Elemento filho monovalorado e elemento pai monovalorado. Nesse caso verifica-se se após o parêntese existe o símbolo * ou +. Existindo esse símbolos e o elemento possuindo somente um pai, gera-se uma tabela para o filho com seus atributos, caso possua, e cria uma referência com a tabela do pai. Possuindo mais de um pai, gera-se uma tabela para o filho com seus respectivos atributos e gera-se também uma tabela auxiliar referenciando a tabela do pai. Ocorrendo de não possuir os símbolos citados acima e também não possuindo somente filhos multivalorados adiciona-se na tabela do pai uma referência à tabela do filho. Caso possua somente filhos multivalorados, cria-se uma tabela para o pai com seus respectivos atributos, caso os possua, e uma referência à tabela do pai. Para elemento filho multivalorado e elemento pai multivalorado ou elemento filho monovalorado e elemento pai multivalorado têm-se a figura 24.
49 48 se o (filho for multivalorado e pai multivalorado) ou (filho for monovalorado e o pai multivalorado){ se possui somente um pai{ gera uma tabela para o filho com uma coluna chave primaria e uma coluna chave estrangeira que referencia a tabela pai; se possui atributos{addatributoselemento(filho); senão{ gera uma tabela para o filho com uma coluna chave primaria; gera uma tabela auxiliar com duas colunas chaves estrangeiras, uma que referencia a tabela do filho e outra a tabela do pai; se possui atributos{addatributoselemento(filho); Figura 24 Parte do algoritmo que trata de elemento filho multivalorado e elemento pai multivalorado ou elemento filho monovalorado e elemento pai multivalorado. A figura 24 mostra como é feito o mapeamento para essas duas situações. Para esse mapeamento verifica-se duas condições: se o filho possui somente um pai e se o filho possui mais de um pai. Para a primeira condição é criada uma tabela para o filho, constituída de uma chave primária, uma chave estrangeira referenciando a tabela pai; no caso de possuir atributos, adiciona-se os atributos à tabela através do procedure addatributoselemento(filho). Na segunda condição, gera uma tabela para o filho com uma coluna chave primária; possuindo atributos, adiciona-os na tabela. Cria-se também uma tabela auxiliar que faz referência à tabela do filho e à tabela do pai. A figura 25 descreve o mapeamento de elemento filho multivalorado e elemento pai monovalorado.
50 49 se o filho for multivalorado e o pai monovalorado{ se possui somente um pai{ gera uma tabela para o filho com uma coluna chave primaria e uma coluna chave estrangeira que referencia a tabela pai; se possui atributos{addatributoselemento(filho); senão{ gera uma tabela para o filho com uma coluna chave primaria; se possui atributos{addatributoselemento(filho); gera uma tabela auxiliar com duas coluna chaves estrangeiras uma que referencia o tabela filho e outra a tabela pai; Figura 25 Parte do algoritmo que trata de elemento filho multivalorado e elemento pai monovalorado. Para essa categoria são levadas em conta as mesmas condições das categorias anteriores, como pode ser visto na figura 25. A figura 26 descreve o mapeamento de elemento filho monovalorado e elemento pai monovalorado. se o filho for monovalorado e o pai monovalorado{ se após o parêntese existir o símbolo * ou + { se possui somente um pai{ gera uma tabela para o filho com uma coluna chave primaria e uma coluna chave estrangeira que referencia a tabela pai; se possui atributos{addatributoselemento(filho); senão{ gera uma tabela para o filho com uma coluna chave primaria; se possui atributos{addatributoselemento(filho); gera uma tabela auxiliar com duas coluna chaves estrangeiras uma que referencia a tabela filho e outra a tabela pai; senão{ senão possuisofilhosmultivalorados(filho) adiciona uma coluna chave estrangeira na tabela pai; senão{ gera uma tabela para o filho com uma coluna chave primaria e uma coluna chave estrangeira que referencia a tabela pai; se possui atributos addatributoselemento(filho); Figura 26 Parte do algoritmo que trata de elemento filho monovalorado e elemento pai monovalorado.
51 50 Para fazer o mapeamento dessa categoria para um modelo relacional são levados em conta duas situações: a primeira é se após o parêntese existe o símbolo * ou + ex.: <!ELEMENT secao (paragrafo figura resumo instituicao)+>; a segunda é se não existe esses símbolos após o parêntese. Na primeira situação verifica-se se o elemento possui somente um pai; essa condição, sendo verdadeira, gera uma tabela para o filho com uma chave primária e uma chave estrangeira referenciando a tabela pai e também verifica-se se o elemento possui atributos e os adiciona na tabela filho. Caso o elemento filho possua mais de um filho, criase uma tabela separada para o filho com os seus atributos, caso existam, e gera-se uma tabela auxiliar que faz referência com a tabela do filho e a tabela do pai. Para a segunda situação, são verificadas duas condições: se o elemento não possui somente filhos multivalorados ex.: <!ELEMENT bibliografia (referencia+)> e se o elemento só possui filhos multivalorados. Para a primeira condição, simplesmente adiciona-se na tabela do pai uma coluna chave estrangeira referenciando a tabela do filho, levando em conta se o elemento é opcional ou obrigatório. Na segunda condição gera-se uma tabela para o filho referenciando a tabela do pai; caso possua atributos, eles são adicionados na tabela do filho. Na próxima seção têm-se uma abordagem sobre o mapeamento de elemento vazio para um modelo relacional Elemento vazio Para elemento vazio são levados em conta duas condições: elemento monovalorado e elemento multivalorado. Para elemento monovalorado: verifica-se se no pai do elemento existe um símbolo de * ou + após o parêntese, caso exista, gera-se se uma tabela para o filho, com seus respectivos atributos e uma referência à tabela do pai. Não existindo os símbolos, gera-se uma tabela para o filho, com seus respectivos atributos, caso existam, e adiciona na tabela do pai uma coluna referenciando a tabela do filho. Elemento multivalorado: gera-se uma tabela para filho, com seus respectivos atributos, caso existam, e uma tabela auxiliar relacionado com à tabela do filho
52 51 e à tabela do pai. A figura 27 mostra o mapeamento desse tipo de elemento para um modelo relacional. se for vazio{ se o filho for monovalorado{ verifica no pai se após o parêntese existe o símbolo * ou + { gera uma tabela formada com o nome do pai e do filho, com uma coluna chave primaria e uma chave estrangeira que referencia a tabela pai; se possui atributos addatributoselemmisto(filho,pai); senão{ gera uma tabela para o filho com uma coluna chave primaria; se possui atributos addatributoselemento(filho); adiciona uma coluna chave estrangeira na tabela pai; senão{ gera uma tabela para o filho com uma coluna chave primaria; se possui atributos addatributoselemento(filho); gera uma tabela auxiliar com duas colunas chaves estrangeiras uma que referencia a tabela do filho e a outra a tabela do pai; Figura 27 Parte do algoritmo que trata de elemento vazio. Para elemento vazio e elemento monovalorado existem duas situações: elementos em que existe um símbolo de * ou + após o fechamento de parêntese de seu pai (ex.: <!ELEMENT secao (paragrafo figura resumo instituicao)+> <!ELEMENT figura EMPTY>); a segunda situação é quando isso não acontece. Na primeira situação gera-se uma tabela, sendo que o nome da tabela será formado pelo nome do filho junto ao nome do pai e essa tabela será composta por uma coluna chave primária e uma coluna chave estrangeira referenciando a tabela pai; caso possua atributos, eles são adicionado à tabela. O elemento, estando na segunda situação, gera-se uma tabela para o filho com uma coluna chave primária; caso possua atributos, eles são adicionados na tabela. Após,
53 52 adiciona-se na tabela do pai uma chave estrangeira que referencia a tabela do filho. Para elemento vazio e elemento multivalorado cria-se uma tabela para o filho com seus respectivos atributos, caso possua. Logo em seguida, gera-se uma tabela auxiliar que referencia a tabela do pai e a tabela do filho. Na próxima seção têm-se uma abordagem sobre o mapeamento de elemento misto para um modelo relacional Elemento misto O mapeamento de elemento misto para um modelo relacional é realizado da seguinte forma: primeiramente, gera-se uma tabela em que o seu nome é composto pelo nome do elemento filho e pelo nome do elemento pai. Caso possua atributos, eles são adicionados à tabela através do procedure addatributoselemmisto(filho,pai); em seguida, percorre-se todos os filhos do elemento, verificando as seguintes características: PCDATA, se o elemento filho (filho do elemento misto) possui filhos, se o elemento filho é um PCDATA e se o elemento filho é um elemento vazio. Para PCDATA: o elemento possuindo somente um pai, gera-se uma tabela para o PCDATA referenciando a tabela do pai; e caso possua mais de um pai, gera-se uma tabela para o PCDATA e uma tabela auxiliar referenciando a tabela do PCDATA e a tabela do pai. Quando elemento filho (filho do elemento misto) possui filhos: gera-se uma tabela para o filho, com seus respectivos atributos; caso existam, e uma referência com a tabela do pai, caso possua somente um pai. Possuindo mais de um pai, gera-se uma tabela para o filho com seus respectivos atributos; caso existam, e uma tabela auxiliar referenciando a tabela do filho e a tabela do pai. Elemento filho (filho do elemento misto) é um PCDATA: ocorre da mesma forma que a situação anterior. Elemento vazio (filho do elemento misto): gera-se uma tabela para o filho, com seus respectivos atributos; caso existam, e uma referência com a tabela do pai, caso possua somente uma pai e o seu pai também possua semente um pai. Possuindo mais de um pai, ambos os elementos, gera-se uma tabela para o filho com seus respectivos atributos; caso existam, e uma tabela auxiliar referenciando a tabela do filho e a tabela do
54 53 pai. Ainda nessa seção será abordado sobre esse mapeamento com mais detalhes. A figura 28 mostra o início do mapeamento de elemento misto. se for misto{ gera uma tabela formada com o nome do pai e do filho, com uma coluna chave primaria e uma chave estrangeira que referencia a tabela pai; se possui atributos{ addatributoselemmisto(filho,pai); para cada filho do elemento misto{... Figura 28 Inicio do algoritmo que trata de elemento misto. Como pode ser visto na figura 28, após gerar a tabela para o elemento misto percorre-se todos os filhos do elemento, fazendo o seu mapeamento para o modelo relacional. Abaixo é descrito como são manipulados os filhos do elemento misto. Primeiramente será tratado de elemento PCDATA. se for PCDATA{ se possui somente um pai{ gera uma tabela com uma coluna chave primaria, uma coluna chave estrangeira que referencia a tabela do pai e uma coluna para o filho; senão{ gera uma tabela para o filho com uma coluna chave primaria e uma coluna para o elemento filho; gera uma tabela auxiliar com duas coluna chaves estrangeira uma que referencia a tabela do filho e a outra a tabela do pai; Figura 29 Parte do algoritmo que trata de elemento misto quando o filho do elemento misto é PCDATA. Como mostra a figura 29, para elemento PCDATA faz-se duas verificações: primeiro verifica-se se o elemento possui somente um pai; a segunda verificação é se o elemento possui mais de um pai. Para a primeira condição, gera-se uma tabela para o elemento referenciando a tabela do pai (elemento misto) e uma coluna para armazenar o filho. Na segunda condição gera-se uma tabela para o elemento PCDATA com uma coluna chave primária e uma coluna para o elemento. Após, gera-se uma tabela auxiliar
55 54 referenciando a tabela do elemento misto a tabela do pai. Caso o elemento não seja um PCDATA, percorre-se o documento e verifica-se onde esse elemento é pai. Após encontrá-lo, são realizadas três condições: se o elemento filho (filho do elemento misto) também possui filhos, se é um elemento PCDATA e se é um elemento vazio. A figura 30 mostra como é feito o mapeamento se o elemento filho também possui filhos. se o filho possui filho{ se possui somente um pai{ gera uma tabela para o filho com uma coluna chave primário e uma coluna chave estrangeira que referencia a tabela pai; se possui atributos{ addatributoselemento(misto); senão{ gera uma tabela para filho com uma coluna chave primaria; se possui atributos{addatributoselemento(misto); gera uma tabela auxiliar com duas colunas chaves estrangeira uma que referencia a tabela do filho e a outra a tabela do pai; Figura 30 Parte do algoritmo que trata de elemento misto quando o filho do elemento misto possui filhos. Como pode ser visto na figura 30, para esse tipo de elemento tem que ser analisados duas condições: se o elemento filho do elemento misto possui somente um pai; e se o elemento possui mais de um pai. Quando o elemento possui somente um pai, gera-se uma tabela para o elemento filho com duas chaves, uma primária e outra estrangeira que referencia a tabela do pai; caso possua atributos, eles são adicionados na tabela. Quando o elemento possui mais de um pai, gera-se uma tabela para o filho e verifica-se se o mesmo possui atributos; se for verdade, adiciona-se os atributos à tabela. Após, gera-se uma tabela auxiliar referenciando a tabela do filho e a tabela do pai. A figura 31 mostra o mapeamento do elemento quando ele for um PCDATA.
56 55 se for um PCDATA{ se possui somente um pai{ gera uma tabela para o filho com uma coluna chave primaria, uma coluna chave estrangeira que referencia a tabela do pai e uma coluna para o elemento filho; se possui atributos{addatributoselemento(misto); senão{ gera uma tabela para o filho com uma coluna chave primaria e uma coluna para o filho; se possui atributos{addatributoselemento(misto); gera uma tabela auxiliar com duas colunas chaves estrangeiras uma que referencia a tabela do filho e a outra a tabela do pai; Figura 31 Parte do algoritmo que trata de elemento misto quando o filho do elemento misto for um PCDATA. A figura 31 descreve o mapeamento de quando o filho do elemento misto for do tipo PCDATA. Como pode ser visto na figura 31, são realizadas duas verificações: se o elemento possui somente um pai; e se o elemento possui mais de um pai. Para o elemento que possui somente um pai, gera-se uma tabela referenciando a tabela do pai; caso possua atributos, os mesmos são adicionados na tabela e também é adicionado na tabela uma coluna para guardar o valor do elemento. Quando o elemento possui mais de um pai, gera-se uma tabela para o filho com uma coluna chave primária, uma coluna para o filho; caso possua atributos, os mesmos são adicionados na tabela. Após, gera-se uma tabela auxiliar referenciando a tabela do filho e a tabela do pai. A figura 32 mostra o mapeamento de quando o filho do elemento misto for um elemento vazio.
57 56 se for vazio{ se possui somente um pai e seu pai possui somente um pai{ gera uma tabela para o filho com uma coluna chave primaria e uma coluna chave estrangeira que a referencia tabela pai; se possui atributos{ addatributoselemento(misto); senão{ gera uma tabela para o filho com uma coluna chave primaria; se possui atributos{addatributoselemento(misto); gera uma tabela auxiliar com duas colunas chaves estrangeira uma que referencia a tabela do filho e a outra a tabela do pai; Figura 32 Parte do algoritmo que trata de elemento misto quando o filho do elemento misto for um elemento vazio. Quando o filho do elemento misto for um elemento vazio verificase duas condições: se o elemento filho possui somente um pai e se o seu pai (o elemento misto) também possui somente um pai; e se o elemento filho possui mais de um pai e se o seu pai (o elemento misto) também possui mais de um pai. Para a primeira condição gera-se uma tabela para o filho com uma coluna chave primária, uma coluna chave estrangeira que referencia a tabela do pai e seus atributos. Para a segunda condição gera-se uma tabela para o filho com seus respectivos atributos e uma tabela auxiliar referenciando a tabela do pai e a tabela do filho. Na próxima seção têm-se uma abordagem do sistema implementado. 4.5 Sistema implementado A implementação do algoritmo foi feita em Delphi 7. A ferramenta recebe um documento XML (adquirido a partir do DTDParser do javacc), que é a representação da DTD, e gera um script SQL (utilizado a sintaxe do SQL Server2000). A figura 33 mostra a interface do sistema implementado.
58 57 Figura 33 Interface do sistema Além de gerar os scripts SQL das DTDs, que é a sua função principal, o usuário pode também realizar algumas operações básicas, como por exemplo, editar o documento (mudar fonte, modificar o documento e dentre outras funcionalidades), imprimir etc. A figura 34 mostra o modelo lógico relacional definido a partir do script SQL (da DTD da figura 3) gerado pelo sistema implementado nesse trabalho.
59 58 Figura 34 Modelo lógico relacional gerado a partir da DTD da figura 3. Na próxima seção têm-se uma comparação entre os algoritmos apresentados na seção 2.6 e o algoritmo desenvolvido nesse trabalho. 4.6 Comparação entre os algoritmos apresentados na revisão de literatura e o algoritmo desenvolvido nesse trabalho Com base nos algoritmos apresentados na revisão de literatura e o algoritmo desenvolvido nesse trabalho serão feitas algumas comparações: 1. Número de tabelas geradas: o número de tabelas geradas foi inferior a praticamente todas as outras abordagens, com exceção da segunda
Estrutura Lógica DTD
Estrutura Lógica DTD Carina Dorneles dorneles@inf.ufrgs.br http://www.inf.ufrgs.br/ dorneles DTD Introdução DTD - Document Type Definition Conjunto de regras que definem a estrutura do documento Hierarquia
Leia maisBanco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas
Processamento e Otimização de Consultas Banco de Dados Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar
Leia maisSumário. XML (extensible Markup Language)
Sumário 1 Introdução Aplicações Não-Convencionais 2 BD Orientado a Objetos e Objeto-Relacional 3 BD Temporal 4 BD Geográfico 5 XML e Bancos de Dados XML (extensible Markup Language) Tecnologia desenvolvida
Leia maisFormas de Gerência de Dados XML
Bancos de Dados XML Formas de Gerência de Dados XML SGBDRs estendidos com suporte à XML adequados a dados XML fortemente estruturados ( documentos orientados a registros ) beira-mar104apto
Leia maisINE BDNC. Bancos de Dados XML
INE 661300 - BDNC Bancos de Dados XML Formas de Gerência de Dados XML SGBDRs estendidos com suporte à XML adequados a dados XML fortemente estruturados ( documentos orientados a registros )
Leia maisIntrodução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos
Introdução Laboratório de Computação para Ciências Módulo II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Mestrado Profissional
Leia maisIntrodução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s
Introdução Contribuição do Capítulo 2: discutir modelos de dados definir conceitos de esquemas e instâncias descrever os tipos de interfaces e linguagens oferecidas por um SGBD mostrar o ambiente de programas
Leia maisIntrodução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos
Conceitos Básicos Introdução Tópicos Especiais Modelagem de Dados Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Mestrado Profissional
Leia maisUniversidade Federal da Paraíba CCEN Departamento de Informática Disciplina: Banco de Dados. Aula 1 Introdução a Banco de Dados
Universidade Federal da Paraíba CCEN Departamento de Informática Disciplina: Banco de Dados Aula 1 Introdução a Banco de Dados 1. Introdução Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído
Leia maisDTD. Vanessa Braganholo.
DTD Vanessa Braganholo braganholo@dcc.ufrj.br Curso baseado em mini-cursos apresentados no SBBD. Autores: Carlos Heuser, Carina Dorneles e Vanessa Braganholo Esquema XML Como em banco de dados relacionais
Leia maisBanco de Dados I Introdução SQL
Banco de Dados I Introdução SQL Frederico Queiroga fredericoqueiroga@gmail.com https://sites.google.com/site/fredericoqueiroga/ Linguagem SQL Aspectos Gerais: Independência do fabricante: Está incorporada
Leia maisAula 01 Revisão Geral Banco de Dados I Conceito de Banco de Dados e SGBD
Aula 01 Revisão Geral Banco de Dados I Conceito de Banco de Dados e SGBD Banco de Dados (BD) é o arquivo físico, em dispositivos periféricos, onde estão armazenados os dados de diversos sistemas, para
Leia maisTécnico em Informática. Banco de Dados. Profª Ana Paula Mandelli
Técnico em Informática Banco de Dados Profª Ana Paula Mandelli Banco de Dados (BD) Existem vários tipos de banco de dados e eles estão presentes na nossa vida há muito tempo. Lista Telefônica Cadastro
Leia maisMatéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri
Matéria Introdutória Banco de Dados Motivação Necessidade de armazenar grandes quantidades de dados Necessidade de acessar as informações de maneira eficiente e segura Evolução histórica: desenvolvimento
Leia maisBCD29008 Banco de dados
BCD29008 Banco de dados Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/bcd 31 de julho de 2017 1/24 Apresentação
Leia maisRevisando Banco de Dados. Modelo Relacional
: Revisando Banco de Dados Banco de Dados (BD) é o arquivo físico, em dispositivos periféricos, onde estão armazenados os dados de diversos sistemas, para consulta e atualização pelo usuário. Sistema Gerenciador
Leia maisIntrodução de XML. Dados da Web. Gerência de Dados da Web. A Web representa, nos dias de hoje, um repositório universal de dados, onde:
Dados da Web Introdução de XML Banco de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM
Leia maisProgramação para Internet I Aulas 10 e 11
Programação para Internet I Aulas 10 e 11 Fernando F. Costa nando@fimes.edu.br XML Definição e origem extensible Markup Language (XML) é linguagem de marcação de dados que provê um formato para descrever
Leia maisArquitetura dos SBDs Características e Benefícios Visão Geral de Projeto de BD MER: Entidades e Atributos Atividade.
Banco de Dados Aula 1.4 - Sistemas de Banco de Dados Bruno Neiva Moreno Instituto Federal do Rio Grande do Norte Campus Nova Cruz bruno.moreno@ifrn.edu.br 1/25 Arquitetura dos SBDs 2/25 Objetivos dos SGBDs
Leia maisBCD29008 Banco de dados
BCD29008 Banco de dados Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/bcd 21 de fevereiro de 2018 1/24 Apresentação
Leia maisOracle Database: Fundamentos de SQL e PL/SQL
Oracle University Contact Us: 0800 891 6502 Oracle Database: Fundamentos de SQL e PL/SQL Duration: 5 Days What you will learn Este curso apresenta os fundamentos de SQL e PL/SQL e as vantagens das linguagens
Leia maisXML XML. Motivação. Mário Meireles Teixeira DEINF-UFMA
XML Mário Meireles Teixeira DEINF-UFMA XML Motivação XML extensible Markup Language W3C: World Wide Web Consortium http://www.w3.org XML 1.0 W3C Recommendation, 10/Fev/1998 (inicial) W3C Recommendation,
Leia maisedsoncs@gmail.com www.linkedin.com/in/edsonhu Agenda Banco de Dados Relacional Modelo Descritivo Modelo Conceitual Modelo Lógico Arquitetura Cliente/Servidor Componentes SQL Server Management Studio (SSMS)
Leia maisUtilização de XML no Desenvolvimento de Hiperdocumentos Educacionais
1 Utilização de XML no Desenvolvimento de Hiperdocumentos Educacionais Fabiano Fagundes, Parcilene F. Brito, Fernando L. Oliveira, Jackson G. Souza, Carlos H. Tolentino Resumo O desenvolvimento colaborativo
Leia maisUniversidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores
Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise
Leia maisLaboratório de Banco de Dados. Prof. Luiz Vivacqua.
(la.vivacqua@gmail.com) Ementa Conceitos básicos Sistemas de banco de dados Relacional Visão Geral do PostGreSQL Álgebra Relacional Operadores básicos Operadores adicionais A Linguagem de Consulta Estruturada
Leia maisRevisão de Bancos de Dados
Revisão de Bancos de Dados Conceitos Básicos 1. Defina o que é um banco de dados e o que é um sistema gerenciador de bancos de dados (SGBD). 2. Defina as arquiteturas de software em duas camadas (cliente/servidor)
Leia maisBanco de dados. Objetivo: Reter os dados de forma que possam ser utilizados em outros momentos
Banco de dados BD Dados x Informações Banco de dados Objetivo: Armazenar dados Consultar dados (dentro de um determinado contexto) gerando informações úteis Reter os dados de forma que possam ser utilizados
Leia maisBanco de dados. Objetivo: Reter os dados de forma que possam ser utilizados em outros momentos
Banco de dados BD Banco de dados Objetivo: Armazenar dados Consultar dados (dentro de um determinado contexto) gerando informações úteis Reter os dados de forma que possam ser utilizados em outros momentos
Leia maisIntrodução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos
Conceitos Básicos Introdução Banco de Dados I Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM Dados
Leia maisKorth Silberschatz Sundarshan. Sistema de Banco de Dados, 5/E
Sistema de Banco de Dados, 5/E Capítulo 1: Introdução Finalidade dos sistemas de banco de dados Visão dos dados Linguagens de banco de dados Bancos de dados relacionais Projeto de banco de dados Bancos
Leia maisUNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO
UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO Disciplina: Banco de Dados I Professor: Prof. Me. Everton
Leia maisCompiladores I Prof. Ricardo Santos (cap 1)
Compiladores I Prof. Ricardo Santos (cap 1) Compiladores Linguagens de programação são notações que permitem descrever como programas devem executar em uma máquina Mas, antes do programa executar, deve
Leia maisBCD29008 Banco de dados
BCD29008 Banco de dados Linguagem SQL Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/bcd 21 de agosto de 2017
Leia maisMODELO DE BANCO DE DADOS RELACIONAL
UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO BANCO DE DADOS I MODELO DE BANCO DE DADOS RELACIONAL Profº Erinaldo Sanches Nascimento Objetivos Descrever os princípios básicos
Leia maisBanco de Dados. Banco de Dados
Banco de Dados Banco de Dados Data Warehouse: banco de dados contendo dados extraídos do ambiente de produção da empresa, que foram selecionados e depurados, tendo sido otimizados para processamento de
Leia maisAula 06 Sistemas Embarcados LT38C
Aula 06 Sistemas Embarcados LT38C Prof. Lucas Ricken Garcia 2017/1 Introdução a Banco de Dados Coleção de dados relacionados. Fatos conhecidos que podem ser registrados e possuem significado implícito.
Leia maisBANCO DE DADOS. Araújo Lima. Fev / Araújo
BANCO DE DADOS Lima Fev / 2016 1 Aula 3 3.Modelos de dados Modelo Conceitual Modelo Lógico Modelo Físico Classificação de Bancos de Dados Hierárquico Rede Relacional 2 MODELOS DE DADOS... Ferramenta usada
Leia maisAcadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl
AVALIAÇÃO DA QUALIDADE DO CÓDIGO FONTE ESCRITO EM PL/SQL Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl Roteiro Introdução Objetivos do trabalho Fundamentação teórica Desenvolvimento
Leia maisOracle Database 10g: Fundamentos de SQL e PL/SQL
Oracle University Contact Us: 0-800-167225 Oracle Database 10g: Fundamentos de SQL e PL/SQL Duration: 5 Dias O que é que gostaria de aprender Conheça os fundamentos de SQL e PL/SQL usando o SQL Developer
Leia maisA linguagem SQL
SQL 2008.1 A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua primeira versão
Leia maisLinguagem XML. Linguagem XML
O que é XML? extensible Markup Language Linguagem de representação usando marcas como o HTML Marcas não pré-definidas. Precisam de ser definidas XML usa DTD ou esquemas para definir os dados Não FAZ NADA!
Leia maisOracle Database 11g: Introdução à Linguagem SQL Novo
Oracle University Contact Us: 0800 891 6502 Oracle Database 11g: Introdução à Linguagem SQL Novo Duration: 5 Days What you will learn Neste curso, os alunos aprendem os conceitos de bancos de dados relacionais.
Leia maisModelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo
MODELAGEM DE DADOS Sistemas de Banco de Dados Profa. Rosemary Melo SISTEMAS DE BANCO DE DADOS OBJETIVOS Apresentar os conceitos fundamentais de Sistemas de Banco de Dados. Principais componentes dos SGBDs
Leia maisSuporte Nativo a XML no Oracle 10g
Suporte Nativo a XML no Gerenciamento de Dados e Informação Fernando Fonseca & Robson Fidalgo 1 2 XML Parsers Suporte a interfaces DOM e SAX XML Class Generator Código fonte a partir de XML DTD ou Schema
Leia maisOracle Objeto-Relacional. Pablo Vieira Florentino
Oracle Objeto-Relacional Pablo Vieira Florentino Motivação - Modelo Objeto-Relacional Resposta dos Bancos de Dados Relacionais à Orientação a Objetos Relacional Suporte a SQL, transações, etc. Objeto Suporte
Leia maisDouglas Matheus de Souza Prof. Marcel Hugo, Mestre - Orientador
Douglas Matheus de Souza Prof. Marcel Hugo, Mestre - Orientador Introdução Objetivos Fundamentação teórica Desenvolvimento da ferramenta Operacionalidade Resultados e discussão Conclusões Versões futuras
Leia maisUniversidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever
Leia maisProgramação para Internet I 4. XML. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt
Programação para Internet I 4. XML Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Standard do W3C (www.w3c.org) Formato de ficheiros de texto derivado de SGML (Standard Generalized Markup Language)
Leia maisCompiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores
Motivação Prof. Sérgio Faustino Compiladores Conhecimento das estruturas e algoritmos usados na implementação de linguagens: noções importantes sobre uso de memória, eficiência, etc. Aplicabilidade freqüente
Leia maisArquivo. Banco de Dados. Organização dos Arquivos. Banco de Dados. Banco de Dados. Introdução a Computação
Arquivo Introdução a Computação Arquivos e Arquivo agrupamento organizado de dados que guardam entre si uma relação lógica e estruturada Registro conjunto de informações referentes a um elemento de um
Leia maisClasses e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
Leia maisAULA 01 Bancos de Dados Relacionais Arquitetura Linguagem SQL Componentes: DDL, DML, DCL. Prof. Msc. Célio R. Castelano
AULA 01 Bancos de Dados Relacionais Arquitetura Linguagem SQL Componentes: DDL, DML, DCL Prof. Msc. Célio R. Castelano TÓPICOS Projeto de Bancos de Dados Relacionais Arquitetura Modelagem Conceitual Modelagem
Leia maisIntrodução a Banco de Dados Prof. Msc Denival A. dos Santos
Introdução a Banco de Dados Prof. Msc Denival A. dos Santos Dado Um dado sozinho, dissociado de um contexto, não expressa algo que traga qualquer certeza ou elimine dúvidas de qualquer natureza. No máximo,
Leia maisÉpoca Normal 2º Teste Sem consulta
Bases de Dados 2013/14 17/Maio/14 10:00 Duração: 2h Época Normal 2º Teste Sem consulta Leia com atenção a informação constante desta página, enquanto espera a indicação do docente para começar a resolução
Leia maisINE5421 LINGUAGENS FORMAIS E COMPILADORES
INE5421 LINGUAGENS FORMAIS E COMPILADORES PLANO DE ENSINO Objetivo geral Conhecer a teoria das linguagens formais visando sua aplicação na especificação de linguagens de programação e na construção de
Leia maisBCD29008 Banco de dados
BCD29008 Banco de dados Modelo ER & Modelo Relacional Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/bcd 18 de
Leia maisXML. Prof. Júlio Machado
XML Prof. Júlio Machado julio.machado@pucrs.br ESQUEMAS Modelo de Esquemas Dois diferentes meios permitem descrever a estrutura de documentos XML e definir novos tipos de dados para elementos e atributos:
Leia maisXML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de
Capítulo 9: XML XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de documentos XML: XSLT Mapeamento entre documentos
Leia maisAULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS MODELO RELACIONAL
BANCO DE DADOS GERENCIAL 1 AULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS Um banco de dados é uma coleção de dados (ou informações) organizadas de forma lógica, e que
Leia maisModelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo
MODELAGEM DE DADOS Sistemas de Banco de Dados Profa. Rosemary Melo SISTEMAS DE BANCO DE DADOS OBJETIVOS Apresentar os conceitos fundamentais de Sistemas de Banco de Dados. Principais componentes dos SGBDs
Leia maisAlgoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi
Algoritmos Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi Conceitos Linhas de Código de um Algoritmo ou Programa escrita do programa linha a linha, ou seja, a sintaxe do programa, podendo-se
Leia maisMapping of Topic Map ISO Norm for
Disc. Scientia. Série: Ciências Naturais e Tecnológicas, S. Maria, v. 8, n. 1, p. 143-153, 2007. 143 ISSN 1981-2841 Mapeamento da Norma ISO 13250 Topic Maps para Banco de Dados Relacionais Mapping of Topic
Leia maisFERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS
FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS Acadêmico: Roger Anderson Schmidt Orientador : Marcel Hugo Supervisor : Ricardo de Freitas Becker Empresa
Leia maisIntrodução. O que é um Banco de Dados (BD)?
O que é um Banco de Dados (BD)? É uma coleção de dados relacionados e armazenados em algum dispositivo Associações aleatórias de dados não podem ser chamadas de base de dados Conceito de dados Valor de
Leia maisXML: uma introdução prática X100. Helder da Rocha
XML: uma introdução prática X100 Helder da Rocha (helder@argonavis.com.br) Atualizado em setembro de 2001 1 Como criar um documento XML XML não tem comandos, nem operadores, nem funções, nem tipos Não
Leia maisUTFPR - Universidade Tecnológica Federal do Paraná. Processamento e otimização de consultas
UTFPR - Universidade Tecnológica Federal do Paraná Processamento e otimização de consultas Leyza Baldo Dorini 04/Nov/2009 Programação da aula Introdução: processamento e otimização de consultas Etapas:
Leia maisAula 2 BD Introdução. Profa. Elaine Faria UFU
Aula 2 BD Introdução Profa. Elaine Faria UFU - 2017 Motivação A quantidade de informação disponível está crescendo exponencialmente Os dados e as informações tem um papel importante para as organizações
Leia maisM V C, J S O N E X M L P R O F. M E. H É L I O E S P E R I D I Ã O
M V C, J S O N E X M L P R O F. M E. H É L I O E S P E R I D I Ã O A P L I C A Ç Õ E S M O N O L Í T I C A S Na época dos computares independentes um aplicativo era desenvolvido para ser usado em uma única
Leia maisBanco de Dados Relacional
Centro Federal de Educação Tecnológica de Pernambuco Curso de Tecnologia em Sistemas de Informação Banco de Dados Relacional Renata Lúcia Mendonça Ernesto do Rêgo rlrego@yahoo.com 1 Plano de Ensino Objetivo
Leia maisBancos de Dados Orientados a Grafos. Mateus Lana e Thiago Santana
Bancos de Dados Orientados a Grafos Mateus Lana e Thiago Santana Conteúdo Grafos Definição; Representação; Conceitos. Bancos de dados orientados a grafos Introdução; Representação; Modelagem; Conceitos;
Leia maisCAP. VI ANÁLISE SEMÂNTICA
CAP. VI ANÁLISE SEMÂNTICA VI.1 Introdução Semântica SIGNIFICADO, SENTIDO LÓGICO, COERÊNCIA,... Diferença entre SINTAXE e SEMÂNTICA Sintaxe : descreve as estruturas de uma linguagem; Semântica : descreve
Leia maisBanco de Dados - Conceitos. Baseado no material da Profa. Vania Bogorny (UFSC)
Banco de Dados - Conceitos Baseado no material da Profa. Vania Bogorny (UFSC) 1 Por que estudar BD? Os Bancos de Dados fazem parte do nosso dia-a-dia: operação bancária reserva de hotel compra de passagens
Leia maismodelo introduzido por E. F. Codd Meados da década de 70: protótipos. INGRES (UC Berkeley, 73 77) System R (IBM Research at San Jose, 74 78)
1 1970 - modelo introduzido por E. F. Codd Meados da década de 70: protótipos INGRES (UC Berkeley, 73 77) System R (IBM Research at San Jose, 74 78) 1979: primeiro produto SQL (Oracle) Meados da década
Leia maisSistemas da Informação. Banco de Dados I. Edson Thizon
Sistemas da Informação Banco de Dados I Edson Thizon (edson@esucri.com.br) 2008 Apresentação (mini-currículo) Formação Acadêmica Mestrando em Ciência da Computação (UFSC/ ) Créditos Concluídos. Bacharel
Leia maisSistema de Banco de Dados. UNIDADE 1 Introdução aos Sistemas de Bancos de Dados Professor: Armando Hage
Sistema de Banco de Dados UNIDADE 1 Introdução aos Sistemas de Bancos de Dados Professor: Armando Hage Resumo da Unidade Banco de dados BD SGBD Objetivo Visão Geral Abstração Modelo de Dados Entidade Relaciomento(ER)
Leia maisLINGUAGEM, TIPOS DE USUÁRIOS DE SGBD E MODELOS DE DADOS
Fundação Centro de Análise, Pesquisa e Inovação Tecnológica Instituto de Ensino Superior - FUCAPI LINGUAGEM, TIPOS DE USUÁRIOS DE SGBD E MODELOS DE DADOS Disciplina: Banco de Dados Prof: Márcio Palheta,
Leia maisConceitos de Sistemas de Banco de Dados INE 5323
Conceitos de Sistemas de Banco de Dados INE 5323 Prof. Mario Dantas Introdução Por quê Sistemas de Banco de Dados Visão dos Dados Modelos de Dados Linguagem de Definição de Dados (DDL) Linguagem de Manipulação
Leia maisDDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR
SQL Structured Query Language, ou Linguagem de Consulta Estruturada, foi desenvolvida pela IBM nos anos 70 para demonstrar a viabilidade do modelo relacional para bancos de dados. No final dos anos 80
Leia mais5a. Aula - XML 2013.2
5a. Aula -XML 2013.2 Introdução Criando Documentos XML Validando Documentos XML DTD ( Documents Type Definition) XML Schema ConsultandoXML com Xpath com XQuery Modularizando XML Namespaces Entities TransformandoXML
Leia maisComo construir um compilador utilizando ferramentas Java
Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 1 - Introdução Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir um
Leia maisManipulação de Dados com SQL
Manipulação de Dados com SQL Wendel Melo Faculdade de Computação Universidade Federal de Uberlândia www.facom.ufu.br/~wendelmelo Banco de Dados I manipulação de dados com SQL 2 Structured Query Language
Leia maisBanco de Dados. Aula 3 - Prof. Bruno Moreno 26/08/2011
Banco de Dados Aula 3 - Prof. Bruno Moreno 26/08/2011 Aula passada.. PostgreSQL Profissionais de BD Vantagens do uso de BD Modelagem de Dados Esquema de Banco de Dados Arquitetura de Banco de Dados Independência
Leia maisSISTEMA DE GERENCIAMENTO DE BANCO DE DADOS - SGBD
Fundação Centro de Análise, Pesquisa e Inovação Tecnológica Instituto de Ensino Superior - FUCAPI SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS - SGBD Disciplina: Banco de Dados Prof: Márcio Palheta, Esp
Leia maisPesquisa Digital PATRICIA para Consultas a Banco de Dados em Linguagem Natural
Pesquisa Digital PATRICIA para Consultas a Banco de Dados em Linguagem Natural Rodrigo Bonone Moreira 1, Alexandre de Oliveira Zamberlan 1 1 UNIFRA Centro Universitário Franciscano Curso de Ciência da
Leia maisATUALIZANDO BANCO DE DADOS OBJETO RELACIONAL ATRAVÉS DE VISÕES XML
ATUALIZANDO BANCO DE DADOS OBJETO RELACIONAL ATRAVÉS DE VISÕES XML Mestrando: Wamberg Gláucon Chaves de Oliveira Orientadora: Profa. Dra. Vânia Maria Ponte Vidal Universidade Federal do Ceará Departamento
Leia maisModelagem Conceitual e o Modelo Entidade-Relacionamento
o Modelo Entidade-Relacionamento Gerenciamento de Dados e Informação Fernando Fonseca & Robson Fidalgo 1 Modelagem Transformar aspectos do mundo real em um modelo de dados formal Modelagem Conceitual Modelo
Leia mais18/03/2012. Independência de Dados: capacidade de modificar a definição dos esquemas em. determinado nível, sem afetar o esquema do nível superior;
Modelagem Conceitual 2012.1 2 Independência de Dados: capacidade de modificar a definição dos esquemas em determinado nível, sem afetar o esquema do nível superior Independência de dados física: modifica
Leia maisModelos de Dados Temporais
CMP 151 Modelos de Dados Temporais Roteiro! Conceitos de representação temporal! Modelos de dados temporais! Linguagens de consulta temporais " Bancos de dados temporais " Implementação de BDs temporais
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Mais um tipo numérico print() formatado: clássico pythônico Tuplas
Leia maisGERÊNCIA DE DADOS SEMIESTRUTURADOS -DTD. Prof. Angelo Augusto Frozza, M.Sc. http://www.about.me/tilfrozza
GERÊNCIA DE DADOS SEMIESTRUTURADOS -DTD Prof. Angelo Augusto Frozza, M.Sc. http://www.about.me/tilfrozza ROTEIRO Introdução ao DTD Elementos Atributos Entidades Validando um documento XML DTD (DOCUMENT
Leia maisUnidade 4 Projeto de Banco de Dados
Unidade 4 Projeto de Banco de Dados Engenharia de Computação / Engenharia de Produção Banco de Dados Prof. Maria das Graças da Silva Teixeira Material base: Banco de Dados, 2009.2, prof. Otacílio José
Leia maisO Modelo e a Álgebra Relacional
O Modelo e a Álgebra Relacional O Modelo Relacional Modelo de dados, que se baseia no princípio em que todos os dados estão guardados em tabelas Baseado em lógica de predicados e na teoria de conjuntos.
Leia maisTECNOLOGIA WEB INTRODUÇÃO CONSTRUÇÃO DE PÁGINAS ESTÁTICAS HTML / XHTML
INTRODUÇÃO CONSTRUÇÃO DE PÁGINAS ESTÁTICAS HTML / XHTML 1 INTRODUÇÃO TECNOLOGIA WEB Começaremos desvendando o poder do desenvolvimento de aplicações baseadas na Web com a XHTML (Extensible HyperText Markup
Leia maisCP Compiladores I Prof. Msc.. Carlos de Salles
CP 5017.9 Prof. Msc.. Carlos de Salles 1 - EMENTA O Processo de Compilação. Deteção e Recuperação de Erros. Introdução à geração de Código Intermediário. Geração de Código de Máquina. Otimização. Uma visão
Leia maisModelagem Física e SQL
Programação em Banco de Dados - Parte 1 Modelagem Física e SQL Prof. Pablo Passos prof.pablo.passos@gmail.com SQL - Um modelo físico é gerado a partir de um modelo lógico já construído. A geração dos objetos
Leia maisAula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU
Aula 6 BD1 Modelo Relacional Profa. Elaine Faria UFU - 2017 Introdução Modelo Relacional Proposto por Codd em 1970 Revolucionou a área de banco de dados É o modelo dominante base para os SGBDs líderes
Leia mais