Basi di Dati II Sara Romano

Slides:



Advertisements
Presentazioni simili
Ricorsione in SQL-99.
Advertisements

Principale limitazione di AR e SQL-92: interrogazioni ricorsive
I Namespace Mario Arrigoni Neri.
Stored Procedure Function Trigger
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
PHP.
Linguaggi di programmazione
XSLT (eXtensible Stylesheet Language Transformation) Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis
XSLT UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re Anno Accademico
Generazione di Codice Intermedio
Gli schema W3C Estensione di tipi semplici, scelte fra più elementi, application profiles.
Query OQL e XQUERY a confronto
SQL92 e XQuery1.0 a confronto1 SQL92 E XQUERY1.0 A CONFRONTO Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria - Sede di Modena Corso.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Introduzione al linguaggio C
Buranello-Cafeo XML Access Control Using Static Analysis1 Analisi Verifica Programmi 2004/05 Alberto Buranello Fabio Cafeo
XML Prof. Barbara Pernici Politecnico di Milano. Introduzione a XML.
Corso di basi di dati II Prof. Francesco Cutugno Dott. Sara Romano
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
SQL: Lezione 7 Nataliya Rassadko
INFORMATICA UMANISTICA B STRUTTURE DATI BASI DI DATI RAPPRESENTAZIONE DELLA CONOSCENZA ONTOLOGIE.
Esercitazione.
Modello Relazionale Definisce tipi attraverso il costruttore relazione, che organizza i dati secondo record a struttura fissa, rappresentabili attraverso.
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
Daniel Stoilov Tesi di Laurea
Elaborazione di Franco Grivet Chin
SELECT STATEMENT Clausola WHERE permette di limitare il numero di record da estrarre SELECT */ [DISTINCT] colonna/ espressione [alias],… FROM table [WHERE.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
Esercizio 1 Convertire il seguente DTD (esercizio 1 sui DTD) in XML Schema:
XSLT Trasformazioni XSL Ing. Luca Sabatucci. XSLT Uno dei vantaggi principali nell'utilizzo dell'Extensible Markup Language è la facilità con cui si possono.
1 XPath. 2 What is XPath? XPath is a syntax for defining parts of an XML document XPath uses paths to define XML elements XPath defines a library of standard.
Basi di dati Claudia Raibulet
Introduzione alle Basi di Dati. Overview Informazione = contenuto + struttura Informazione non strutturata Molto contenuto, poca struttura Un romanzo.
SQL: Structured Query Language
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Chinosi Michele – matr.: La seconda release di Virtuose basata su database XML La seconda release di Virtuose basata su.
Realizzato da Roberto Savino
sql: esempi di linguaggio sql nell'implementazione mysql
Presentazione del problema Obiettivo: Lapplicazione di Search of Sematic Services permette di ricercare sevizi semantici, ossia servizi a cui sono associati.
IMPLEMENTAZIONE TECNOLOGIE:HIBERNATE & JAVA RMI.
SQL.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
SEFOC – SETTORE FORMAZIONE CONTINUA DEL PERSONALE CORSO MYSQL AVANZATO ROBERTO PENNOLINO – CARMELO MASSIMO PRIOLO PALERMO – 07 | 06 | 2011.
XPATH.
Capitolo 14: Basi di dati per XML
Basi di dati I Prof.ssa Rosalba Giugno Prof. Alfredo Pulvirenti SQL :Structured Query Language: SELECT (IV) SQL (Slide tratte in parte da da Atzeni, Ceri,
Pagine ASP parte 3 I data base Stefano Schacherl.
PLSQL 1.1 LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture.
Introduzione a Javascript
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Algebra relazionale (III). Esempi di Interrogazioni: 3 Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di Tutti gli impiegati?
Introduzione alle Griglie computazionali - aa Introduzione alle griglie computazionali Introduzione alle griglie computazionali Università degli.
Carluccio Antonio Carluccio Alessandra Caricola Giovanni Vizzino Anna Università degli Studi di Bari.
MySQL Database Management System
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
Raggruppamenti e target list scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =
1 Tipi di dato modificabili §a livello semantico, riconduciamo la modificabilità alla nozione di variabile l lo stato “modificabile” corrispondente sarà.
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
Approfondimenti SQL.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Basi di Dati attive. Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive2 Definizione Una base di dati si dice attiva quando dispone.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Il linguaggio SQL (Structured Query Language) è il linguaggio standard per creare, manipolare e interrogare database relazionali. SQL non è case-sensitive:
Transcript della presentazione:

Basi di Dati II Sara Romano XQUERY Basi di Dati II Sara Romano

Cos’è XQuery? XQuery è il linguaggio per interrogare dati XML; XQuery è per l’XML quello che SQL è per i database; XQuery è implementato sulla base delle espressioni XPath; XQuery è una Raccomandazione del W3C. (XQuery 1.0 became a W3C Recommendation January 23, 2007)

XQuery e XPath XPath XQuery Il linguaggio XQuery 1.0 è progettato come superinsieme proprio di XPath 2.0: ogni espressione XPath è anche espressione XQuery. XQuery 1.0 and XPath 2.0 presentano lo stesso data model e supportano le stesse funzioni ed operatori. Sfrutta il potere espressivo di XPath, in aggiunta: esegue il join di informazioni da fonti diverse; genera nuovi frammenti XML; funzioni definite dall’utente.

Interrogazioni XQuery Interrogazione è composta da un prologo seguito da espressioni FLWOR. Prologo: le espressioni XQuery sono valutate relativamente ad un contesto. Definizione di parametri per il processore XQuery. Esempio: xquery version "1.0"; declare default element namespace URI; declare default function namespace URI; import schema at URI;

FLWOR Expression Permettono di ristrutturare ed unire informazioni provenienti da fonti diverse. For Let Where Order by Return Generazione di sequenze di tuple (opzionali) Filtraggio della sequenza (opzionale) Ordinamento della sequenza risultante (opzionale) Costruzione della sequenza risultante

Clausola FOR (1/3) La clausola For lega una variabile ad ogni elemento restituito dall’espressione XPath. La clausola For è una iterazione. Possono esserci più clausole For all’interno di una FLWOR expression. Esempio: for $x in (1 to 5) return <test> {$x} </test> Risultato: <test>1</test> <test>2</test> <test>3</test> <test>4</test> <test>5</test>

Clausola FOR (2/3) per effettuare il conteggio sull’iterazione è possibile utilizzare la keyword at all’interno della clausola for. Esempio: (books.xml) for $x at $i in doc("books.xml")/bookstore/book/title return <book>{ $i }. { data($x) }</book> Risultato: <book>1. Everyday Italian</book> <book>2. Harry Potter</book> <book>3. XQuery Kick Start</book> <book>4. Learning XML</book>

Clausola FOR (3/3) E’ possibile utilizzare più espressioni all’interno di una clausola for. Esempio: for $x in (10,20), $y in (100,200) return <test> x={ $x } and y={ $y } </test> Risultato: <test>x=10 and y=100</test> <test>x=10 and y=200</test> <test>x=20 and y=100</test> <test>x=20 and y=200</test>

Clausola LET La clausola let associa ad una variabile il risultato di una espressione XPath. Esempio: let $x := (1 to 5) return <test> { $x } </test> Risultato: <test>1 2 3 4 5</test>

Clausola WHERE La clausola where è utilizzata per definire filtri sui risultati derivati dalle clausole precedenti (for e let). Esempio: where $x/price>30 and $x/price<100

Clausola ORDER BY La clausola order by definisce il tipo di ordinamento del risultato. Esempio: for $x in doc("books.xml")/bookstore/book order by $x/@category, $x/title return $x/title Risultato: <title lang="en">Harry Potter</title> <title lang="en">Everyday Italian</title> <title lang="en">Learning XML</title> <title lang="en">XQuery Kick Start</title>

Clausola RETURN La clausola return specifica cosa deve essere restituito in output. Esempio: for $x in doc("books.xml")/bookstore/book return $x/title Risultato: <title lang="en">Everyday Italian</title> <title lang="en">Harry Potter</title> <title lang="en">XQuery Kick Start</title> <title lang="en">Learning XML</title>

Esempio 1 Dato il documento books.xml (http://www.w3schools.com/xquery/xquery_example.asp) “Titoli dei libri che costano più di 30€” For $x in doc("books.xml")/bookstore/book where $x/price>30 return $x/title Il path expression: doc("books.xml")/bookstore/book[price>30]/title Produce lo stesso risultato. Risultato: <title lang="en">XQuery Kick Start</title> <title lang="en">Learning XML</title>

Esempio 2 Dato il documento books.xml (http://www.w3schools.com/xquery/xquery_example.asp) “Titoli dei libri che costano più di 30€ ordinati per titolo” for $x in doc("books.xml")/bookstore/book where $x/price>30 order by $x/title return $x/title Risultato: <title lang="en">Learning XML</title> <title lang="en">XQuery Kick Start</title>

Differenze tra FOR e LET (1/4) for $x in (1, 2, 3, 4) let $y := ("a", "b", "c") return ($x, $y) 1, a, b, c, 2, a, b, c, 3, a, b, c, 4, a, b, c

Differenze tra FOR e LET (2/4) let $x in (1, 2, 3, 4) for $y := ("a", "b", "c") return ($x, $y) 1, 2, 3, 4, a, 1, 2, 3, 4, b, 1, 2, 3, 4, c

Differenze tra FOR e LET (3/4) for $x in (1, 2, 3, 4) for $y in ("a", "b", "c") return ($x, $y) 1, a, 1, b, 1, c, 2, a, 2, b, 2, c, 3, a, 3, b, 3, c, 4, a, 4, b, 4, c

Differenze tra FOR e LET (4/4) let $x := (1, 2, 3, 4) let $y := ("a", "b", "c") return ($x, $y) 1, 2, 3, 4, a, b, c Ogni clausola for e let può far riferimento a variabili legate in clausole precedenti: in questo modo si può effettuare il join tra documenti XML.

Espressioni racchiuse Le espressioni XML possono essere calcolate dinamicamente mediante l’uso di “espressioni racchiuse”: { expr } Esempio: <foo>1 2 3 4 5</foo> <foo>{1, 2, 3, 4, 5}</foo> <foo>{1, "2", 3, 4, 5}</foo> <foo>{1 to 5}</foo> <foo>1 {1+1} {" "} {"3"} {" "} {4 to 5}</foo>

Costruttori Le espressioni racchiuse possono essere utilizzate nei costruttori. Esempio: element card { namespace { "http://businesscard.org" }, element name { text { "John Doe" } }, element title { text { "CEO, Widget Inc." } } , element email { text { "john.doe@widget.com" } }, element phone { text { "(202) 555-1414" } }, element logo { attribute uri { "widget.gif" } } <card xmlns="http://businesscard.org"> <name>John Doe</name> <title>CEO, Widget Inc.</title> <email>john.doe@widget.com</email> <phone>(202) 555-1414</phone> <logo uri="widget.gif"/> </card>

Definizione di nuovi nodi (1/2) “Titoli dei libri che costano più di 30€ ordinati per titolo” <myQuery> { for $x in doc("books.xml")/bookstore/book where $x/price>30 order by $x/title return <result> { $x/title } </result> } </myQuery>

Definizione di nuovi nodi (2/2) Produce come risultato un documento XML piuttosto che una lista di nodi: <myQuery> <result> <title lang="en">Learning XML</title> </result> <result> <title lang="en">XQuery Kick Start</title> </result>

Esempi basex Esempio “Ricette” del libro

Espressioni Condizionali XQuery accetta le espressioni del tipo: If - Then - Else Esempio: for $x in doc("books.xml")/bookstore/book return if ($x/@category="CHILDREN") then <child> {data($x/title)} </child> else <adult> {data($x/title)} </adult> Risultato: <adult>Everyday Italian</adult> <child>Harry Potter</child> <adult>Learning XML</adult> <adult>XQuery Kick Start</adult>

Funzioni In XQuery vi sono due tipi di funzioni: Funzioni built-in; Funzioni definite dall’utente.

Funzioni built-in XQuery include più di 100 funzioni built-in. Vi sono funzioni per le stringhe, i valori numerici manipolazione di sequenze, ecc. L’URI del namespace per le funzioni XQuery è: http://www.w3.org/2005/02/xpath-functions Il prefisso di default del namespace delle funzioni è fn: L’utilizzo del prefisso di default nelle chiamate a funzione non è obbligatorio.

Funzioni definite dall’utente La definizione delle funzioni deve essere dichiarata nel prologo con la sintassi: declare function nome ($x1, $x2, …, $xk) { espr } ; Le variabili $x1, $x2, …, $xk sono visibili all’interno dell’espressione espr. La sintassi della chiamata è: nome (espr1, espr2, …, esprk)

Tipi per funzioni e parametri I tipi sequenza sono utilizzati nei parametri e nei risultati delle funzioni: declare function nome ($x1 as item()*, …, $xk as item()*) as item()* { espr }; Si possono utilizzare annotazioni più precise: declare function nome ($x as xs:string) as xs:decimal { espr };

Esempi Basex Esempio “studenti” del libro

Database XML Basi di dati relazionali sono potenti con tecnologie (ottimizzazione,concorrenza, indicizzazione, recupero dati) sviluppate da più di 40 anni. XQuery è un progetto recente, ancora non adatto a grandi applicazioni commerciali. Le implementazioni sono leggere e facili da estendere con nuove caratteristiche XML.

Viste XML di una tabella Molti sistemi supportano la possibilità di esportare i dati relazionali in un formato XML. Per esempio SQL/XML è un’estensione di SQL per costruire dati XML come risultato di query SQL. xmlelement(name, "Students", SELECT xmlelement(name, "record", xmlattributes(s.id, s.name, s.age)) FROM Students ) Students ID NAME AGE 100026 Joe Mediocre 21 100078 Jack Doe 18 <Students> <record id="100026" name="Joe Average" age="21"/> <record id="100078" name="Jack Doe" age="18"/> </Students>

Riferimenti Libro http://www.w3schools.com/xquery http://www.w3.org/XML/Query/ http://www.w3.org/TR/xquery/