Baixe o app para aproveitar ainda mais
Prévia do material em texto
0010010110101111001111110101010101000 1010100010101110111000111010110011011 10010110101111001111110101010101000 10100010101110111000111010110011011 10010010110101111001111110101010101 010100010101110111000111010110011 110111100111111010101010100010111 10101110111000111010110011011111 1011101001010101110000101010111 0110101111001111110101010101000 010101110111000111010110011011 010110101111001111110101010101 100010101110111000111010110011 11100111111010101010100010111 10110101111001111110101010101 Representação de Dados e XML Bancos de Dados Luiz Celso Gomes-Jr gomesjr@dainf.ct.utfpr.edu.br Representando Dados ● Antes da invenção do computador, a grande maioria dos dados eram representados em papel ● No papel, texto, fguras, tabelas, etc. são representados com tinta e cabe ao leitor identifcar os diferentes elementos e entender o conteúdo ● No computador, precisamos saber de antemão com que tipo de dados estamos lidando para representá-los adequadamente Processando Dados ● Quanto mais “organizados” (estruturados) os dados, mas simples é o processamento ● Exemplo de dados estruturados: listas, tabelas, matrizes ● Exemplo de dados não-estruturados: texto, imagens, sons ● Exemplo de dados semiestruturados: árvores, grafos Processando Dados Processando Dados Information Retrieval, NLP Databases Principais modelos de dados ● Modelo Relacional (tabelas - foco do curso) ● Modelo hierárquico (árvores - foco desta aula) ● Modelo de grafos (veremos no fm do curso) Importância dos modelos ● Permitem a separação entre representação dos dados e a implementação física das estruturas ● Exemplo de ED1: um programador pode implementar um programa que usa uma lista encadeada e no futuro mudar a implementação das bibliotecas para uma lista duplamente encadeada sem precisar alterar o programa principal Importância dos modelos item = “chocolate”; adicionaItem(item); ... item = “chocolate”; adicionaItem(item); ... Modelo: Lista (biblioteca ou API) Ap lic aç ão Im pl em en ta çã o da s E st ru tu ra s bala cuca pudim início bala cuca pudim início Lista Encadeada Lista duplamente Encadeada Importância dos modelos ● Em grandes empresas, os mecanismos de armazenamento mudam frequentemente para atender às demandas e isto não pode afetar as aplicações ● Exemplos: atualização de versão do SGBD, mudança de fornecedor de SGBD, upgrade de SGBD centralizado para SGBD distribuído Modelo Hierárquico ● Usado para representar diversos tipos de dados ● Exemplos: Documentos, Categorias de Produtos, Modelos Orientados a Objeto, Disciplinas (tópicos, conteúdo, tarefas) ● Relativamente flexíveel e processamento relativamente efciente (no meio do caminho entre tabelas e grafos) ● XML é o principal padrão para representação e compartilhamento de dados XML – eXtensible Markup Language XML ▪Lançada em 1996 como uma versão simplifcada da SGML (Standard Generalized Markup Language), para ser utilizada na Web. Metalinguagem ▪Tal como SGML, XML é uma metalinguagem (linguagem para criar linguagens). ▪O HTML original foi escrito em SGML. HTML5 é baseado em XML. S G M L H T M L M a t h M L …S V G X M L M e t a l i n g u a g e m L i n g u a g e m Linguagem de Marcação ▪Utiliza marcadores para agregar informações adicionais a documentos. ▪Tomemos como exemplo a seguinte frase: Horácio escreveu o livro Vida dos Dinossauros. ▪Desejamos agregar informações que identifquem quem é o autor e qual a ação realizada. Linguagem de Marcação ▪Os marcadores se diferenciam do conteúdo pelos símbolos “<” e “>” (seguem o mesmo princípio de HTML): <autor>Horácio</autor> <ação>escreveu o livro Vida dos Dinossauros</ação> • Os marcadores delimitam unidades estruturais denominadas elementos. Estrutura Hierárquica ▪Marcações podem ser agrupadas hierarquicamente. ▪A interpretação de cada marcador está subordinada a seu contexto. <sentença> <autor>Horácio</autor> <ação>escreveu o <publicação> <tipo>livro</tipo> <título>Vida dos Dinossauros</título> </publicação> </ação> </sentença> Modelo de Dados XML s e n t e n ç a H o r á c i o l i v r o E s c r e v e u o V i d a d o s D i n o s s a u r o s t í t u l ot i p o p u b l i c a ç ã o a ç ã oa u t o r Elementos e Atributos ▪Atributos: <autor cpf=”487.526.548-74” nascimento=”12/5/1960”> Horácio </autor> • Elementos vazios: <esgotado/> Validação de Documentos ▪Documento bem formado: ▫atende às regras de construção XML ▪Documento válido: ▫bem formado ▫atende a um esquema Esquema de dados ▪Defne as regras que os dados devem seguir para serem considerados válidos ▪Exemplo: Esquema “Livro” demanda que todas as instâncias tenham um título, uma editora, e pelo menos um autor ▪Existem vários padrões baseados em esquemas XML, como HTML5, Open Document (usado pelo Open Ofce), SVG (gráfcos vetoriais), GML (dados geográfcos), MathML (fórmulas matemáticas)... Esquema de dados ▪Em XML existem duas formas de se especifcar esquemas para os documentos: ▫DTD (mais antigo) ▫XML Schema (mais moderno) DTD ▪O documento XML pode se basear em uma gramática defnida através de uma DTD (Document Type Defnition) ▪DTDs são mais simples de defnir, mas têm gramática própria e não conseguem representar restrições entre elementos <!ELEMENT documento (topico+)> <!ELEMENT topico (titulo, subtopico*)> <!ELEMENT titulo (#PCDATA)> <!ELEMENT subtopico (titulo, #PCDATA)> XML Schema ▪Padrão para defnição de esquemas XML escritos em XML ▪Mais poderoso ▪Padrão moderno Tipos Simples <xs:element name="business"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:maxLength value="30"/> </xs:restriction> </xs:simpleType> </xs:element> (Wilde, 2006) (Wilde, 2006) Tipo Composto <xs:schema> <xs:element name="billingAddress" type="addressType"/> <xs:element name="shippingAddress" type="addressType"/> <xs:complexType name="addressType"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="street" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="state" type="xs:string" minOccurs="0"/> <xs:element name="zip" type="xs:decimal"/> </xs:sequence> <xs:attribute name="country" type="xs:NMTOKEN"/> </xs:complexType> </xs:schema> (Wilde, 2006) Identifcando recursos - URI ▪XML foi desenvolvido para representar dados na Internet, logo, é preciso garantir que um identifcador usado não entre em confito com outros defnidos por outras pessoas ▪A identifcação de um recurso é feita através de um URI – Uniform Resource Identifer. ▪URI = URL ou URN URI ▪URL (Uniform Resource Locator): identifca recursos por meio de sua localização física na Internet. Ex.: http://www.paleo.org ftp://ftp.unicamp.br mailto:horacio@paleo.org ▪URN (Uniform Resource Names): identifcador é relacionado indiretamente com sua localização física na rede (exige um resolver). Ex.: urn:ogc:def:uom:celsius urn:mpegra:mpeg21:dii:iswc:T-041.220.506-1 Consultando dados em XML ▪As duas principais linguagens de consulta a dados XML são XPath e XQuery ▪XPath ▫Especifca expressões na forma de caminhos que atendem padrões para alcançar nós específcos (elementos ou atributos) ▪XQuery ▫Queries para XML (usam XPath). Permite a especifcação de critérios elaborados para obtenção de dados. Processando dados em XML ▪Paratarefas mais simples, onde uma linguagem de consulta não é necessária, usamos Parsers para manipular XML ▪Um parser XML lê um documento XML e disponibiliza seu conteúdo de forma conveniente para o programador ▪Em XML existem duas estratégias para parsing: SAX e DOM XML Parsing Diversas tecnologias têm sido criadas para o processamento de documentos XML. Dentre estas tecnologias duas se destacaram e se tornaram referência: – SAX – Simple API for XML – DOM – Document Object Model SAX ▪API baseada em eventos. ▪Útil quando se precisa processar documentos muito grandes (especialmente os que não cabem na memória) Eventos de conteúdo public class SAXBasico extends org.xml.sax.helpers.DefaultHandler { public void startDocument() ... public void startElement(...) ... public void characters (...) ... public void endElement(...) ... public void endDocument() ... } Eventos de conteúdo Método Acionado quando o parser encontra startDocument início do documento startElement início de um elemento characters conteúdo texto endElement final de um elemento endDocument final do documento DOM ▪DOM defne uma API para documentos XML e HTML. ▪Ele acrescenta ao padrão destas linguagens toda a funcionalidade e fexibilidade que um programa precisa para acessar e manipular documentos. ▪Representa o conteúdo do documento em uma árvore na memória e oferece ao programados métodos para navegar e obter dados Processo Documento XML <aulaml> ... ... </aulaml> Parser DOM Aplicação DOM - Estudo de Caso <FICHARIO> <individuo nome="Asdrubal da Silva"> <idade>15</idade> <genero>masculino</genero> </individuo> <individuo nome="Quincas Borba"> <idade>33</idade> <genero>masculino</genero> </individuo> <individuo nome="Doriana Margarina"> <idade>42</idade> <genero>feminino</genero> </individuo> </FICHARIO> Document Object Model fichario individuo idade 15 GENERO masculino Asdrubal... individuo idade 33 GENERO masculino Quincas... individuo idade 42 GENERO feminino Doriana... Interfaces ▪Node – esta interface representa genericamente qualquer nó da árvore. ▪Element – acrescenta propriedades e métodos específcos de um nó do tipo elemento. ▪Document – interface do nó raiz da árvore que representa o documento completo. ▪NodeList – representa uma lista de nós. Pode representar, por exemplo, a lista de flhos de um nó. Navegar pelo Documento getFirstChild() getNextSibling() getFirstChild() getFirstChild() individuo idade 15 GENERO masculino individuo getNextSibling() JSON ● Modelo de representação de dados semiestruturados ● Baseado em JavaScript com foco em aplicações Web ● Mais simples e mais leve que XML (mas também mais limitado) ● Não defne linguagens (em construção) ● XML Nutella :) JSON x XML {"employees":[ { "firstName":"John", "lastName":"Doe" }, { "firstName":"Anna", "lastName":"Smith" }, { "firstName":"Peter", "lastName":"Jones" } ]} <employees> <employee> <firstName>John</firstName> <lastName>Doe</lastName> </employee> <employee> <firstName>Anna</firstName> <lastName>Smith</lastName> </employee> <employee> <firstName>Peter</firstName> <lastName>Jones</lastName> </employee> </employees> Exercícios ● Dê exemplos de dados para cada tipo de modelo (relacional, hierárquico, grafos) ● Quais as vantagens de se usar um modelo padronizado como o XML? Referências e Agradecimentos ● Diversos slides baseados no curso de BD do Prof. André Santanchè (UNICAMP) – Site: http://www.ic.unicamp.br/~santanche – Canal Youtube: https://www.youtube.com/santanche Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44 Slide 45 Slide 46 Slide 47
Compartilhar