Basi di dati. Argomenti. Materiale didattico. Laboratorio d'informatica

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Basi di dati. Argomenti. Materiale didattico. Laboratorio d'informatica"

Transcript

1 Laboratorio d'informatica Laurea Magistrale in Ingegneria per l'ambiente e il Territorio Università degli Studi di Cagliari A.A. 2016/2017 Docente: Giorgio Fumera Basi di dati Argomenti Generalità sulle basi di dati Il modello logico relazionale Il linguaggio SQL per la definizione e l'interrogazione di basi di dati relazionali Il modello concettuale Entità-Relazione Progettazione concettuale Progettazione logica 2 Materiale didattico Testo di riferimento: P. Atzeni, S. Ceri, S. Paraboschi, R.Torlone Basi di dati - Modelli e linguaggi di interrogazione McGraw-Hill, 2009 (terza edizione) INTRODUZIONE DBMS usato nel laboratorio: PostgreSQL 3 4

2 Progettazione e gestione di BD Sistemi informativi dati (testuali/numerici), strumenti di archiviazione e gestione, utenti, procedure di accesso,... esempi: università, aziende, enti pubblici,... Basi di dati (BD) strumenti informatici introdotti negli anni '60 nuove applicazioni (dati multimediali, Web, ecc.) Problemi: quantità dei dati (risorse hardware, efficienza,...) molti utenti di diverse tipologie procedure di accesso complesse requisiti critici: accesso in tempo reale, accesso concorrente, ecc Realizzazione di BD Approccio ad hoc: aspetti legati all'applicazione specifica sviluppo di programmi dedicati funzionalità del file system Realizzazione di BD Problemi comuni a tutte le applicazioni: efficienza sicurezza (limitazioni all'accesso) ridondanza integrità concorrenza ripristino da crash e guasti gestione della memoria secondaria e principale archiviazione permanente (backup) 7 8

3 Realizzazione di BD Approccio generale: Data Base Management System (DBMS), strumenti software per la progettazione e gestione di BD in qualsiasi ambito applicativo. Funzionalità principali: definizione, costruzione, manipolazione, condivisione di BD funzionalità avanzate a un livello superiore rispetto al file system accesso alla BD tramite opportune interfacce gestione di interrogazioni e transazioni 9 Architettura di un DBMS Utenti Programmi applicativi Software del DBMS Elaborazione delle interrogazioni Accesso ai dati File system Meta-dati BD 10 Architettura client-server di un DBMS Caratteristiche dei DBMS Utenti Programmi applicativi Software del DBMS Elaborazione delle interrogazioni Accesso ai dati client Livelli di astrazione Indipendenza dei dati Modelli per la descrizione dei dati Utente 1 Utente 2 Utente 3 Utente 4 Utente m... Vista 1 Vista 2... Vista n Livello esterno File system server Descrizione logica Livello logico Descrizione interna Livello fisico Meta-dati BD Memoria di massa (file) 11 12

4 Funzionalità specifiche dei DBMS Linguaggi dei DMBS Controllo della ridondanza dei dati Sicurezza: permessi di accesso ai diversi utenti Efficienza Controllo dell'integrità dei dati Gestione dell'accesso concorrente ai dati (transazioni) Strumenti di backup e crash recovery Due funzionalità: Data Definition Language (DDL) Data Manipulation Language (DML) Linguaggio standard (ANSI) dal 1999: Structured Query Language (SQL) Utenti di una base di dati Progettisti Amministratori Utenti finali occasionali (di alto livello) finali non esperti (interfacce e transazioni standard) finali esperti indipendenti Anni '60-'80 DBMS: cenni storici prime applicazioni commerciali (General Electric, IBM, American Airlines) introduzione del modello logico relazionale definzione del linguaggio SQL primi sistemi informativi geografici (GIS) Anni '90: nuove applicazioni data warehouse data mining / business intelligence Enterprise Resource Planning (ERP), Management Resource Planning (MRP) Fine anni '90 - oggi Internet, commercio elettronico, librerie digitali,

5 Commerciali IBM Oracle Microsoft... Open-source PostgreSQL MySQL... DBMS esistenti Punto di vista Obbiettivi del corso utente avanzato di una BD (interazione con i progettisti) progettista/amministratore di piccole BD Conoscenze di base progettazione concettuale: modello Entità- Relazione progettazione logica: modello relazionale principali comandi del linguaggio SQL per la definizione (DDL) e l'interrogazione (DML) di BD Il modello logico relazionale Ideato negli anni '70. Fondamenti: teoria degli insiemi. IL MODELLO LOGICO RELAZIONALE Componenti: base di dati relazionale: insieme di tabelle (relazioni) identificate da un nome univoco tabella: insieme di righe (record, "tuple"), suddivise in un insieme di colonne (campi, attributi) identificate da un nome univoco; ogni riga contiene dati su un elemento di un dato insieme; l'ordine delle righe e delle colonne non è definito; non possono esistere righe identiche valori di ogni colonna: appartengono a un dominio 19 20

6 Studenti Matricola Codice Fiscale Insegnamenti Nome Codice Crediti Analisi I AMI01 9 Geometria GEO01 6 Fisica I FISI1 6 Chimica CHI01 6 Informatica INF01 6 Esempio Cognome Nome Data di nascita RSSMRA... Rossi Maria 1/1/ VRDFRA... Verdi Francesca 3/2/ NRIGVI... Neri Giovanni 5/7/ BNCMRA... Bianchi Maria 10/11/ SMTJOH... Smith John 12/12/ BRNMRO... Bruni Marco 28/2/1991 Esami Studente Esame Data Voto Lode GEO01 10/9/ falso AMI01 15/9/ falso AMI01 30/09/ falso GEO01 28/9/ vero CHI01 19/9/ falso Schema e istanza di una base di dati relazionale Schema: struttura della BD, definita in fase di progettazione, costante nel tempo schema di una BD: schema delle sue tabelle, vincoli d'integrità tra tabelle schema di una tabella: nome della tabella nome e dominio di ciascuna colonna, vincoli d'integrità Istanza: dati contenuti nella BD in un dato istante di tempo modificabile dagli utenti operazioni: aggiunta, cancellazione, modifica di righe di una o più tabelle Vincoli d'integrità Vincolo di dominio Vincoli sui valori che possono essere memorizzati nella BD, per garantirne la correttezza Definiti in fase di progettazione (schema) Applicati automaticamente dal DBMS in fase di aggiunta e modifica delle righe delle tabelle Tipologie di vincoli: di dominio di chiave d'integrità referenziale (chiave esterna) di dominio esteso, di tupla (check), asserzioni (su più tabelle) 23 Definisce l'insieme di valori che una colonna potrà assumere. Nel linguaggio SQL esistono sia dominii predefiniti che dominii definibili dall'utente. Principali dominii predefiniti: numeri interi numeri reali stringhe di caratteri (incluso il numero massimo di caratteri) date (giorno, mese, anno) istanti di tempo (ore, minuti, secondi) valori logici Booleani (vero/falso) È anche possibile non inserire nessun valore in una colonna. È obbligatorio specificare il vincolo di dominio per ogni colonna. 24

7 Vincolo di dominio: esempio Vincolo di chiave Studenti Matricola Codice Fiscale Cognome Nome Data di nascita stringa di 5 caratteri Insegnamenti stringa di 16 caratteri Nome Codice Crediti stringa di 50 caratteri Esami stringa di 5 caratteri stringa di 5 caratteri stringa di 50 caratteri intero stringa di 50 caratteri data Studente Esame Data Voto Lode Nelle BD relazionali ogni tabella deve avere almeno un insieme di una o più colonne che non potranno assumere valori identici in righe diverse (si ricordi che una tabella è un insieme di righe). Tali colonne devono essere individuate tenendo conto della natura e del significato dei dati memorizzati nella tabella. Ogni sottoinsieme minimale (cioè composto dal minor numero possibile di colonne) di tali colonne è detto chiave candidata. Una delle chiavi candidate deve poi essere obbligatoriamente scelta come chiave primaria attraverso il vincolo di chiave. La chiave primaria ha la funzione di: identificare univocamente le righe di una tabella rendere più efficienti le interrogazioni Tutte le colonne della chiave primaria sono inoltre vincolate a dover sempre contenere un valore. stringa di data intero Booleano 5 caratteri Vincolo di chiave: esempio Vincolo di chiave: esempio Studenti Matricola Codice Fiscale Cognome Nome Data di nascita RSSMRA... Rossi Maria 1/1/ VRDFRA... Verdi Francesca 3/2/ NRIGVI... Neri Giovanni 5/7/ BNCMRA... Bianchi Maria 10/11/ SMTJOH... Smith John 12/12/ BRNMRO... Bruni Marco 28/2/1991 Due chiavi candidate: Matricola e Codice Fiscale. Una delle due dovrà essere scelta come chiave primaria. Insegnamenti Nome Codice Crediti Analisi I AMI01 9 Geometria GEO01 6 Fisica I FISI1 6 Chimica CHI01 6 Informatica INF01 6 Assumendo che il codice identifichi univocamente ogni insenamento: una chiave candidata, che costituirà la chiave primaria: Codice 27 28

8 Vincolo di chiave: esempio Esami Studente Esame Data Voto Lode GEO01 10/9/ falso AMI01 15/9/ falso AMI01 30/09/ falso GEO01 28/9/ vero CHI01 19/9/ falso Vincolo di chiave: notazione grafica Di norma le chiavi primarie sono evidenziate con la sottolineatura dei nomi delle colonne corrispondenti. Studenti Matricola Codice Fiscale Cognome Nome Data di nascita RSSMRA... Rossi Maria 1/1/ VRDFRA... Verdi Francesca 3/2/ Assumendo di voler memorizzare nella tabella Esami solo gli esami sostenuti con esito positivo, e che l'esame per un dato insegnamento possa essere sostenuto non più di una volta con esito positivo da uno stesso studente: una chiave candidata, che costituirà la chiave primaria, composta da due colonne: (Studente, Esame) Insegnamenti Nome Codice Crediti Analisi I AMI01 9 Geometria GEO01 6 Fisica I FISI1 6 Chimica CHI01 6 Informatica INF01 6 Esami Studente Esame Data Voto Lode GEO01 10/9/ no AMI01 15/9/ no AMI01 30/09/ no GEO01 28/9/ sì CHI01 19/9/ no Vincoli d'integrità referenziale Vincoli d'integrità referenziale Una BD contiene dati suddivisi nelle righe di diverse tabelle. È possibile mettere in corrispondenza le righe di tabelle diverse facendo in modo che le righe di una tabella referenziante contengano un riferimento alle righe di una tabella referenziata. Nelle BD relazionali questo è possibile attraverso la condivisione di colonne tra la tabella referenziante e quella referenziata. 31 Per mettere in corrispondenza le righe di due tabelle: si aggiungono alla tabella referenziante le colonne (dette chiave esterna) corrispondenti alla chiave primaria della tabella referenziata; tali colonne dovranno avere lo stesso dominio (ma possono avere nomi diversi) si definisce un vincolo d'integrità referenziale che lega le colonne della chiave esterna della tabella referenziante a quelle della chiave primaria della tabella referenziata Il vincolo d'integrità referenziale impone che non sarà possibile inserire nella tabella referenziante righe contenenti valori della chiave esterna che non compaiono nelle righe dell'istanza attuale della tabella referenziata. Consente inoltre di specificare le azioni da svolgere nel caso di modifiche alla tabella referenziata (si veda più avanti) che potrebbero comportare la violazione dello stesso vincolo. 32

9 Vincoli d'integrità referenziale: esempio Studenti Matricola Codice Fiscale Cognome Nome Data di nascita RSSMRA... Rossi Maria 1/1/ VRDFRA... Verdi Francesca 3/2/ NRIGVI... Neri Giovanni 5/7/ BNCMRA... Bianchi Maria 10/11/ SMTJOH... Smith John 12/12/ BRNMRO... Bruni Marco 28/2/1991 Esami Insegnamenti Studente Esame Data Voto Lode Nome Codice Crediti GEO01 10/9/ no Analisi I AMI AMI01 15/9/ no Geometria GEO AMI01 30/09/ no Fisica I FISI GEO01 28/9/ sì Chimica CHI CHI01 19/9/ no Informatica INF Vincoli d'integrità referenziale: esempio Nell'esempio precedente, il vincolo d'integrità referenziale tra la colonna "Studente" della tabella "Esami" e la colonna "Matricola" della tabella "Studenti": può essere definito solo le due colonne hanno lo stesso dominio impone che nella prima potranno essere inseriti solo numeri di matricola che si trovano già nella seconda (in altre parole, si possono memorizzare solo esami sostenuti da studenti che compaiono nella tabella "Studenti") Analogo discorso vale per il vincolo tra la colonna "Esame" della tabella "Esami" e la colonna "Codice" della tabella "Insegnamenti". 34 Vincoli d'integrità referenziale Come caso particolare, la tabella referenziante e quella referenziata possono coincidere. Esempio: una tabella che contiene dati anagrafici su un insieme di persone, tra i quali il codice fiscale (chiave primaria), e il padre di ciascuna persona (la colonna "Padre", che corrisponde alla chiave esterna). Per es., il padre di Maria Rossi e di Francesca Rossi è Marco Rossi. Se le informazioni sul padre di qualche persona non sono contenute nella tabella, il corrispondente valore della colonna "Padre" sarà assente. Persone Padre Codice Fiscale Cognome Nome Data di nascita RSSMRO... RSSMRA... Rossi Maria 1/1/1979 RSSMRO... RSSFRA... Rossi Francesca 3/2/1991 NULL NRIGVI... Neri Giovanni 5/7/1950 NULL BNCMRA... Bianchi Maria 10/11/1962 NRIGVI... NRILCA... Neri Luca 12/12/1991 NULL RSSMRO... Rossi Marco 28/2/ Altri vincoli d'integrità Vincolo di domino esteso: limita ulteriormente i valori che possono essere assunti da una colonna a un sottoinsieme del suo dominio. Esempi: voto di un esame: numero intero (dominio), compreso tra 18 e 30 (vincolo di dominio esteso) si può anche imporre che il valore di una colonna non possa essere assente (nota: tale vincolo è sempre implicito per tutte le colonne della chiave primaria) Vincolo di tupla: limita i valori che possono essere assunti da due o più colonne in una stessa riga. Esempio: colonne "Voto" (intero tra 18 e 30) e "Lode" (sì/no) di un esame: la lode può essere assegnata (sì) solo se il voto è 30 36

10 Altri vincoli d'integrità Vincolo di unicità (su una o più colonne): definisce un sottoinsieme di colonne di una tabella, diverso dalla chiave primaria, che non potrà assumere lo stesso valore in righe diverse Esempio: se nella tabella "Studenti" si sceglie "Matricola" come chiave primaria, sulla colonna "Codice fiscale" potrà essere imposto un vincolo di unicità (questo impedirà l'inserimento di uno stesso codice fiscale per studenti diversi) Asserzioni: vincoli che coinvolgono più tabelle 37 Il vincolo di unicità Un vincolo di unicità imposto su due o più colonne impone che non potranno esistere righe con valori identici in tutte le colonne coinvolte (analogamente al vincolo di chiave primaria). Esempio: un vincolo di unicità sulle colonne "Nome" e "Cognome" della tabella "Studenti" impedisce di inserire studenti omonimi, aventi cioè sia lo stesso nome che lo stesso cognome, ma non impedisce di inserire studenti che abbiano identico solo il nome o solo il cognome (es.: Marco Rossi e Francesco Rossi) due vincoli di unicità distinti sulle stesse colonne impongono una condizione più restrittiva: non solo impediscono di inserire studenti omonimi, ma anche studenti che abbiano identico solo il nome (per es., Marco Rossi e Marco Bianchi), oppure solo il cognome (per es., Mario Neri e Giovanni Neri) 38 Studenti Insegnamenti Esami Schema logico relazionale: notazione informale (Matricola: stringa di 5 caratteri, Codice fiscale: stringa di 16 caratteri, Cognome: stringa di 50 caratteri, Nome: stringa di 50 caratteri, Data di nascita: data) (Nome: stringa di 50 caratteri, Codice: stringa di 5 caratteri, Crediti: intero) (Data: data, Voto: intero, Lode: Booleano, Studente: stringa di 5 caratteri, Esame: stringa di 5 caratteri) Vincoli d'integrità referenziale (chiavi esterne): Studente (tab. Esami, referenziante) Matricola (tab. Studenti, referenziata) Esame (tab. Esami, referenziante) Codice (tab. Corso, referenziata) Altri vincoli: Tabella Esami: 18 Voto 30 (vincolo di dominio esteso) Se Voto < 30, Lode non può essere 'vero' (vincolo di tupla) 39 Il DBMS PostgreSQL 40

11 PostgreSQL PostgreSQL: architettura client / server Il nome: origine: University INteractive Graphics REtrieval System (INGRES) University of California, Berkeley, 1982: sviluppo di un DBMS open-source "post-ingres": Postgres Introduzione del supporto per SQL: PostgreSQL Object-relational DBMS Architettura client-server Componenti principali: client host client pgadmin (amministratore)... PostgreSQL server client host client client... client server (gestione DB, utenti) strumento di amministrazione: pgadmin III BD 41 host server 42 Architettura di un DB PostgreSQL server Base di dati... Base di dati... Il linguaggio SQL schema 1... schema m... tabella 1... tabella p... colonna 1... colonna q vincoli

12 Basi di dati e linguaggio SQL Base di dati: una collezione di schemi Ogni schema: è identificato da un nome è associato a un utente (proprietario) contiene una collezione di descrittori di: tabelle vincoli dominii definiti dall'utente autorizzazioni per l'accesso ai dati da parte degli utenti... SQL: funzionalità principali Definizione dello schema di una BD: tabelle, colonne, vincoli, ecc. (data definition language, DDL) Accesso all'istanza di una BD (data manipulation language, DML) modifica dell'istanza di una BD (inserimento di righe, modifica di righe, cancellazione di righe) estrazione di dati da una BD (interrogazione) Interfacce: a "riga di comando" (es.: psql) grafiche (es.: pgadmin) Principali dominii predefiniti in SQL Definizione di una tabella integer oppure int: numero intero real: numero reale character varying(n) oppure varchar(n): stringa di non più di n caratteri date: data, nel formato AAAA-MM-GG (sono ammessi solo valori che corrispondono a date valide, per es., 1 MM 12, ecc.) time: ore, minuti e secondi, nel formato hh:mm:ss (valori ammessi: 00 hh 24, 00 mm 59, 00 ss 59) boolean: valore logico Booleano, con valori "vero" e "falso" indicati dai simboli TRUE e FALSE (es.: colonna "Lode" riferita al voto di un esame) Principale comando SQL di tipo DDL: definizione dello schema di una tabella. Sintassi: CREATE TABLE "nome_tabella" ( "nome colonna" dominio,... "nome colonna" dominio, PRIMARY KEY ("nome colonna",..., "nome colonna") ) ; 47 48

13 Esempio Definizione di una tabella CREATE TABLE "Studenti" ( "Cognome" varchar(50), "Nome" varchar(50), "Matricola" varchar(5), "Data di nascita" date, "Codice fiscale" varchar(16), PRIMARY KEY ("Matricola") ); Oltre ai vincoli di dominio e di chiave primaria (obbligatori) è possibile definire ulteriori vincoli, con i seguenti comandi: vincoli di dominio esteso su una colonna: NOT NULL (il valore della colonna non può essere assente) CHECK condizione (specifica una condizione che dovrà essere rispettata dai valori della colonna) vincolo di unicità su una o più colonne: UNIQUE ("nome colonna",...) vincolo di chiave esterna su una o più colonne: FOREIGN KEY... vincolo di tupla su una o più colonne: CHECK condizione È anche possibile indicare un valore di default per una colonna: DEFAULT valore Definizione di una tabella Esempio Sintassi: CREATE TABLE "nome_tabella" ( "nome colonna" dominio [NOT NULL] [DEFAULT valore],... [ UNIQUE ("nome colonna",..., "nome colonna"), ] [ FOREIGN KEY ("nome colonna",..., "nome colonna") REFERENCES "tabella referenziata"("nome colonna"),..., ] PRIMARY KEY ("nome colonna",..., "nome colonna") ) ; CREATE TABLE "Studenti" ( "Cognome" varchar(50) NOT NULL, "Nome" varchar(50), "Matricola" varchar(5), "Data di nascita" date, "Codice fiscale" varchar(16), UNIQUE ("Codice fiscale"), PRIMARY KEY ("Matricola") ); 51 52

14 Esempio Esempio CREATE TABLE "Insegnamenti" ( "Nome" varchar(50) NOT NULL, "Crediti" int, "Codice" varchar(5), PRIMARY KEY ("Codice") ); 53 CREATE TABLE "Esami" ( "Voto" integer NOT NULL, "Lode" boolean DEFAULT FALSE, "Data" date, "Studente" varchar(5), "Esame" varchar(5), PRIMARY KEY ("Studente", "Esame"), FOREIGN KEY ( "Studente" ) REFERENCES "Studenti" ("Matricola"), FOREIGN KEY ( "Esame" ) REFERENCES "Insegnamenti" ("Codice"), CHECK ("Voto" >= 18 AND "Voto" <= 30), CHECK (NOT ("Voto" < 30 AND "Lode" = TRUE)) ); 54 Viincolo d'integrità referenziale Vincolo d'integrità referenziale Le modifiche a una tabella referenziata che violerebbero il vincolo di integrità referenziale (cancellazione di righe o modifica dei valori della chiave primaria) vengono impedite da un DBMS, a meno che non si specifichi un'azione diversa nella definizione dello stesso vincolo, attraverso le clausole: ON DELETE (azioni da eseguire in caso di cancellazione) ON UPDATE (azioni da eseguire in caso di modifica) 55 Le azioni principali disponibili in SQL sono: SET NULL: si assegna NULL alla chiave esterna in corrispondenza delle righe cancellate o modificate nella tabella referenziata (è possibile solo se la chiave esterna non fa parte anche della chiave primaria della tabella referenziante) SET DEFAULT: si assegna il valore di default alla chiave esterna (se non si è specificato tale valore nel comando CREATE TABLE, si assegna NULL) CASCADE: la modifica alla tabella referenziata viene propagata a quella referenziante: nel caso ON DELETE si eliminano le righe corrispondenti nella tabella referenziante; nel caso ON UPDATE si aggiorna il valore della chiave esterna NO ACTION: la modifica viene impedita (azione predefinita, non è necessario specificarla esplicitamente) 56

15 Vincolo d'integrità referenziale Sintassi completa della clausola FOREIGN KEY:... FOREIGN KEY ("nome colonna",...) REFERENCES "tabella referenziata" ("nome colonna",...), [ ON DELETE CASCADE / SET NULL / SET DEFAULT / NO ACTION, ] [ ON UPDATE CASCADE / SET NULL / SET DEFAULT / NO ACTION, ]... Esempio CREATE TABLE "Esami" (... FOREIGN KEY ("Studente") REFERENCES "Studenti" ("Matricola"), ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY ("Insegnamento") REFERENCES "Insegnamenti" ("Codice") ON UPDATE CASCADE ON DELETE CASCADE,... ); Esercizio (1/3) Si consideri una BD, di nome "Circolo nautico", che debba contenere alcuni dati sui velisti soci di un circolo nautico, sulle barche gestite dal circolo e sulle loro prenotazioni da parte dei soci. Una barca può essere prenotata da un solo socio alla volta, e la prenotazione dura un intero giorno. Ciascun socio e ciascuna barca sono identificati univocamente da un codice denominato rispettivamente "vid" e "bid" (in entrambi i casi, un numero intero). L'esperienza nautica di ciascun socio è rappresentata con un valore da 1 (minima) a 10 (massima). Esercizio (2/3) Un esempio di istanza della BD (i vincoli d'integrità referenziale sono indicati dalle frecce) Velisti vid vnome esperienza età 22 Dustin Lubber Rusty Prenotazioni vid bid giorno /10/ /12/96 Barche bid bnome colore 101 Interlake blu 102 Interlake rosso 103 Clipper verde 104 Marine rosso 59 60

16 Schema logico: Esercizio (3/3) Velisti (vid: intero, vnome: stringa(20), esperienza: int., età: reale) Barche (bid: intero, bnome: stringa(25), colore: stringa(10)) Prenotazioni (vid: intero, bid: intero, giorno: data) Vincoli d'integrità referenziale: vid(prenotazioni) vid(velisti); tutte le modifiche alla tabella Velisti devono essere propagate alla tabella Prenotazioni bid(prenotazioni) bid(barche); come sopra per le modifiche Vincoli di dominio esteso: esperienza {1,...,10} età 18 il nome di ogni velista e di ogni barca devono sempre essere specificati Soluzione CREATE TABLE "Velisti" ( "vid" int, "vnome" varchar(20) NOT NULL, "esperienza" int, "età" real, PRIMARY KEY ("vid"), CHECK ("esperienza" >= 1 AND "esperienza" <= 10), CHECK ("età" >= 18) ); Scrivere i comandi SQL per la creazione della BD Soluzione CREATE TABLE "Barche" ( "bid" int, "bnome" varchar(25) NOT NULL, "colore" varchar(10), PRIMARY KEY ("bid") ); Soluzione CREATE TABLE "Prenotazioni" ( "bid" int, "vid" int, "data" date, PRIMARY KEY ("bid", "vid", "data"), FOREIGN KEY ("bid") REFERENCES "Barche"("bid") ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY ("vid") REFERENCES "Velisti"("vid") ON UPDATE CASCADE ON DELETE CASCADE ); 63 64

17 Operazioni che: Interrogazioni modificano l'istanza di una BD inserimento di una nuova riga in una tabella cancellazione di una riga da una tabella modifica dei valori di una o più colonne di una riga di una tabella estraggono dati dall'istanza di una BD Interrogazioni In una BD relazionale il risultato di un'interrogazione è definito come: una nuova istanza della BD, per operazioni di modifica (che non violino nessun vincolo d'integrità) una nuova tabella (fittizia, non memorizzata nella BD), per operazioni di estrazione di dati I comandi SQL che le realizzano fanno parte del data manipulation language (DML) Esempi Interrogazioni: il comando SELECT Esempi di interrogazioni per l'estrazione di dati dalla BD "Circolo Nautico": Trovare i nomi dei velisti che hanno prenotato la barca numero 103 Trovare i nomi e le età di tutti i velisti Trovare i nomi dei velisti che hanno prenotato almeno una barca Trovare i codici dei velisti che hanno prenotato una barca rossa, oppure una barca verde 67 Forma elementare: SELECT "nome_colonna",..., "nome_colonna" FROM "nome_tabella" ; estrae da tutte le righe di una tabella i valori delle colonne indicate SELECT * FROM "nome_tabella" ; restituisce l'intera tabella Esempi: Trovare il codice e il nome di tutti i velisti: SELECT "vid","nome" FROM "Velisti"; Trovare i dati su tutte le barche: SELECT * FROM "Barche"; 68

18 SELECT: la clausola WHERE Per estrarre i valori delle colonne indicate, dalle sole righe di una tabella che soddisfano una data condizione: SELECT "nome_colonna",..., "nome_colonna" FROM "nome_tabella" WHERE <qualificazione (condizione)> ; SELECT: la clausola WHERE Le condizioni (qualificazioni) più semplici sono: confronto tra il valore di una colonna e un valore costante dello stesso dominio confronto tra i valori di due colonne aventi lo stesso dominio Si possono usare i seguenti operatori di confronto: < <= = > >= <> Si possono inoltre definire condizioni composte combinando altre condizioni (semplici o a loro volta composte) con gli operatori logici AND, OR, NOT Nota: SELECT: la clausola WHERE i nomi delle colonne devono essere racchiusi tra doppi apici, per es.: "Cognome" i valori costanti devono essere racchiusi tra apici singoli, per es.: "Cognome" = 'Rossi' "Data di nascita" >= ' ' "età" > '25' i valori numerici (integer e real) possono anche essere scritti senza racchiuderli tra apici singoli, per es.: "età" > 25 Esempi Trovare i nomi dei velisti con più di 40 anni: SELECT "vnome" FROM "Velisti" WHERE "età" > 40; Trovare i nomi dei velisti con più di 40 anni, oppure con esperienza maggiore di 7: SELECT "vnome" FROM "Velisti" WHERE "età" > 40 OR "esperienza" > 7; 71 72

19 Esercizi Si consideri la BD degli esempi mostrati in precedenza, composta dalle tabelle "Studenti", Insegnamenti" ed "Esami" (denominata da qui in poi "Segreteria Studenti"): 1)Tovare nomi e cognomi degli studenti nati il 1 gennaio )Tovare nomi e cognomi degli studenti nati tra il 1 e il 31 gennaio )Trovare i nomi degli insegnamenti da 6 crediti 4)Trovare le matricole degli studenti che hanno conseguito la votazione di 30 in qualche esame 73 Soluzioni 1) SELECT "Nome", "Cognome" FROM "Studenti" WHERE "Data di nascita" = ' '; 2) SELECT "Nome", "Cognome" FROM "Studenti" WHERE "Data di nascita" >= ' ' AND "Data di nascita" <= ' '; 3) SELECT "Nome" FROM "Insegnamenti" WHERE "Crediti" = 6; 4) SELECT "Studente" FROM "Esami" WHERE "Voto" = 30; 74 La clausola DISTINCT La clausola DISTINCT Contrariamente alle tabelle definite con CREATE TABLE, la tabella risultato di un'interrogazione può contenere righe identiche. Per es., nella BD "Circolo Nautico": SELECT "colore" FROM "Barche"; restituisce: colore blu rosso verde rosso 75 Per eliminare le eventuali righe duplicate (se queste non sono utili): SELECT DISTINCT "nome_colonna",... FROM "nome_tabella" WHERE <qualificazione (condizione)> ; Esempio: SELECT DISTINCT "colore" FROM "Barche"; restituisce: colore blu rosso verde 76

20 Interrogazioni su più tabelle Interrogazioni su più tabelle Esempio: tovare i nomi dei velisti che hanno prenotato la barca numero 103. I dati richiesti si trovano in tabelle diverse Velisti vid vnome esperienza età 22 Dustin Lubber Rusty Prenotazioni vid bid giorno /10/ /12/96 Barche bid bnome colore 101 Interlake blu 102 Interlake rosso 103 Clipper verde 104 Marine rosso 77 Intuitivamente, si può seguire questa procedura: 1) Schema della tabella risultato: una colonna (vnome): SELECT "Velisti"."vnome"... 2) In quali tabelle si trovano le informazioni richieste? Velisti e Prenotazioni: SELECT "Velisti"."vnome" FROM "Velisti", "Prenotazioni"... 3) Quali condizioni devono essere rispettate? Analizzare tutte le possibili combinazioni di righe delle tabelle in esame, ed estrarre vnome da una riga di "Velisti", se il vid della stessa riga coincide con il vid della riga di "Prenotazioni", e il bid di quest'ultima è 103: SELECT "Velisti"."vnome" FROM "Velisti", "Prenotazioni" WHERE "Velisti"."vid" = "Prenotazioni"."vid" AND "Prenotazioni"."bid"= 103; 78 Interrogazioni su più tabelle Variabili di range Nota: per distinguere le colonne di tabelle diverse, il nome di ogni colonna deve essere preceduto da quello della tabella, e i due nomi devono essere separati da un punto. Se il nome di una colonna compare in una sola tabella, e quindi non genera ambiguità, può essere scritto senza il nome della tabella corrispondente. Tuttavia questo rende l'interrogazione meno leggibile. Per semplificare un'interrogazione su più tabelle, i nomi di queste ultime possono essere sostituiti da variabili di range, cioè nomi simbolici scelti dall'utente e indicati nella clausola FROM subito dopo il nome di ciascuna tabella. L'esempio precedente può essere riscritto come segue, associando alle tabelle "Velisti" e "Prenotazioni" le variabili di range V e P: SELECT V."vnome" FROM "Velisti" V, "Prenotazioni" P WHERE V."vid" = P."vid" AND P."bid"= 103; 79 80

21 Esempio Trovare i cognomi degli studenti che hanno sostenuto l'esame avente codice AMI01: SELECT S."Cognome" FROM "Studenti" S, "Esami" E WHERE E."Esame" = 'AMI01' AND S."Matricola" = E."Studente"; Strategia di valutazione concettuale Algoritmo per eseguire interrogazioni su più tabelle, descritto in precedenza in modo informale: 1. eseguire il prodotto cartesiano delle tabelle (insiemi di righe) indicate nella clausola FROM, ottenendo una nuova tabella P (ogni riga di P corrisponde a una combinazione di righe delle tabelle originali) 2. selezionare le righe di P che soddisfano la qualificazione (la condizione nella clausola WHERE) 3. proiettare le righe selezionate sulle colonne indicate nella clausola SELECT (cioè eliminare tutte le altre colonne) 4. se è presente la clausola DISTINCT, eliminare le eventuali righe duplicate Esempio SELECT V."vnome" FROM "Velisti" V, "Prenotazioni" P WHERE V."vid" = P."vid" AND P."bid" = 103; Velisti vid vnome esperienza età 22 Dustin Lubber Rusty Prenotazioni vid bid giorno /10/ /12/96 Esempio SELECT V."vnome" FROM "Velisti" V, "Prenotazioni" P WHERE V."vid" = P."vid" AND P."bid" = 103; 1. Prodotto cartesiano delle tabelle nella clausola FROM: Velisti vid vnome esperienza età 22 Dustin Lubber Rusty Prenotazioni vid bid giorno /10/ /12/96 V.vid V.vnome V.esperienza V.età P.vid P.bid P.giorno Dustin /10/96 22 Dustin /12/96 31 Lubber /10/96 31 Lubber /12/96 58 Rusty /10/96 58 Rusty /12/96 84

22 Esempio SELECT V."vnome" FROM "Velisti" V, "Prenotazioni" P WHERE V."vid" = P."vid" AND P."bid" = 103; 2. Selezione delle righe che soddisfano la qualificazione: Velisti vid vnome esperienza età 22 Dustin Lubber Rusty Prenotazioni V.vid V.vnome V.esperienza V.età P.vid P.bid P.giorno vid bid giorno /10/ /12/96 Esempio SELECT V."vnome" FROM "Velisti" V, "Prenotazioni" P WHERE V."vid" = P."vid" AND P."bid" = 103; 3. Proiezione sulle colonne indicate nella clausola SELECT: Velisti vid vnome esperienza età 22 Dustin Lubber Rusty Prenotazioni V.vid V.vnome V.esperienza V.età P.vid P.bid P.giorno vid bid giorno /10/ /12/96 22 Dustin /10/96 22 Dustin /10/96 22 Dustin /12/96 22 Dustin /12/96 31 Lubber /10/96 31 Lubber /10/96 31 Lubber /12/96 31 Lubber /12/96 58 Rusty /10/96 58 Rusty /10/96 58 Rusty /12/ Rusty /12/96 86 Esempio SELECT V."vnome" FROM "Velisti" V, "Prenotazioni" P WHERE V."vid" = P."vid" AND P."bid" = 103; Risultato: vnome Rusty Velisti vid vnome esperienza età 22 Dustin Lubber Rusty Prenotazioni vid bid giorno /10/ /12/96 Esercizi 1)Trovare i nomi dei velisti che abbiano prenotato almeno una barca 2)Trovare i colori delle barche prenotate da qualche velista di nome Lubber 3)Trovare i cognomi degli studenti che abbiano sostenuto almeno un esame 4)Trovare il nome degli insegnamenti dei quali qualche studentessa di nome Maria Bianchi abbia sostenuto l'esame 87 88

23 Soluzioni 1) SELECT V."vnome" FROM "Velisti" V, "Prenotazioni" P WHERE V."vid" = P."vid"; 2) SELECT B."colore" FROM "Velisti" V, "Prenotazioni" P, "Barche" B WHERE V."vid" = P."vid" AND P."bid" = B."bid" AND V."vnome" = 'Lubber'; Soluzioni 3) SELECT S."Cognome" FROM "Studenti" S, "Esami" E WHERE S."Matricola" = E."Studente"; 4) SELECT I."Nome" FROM "Insegnamenti" I, "Esami" E, "Studenti" S WHERE I."Codice" = E."Esame" AND E."Studente" = S."Matricola" AND S."Nome" = 'Maria' AND S."Cognome" = 'Bianchi' ; Una o più interrogazioni? Esempio: trovare le matricole di tutti gli studenti e i codici di tutti gli insegnamenti. Interpretandola come una singola interrogazione, si potrebbe scrivere: SELECT S."Matricola", I."Codice" FROM "Studenti" S, "Insegnamenti" I; Ma il risultato non è quello desiderato. Si tratta in realtà di due interrogazioni indipendenti: Trovare le matricole di tutti gli studenti: SELECT "Matricola" FROM "Studenti"; Trovare i codici di tutti gli insegnamenti: SELECT "Codice" FROM "Insegnamenti"; Dato che: Operatori insiemistici ogni tabella è un insieme di righe il risultato di un'interrogazione è una tabella segue che: è possibile combinare in un'unica tabella i risultati di più interrogazioni, usando gli operatori insiemistici di unione, intersezione e differenza, purché tutte le interrogazioni producano tabelle con schemi identici (nome, dominio e ordine delle colonne) Nota: le eventuali righe duplicate vengono eliminate automaticamente (non è necessario aggiungere la clausola DISTINCT)

24 Operatori insiemistici Operatori insiemistici Esempio: trovare i codici dei velisti che hanno prenotato qualche barca rossa, oppure qualche barca verde. Una soluzione già nota: SELECT P."vid" FROM "Barche" B, "Prenotazioni" P WHERE P."bid" = B."bid" AND (B."colore" = 'rosso' OR B."colore" = 'verde'); Una soluzione alternativa: si potrebbero estrarre separatamente (con due interrogazioni distinte) i codici dei velisti che hanno prenotato qualche barca rossa, poi i codici dei velisti che hanno prenotato qualche barca verde, e infine eseguire l'unione tra i due insiemi di codici. 93 Se due tabelle (insiemi di righe), ottenute come risultato di due interrogazioni Q 1 e Q 2, hanno lo stesso schema (numero e dominii delle colonne) e lo stesso ordine tra le colonne, è possibile scrivere interrogazioni che combinino le loro righe attraverso tre operatori insiemistici, con la seguente sintassi: Q 1 UNION Q 2 ; (unione) Q 1 INTERSECT Q 2 ; (intersezione) Q 1 EXCEPT Q 2 ; (differenza) 94 Operatori insiemistici Operatori insiemistici Riprendendo l'esempio precedente, i codici dei velisti che hanno prenotato qualche barca rossa oppure qualche barca verde si possono ottere come unione dei codici dei velisti che hanno prenotato qualche barca rossa, e di quelli che hanno prenotato qualche barca verde: SELECT P."vid" FROM "Barche" B, "Prenotazioni" P WHERE P."bid" = B."bid" AND B."colore" = 'rosso' UNION SELECT P."vid" FROM "Barche" B, "Prenotazioni" P WHERE P."bid" = B."bid" AND B."colore" = 'verde'; Nota: la prima interrogazione non deve terminare con ; 95 Esempio: trovare i codici dei velisti che hanno prenotato qualche barca rossa e qualche barca verde. Senza usare operatori insiemistici, si può essere tentati di scrivere: SELECT P."vid" FROM "Barche" B, "Prenotazioni" P WHERE P."bid" = B."bid" AND (B."colore" = 'rosso' AND B."colore" = 'verde'); Ma il significato di questa interrogazione non è quello desiderato; è invece: "trovare i codici dei velisti che hanno prenotato qualche barca che è sia rossa che verde" (e quindi il risultato sarà una tabella vuota). 96

25 Operatori insiemistici Nell'esempio precedente, una soluzione corretta si ottiene tramite l'intersezione tra i codici dei velisti che hanno prenotato qualche barca rossa, e i codici dei velisti che hanno prenotato qualche barca verde: SELECT P."vid" FROM "Barche" B, "Prenotazioni" P WHERE P."bid" = B."bid" AND B."colore" = 'rosso' INTERSECT SELECT P."vid" FROM "Barche" B, "Prenotazioni" P WHERE P."bid" = B."bid" AND B."colore" = 'verde'; 97 Operatori insiemistici Esempio: trovare i codici dei velisti che hanno prenotato qualche barca rossa, ma non barche verdi Una possibile soluzione: sottrarre dall'insieme dei codici dei velisti che hanno prenotato qualche barca rossa i codici di quelli che hanno prenotato qualche barca verde: SELECT P."vid" FROM "Barche" B, "Prenotazioni" P WHERE P."bid" = B."bid" AND B."colore" = 'rosso' EXCEPT SELECT P."vid" FROM "Barche" B, "Prenotazioni" P WHERE P."bid" = B."bid" AND B."colore" = 'verde'; 98 Esercizi Esercizi Scrivere le seguenti interrogazioni con una singola istruzione SELECT, senza usare operatori insiemistici: 1)Trovare nome e codice di tutti i velisti che abbiano esperienza pari a 10 o che abbiano prenotato la barca 104 2)Trovare cognome e matricola di tutti gli studenti nati prima del 1/1/1990, o che abbiano sostenuto l'esame avente codice AMI01 99 Scrivere le seguenti interrogazioni usando operatori insiemistici: 3)Trovare nome e codice di tutti i velisti che abbiano esperienza pari a 10 o che abbiano prenotato la barca 104 4)Trovare cognome e matricola di tutti gli studenti nati prima del 1/1/1990, o che abbiano sostenuto l'esame avente codice AMI01 5)Trovare i codici delle barche che siano state prenotate da qualche velista con esperienza pari almeno a 8, e da nessun velista con età maggiore di 35 anni 6)Trovare i codici degli insegnamenti i cui esami siano stati sostenuti da qualche studente nato prima del 1/1/1990, e da nessuno studente nato prima del 1/1/

26 Soluzioni Soluzioni 1)SELECT DISTINCT V."vnome", V."vid" FROM "Velisti" V, "Prenotazioni" P WHERE V."esperienza" = 10 OR (P."vid" = V."vid" AND P."bid" = 104); 2)SELECT DISTINCT S."Cognome", S."Matricola" FROM "Studenti" S, "Esami" E WHERE S."Data di nascita" < ' ' OR (E."Studente" = S."Matricola" AND E."Esame" = 'AMI01'); 101 3)SELECT "vnome", "vid" FROM "Velisti" WHERE "esperienza" = 10 UNION SELECT V."vnome", V."vid" FROM "Velisti" V, "Prenotazioni" P WHERE P."vid" = V."vid" AND P."bid" = 104; 4)SELECT "Cognome", "Matricola" FROM "Studenti" WHERE "Data di nascita" < ' ' UNION SELECT S."Cognome", S."Matricola" FROM "Studenti" S, "Esami" E WHERE E."Studente" = S."Matricola" AND E."Esame" = 'AMI01'; 102 Soluzioni 5)SELECT P."bid" FROM "Prenotazioni" P, "Velisti" V WHERE P."vid" = V."vid" AND V."esperienza" >= 8 EXCEPT SELECT P."bid" FROM "Prenotazioni" P, "Velisti" V WHERE P."vid" = V."vid" AND V."età" > 35; 6)SELECT E."Esame" FROM "Esami" E, "Studenti" S WHERE S."Matricola" = E."Studente" AND S."Data di nascita" < ' ' EXCEPT SELECT E."Esame" FROM "Esami" E, "Studenti" S WHERE S."Matricola" = E."Studente" AND Operatori insiemistici e interrogazioni nidificate Nella clausola WHERE di un'interrogazione Q è possibile esprimere la condizione che i valori di una o più colonne c 1,...,c n debbano essere uguali a quelli di qualche riga (o diversi da quelli di tutte le righe) di una tabella T' ottenuta come risultato di un'altra interrogazione Q', purché T' contenga n colonne con gli stessi dominii di c 1,...,c n (nello stesso ordine): SELECT... FROM... WHERE... c 1,...,c N IN (Q') ; SELECT... FROM... WHERE... c 1,...,c N NOT IN (Q') ; S."Data di nascita" < ' ';

27 Operatori insiemistici e interrogazioni nidificate Esempio: Trovare i nomi dei velisti che hanno prenotato la barca n Una soluzione già nota: SELECT V."vnome" FROM "Velisti" V, "Prenotazioni" P WHERE V."vid" = P."vid" AND P."bid" = 103; Una soluzione alternativa: selezionare "vnome" da "Velisti", se il valore di "vid" appartiene all'insieme dei codici dei velisti che hanno prenotato la barca 103: SELECT "vnome" FROM "Velisti" WHERE "vid" IN (SELECT "vid" FROM "Prenotazioni" WHERE "bid" = 103); 105 Operatori insiemistici e interrogazioni annidate Esempio: trovare i nomi dei velisti che non hanno prenotato la barca n Senza usare IN/NOT IN si può essere tentati di scrivere: SELECT V."vnome" FROM "Velisti" V, "Prenotazioni" P WHERE V."vid" = P."vid" AND P."bid" <> 103; Ma il significato reale di questa interrogazione SQL è "trovare i nomi dei velisti che hanno prenotato anche barche diverse dalla n. 103". La soluzione corretta si può ottenere con l'operatore NOT IN: SELECT "vnome" FROM "Velisti" WHERE "vid" NOT IN (SELECT "vid" FROM "Prenotazioni" WHERE "bid" = 103); 106 Esercizi 1)Trovare i cognomi degli studenti che hanno sostenuto l'esame avente codice AMI01 2)Trovare i nomi degli esami in cui qualche studente ha conseguito la votazione di 30 Soluzioni 1)SELECT "Cognome" FROM "Studenti" WHERE "Matricola" IN (SELECT "Studente" FROM "Esami" WHERE "Esame" = 'AMI01'); 2)SELECT "Nome" FROM "Insegnamenti" WHERE "Codice" IN (SELECT "Esame" FROM "Esami" WHERE "Voto" = 30);

28 Operatori insiemistici e interrogazioni nidificate Nella clausola WHERE di un'interrogazione Q è possibile esprimere la condizione che il valore di una colonna debba essere maggiore, minore, ecc. di qualcuno dei valori, o di tutti i valori, contenuti in una tabella ottenuta come risultato di un'altra interrogazione Q', avente una sola colonna con lo stesso dominio: SELECT... FROM... WHERE... "colonna" operatore-confronto ANY (Q') ; SELECT... FROM... WHERE... "colonna" operatore-confronto ALL (Q') ; dove operatore-confronto è uno degli operatori già noti: < <= = => = <> Esempio Trovare tutti i dati sui velisti la cui esperienza è maggiore di quella di qualche velista di nome Lubber: SELECT * FROM "Velisti" WHERE "esperienza" > ANY (SELECT "esperienza" FROM "Velisti" WHERE "vnome" = 'Lubber'); Esempio Trovare le matricole degli studenti che hanno ottenuto il voto più alto nell'esame AMI01 (cioè, un voto maggiore o uguale a quello di tutti gli altri esami dello stesso insegnamento): SELECT "Studente" FROM "Esami" WHERE "Esame"='AMI01' AND "Voto" >= ALL (SELECT "Voto" FROM "Esami" WHERE "Esame"='AMI01'); Esercizi Scrivere le seguenti interrogazioni usando gli operatori ANY e ALL: 1)Trovare i codici dei velisti più esperti 2)Trovare nome ed età dei velisti più anziani 3)Trovare i cognomi degli studenti più giovani 4)Trovare le matricole degli studenti che non hanno ottenuto il voto più basso nell'esame AMI01 (cioè, che hanno ottenuto un voto maggiore rispetto a qualche altro studente)

29 Soluzioni Operatori di aggregazione 1)SELECT "vid" FROM "Velisti" WHERE "esperienza" >= ALL (SELECT "esperienza" FROM "Velisti"); 2)SELECT "vnome", "età" FROM "Velisti" WHERE "età" >= ALL (SELECT "età" FROM "Velisti"); 3)SELECT "Cognome" FROM "Studenti" WHERE "Data di nascita" >= ALL (SELECT "Data di nascita" FROM "Studenti"); 4)SELECT "Studente" FROM "Esami" WHERE "Esame"='AMI01' AND E."Voto" > ANY (SELECT "Voto" FROM "Esami" WHERE "Esame" = 'AMI01'); 113 Consentono di esprimere interrogazioni che calcolano un valore aggregato: il numero di righe di una tabella (es.: trovare il numero di velisti soci del circolo nautico) la somma, la media, ecc. dei valori di una colonna (es.: trovare l'età media di tutti i velisti) Restituiscono un numero, contenuto in una tabella con una sola colonna e una sola riga 114 Operatori di aggregazione Nella clausola SELECT: COUNT (*): conta le righe della tabella risultato COUNT (DISTINCT "colonna"): conta le righe della tabella risultato, contenenti valori distinti di colonna SUM ([DISTINCT] "colonna"): calcola la somma dei valori di colonna nella tabella risultato (eliminando i valori duplicati se è presente DISTINCT) AVG ([DISTINCT] "colonna"): come sopra (valor medio) MAX ("colonna": come sopra (valore più grande) Esempi Trovare il numero dei velisti soci del circolo nautico: SELECT COUNT (*) FROM "Velisti"; Trovare l'età media di tutti i velisti: SELECT AVG ("età") FROM "Velisti"; Trovare il numero di valori distinti di esperienza dei velisti: SELECT COUNT (DISTINCT "esperienza") FROM "Velisti"; Trovare l'età media dei velisti con esperienza 10: SELECT AVG ("età") FROM "Velisti" WHERE "esperienza" = 10; MIN ("colonna"): come sopra (valore più piccolo)

30 Operatori di aggregazione e interrogazioni nidificate Esempio: trovare nome ed età dei velisti più anziani (cioè di quelli con età pari all'età più grande tra tutti i velisti). Una soluzione con l'operatore ALL: SELECT "vnome", "età" FROM "Velisti" WHERE "età" >= ALL (SELECT "età" FROM "Velisti"); Una soluzione alternativa con un operatore di aggregazione: SELECT "vnome", "età" FROM "Velisti" WHERE "età" = (SELECT MAX ("età") FROM "Velisti"); Esercizi Scrivere le seguenti interrogazioni usando operatori di aggregazione: 1)Trovare i cognomi degli studenti più giovani 2)Trovare i nomi dei velisti più esperti 3)Trovare le matricole degli studenti che non hanno ottenuto il voto più basso nell'esame AMI Soluzioni 1)SELECT "Cognome" FROM "Studenti" WHERE "Data di nascita" = (SELECT MAX ("Data di nascita") FROM "Studenti"); 2)SELECT "vnome" FROM "Velisti" WHERE "esperienza" = (SELECT MAX ("esperienza") FROM "Velisti"); 3)SELECT "Studente" FROM "Esami" WHERE "Esame" = 'AMI01' AND "Voto" > (SELECT MIN ("Voto") FROM "Esami" WHERE "Esame" = 'AMI01'); Progettazione di Basi di Dati

31 Fasi della progettazione Requisiti di una BD: esempio Raccolta e analisi dei requisiti (business rules) Progettazione concettuale (per esempio: modello Entità-Relazione) Progettazione logica (per esempio: modello relazionale) Progettazione fisica In parallelo: analisi funzionale progettazione dei programmi applicativi 121 Base di dati per una data azienda L'azienda è organizzata in dipartimenti: ognuno ha un nome e un codice numerico univoci, una o più sedi (ognuna in una diversa città), ed è diretto da un impiegato, a partire da una certa data Ogni dipartimento controlla un insieme di progetti: ogni progetto ha un nome e un codice numerico univoci e viene gestito da una delle sedi di un singolo dipartimento Ogni impiegato ha nome, cognome, sesso, data di nascita, CF, indirizzo (città, via, numero), stipendio annuale, supervisore (uno degli impiegati), dipartimento di afferenza; può lavorare su uno o più progetti (anche gestiti da altri dipartimenti), a ciascuno dei quali dedica un certo numero di ore settimanali Per scopi assicurativi ogni impiegato può avere familiari a carico, dei quali si memorizza nome e cognome, sesso, data di nascita, e rapporto di parentela con l'impiegato (si assume che non possano esistere due familiari omonimi di uno stesso impiegato, con la stessa data di nascita) 122 Requisiti di una BD: esempio Base di dati per un corso di laurea Il corso di laurea eroga diversi insegnamenti che hanno un nome (es.: Analisi Matematica 1), un codice univoco (cinque caratteri) assegnato dalla segreteria studenti, e un numero di crediti Al corso di laurea possono essere iscritti diversi studenti. Per ogni iscritto si vogliono memorizzare nome, cognome, codice fiscale, data di nascita e numero di matricola (una sequenza di cinque caratteri che identifica univocamente ogni studente) Ogni studente deve sostenere un certo insieme di esami, indicati nel proprio piano di studi. Per ogni esame superato si vogliono conoscere il voto (un intero tra 18 e 30, oppure 30 e lode) e la data. Un esame superato non può essere ripetuto Modello Entità-Relazione (E-R) Entità Attributi dominio di un attributo attributi semplici e composti identificatori Relazioni (associazioni) grado vincoli di cardinalità Entità deboli

32 Entità Insiemi di individui o di oggetti (concreti o astratti). Si indicano con rettangoli, identificati da un nome. Esempi: l'insieme degli impiegati dell'azienda l'insieme dei dipartimenti dell'azienda Attributi Sono caratteristiche possedute da ciascun elemento di un'entità. Per un dato elemento, ogni attributo può assumere un solo valore appartenente a un dato dominio. Esempio di possibili attributi dell'entità Impiegato: Impiegato Dipartimento CF Impiegato Data_nascita Sesso Stipendio Nome_batt Cognome Città Via N_civico Attributi Più attributi legati da un nesso logico possono essere rappresentati come un singolo attributo composto. Esempio: nome di un impiegato (inteso come insieme di nome di battesimo e cognome), e indirizzo di residenza (nome della città, nome della via e numero civico). Attributi Un sottoinsieme minimale di attributi i cui valori identificano univocamente gli elementi di un'entità è detto identificatore. Esempio: per l'entità Impigato l'identificatore è CF. Gli identificatori si rappresentano come indicato in figura. Un'entità può avere più di un identificatore, e ciascun identificatore può essere composto da uno o più attributi. Impiegato Data_nascita Impiegato Data_nascita CF Sesso Stipendio CF Sesso Stipendio Nome Indirizzo Nome Indirizzo Nome_batt Cognome Nome_batt Cognome Città Via N_civico 127 Città Via N_civico 128

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma SQL: Structured Query Language 1 SQL:Componenti Principali Data Manipulation Language (DML): interrogazioni, inserimenti, cancellazioni, modifiche Data Definition Language (DDL): creazione, cancellazione

Dettagli

Basi di dati. Argomenti. Testo di riferimento. Laboratorio d'informatica

Basi di dati. Argomenti. Testo di riferimento. Laboratorio d'informatica Laboratorio d'informatica Laure Magistrale in Ingegneria per l'ambiente e il Territorio Università degli Studi di Cagliari A.A. 2014/2015 Docente: Giorgio Fumera Basi di dati Argomenti Basi di dati: introduzione

Dettagli

Capitolo 4. SQL: il linguaggio di interrogazione. Originato da SEQUEL-XRM e System-R ( ) dell IBM

Capitolo 4. SQL: il linguaggio di interrogazione. Originato da SEQUEL-XRM e System-R ( ) dell IBM Capitolo 4 SQL: il linguaggio di interrogazione SQL Originato da SEQUEL-XRM e System-R (1974-1977) dell IBM Significato originario Structured Query Language Standard de facto Attuale standard ANSI/ISO

Dettagli

Interrogazioni nidificate

Interrogazioni nidificate Interrogazioni nidificate Nella clausola where si possono utilizzare valori prodotti da altre istruzioni select utilizzando any (qualsiasi) o all (tutti) insieme agli operatori di confronto Trovare nome,

Dettagli

Caratteristiche dei linguaggi per Database

Caratteristiche dei linguaggi per Database IL LINGUAGGIO Caratteristiche dei linguaggi per Database I linguaggi per basi di dati relazionali possiedono i comandi per: definizione del data base; manipolazione dei dati; associazione tra tabelle diverse;

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 Introduzione Sistemi informativi 2 Introduzione Base di dati Modello dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS 4 6 2007 Politecnico di Torino 1 7 8 9 10 Sistema informatico Nei sistemi informatici,

Dettagli

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/2002 4.1

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/2002 4.1 Modelli di Base Dati 4 Un DBMS: Access a.a. 2001/2002 4.1 DBMS 4.2 DBMS = Data Base Management System Software per la costruzione e la gestione di una base dati Esempi di DBMS: Oracle, MySQL, SQLServer,

Dettagli

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative SQL SQL Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative l utente specifica quale informazione è di suo interesse, ma non come estrarla dai dati Le interrogazioni vengono

Dettagli

Interrogazioni nidificate

Interrogazioni nidificate Interrogazioni nidificate Trovare nome, cognome e matricola degli studenti che non hanno fatto esami select Matricola,Nome,Cognome from studenti where matricola all (select studente group by studente)

Dettagli

Le basi di dati. Definizione 1. Lezione 2. Bisogna garantire. Definizione 2 DBMS. Differenza

Le basi di dati. Definizione 1. Lezione 2. Bisogna garantire. Definizione 2 DBMS. Differenza Definizione 1 Lezione 2 Le basi di dati Gli archivi di dati Organizzato in modo integrato attraverso tecniche di modellazione di dati Gestiti su memorie di massa Con l obiettivo Efficienza trattamento

Dettagli

LABORATORIO di INFORMATICA

LABORATORIO di INFORMATICA Università degli Studi di Cagliari Corso di Laurea Magistrale in Ingegneria per l Ambiente ed il Territorio LABORATORIO di INFORMATICA A.A. 2010/2011 Prof. Giorgio Giacinto IL MODELLO RELAZIONALE http://www.diee.unica.it/giacinto/lab

Dettagli

Modello logico dei dati utilizzato nell ambito delle basi di dati, introdotto da Codd nel 1970.

Modello logico dei dati utilizzato nell ambito delle basi di dati, introdotto da Codd nel 1970. Modello Relazionale Modello logico dei dati utilizzato nell ambito delle basi di dati, introdotto da Codd nel 1970. } modello dei dati insieme di strutture dati e regole logico ) strutture disponibili

Dettagli

Algebra Relazionale. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Algebra Relazionale. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma Algebra Relazionale 1 Linguaggi di interrogazione relazionale Linguaggi di interrogazione: permettono la manipolazione e il reperimento di dati da una base di dati Il modello relazionale supporta LI semplici

Dettagli

BASI DATI: algebra relazionale

BASI DATI: algebra relazionale BASI DATI: algebra relazionale BIOINGEGNERIA ED INFORMATICA MEDICA 1 Algebra relazionale Definizione L'algebra relazionale è un insieme di operazioni (query) che servono per manipolare relazioni (tabelle).

Dettagli

Esempio di database relazionale con l utilizzo del prodotto MySQL

Esempio di database relazionale con l utilizzo del prodotto MySQL Esempio di database relazionale con l utilizzo del prodotto MySQL Marco Liverani Aprile 2015 In queste pagine viene riportato in sintesi il progetto di un database relazionale esemplificativo con cui viene

Dettagli

SQL. SQL: una visione panoramica. SQL: "storia" Definizione dei dati

SQL. SQL: una visione panoramica. SQL: storia Definizione dei dati SQL SQL: una visione panoramica I lucidi presentati sono liberamente ispirati al contenuto del Capitolo 4 del libro Atzeni, Ceri, Paraboschi, Torlone Basi di dati - McGraw-Hill, 1999 Structured Query Language

Dettagli

Dichiarazione degli schemi in SQL DDL 1

Dichiarazione degli schemi in SQL DDL 1 Dichiarazione degli schemi in SQL DDL 1 Storia di SQL Definito nell'ambito del progetto SYSTEM R (IBM S. JOSE) nel 1976 Nome originario: SEQUEL Adottato progressivamente da tutti i sistemi commerciali

Dettagli

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo. PROBLEMA. Un albergo di una grande città intende gestire in modo automatizzato sia le prenotazioni sia i soggiorni e realizzare un database. Ogni cliente viene individuato, tra l altro, con i dati anagrafici,

Dettagli

Basi di Dati DBDMG - Politecnico di Torino Esercizi di SQL

Basi di Dati DBDMG - Politecnico di Torino Esercizi di SQL Basi di Dati DBDMG - Politecnico di Torino Esercizio 1. Dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate): esprimere in SQL le seguenti interrogazioni: RIVISTA

Dettagli

CAPITOLO V. DATABASE: Il modello relazionale

CAPITOLO V. DATABASE: Il modello relazionale CAPITOLO V DATABASE: Il modello relazionale Il modello relazionale offre una rappresentazione matematica dei dati basata sul concetto di relazione normalizzata. I principi del modello relazionale furono

Dettagli

Relazioni e tabelle. Introduzione alle Basi di Dati Relazionali. Relazioni uno a uno. Esempio

Relazioni e tabelle. Introduzione alle Basi di Dati Relazionali. Relazioni uno a uno. Esempio Relazioni e tabelle Introduzione alle Basi di Dati Relazionali Nelle Basi di Dati relazionali le informazioni sono organizzate in tabelle Le tabelle sono rappresentate mediante griglie suddivise in colonne

Dettagli

DATABASE PER IL WEB. Programmazione Web 1

DATABASE PER IL WEB. Programmazione Web 1 DATABASE PER IL WEB Programmazione Web 1 Archite3ura web con database Client Tier Web/App Tier DB Tier Client Web / App Server Database Il server web comunica con un altro server che con8ene il la banca

Dettagli

SISTEMI INFORMATIVI AZIENDALI. introduzione ai sistemi informativi 1

SISTEMI INFORMATIVI AZIENDALI. introduzione ai sistemi informativi 1 SISTEMI INFORMATIVI AZIENDALI introduzione ai sistemi informativi 1 Sistema Informativo Insieme degli strumenti, risorse e procedure che consentono la gestione delle informazioni aziendali e' essenziale

Dettagli

LABORATORIO di INFORMATICA

LABORATORIO di INFORMATICA Università degli Studi di Cagliari Corso di Laurea Magistrale in Ingegneria per l Ambiente ed il Territorio LABORATORIO di INFORMATICA A.A. 2010/2011 Prof. Giorgio Giacinto INTRODUZIONE AI SISTEMI DI BASI

Dettagli

Il linguaggio SQL: le viste

Il linguaggio SQL: le viste Il linguaggio SQL: le viste Basi di dati 1 Il linguaggio SQL: le viste Angelo Montanari Dipartimento di Matematica e Informatica Università di Udine Il linguaggio SQL: le viste Basi di dati 2 Introduzione

Dettagli

INTRODUZIONE ALLE BASI DATI RELAZIONALI

INTRODUZIONE ALLE BASI DATI RELAZIONALI INTRODUZIONE ALLE BASI DATI RELAZIONALI RELAZIONI E TABELLE Nelle BASI DI DATI RELAZIONALI le informazioni sono organizzate in TABELLE; Le tabelle sono rappresentate mediante griglie suddivise in RIGHE

Dettagli

Modello Relazionale. Esempio (Relazione) A x B. Introduzione. Relazione: definizione. I fattori del successo. Relazione

Modello Relazionale. Esempio (Relazione) A x B. Introduzione. Relazione: definizione. I fattori del successo. Relazione Introduzione Modello Relazionale Concetti e definizioni 1 Modello proposto nel 1970 da E.F. Codd A relational model for large shared data banks Communications of the ACM Vol. 13, n. 6, pagg. 377-387 Prime

Dettagli

SQL IL LINGUAGGIO DI INTERROGAZIONE

SQL IL LINGUAGGIO DI INTERROGAZIONE SQL IL LINGUAGGIO DI INTERROGAZIONE SQL! Originato da SEQUEL-XRM e System-R (1974-1977) dell IBM! Significato originario Structured Query Language! Standard de facto! Attuale standard ANSI/ISO è SQL:1999

Dettagli

Introduzione Concetti Generali Pratica su Access Link utili. ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 1

Introduzione Concetti Generali Pratica su Access Link utili. ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 1 ECDL - Database Introduzione European Computer Driving Licence - Modulo 5 - Database LEZIONE 1 Informazioni sul corso orario: Giovedì - 14.30-16.30 materiale: http://www.fotoboni.com/carlo/ docente: webmaster@fotoboni.com

Dettagli

DBMS. Alice Pavarani

DBMS. Alice Pavarani DBMS Alice Pavarani DBMS Insieme di programmi che offrono gli strumenti per gestire una base di dati Permette di: definire la struttura delle tabelle recuperare le informazioni manipolare i dati memorizzati

Dettagli

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma SQL: Structured Query Language 1 SQL:Componenti Principali Data Manipulation Language (DML): interrogazioni, inserimenti, cancellazioni, modifiche Data Definition Language (DDL): creazione, cancellazione

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 Linguaggio SQL: fondamenti Struttura di base Clausola WHEE Ordinamento del risultato Join unzioni aggregate Operatore GOU BY Istruzione SELECT: esempio di BD forniture prodotti Istruzione SELECT: esempio

Dettagli

OBIETTIVI DELL'ESERCITAZIONE

OBIETTIVI DELL'ESERCITAZIONE Laurea in Ingegneria Informatica - Università di Roma "La Sapienza" Corso di Basi di Dati - A.A. 2005/2006 Esercitazione su SQL Giuseppe De Giacomo Domenico Lembo OBIETTIVI DELL'ESERCITAZIONE Creare schema

Dettagli

I database. Introduzione alla teoria delle basi di dati

I database. Introduzione alla teoria delle basi di dati I database Introduzione alla teoria delle basi di dati 1 Cosa sono e a cosa servono i Database Un database (o base di dati) e' una raccolta organizzata di dati correlati. Il principale scopo di un database

Dettagli

BASI DI DATI. basi di dati - introduzione ai sistemi informativi 1

BASI DI DATI. basi di dati - introduzione ai sistemi informativi 1 BASI DI DATI basi di dati - introduzione ai sistemi informativi 1 Sistema Informativo Insieme degli strumenti, risorse e procedure che consentono la gestione delle informazioni aziendali e' essenziale

Dettagli

Gestione di basi di dati in Access. SUISM Docente: Ugo de Liguoro a.a Asti

Gestione di basi di dati in Access. SUISM Docente: Ugo de Liguoro a.a Asti Gestione di basi di dati in Access SUISM Docente: Ugo de Liguoro a.a. 2003-2004 Asti Indice 1. Un primo esempio: la rubrica telefonica 2. Progettazione di un DB 3. Popolamento 4. Interrogazioni (Queries)

Dettagli

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni SQL [2] Concetti avanzati di SQL 2 Esempi di interrogazioni 3 Esempi di interrogazioni 4 Esempi di interrogazioni 5 Confronti che coinvolgono NULL NULL può voler dire: valore sconosciuto (esiste ma non

Dettagli

Alessandra Raffaetà. Esempio: Compagnia di trasporti

Alessandra Raffaetà. Esempio: Compagnia di trasporti Lezione 6 S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali Alessandra Raffaetà Dipartimento di Informatica Università Ca Foscari Venezia Esempio: Compagnia

Dettagli

Laboratorio di Basi di Dati Per Bioinformatica

Laboratorio di Basi di Dati Per Bioinformatica Laboratorio di Basi di Dati Per Bioinformatica Laurea in Bioinformatica - A.A. 2010/11 Docente: Carlo Combi Email: carlo.combi@univr.it Lezione 1 SQL Structured Query Language SQL è stato definito nel

Dettagli

Cap. 1-I 1 I sistemi informatici

Cap. 1-I 1 I sistemi informatici Libro di testo A. Chianese,V. Moscato, A. Picariello, L. Sansone Basi di dati per la gestione dell informazione McGraw-Hill, 2007 Informazioni sul corso http://www.docenti.unina.it/lucio.sansone Ricevimento

Dettagli

Bibliografia. INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. Definizione di DB e di DBMS

Bibliografia. INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. Definizione di DB e di DBMS INFORMATICA GENERALE DBMS: Introduzione alla gestione dei dati Bibliografia 4 ott 2011 Dia 2 Curtin, Foley, Sen, Morin Vecchie edizioni: 8.4, 8.5, 8.6, 8.7, 8.8 Edizione dalla IV in poi: 6.5, 21.1, 19.4,

Dettagli

BASI DI DATI. Titolo Prof. Cognome Nome Indirizzo Numero Telefono

BASI DI DATI. Titolo Prof. Cognome Nome Indirizzo Numero Telefono BASI DI DATI Una base di dati (database) è un insieme organizzato di informazioni caratterizzate da alcuni aspetti fondamentali: tra esse esiste un nesso logico (cioè sono in qualche modo inerenti ad un

Dettagli

Ciclo di vita di un sistema informativo

Ciclo di vita di un sistema informativo Ciclo di vita di un sistema informativo 1) Studio di fattibilità definire, in maniera per quanto possibile precisa, i costi delle varie alternative possibili stabilire le priorità di realizzazione delle

Dettagli

Basi di Dati. Corso di Informatica. Memorizzazione dei Dati. Accesso ai Dati. Corso di Laurea in Conservazione e Restauro dei Beni Culturali

Basi di Dati. Corso di Informatica. Memorizzazione dei Dati. Accesso ai Dati. Corso di Laurea in Conservazione e Restauro dei Beni Culturali Corso di Laurea in Conservazione e Restauro dei Beni Culturali Corso di Informatica Gianluca Torta Dipartimento di Informatica Tel: 011 670 6782 Mail: torta@di.unito.it Basi di Dati lo scopo delle Basi

Dettagli

Informatica e Bioinformatica: Basi di Dati

Informatica e Bioinformatica: Basi di Dati Informatica e Bioinformatica: Date TBD Bioinformatica I costi di sequenziamento e di hardware descrescono vertiginosamente si hanno a disposizione sempre più dati e hardware sempre più potente e meno costoso...

Dettagli

I modelli logici dei dati

I modelli logici dei dati I modelli logici dei dati I modelli logici tradizionali sono tre: gerarchico reticolare relazionale I modelli gerarchio e reticolare sono più vicini alle strutture fisiche di memorizzazione. Quello relazionale

Dettagli

Algebra relazionale. Algebra relazionale. Operatori dell algebra relazionale. Operatori dell algebra relazionale. Algebra relazionale.

Algebra relazionale. Algebra relazionale. Operatori dell algebra relazionale. Operatori dell algebra relazionale. Algebra relazionale. Algebra relazionale Algebra relazionale Introduzione Selezione e proiezione Prodotto cartesiano e join Natural join, theta-join e semi-join Outer join Unione e intersezione Differenza e antijoin Divisione

Dettagli

Corso di Laboratorio di Basi di Dati

Corso di Laboratorio di Basi di Dati Corso di Laboratorio di Basi di Dati F1I072 - INF/01 a.a 2009/2010 Pierluigi Pierini Technolabs S.p.a. Pierluigi.Pierini@technolabs.it Università degli Studi di L Aquila Dipartimento di Informatica Technolabs

Dettagli

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base Linguaggio SQL: fondamenti Struttura di base Clausola WHERE Ordinamento del risultato Join Funzioni aggregate Operatore GROUP BY 2007 Politecnico di Torino 1 Istruzione SELECT: esempio Trovare il codice

Dettagli

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: storia SQL SQL: concetti base originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia il DML ne esistono varie versioni vediamo gli aspetti essenziali,

Dettagli

MODELLI DEI DATI. Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia

MODELLI DEI DATI. Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : Modelli dei Dati MODELLI DEI DATI Prof. Alberto Postiglione

Dettagli

Corso di Informatica. Software di produttività personale e database. Ing Pasquale Rota

Corso di Informatica. Software di produttività personale e database. Ing Pasquale Rota Corso di Software di produttività personale e database Ing Pasquale Rota Argomenti I programmi di produttività personale Le basi di dati Fogli elettronici Software di produttività personale e database

Dettagli

SQL: Definizione e Manipolazione di Relazioni. Capitolo 2

SQL: Definizione e Manipolazione di Relazioni. Capitolo 2 SQL: Definizione e Manipolazione di Relazioni Capitolo 2 1 Sintassi della Creazione di uno Schema Relazionale CREATE TABLE ( [NOT NULL] [UNIQUE] [],...,...,

Dettagli

Equivalenza di Espressioni Algebriche

Equivalenza di Espressioni Algebriche Equivalenza di Espressioni Algebriche Basi di dati e sistemi informativi 1 Equivalenza di Espressioni Algebriche Angelo Montanari Dipartimento di Matematica e Informatica Università di Udine Equivalenza

Dettagli

Informatica B. Contenuti. Introduzione alle Basi di Dati e ai DBMS. Introduzione a dati e basi dati DBMS Modello dei dati

Informatica B. Contenuti. Introduzione alle Basi di Dati e ai DBMS. Introduzione a dati e basi dati DBMS Modello dei dati Informatica B Introduzione alle Basi di Dati e ai DBMS Contenuti Introduzione a dati e basi dati DBMS Modello dei dati Informazioni e dati Dato: elemento semanticamente significativo (data, codice, ecc.),

Dettagli

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

Domande utili alla preparazione dell orale di Informatica all Esame di Stato Domande utili alla preparazione dell orale di Informatica all Esame di Stato 1.Al livello fisico un database si appoggia ai files per contenere i suoi dati? 2.Esistono altri modelli di organizzazione oltre

Dettagli

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI Introduzione alle basi di dati (2) 2 Modelli dei dati, schemi e istanze (1) Nell approccio con basi di dati è fondamentale avere un certo livello di

Dettagli

Access. P a r t e t e r z a

Access. P a r t e t e r z a Access P a r t e t e r z a 1 Query: Concetti generali (2) Query 1 Tabella Query 2 Le query rappresentano viste differenti sul DB (possono coinvolgere una o più tabelle) 2 Creazione (1) Diverse possibilità,

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L algebra

Dettagli

Database. Cos è un database? Intro Tipi di entità Mapping ER/EER à Relazionale

Database. Cos è un database? Intro Tipi di entità Mapping ER/EER à Relazionale Database Intro Tipi di entità Mapping ER/EER à Relazionale Ing. Lucia Vaira PhD Student @ University of Salento lucia.vaira@unisalento.it Cos è un database? 1 Cos è un database? È una struttura di dati

Dettagli

SQL - Sottointerrogazioni

SQL - Sottointerrogazioni una delle ragioni che rendono SQL un linguaggio potente è la possibilità di esprimere interrogazioni più complesse in termini di interrogazioni più semplici, tramite il meccanismo delle subqueries (sottointerrogazioni)

Dettagli

Basi di dati Il linguaggio SQL

Basi di dati Il linguaggio SQL Basi di dati Il linguaggio SQL teoria e pratica con Microsoft Access Riepilogando Nelle basi di dati esiste 1. una parte invariante nel tempo, lo schema, costituita dalle caratteristiche dei dati (nomi

Dettagli

Basi di dati Il linguaggio SQL

Basi di dati Il linguaggio SQL Riepilogando Basi di dati Il linguaggio SQL Nelle basi di dati esiste 1. una parte invariante nel tempo, lo schema, costituita dalle caratteristiche dei dati (nomi degli attributi, domini, 2. una parte

Dettagli

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici Il linguaggio SQL Il linguaggio SQL il linguaggio SQL è un linguaggio per la definizione e la manipolazione dei dati, sviluppato originariamente presso il laboratorio IBM a San Jose (California) è diventato

Dettagli

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

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione SQL DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE SQL è più di un semplice linguaggio di interrogazione! Linguaggio di definizione dati (Data-definition language, DDL):! Crea/distrugge/modifica relazioni

Dettagli

SQL - Tipi di dato Il linguaggio SQL

SQL - Tipi di dato Il linguaggio SQL SQL - Tipi di dato Il linguaggio SQL I tipi di dato in SQL:1999 si suddividono in tipi predefiniti tipi strutturati tipi user-defined ci concentreremo sui tipi predefiniti i tipi predefiniti sono suddivisi

Dettagli

Corso di Basi di Dati A.A. 2015/2016

Corso di Basi di Dati A.A. 2015/2016 Corso di Laurea in Ingegneria Gestionale Sapienza Università di Roma Corso di Basi di Dati A.A. 2015/2016 Tiziana Catarci, Andrea Marrella Ultimo aggiornamento : 22/02/2016 Interrogazioni nidificate In

Dettagli

Microsoft Access. Microsoft Access. Maurizio Rebaudengo, Paolo Garza 1. Microsoft Access. Creazione base di dati. Apertura di una base dati

Microsoft Access. Microsoft Access. Maurizio Rebaudengo, Paolo Garza 1. Microsoft Access. Creazione base di dati. Apertura di una base dati Microsoft Access Programma applicativo del pacchetto Microsoft Office per la gestione delle basi di dati. Microsoft Access 2 Creazione base di dati Apertura di una base dati Una nuova base dati si crea

Dettagli

Progettazione di basi di dati

Progettazione di basi di dati IL MODELLO E-R Modellazione concettuale e progettazione della Base di Dati 2 Progettazione di basi di dati È una delle attività del processo di sviluppo dei sistemi informativi va quindi inquadrata in

Dettagli

Corso di Basi di Dati

Corso di Basi di Dati Corso di Basi di Dati Il Linguaggio SQL Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/ SQL (Structured Query Language) e il linguaggio di riferimento per le basi di dati relazionali. Diverse

Dettagli

Corso di Informatica Generale 1 IN1. Linguaggio SQL

Corso di Informatica Generale 1 IN1. Linguaggio SQL Università Roma Tre Facoltà di Scienze M.F.N. di Laurea in Matematica di Informatica Generale 1 Linguaggio SQL Marco (liverani@mat.uniroma3.it) Sommario Prima parte: le basi dati relazionali Basi di dati:

Dettagli

Cap. 1-I 1 I sistemi informatici

Cap. 1-I 1 I sistemi informatici Libro di testo A. Chianese,V. Moscato, A. Picariello, L. Sansone Basi di dati per la gestione dell informazione McGraw-Hill Hill,, 2007 Ricevimento studenti Lunedì ore 11-13 Didattica su web Si interagisce

Dettagli

SQL e algebra relazionale

SQL e algebra relazionale SQL e algebra relazionale Il linguaggio SQL consente una maggiore espressività dell algebra relazionale grazie a costrutti che permettono: di definire join più sofisticati di ordinare le righe dei risultati

Dettagli

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query Microsoft Access (parte 5) Anno accademico: 2008-2009 Per estrarre informazioni da un database si utilizzano delle query : procedure di interrogazione Si può creare più query per ogni tabella Occorre avere

Dettagli

SQL (STRUCTURED QUERY LANGUAGE)

SQL (STRUCTURED QUERY LANGUAGE) SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan SQL DDL Data Definition Language DML Data Manipulation Language DCL Data Control Language DDL Obiettivo: Definire la struttura

Dettagli

Modello Relazionale. Architettura a tre livelli di un DBMS

Modello Relazionale. Architettura a tre livelli di un DBMS Modello Relazionale Modello logico dei dati utilizzato nell ambito delle basi di dati, introdotto da Codd nel 1970. modello dei dati insieme di strutture dati e regole ) logico strutture disponibili su

Dettagli

Schema Del DB Operazionale TELEFONATE

Schema Del DB Operazionale TELEFONATE Schema Del DB Operazionale TELEFONATE Costruire lo Schema di Fatto per analizzare le chiamate considerando come dimensioni TelefonoDA e TelefonoA, Data e Fascia, intesa come FasciaOraria della chiamata

Dettagli

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw -Hill, Progettazione logica. Dati di ingresso e uscita

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw -Hill, Progettazione logica. Dati di ingresso e uscita Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw -Hill, 1996-2002 Capitolo 8: Progettazione logica 17/10/2002 Progettazione concettuale Requisiti della base di dati Schema concettuale Progettazione

Dettagli

Il linguaggio SQL: query innestate

Il linguaggio SQL: query innestate Il linguaggio SQL: query innestate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLc-subquery.pdf Sistemi Informativi L-A DB di riferimento

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 9 Raffaella Gentilini 1 / 41 Sommario 1 DBMS Attivi e Triggers 2 2 / 41 DBMS Attivi DBMS Attivi I DBMS tradizionale sono passivi: Eseguono delle operazioni solo

Dettagli

Il modello relazionale

Il modello relazionale Basi di dati Il modello relazionale Si tratta della fase di progettazione. In questa fase individuiamo esattamente quello che è utili informatizzare Cerchiamo gli elementi importanti Individuiamo le loro

Dettagli

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a. 2010-2011

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a. 2010-2011 Corso di Laurea in Informatica Basi di Dati a.a. 2010-2011 Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio PROGETTAZIONE FISICA SQL-DDL OBIETTIVO: Rappresentare i dati della realtà di interesse

Dettagli

Basi di Dati Relazionali

Basi di Dati Relazionali Corso di Laurea in Informatica Basi di Dati Relazionali a.a. 2009-2010 Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio Coadiutore: Dott.ssa D. Nicotera PROGETTAZIONE FISICA SQL-DDL OBIETTIVO: Rappresentare

Dettagli

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

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. INFORMATICA Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. APPLICAZIONI WEB L architettura di riferimento è quella ampiamente diffusa ed

Dettagli

Il linguaggio SQL: DDL di base

Il linguaggio SQL: DDL di base Il linguaggio SQL: DDL di base Sistemi Informativi T Versione elettronica: 04.1.SQL.DDLbase.pdf SQL: caratteristiche generali SQL (Structured Query Language) èil linguaggio standard de facto per DBMS relazionali,

Dettagli

Esercitazione 4: Trigger in DB2

Esercitazione 4: Trigger in DB2 Esercitazione 4: Trigger in DB2 Sistemi Informativi L-B Home Page del corso: http://www-db.deis.unibo.it/courses/sil-b/ Versione elettronica: esercitazione4.pdf Sistemi Informativi L-B Definire trigger

Dettagli

ARCHITETTURA DI UN DBMS

ARCHITETTURA DI UN DBMS ARCHITETTURA DI UN DBMS Modelli di dati Un approccio con basi di dati fornisce un certo livello di astrazione dei dati Nasconde i dettagli sulla memorizzazione dei dati stessi Un modello dei dati fornisce

Dettagli

Progettazione di Basi di Dati

Progettazione di Basi di Dati Progettazione di Basi di Dati Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan Entità-Relazione ModelloEntity-Relationship. E-R E il modello concettuale più diffuso Fornisce costrutti per descrivere le

Dettagli

Corso di Basi di Dati A.A. 2015/2016

Corso di Basi di Dati A.A. 2015/2016 Corso di Laurea in Ingegneria Gestionale Sapienza Università di Roma Corso di Basi di Dati A.A. 2015/2016 E3 - MySQL: Creazione di Schemi ed Interrogazioni Tiziana Catarci, Andrea Marrella Ultimo aggiornamento

Dettagli

Operatori di base. σ F (r) = {t t r. F(t) = true} SELEZIONE σ F (r)

Operatori di base. σ F (r) = {t t r. F(t) = true} SELEZIONE σ F (r) Algebra relazionale Linguaggio dallo stile operazionale, in quanto rappresenta il piano di esecuzione di una query. Definisce un insieme di operazioni su relazioni. Le operazioni hanno come operandi una

Dettagli

BASI DATI INFORMATICA

BASI DATI INFORMATICA BASI DATI INFORMATICA 1 Sistema Informativo Un sistema informativo (SI) è un componente di una organizzazione il cui obiettivo è gestire le informazioni utili per gli scopi dell organizzazione stessa GESTIRE

Dettagli

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

Lezione V. Aula Multimediale - sabato 29/03/2008 Lezione V Aula Multimediale - sabato 29/03/2008 LAB utilizzo di MS Access Definire gli archivi utilizzando le regole di derivazione e descrivere le caratteristiche di ciascun archivio ASSOCIAZIONE (1:1)

Dettagli

Caratteristiche di un linguaggio ad alto livello

Caratteristiche di un linguaggio ad alto livello Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 2 Raffaella Gentilini 1 / 45 Sommario 1 Il DDL di SQL: Cancellazione ed Aggiornamento di una BD Cancellazione di Schemi, Tabelle, e Domini Aggiornamento di Tabelle

Dettagli

REGIONE BASILICATA UFFICIO S. I. R. S.

REGIONE BASILICATA UFFICIO S. I. R. S. UFFICIO S. I. R. S. Modellazione dati Id Base Dati CONTROLLO DEL DOCUMENTO APPROVAZIONI Redatto da: Approvato da: Data Autore Ing. Vincenzo Fiore VARIAZIONI Versione prec. Data Autore Paragrafi modificati

Dettagli

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna: Prova di Laboratorio del 12.1.2005 [durata 90 min.] Corso A-B di Programmazione (A.A. 2004/05) 1. Leggere da tastiera un insieme di numeri interi ed inserirli in un vettore A 2. Calcolare tramite una funzione

Dettagli

GESTIONE ABBONAMENTI RIVISTE

GESTIONE ABBONAMENTI RIVISTE GESTIONE ABBONAMENTI RIVISTE Si vogliono gestire, con una base di dati, le informazioni relative agli abbonamenti a riviste da parte di utenti di cui si deve tener conto della città di residenza. Gli elementi

Dettagli

ALGEBRA RELAZIONALE. L algebra relazionale

ALGEBRA RELAZIONALE. L algebra relazionale ALGEBRA RELAZIONALE 2 L algebra relazionale L insieme principale di operazioni per il modello relazionale è l algebra relazionale. Le operazioni dell algebra relazionale consentono all utente di specificare

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

Architettura CPU. Memoria principale (RAM) Dispositivi di ingresso. Dispositivi di uscita. Memoria secondaria (memoria di massa)

Architettura CPU. Memoria principale (RAM) Dispositivi di ingresso. Dispositivi di uscita. Memoria secondaria (memoria di massa) Architettura CPU Dispositivi di ingresso Memoria principale (RAM) Dispositivi di uscita Memoria secondaria (memoria di massa) Architettura a tre livelli (ANSI-SPARC 78) Schema Est 1 Schema Est 2... Schema

Dettagli