61
Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione (azienda o istituzione).

Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Embed Size (px)

Citation preview

Page 1: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Sistemi Informativi

Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione (azienda o istituzione).

Page 2: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Dato <> Informazione

I dati sono registrazioni della descrizione di una qualsiasi caratteristica della realtà, su un supporto che ne garantisca la conservazione, la comprensibilità e la reperibilità.

L’ informazione produce variazioni nel patrimonio conoscitivo di un soggetto. Proviene dai dati, ma devono essere inseriti in un contesto interpretativo

Page 3: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

DBMS(Database Management System)

Obiettivo: gestione strutturata di dati, organizzati in modo omogeneo.

Base di dati: – Collezione di dati organizzati in modo

coerente (un insieme casuale di dati non è una base di dati !)

– Modella alcuni aspetti del mondo reale– Costruito con funzionalità ben precise, note

fin dall’inizio della progettazione.

Page 4: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Esempi di basi dati:

Rubrica telefonica personale anagrafe segreteria studenti dell’università banca dati centrale del ministero delle finanze archivio di una biblioteca, di un laboratorio

d’analisi mediche, di un museo banca dati di una carta di credito banca dati delle prenotazioni dei voli di una

compagnia aerea

Page 5: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Basi di dati: operazioni

Definizione della base di dati – quali informazioni rappresentare – quali relazioni tra le informazioni

Manipolazione– inserimento di dati– cancellazione di dati– aggiornamento (update)– interrogazione

Gestione di operazioni da parte di utenti multipli Protezione e sicurezza dei dati

Page 6: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Livelli di rappresentazione

Livello fisico: come i dati sono memorizzati e organizzati su uno o più supporti di memoria secondaria

Livello logico: come i dati sono organizzati secondo il modello logico adottato (relazionale, gerarchico, ad oggetti etc.)

Livello concettuale: come i dati sono organizzati secondo uno schema concettuale

Livello esterno: come i dati appaiono o vengono presentati all’utente

Page 7: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Livelli di rappresentazione

Vista 1 Vista 2 Vista n

Livello logico

Livello fisico

Livello concettuale

Page 8: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Figure professionali (1) DB designer

– schema concettuale (astratto) della base di dati

– mapping su un modello dei dati• gerarchico• relazionale• object oriented• ...

Page 9: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Figure professionali (2)

DB programmer

(realizzazione della base di dati) DB administrator (gestione della base dati) Users

• utenti esperti (usando un linguaggio di interrogazione)

• naive users (interazioni predeterminate, forms)

• programmi

Page 10: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Modello relazionale

I dati sono organizzati in relazioni le relazioni possono essere

interpretate/visualizzate come tabelle un database è un insieme di relazioni

Page 11: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Rappresentazione tabellare dei dati: esempio Libro

N.Inv Autore

Titolo Anno_ed. Casa ed.

Colloc.

Page 12: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Esempio rubrica

COGNOME NOME TEL.

Tanzi Rosario 095 89 ...

Federici Susanna 011 55 ...

De Bernardi Silvio 06 44 ...

Page 13: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Modello relazionale

Relazione su due insiemi A e B è un sottoinsieme del prodotto cartesiano A x B

Esempio sposato_con Persone x Persone

figlio_di Persone x Persone vive_a Persone x Città Analogamente si possono considerare relazioni

tra molti insiemi: A1 x ….xAn

Page 14: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Esempio di relazione Persone= {Paolo, Luca,Mario}

Città={Torino,Roma} Persone x Città Vive_a

Mario

Mario

Persone Città

Paolo

Paolo

Luca

Luca

Torino

Torino

Torino

Roma

Roma

Roma

Città

Persone

Paolo

LucaMario Roma

Torino

Torino

Page 15: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Figlio di (Persone x Persone)

PersonePersone

Paolo

Carla

Mario Flavio

Luca

Anna

PersonePersone

Anna

Luca

Flavio Mario

Carla

Paolo

Sono relazioni diverse!

Page 16: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Relazioni e Attributi

Attributi: nomi che specificano un ruolo in una relazione, esempi:

sposato_con(Marito, Moglie) figlio_di(Figlio, Genitore) vive_a(Nome,Citta,Provincia) libro(N.Inv, Autore, Titolo, Anno_edizione,

Casa_editrice, Collocazione) Gli attributi devono avere nomi differenti

Page 17: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

ESEMPIO DATABASE ESAMI

Prima idea: un’unica tabella:

ESAME(Nome,Cognome,Matricola,Titolo, Docente,Voto,Lode)

Contiene informazione ridondante: per ogni esame sostenuto si ripetono tutti i

dati dello stuedente per ogni corso si ripetono titolo e docente

Page 18: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Organizzazione migliore:

STUDENTE(Nome,Cognome,Matricola,Data di Nascita)

CORSI(Titolo,Docente,Codice Corso) ESAMI(Codice Corso,Voto,Lode,Matricola)

Page 19: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Terminologia

DOMINIO: insieme di valori degli attributi– es. Nomi di persona, Nomi di città, Numeri

interi, stringhe di al più 80 caratteri

FORMATO: rappresentazione degli elementi di un dominio– es. tre cifre decimali per i reali

Page 20: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

SCHEMA DI RELAZIONE R(A1, …, A_n)

• R relazione• Ai attributi

ISTANZA DI RELAZIONE (o semplicemente

relazione )

r(R) = {<v1, v2, …, vn>}

t=<v1, v2, …, vn > : n-tupla I singoli valori vi appartengono al dominio dell’attributo Ai

Page 21: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Istanza di relazione = insieme non ordinato di tuple– Non ci possono essere tuple ripetuti –l’ordine delle tuple non conta

Database = insieme di istanze di relazioni

Terminologia alternativa:– tuple: records– attributi: campi

Page 22: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

La tabella rubricaRubrica(Cognome,Nome,Tel)

COGNOME NOME TEL.

Tanzi Rosario 095 89 ...

Federici Susanna 011 55 ...

De Bernardi Silvio 06 44 ...

schema nomi degli attributi

tuple

Page 23: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Informazione incompleta: Valori Nulli

Il valore speciale “null” aggiunto a tutti i domini, per indicare assenza di valore indica: valore mancante, oppure valore sconosciuto

Page 24: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Vincoli sulle Relazioni

I valori contenuti nelle tabelle possono essere soggetti a vari tipi di vincoli che dipendono dalla ‘realtà’ che si vuole rappresantare:

vincoli di dominio: valori dei singoli attributi vincoli di tupla: valori di attributi correlati in una

tupla vincoli di integrità valori di attributi in tuple

diverse (anche in relazioni diverse)

Page 25: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Vincoli di dominio

vincoli sui valori dei singoli attributi (vincoli di dominio), es: dato ESAMI(Studente,Voto, Lode,Corso)

deve essere

Voto >=18 AND Voto <=30 Vincoli sul valore di un attributo data

Page 26: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Vincoli di tupla

vincoli sui valori di attributi correlati, es: Data la relazione ESAMI come prima

deve essere

not (Lode = Yes) OR Voto = 30

equivalente a

Lode= No OR Voto = 30 Data la relazione

PAGAMENTI(Data,Importo,Ritenute,Netto)

deve essere

Netto = Importo - Ritenute

Page 27: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Connettivi booleani: tavole di verità

A Not AVero FalsoFalso Vero

A B A And BVero Vero VeroVero Falso FalsoFalso Vero FalsoFalso Falso Falso

A B A Or BVero Vero VeroVero Falso VeroFalso Vero VeroFalso Falso Falso

Negazione

Congiunzione

Disgiunzione

Page 28: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Esempio Vincolo (complesso)

Supponiamo che STUDENTE contenga anche gli attributi

Borsa di Studio: valori {Yes, No} Reddito (della famiglia): euro Residente (nella città sede univ.): {Yes, No}

Uno studente ha diritto ad una borsa se– ha una media >= 27 e un reddito <=

20000, oppure– non è residente e ha una media >= 25 e

un reddito <=25000

Page 29: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Vincoli di chiave superchiave: sottoinsieme SK di attributi di una relazione per cui

se i j allora ti[SK] tj[SK]

Una superchiave identifica un’entità in modo univoco in una relazione

CHIAVE PRIMARIA = superchiave minimale

non ci possono essere righe diverse con la stessa chiave primaria

(Indichiamo in modo sottolineato gli attributi che formano la chiave primaria)

Page 30: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

VINCOLI DI INTEGRITA’

sull’entità : chiave primaria null integrità referenziale: consistenza tra tuple di

due relazioni integrità semantica: vincoli che dipendono

dalla realtà rappresentata (es. numero di libri in prestito a ciascun utente < 5)

Page 31: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Vincoli di Integrità referenziali

In un database relazionale le tabelle sono collegate tra loro tramite i valori di attributi correlati (o comuni)

Esempio – Il collegamento tra la relazione ESAMI e

STUDENTI puo’ essere espresso dall’attributo comune Matricola

– Il collegamento tra la relazione CORSI e ESAMI puo’ essere espresso dall’attributo comune Codice Corso

Page 32: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Esempio: Il collegamento tra la relazione LIBRI e la relazione PRESTITI può essere espresso mediante l’ attributo Numero di inventario.

Un vincolo di integrità referenziale tra un insieme di attributi X di una relazione R1 e una relazione R2 è soddisfatto se: i valori di ciascuna tupla di R1 per gli attributi X esistono come valori della chiave primaria di R2

In questo caso si dice anche che X è una chiave esterna di R1

Page 33: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Funzionalità del DBMS relazionale

Funzioni per– definizione della base di dati– inserimento / rimozione /aggiornamento di

informazioni• deve soddisfare i vincoli!

– Interrogazione

Page 34: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Interrogazione Linguaggio SQL (Structured Query Language) Produce come risultato una tabella Clausola Base

–SELECT “Lista di attributi”FROM “Elenco

relazioni” WHERE “Condizione”

Page 35: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

SQL (Structured Query Language)

SQL: Linguaggio standard per creazione e interrogazione di DB

Vediamo solamente come formulare interrogazioni con SQL

un’interrogazione produce come risultato una tabella Clausola Base

– SELECT “Lista di attributi”FROM “Elenco relazioni”WHERE “Condizione”

Page 36: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Esempi

– SELECT Autore, TitoloFROM LibriWHERE Casa_Editrice = ‘Feltrinelli’

– SELECT Autore, TitoloFROM LibriWHERE (Casa_Editrice = ‘Feltrinelli’) and

(Anno_edizione = 1990)

– SELECT *FROM LibriWHERE (Casa_Editrice = ‘Feltrinelli’) or

(Casa_Editrice = ‘Einaudi’)

Page 37: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Provare

Trova i libri editi da Einaudi o Bompiani, pubblicati dopo 1980 (Autore,Titolo,Casa_ed,Anno_ed)

Trova i libri editi da Einaudi o editi da Bompiani dopo 1980

Trova i libri editi da Garzanti ma non da Bompiani

Page 38: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Matching approssimato

L’operatore like permette di confrontare il valore di un attributo con un valore specificato in modo incompleto

Si usa con gli operatori _e %, in ACCESS ? e * ? indica un carattere qualsiasi *una sequenza di caratteri qualunque

Page 39: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Esempio

– SELECT Autore, TitoloFROM LibriWHERE Autore like “*Man*”

Seleziona tutti i libri in cui il nome dell’autore contiene “Man”

Page 40: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Esempi: query parametriche

– Trova tutti i libri presenti in biblioteca, dato il nome dell’autore, Il nome dell’autore viene introdotto dall’utente

– SELECT *FROM LibriWHERE Autore = [dimmi il nome dell’autore]

– In esecuzione: > dimmi il nome dell’ autore

Alessandro Manzoni– Risultato:….

Page 41: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Esempio con like e parametri

– SELECT libri.*

FROM libri

WHERE Autore like "*"&[dimmi l'autore] & "*" Seleziona tutti i libri in cui il nome dell’autore

contiene la stringa introdotta dall’utente & e’ l’operatore di concatenazione tra stringhe

Page 42: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Operatori insiemistici

UNION, INTERSECT, DIFFERENCE

ESEMPIO– SELECT Autore, Titolo

FROM LibriWHERE Casa_Editrice = ‘Feltrinelli’

INTERSECT

SELECT Autore, TitoloFROM LibriWHERE Casa_Editrice = ‘Einaudi’

Page 43: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Funzioni aggregate (i cui valori dipendono da più righe)

COUNT, SUM, MAX, MIN, AVG

ESEMPI:– Contare i libri presenti in biblioteca editi da Feltrinelli.

SELECT Count(*)FROM LibriWHERE Casa_Editrice = ‘Feltrinelli’

Page 44: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Funzioni aggregate (2)

– Calcolare il costo totale dei libri presenti in biblioteca, scritti da Umberto Eco

SELECT Sum (Prezzo)FROM LibriWHERE Autore = ‘Umberto Eco’

– Qual è il prezzo del più costoso libro presente in biblioteca?

SELECT Max(Prezzo)FROM Libri

Page 45: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Raggruppamento e operatori aggregati

Raggruppare le tuple in base a qualche attributo

applicare le funzioni aggregate a ciascun raggruppamento

Page 46: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Raggruppamento

GROUP BY ESEMPI

Per ogni editore, indicare il costo totale dei libri presenti in biblioteca

SELECT Casa_ed, Sum (Prezzo) as ValoriFROM LibriGROUP BY Casa_ed

Page 47: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Raggruppamento (2)

ESEMPI– Per ogni autore, contare i libri presenti in

biblioteca editi da Einaudi, ed indicarne il costo totale

SELECT Autore, Count(*) as Numero, Sum (Prezzo) as Valori

FROM LibriWHERE Casa_Ed = “Einaudi”

GROUP BY Autore

Page 48: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Raggruppamento (3) La clausola HAVING consente di imporre una

condizione sul risultato di una funzione aggregata

– Per ogni autore di almeno 3 libri editi da Einaudi presenti in biblioteca, indicarne il costo totale

SELECT Autore, Sum (Prezzo) as ValoriFROM LibriWHERE Casa_Ed = “Einaudi”GROUP BY AutoreHAVING Count(*) >=3

Page 49: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Ordinamento dei risultati

Si può chiedere che le tuple del risultato siano ordinate in base ai valori dei campi: ORDER BY

Es. Restituire l’elenco dei libri in catalogo, secondo l’ordine alfabetico degli autori, per anno di edizione decrescente

– SELECT (*)FROM LIBRI

ORDER BY Autore ASC, Anno_ed DESC

Page 50: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Valori Unici

SQL restituisce una tabella che contiene tutte le righe che soddisfano una certa condizione, puo’ contenere duplicati

Per eliminare i duplicati si premette la parola chiave distinct

Esempio elenca i libri per autore e titolo senza ripetizioni (ignorando copie multiple e differenti edizioni)SELECT DISTINCT libri.Autore, libri.Titolo

FROM libri

ORDER BY Autore DESC;

Page 51: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Query con piu’ tabelle - join

Join: combinare le tuple di più tabelle i cui valori per attributi correlati soddisfano una condizione di confronto (caso più semplice: sono uguali)

Il join di due relazioni è il sottoinsieme del loro prodotto cartesiano specificato dalla condizione di selezione

Page 52: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Relazioni tra tabelle e Join

Le relazioni tra tabelle sono espresse da valori comuni di attributi correlatiEsempio Seleziona gli studenti e gli esami che hanno sostenuto con i rispettivi titoli

SELECT Studenti.Nome, Studenti.Cognome, Corsi.Titolo, Corsi.Codice , Studenti.Matricola

FROM Corsi, Studenti, Esami

WHERE Corsi.Codice =Esami.Codice_Corso AND Studenti.Matricola = Esami.Matricola

ORDER BY Studenti.Cognome;

Page 53: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Formulazione Alternativa (1)

SELECT Studenti.Nome, Studenti.Cognome, Corsi.Titolo, Corsi.Codice, Studenti.Matricola

FROM Corsi, Studenti INNER JOIN Esami ON Studenti.Matricola = Esami.Matricola

WHERE Corsi.Codice=Esami.Codice_Corso

Page 54: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Formulazione Alternativa (2)

SELECT Studenti.Nome, Studenti.Cognome, Corsi.Titolo, Corsi.Codice, Studenti.Matricola

FROM

Studenti INNER JOIN (Corsi

INNER JOIN Esami ON Corsi.Codice = Esami.Codice_Corso) ON Studenti.Matricola = Esami.Matricola

Page 55: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Join e Aggregati esempi:

Per ogni studente determina quanti esami ha sostenuto

Per ogni corso (titolo) determina il numero di studenti che ne hanno sostenuto l’esame

Per ogni studente determina la media dei voti Elenca gli studenti che hanno una media >=

27 Elenca gli studenti che hanno sostenuto più di

un esame

Page 56: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Per ogni studente determina quanti esami ha sostenuto

(elenca nome,cognome matricola)

SELECT Studenti.Nome, Studenti.Cognome, Studenti.Matricola, Count(*) AS Esami_sostenuti

FROM Studenti INNER JOIN Esami ON Studenti.Matricola = Esami.Matricola

GROUP BY Studenti.Nome, Studenti.Cognome, Studenti.Matricola

ORDER BY Studenti.Cognome;

Page 57: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Select annidate

E’possibile utilizzare la tabella risultante da una query come condizione di selezione per un’altra query

Esempi: seleziona il libro con il prezzo massimo seleziona gli autori i cui autori di libri

compaiono in una tabella ma non in un’altra Seleziona i libri (autore, titolo pubblicati da

una casa editrice ma non da un’altra)

Page 58: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Select annidate

SELECT INTERNA produce tabella

SELECT ESTERNA usa tale tabella come condizione

RISULTATO è solo la tabella prodotta dalla select esterna

Page 59: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Libri pubblicati da Garzanti e Bompiani

SELECT Autore

FROM libri

WHERE Casa_ed = ”Bompiani";

Produce una tabella, chiamiamola LibriBompiani

SELECT Autore, Titolo

FROM libri

WHERE Casa_ed = "Garzanti" and Autore In (select Autore from LibriBompiani);

Page 60: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Esempio differenza

Seleziona Autore e Titolo, pubblicati da [Casa che pubblica], ma non da [Casa che non pubblica]

SELECT Autore, Titolo

FROM libri

WHERE Casa_ed = [Casa che pubblica] and Autore not in (select Autore from libri where Casa_ed = [Casa che non pubblica]);

Page 61: Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione

Esempio intersezione

Seleziona Autore e Titolo dei libri pubblicati sia da [casa1] e da [casa2]

SELECT Autore, Titolo

FROM libri

WHERE Casa_ed = [casa1] and Autore in (select Autore from libri where Casa_ed = [casa2]);