Dati relazionali e XML



Documenti analoghi
Introduzione ai Sistemi di Gestione di Basi di Dati XML

XML e Sistemi per la Gestione di Basi di Dati Relazionali

DBMS (Data Base Management System)

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Le Basi di Dati. Le Basi di Dati

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Introduzione ai database relazionali

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Lezione V. Aula Multimediale - sabato 29/03/2008

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Il Modello Relazionale

UN PROGRAMMA APPLICATIVO: ACCESS Access è un programma del pacchetto Office che permette di realizzare database

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 3

Definizione di domini

Volumi di riferimento

CONCETTO DI ANNIDAMENTO

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Al giorno d oggi, i sistemi per la gestione di database

Informatica per le discipline umanistiche 2 lezione 10

Progettaz. e sviluppo Data Base

I database relazionali (Access)

Dispensa di database Access

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

Basi di Dati e Microsoft Access

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Corso di Informatica (Basi di Dati)

SQL Server Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

Organizzazione delle informazioni: Database

Database. Appunti di Amaranto Oronzo e Giancane Diego Lezione dell Ing. Lucia Vaira 24/04/2014

Il Modello Relazionale

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf

Gli operatori relazionali

Concetti fondamentali dei database database Cos'è un database Principali database

Data Warehousing (DW)

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Tipi MULTISET: accesso

Organizzazione degli archivi

Operazioni sui database

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Informatica (Basi di Dati)

Introduzione alla teoria dei database relazionali. Come progettare un database

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

Il linguaggio SQL: viste e tabelle derivate

Access. P a r t e p r i m a

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Basi di Dati: Corso di laboratorio

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

Sistemi per la gestione di database: MySQL ( )

GERARCHIE RICORSIVE - SQL SERVER 2008

Basi di dati 9 febbraio 2010 Compito A

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

Lezione 9. Applicazioni tradizionali

Istruzioni DML di SQL

Il linguaggio SQL: query innestate

OSSIF WEB. Manuale query builder

Esame di Stato Istituto Tecnico Industriale Soluzione della Seconda Prova Indirizzo: INFORMATICA Tema: INFORMATICA Anno Scolastico:

SQL/OLAP. Estensioni OLAP in SQL

1. BASI DI DATI: GENERALITÀ

Progettazione di Basi di Dati

Il database management system Access

Architettura MVC-2: i JavaBeans

Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere;

Database: collezione di fatti, registrabili e con un ben preciso significato, relazionati fra di loro

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Esercitazione su SQL

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12

SISTEMI INFORMATIVI AVANZATI -2010/ Introduzione

Corso sul linguaggio SQL

Progetto ittorario Anno scol

Capitolo 13. Interrogare una base di dati

Corso di Laboratorio di Basi di Dati

Esercizio sui data base "Gestione conti correnti"

L architettura di un DBMS

Elena Baralis 2013 Politecnico di Torino 1

Database 3 affitto veicoli. Testo del quesito

4 SQL : Interrogazioni nidificate

Basi Di Dati, 09/12/2003

ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 2

Istruzioni SQL 1. Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5

Esercizio data base "Biblioteca"

TEORIA sulle BASI DI DATI

Prova Scritta di Basi di Dati

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 12 FEBBRAIO 2015 PARTE 1

LA NORMALIZZAZIONE. Introduzione

19. LA PROGRAMMAZIONE LATO SERVER

Basi di Dati Corso di Laura in Informatica Umanistica

Unità 2.1 Comandi sui database

Structured Query Language parte 1

Transcript:

Dati relazionali e

Introduzione (1) Memorizzazione dei dati Utilizzo dei dati Applicazione DBMS relazionale Applicazione Applicazione 2

Introduzione (2) Memorizzazione dei dati Utilizzo dei dati Applicazione DBMS relazionale Applicazione Oggi gran parte dei dati viene memorizzata in database relazionali. Applicazione 3

Introduzione (3) Memorizzazione dei dati Utilizzo dei dati Applicazione DBMS relazionale Applicazione Numerose applicazioni utilizzano come formato di scambio e manipolazione dei dati. Applicazione 4

Introduzione (4)! viene utilizzato principalmente per due tipi di attività di data management:! Scambio di dati tra applicazioni.! Rappresentazione di dati semi-strutturati.! Quando i dati scambiati tra diverse applicazioni sono localmente memorizzati in database relazionali, è necessario un ponte tra questi due formati.! SQL/, che è un estensione standard di SQL, fornisce un linguaggio comune per convertire dati relazionali in. 5

Funzionalità: SQL-> e ->SQL! Per utilizzare congiuntamente dati relazionali e occorrono due funzionalità principali:! Estrazione di da una o piu' tabelle relazionali.! Memorizzazione di in una (o più) tabelle relazionali.! La prima funzionalità è concettualmente più semplice, in quanto nasce allo scopo di rappresentare dati sia semi-strutturati che strutturati.! La seconda è in generale più complessa, per lo stesso motivo. Dato rappresentabile sia in relazionale che in Dato difficilmente rappresentabile in relazionale SQL Dati Strutturati Dati semi-strutturati 6

Estrarre da una tabella! Estrarre dati a partire da una tabella e' semplice, perche' qualsiasi dato rappresentabile in una tabella e' anche rappresentabile in.! Vediamo due modi alternativi per realizzare questa funzionalità. 7

1: Estrarre da una tabella ( + XQuery)! Rappresentare la tabella in (mappatura).! Estrarre dati utilizzando tecnologie (XQuery). mappatura XQuery 8

mappatura XQuery IMPIEGATI ID NOME COGNOME SALARIO imp0001 Mario Rossi 20000 imp0002 Giorgio Bianchi 18000 Partiamo da una tabella relazionale. 9

mappatura XQuery! La mappatura avviene nel seguente modo:! Il nome della tabella diventa il nome del documento.! Ogni riga viene inclusa in un elemento <row>.! Ogni valore (colonna) viene incluso in un elemento con il nome dell'attributo.! Valori nulli vengono rappresentati tramite l'attributo xsi:nil="true". 10

mappatura XQuery Questa è la mappatura definita da SQL/. <IMPIEGATI> <row> <ID>imp0001</ID> <NOME>Mario</NOME> <COGNOME>Rossi</COGNOME> <SALARIO>20000</SALARIO> </row> <row> <ID>imp0002</ID> <NOME>Giorgio</NOME> <COGNOME>Bianchi</COGNOME> <SALARIO>18000</SALARIO> </row> </IMPIEGATI> 11

mappatura XQuery! Lo standard definisce inoltre uno schema contenente le definizioni per ogni tipo di dato SQL e ogni elemento.! Ad esempio, CHARACTER(6) produce: <xsd:simpletype name="char_6"> <xsd:restriction base="xsd:string"> <xsd:length value="6" /> </xsd:restriction> </xsd:simpletype> Frammento di Schema, fornito solo a titolo di esempio (non è necessario ricordarne i dettagli) 12

mappatura XQuery Funzione NON standard XQuery. <salarialti> { for $e in table("impiegati")/impiegati/row where $e/salario > 18000 return <impiegato> } </salarialti> {$e/cognome, $e/nome} </impiegato> Interrogazione XQuery, fornita solo a titolo di esempio (XQuery non viene approfondito in questi lucidi) 13

mappatura XQuery! Il risultato è il seguente: <salarialti> <impiegato> <nome>mario</nome> <cognome>rossi</cognome> </impiegato> </salarialti> 14

2: Estrarre da una tabella (SQL/)! Estrarre dati dalla tabella (SQL).! Trasformare questi dati in (SQL/). Query SQL SQL/ 15

Query SQL SQL/ IMPIEGATI ID NOME COGNOME SALARIO imp0001 Mario Rossi 20000 imp0002 Giorgio Bianchi 18000 Partiamo dalla stessa tabella dell esempio precedente. 16

Query SQL SQL/ SELECT i.nome AS nomeimpiegato FROM IMPIEGATI i WHERE salario > 18000 Scriviamo un interrogazione SQL che ritorni i dati di interesse. 17

Query SQL SQL/ SELECT i.nome AS nomeimpiegato FROM IMPIEGATI i WHERE salario > 18000 nomeimpiegato Mario Giorgio 18

Query SQL SQL/ SELECT ELEMENT( NAME "imp", i.nome ) AS nomeimpiegato FROM IMPIEGATI i WHERE salario > 18000 Aggiungiamo i costruttori. 19

Query SQL SQL/ SELECT ELEMENT( NAME "imp", i.nome ) AS nomeimpiegato FROM IMPIEGATI i WHERE salario > 18000 nomeimpiegato <imp>mario</imp> <imp>giorgio</imp> Più propriamente, in questo modo non si estrae direttamente dell, bensì tabelle contenenti, che può poi essere recuperato ed utilizzato come tale. 20

Inserimento di in DB Relazionali! Per garantire questa funzionalità, sistemi differenti utilizzano tecniche ad hoc.! Queste si possono ricondurre a due modalità principali:! Utilizzo di colonne Object-Relational per memorizzare interi frammenti in un unico campo.! Shredding ( spezzettamento ) dei documenti, per cui elementi differenti vengono memorizzati in campi differenti. 21

Inserire (1)! Un documento puo' essere considerato come un tipo di dato di SQL.! In questo caso, un intero documento viene memorizzato in un attributo (colonna) di una tabella. 22

Inserire (2)! Con qualche limitazione, un documento puo' essere spezzato in frammenti e memorizzato a pezzi. <impiegato> <ID>imp0001</ID> <COGNOME>Rossi</COGNOME> <SALARIO>20000</SALARIO> </impiegato> <impiegato> <ID>imp0002</ID> <COGNOME>Bianchi</COGNOME> <SALARIO>18000</SALARIO> </impiegato> FILE DI DEFINIZIONE DEL MAPPING ID COGNOME SALARIO imp0001 Rossi 20000 imp0002 Bianchi 18000 23

Il linguaggio SQL/

Estrarre tramite SQL/ (1)! SQL/ definisce i seguenti operatori.! ELEMENT! FOREST! CONCAT! AGG! GEN Query SQL SQL/ 25

Estrarre tramite SQL/ (2)! Una query SQL/ ha la seguente struttura: SELECT Attr1, Attr2,..., Costruttore FROM... WHERE...! Per calcolarne il risultato,! PRIMA si considera solo SQL, e si calcola una tabella come se fosse SELECT *.! POI si costruisce il risultato, selezionando gli attributi richiesti (Attr1, Attr2...) e costruendo il codice PER OGNI TUPLA. 26

Tabella utilizzata negli esempi IMPIEGATO id nome cognome dipartimento licenziato salario imp0001 Mario Rossi Vendite null 20000 imp0002 Giorgio Bianchi Vendite null 18000 imp0003 Luca Verdi Contabilità null 15000 imp0004 Gianni Neri Contabilità 01/01/03 15000 27

ELEMENT! ELEMENT permette di creare un elemento.! Come argomenti prende:! Il nome dell'elemento.! Una eventuale lista di attributi.! Il contenuto dell'elemento. 28

ELEMENT esempio SELECT i.id, ELEMENT( NAME "imp", i.nome ) AS risultato FROM IMPIEGATI i 29

ELEMENT esempio SELECT i.id, ELEMENT( NAME "imp", i.nome ) AS risultato FROM IMPIEGATI i nome dell'elemento contenuto 30

ELEMENT risultato SELECT i.id, ELEMENT( NAME "imp", i.nome ) AS risultato FROM IMPIEGATI i nome dell'elemento contenuto id imp0001 imp0002 imp0003 imp0004 risultato <imp>mario</imp> <imp>giorgio</imp> <imp>luca</imp> <imp>gianni</imp> 31

ELEMENT! Il contenuto di un elemento puo' essere formato concatenando piu' valori SQL.! L'operatore di concatenazione e'. 32

ELEMENT SELECT i.id, ELEMENT( NAME "imp", i.nome ' ' i.cognome ) AS risultato FROM IMPIEGATI i id imp0001 imp0002 imp0003 imp0004 risultato <imp>mario Rossi</imp> <imp>giorgiobianchi</imp> <imp>luca Verdi</imp> <imp>gianni Neri</imp> 33

ATTRIBUTES! Per dichiarare una lista di attributi si utilizza l'operatore ATTRIBUTES.! Ogni parametro di ATTRIBUTES viene inserito in un attributo che, se non dichiarato esplicitamente, prende il nome della colonna relazionale dalla quale e' stato selezionato. 34

ELEMENT ed ATTRIBUTES SELECT i.id, ELEMENT( NAME "imp", ATTRIBUTES(i.salario as "sal"), i.nome ' ' i.cognome ) AS risultato FROM IMPIEGATI i id imp0001 imp0002 imp0003 imp0004 risultato <imp sal="20000">mario Rossi</imp> <imp sal="18000">giorgio Bianchi</imp> <imp sal="15000">luca Verdi</imp> <imp sal="15000">gianni Neri</imp> 35

ELEMENT! Nel contenuto di un elemento si possono specificare piu' oggetti, sia elementi sia stringhe di caratteri.! Proviamo a creare un elemento che contenga altri due elementi e del testo. 36

Come detto, il primo parametro specifica il nome dell elemento risultante. ELEMENT esempio SELECT i.id, ELEMENT( NAME "imp", ELEMENT( NAME "co", i.cognome), ' del dipartimento ', ELEMENT( NAME "dip", i.dipartimento) ) AS risultato FROM IMPIEGATI i 37

Di seguito sono elencati i contenuti. In ordine, specifichiamo un elemento <co>, un contenuto testuale, un elemento <dip>. ELEMENT esempio SELECT i.id, ELEMENT( NAME "imp", ELEMENT( NAME "co", i.cognome), ' del dipartimento ', ELEMENT( NAME "dip", i.dipartimento) ) AS risultato FROM IMPIEGATI AS i 38

ELEMENT risultato id imp0001 imp0002 imp0003 imp0004 risultato <imp><co>rossi</co> del dipartimento <dip>vendite</dip></imp> <imp><co>bianchi</co> del dipartimento <dip>vendite</dip></imp> <imp><co>verdi</co> del dipartimento <dip>contabilità</dip></imp> <imp><co>neri</co> del dipartimento <dip>contabilità</dip></imp> 39

FOREST! FOREST e' un modo rapido per produrre una lista di elementi semplici.! Il comportamento dei suoi parametri e' lo stesso di ATTRIBUTES. 40

FOREST esempio SELECT i.id, ELEMENT( NAME "imp", FOREST( i.nome, i.cognome AS "co", i.dipartimento AS "dip") ) AS risultato FROM IMPIEGATI i In mancanza di un nome esplicito, viene utilizzato il nome della colonna corrispondente. 41

FOREST risultato id imp0001 imp0002 imp0003 imp0004 risultato <imp><nome>mario</nome> <co>rossi</co><dip>vendite</dip></imp> <imp><nome>giorgio</nome> <co>bianchi</co><dip>vendite</dip></imp> <imp><nome>luca</nome><co>verdi</co> <dip>contabilità</dip></imp> <imp><nome>gianni</nome><co>neri</co> <dip>contabilità</dip></imp> 42

CONCAT! CONCAT concatena i suoi argomenti, producendo una foresta di elementi.! CONCAT puo' concatenare anche elementi costruiti tramite ELEMENT. 43

CONCAT esempio SELECT i.id, CONCAT( ELEMENT( NAME "co", i.cognome), ELEMENT( NAME "dip", i.dipartimento) ) AS risultato FROM IMPIEGATI i 44

CONCAT risultato id imp0001 imp0002 imp0003 imp0004 risultato <co>rossi</co> <dip>vendite</dip> <co>bianchi</co> <dip>vendite</dip> <co>verdi</co> <dip>contabilità</dip> <co>neri</co> <dip>contabilità</dip> 45

AGG! Nel caso sia necessario aggregare piu' tuple sulla base di uno o piu' attributi, SQL utilizza il costrutto GROUP BY.! AGG permette di recuperare le tuple aggregate dal GROUP BY. 46

AGG id nome cognome dipartimento licenziato salario imp0001 Mario Rossi Vendite null 20000 imp0002 Giorgio Bianchi Vendite null 18000 imp0003 Luca Verdi Contabilità null 15000 imp0004 Gianni Neri Contabilità 01/01/03 15000 <dip nome="vendite"> <imp></imp> <imp></imp> </dip> <dip nome="contabilità"> <imp></imp> <imp></imp> </dip> 47

AGG SELECT ELEMENT( NAME "dipartimento", ATTRIBUTES(i.dipartimento AS "nome"), AGG( ELEMENT( NAME "imp", i.cognome) ) ) AS risultato FROM IMPIEGATI i GROUP BY dipartimento 48

AGG risultato <dipartimento nome="vendite"> <imp>rossi</imp> <imp>bianchi</imp> </dipartimento> <dipartimento nome="contabilità"> <imp>verdi</imp> <imp>neri</imp> </dipartimento> 49

GEN! Un'altra possibilita' per creare e' GEN.! E' possibile specificare esplicitamente il codice, inserendovi dati tramite variabili, indicate tra parentesi graffe.! Le variabili possono essere utilizzate anche per i nomi degli elementi, cosa non possibile tramite ELEMENT, che prevede che i nomi degli elementi vengano forniti esplicitamente tramite una costante. 50

GEN SELECT GEN( '<impiegato> <nome>{$nome}</nome> <salario>{$sal}</salario> </impiegato>', i.nome, i.salario AS "sal" ) AS risultato FROM IMPIEGATI i WHERE salario > 15000 Riferimento per nome 51

GEN risultato <impiegato> <nome>rossi</nome> <salario>20000</salario> </impiegato> <impiegato> <nome>bianchi</nome> <salario>18000</salario> </impiegato> 52

Le specifiche di SQL/! ISO/IEC 9074-14:2003! Corrispondente a quanto trattato nei presenti lucidi.! ISO/IEC 9075-14:2006! Aggiunge la possibilità di eseguire interrogazioni in XQuery, di cui viene adottato il modello dei dati, e di validare documenti.! ISO/IEC 9075-14:2008! La più recente, non ancora diffusa e adottata. 53

Riferimenti! Alcuni articoli su SQL/:! Una descrizione dello standard descritto in questi lucidi: www.acm.org/sigmod/record/issues/0206/standard.pdf! Un approfondimento sulle nuove funzionalità: www.sigmod.org/sigmod/record/issues/0409/11.jimmelton.pdf! Alcuni sistemi che supportano SQL/:! Oracle database server.! DB2. 54