03. Basi di dati - Medicina e chirurgia
03. Basi di dati - Medicina e chirurgia
03. Basi di dati - Medicina e chirurgia
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Sistemi <strong>di</strong> elaborazione delle informazioni<br />
Ing. Pierpaolo Vittorini<br />
pierpaolo.vittorini@cc.univaq.it<br />
Università degli Stu<strong>di</strong> dell’Aquila<br />
Facoltà <strong>di</strong> Me<strong>di</strong>cina e Chirurgia<br />
10 ottobre 2008<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Un esempio <strong>di</strong> (semplice) database<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Data Ora Cassa Ricetta Prezzo Schema o meta<strong>dati</strong><br />
26-04-04 11.22 2 Analisi del sangue 20 euro<br />
26-04-04 11.22 2 Analisi delle urine 8 euro Istanze o <strong>dati</strong><br />
...<br />
Operazioni semplici: registrazione dei ticket<br />
Complesse operazioni <strong>di</strong> analisi:<br />
Importo complessivo, per giorno, cassa, fascia oraria, ...<br />
Correlazioni <strong>di</strong> ven<strong>di</strong>ta (chi fa le analisi del sangue, spesso fa<br />
anche quella delle urine)<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
DBMS: caratteristiche <strong>di</strong> base<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Un DBMS (DataBase Management System) è un applicativo<br />
software:<br />
in grado <strong>di</strong> gestire gran<strong>di</strong> quantitá <strong>di</strong> <strong>dati</strong> (Giga-Tera byte e<br />
oltre)<br />
in grado <strong>di</strong> garantirne la persistenza anche a fronte <strong>di</strong> guasti<br />
in grado <strong>di</strong> con<strong>di</strong>videre i propri <strong>dati</strong> garantendo<br />
privatezza con una <strong>di</strong>sciplina <strong>di</strong> controllo degli accessi<br />
efficienza utilizzando al meglio le risorse <strong>di</strong> spazio e <strong>di</strong><br />
tempo del sistema<br />
efficacia rendendo produttive le attivitá dei suoi<br />
utilizzatori<br />
integritá dei <strong>dati</strong> mantenendoli tra loro sempre<br />
“consistenti”<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Integritá<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
I problemi <strong>di</strong> integritá sono tipicamente dovuti alla mancanza<br />
<strong>di</strong> una adeguata progettazione del DB<br />
Un esempio <strong>di</strong> problema <strong>di</strong> integritá:<br />
Di un paziente, memorizzo sia il CAP che il Comune <strong>di</strong><br />
residenza. Nella base <strong>di</strong> <strong>dati</strong> trovo un paziente con CAP 67100<br />
e residente nel Comune <strong>di</strong> Teramo (problema <strong>di</strong> consistenza<br />
interna)<br />
In una tabella, ho che un certo paziente é celibe e un’altra<br />
paziente che é la moglie del primo (problema <strong>di</strong> consistenza<br />
esterna o referenziale)<br />
In una tabella ho l’elenco dei pazienti con in<strong>di</strong>cato il co<strong>di</strong>ce<br />
della sua patologia, ma tale co<strong>di</strong>ce non é nell’elenco presente in<br />
un’altra tabella (problema <strong>di</strong> consistenza esterna o referenziale)<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Limiti dei DBMS<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Limiti dei DBMS<br />
Nessuna capacitá “grafica”<br />
Funzionalitá statistiche <strong>di</strong> base<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Il trattamento statistico dei <strong>dati</strong> deve essere fatto con<br />
software ad-hoc (e.g. STATA, SAS)<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Riassumiamo<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Un DBMS é l’applicativo software che gestisce un DB, mentre<br />
un DB é una collezione <strong>di</strong> <strong>dati</strong> (generalmente rappresentati in<br />
forma <strong>di</strong> tabelle) che rappresentano le informazioni <strong>di</strong><br />
interesse per un’organizzazione<br />
Un foglio Excel non é un database, mentre un insieme <strong>di</strong><br />
tabelle in Access é un database<br />
Scopo <strong>di</strong> questa parte del corso è quella <strong>di</strong> insegnarvi come<br />
progettare un DB, i.e. trovare un “buon modo” per<br />
1 strutturare i <strong>dati</strong> <strong>di</strong> interesse,<br />
2 imporre vincoli sui <strong>dati</strong>,<br />
3 interrogare il database.<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Progettazione <strong>di</strong> una base <strong>di</strong> <strong>dati</strong><br />
1. Raccolta ed analisi dei requisiti<br />
2. Specifiche sui <strong>dati</strong><br />
Modello concettuale<br />
(schema E/R)<br />
Modello logico (schema<br />
relazionale)<br />
Implementazione fisica<br />
3. Specifiche sulle funzioni<br />
Interrogazioni sulla base<br />
<strong>di</strong> <strong>dati</strong><br />
Implementazione delle<br />
transazioni<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Modello concettuale<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Un modello concettuale é un insieme <strong>di</strong> costrutti utilizzati per<br />
organizzare i <strong>dati</strong> e descriverne la struttura<br />
Il modello Entitá/Relazione (E/R)<br />
adotta un formalismo grafico e semplice<br />
si basa su due soli concetti (l’entitá e la relazione)<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Entitá<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Un’entitá rappresenta una classe <strong>di</strong> oggetti del mondo reale<br />
(e.g., persone, cose, eventi, ...), che abbiano proprietá<br />
comuni, ed esistenza autonoma<br />
Ad esempio,<br />
l’entitá paziente é l’astrazione<br />
l’istanza (e.g. Pierpaolo) é il paziente vero e proprio<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Attributi<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Le entitá sono composte da attributi<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ad esempio, l’entitá paziente é composta dagli attributi: CF,<br />
Nome, Cognome, Sesso e In<strong>di</strong>rizzo<br />
Il CF é la chiave primaria, ovvero l’attributo che permette <strong>di</strong><br />
identificare univocamente l’istanza<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Attributi (2)<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
A volte, gli attributi possono essere compositi<br />
Ad esempio, l’attributo Generalitá é composto dal Nome e dal<br />
Cognome<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Generalizzazione <strong>di</strong> entitá<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Se un’entitá rappresenta una classe <strong>di</strong> oggetti del mondo<br />
reale, é possibile che essa debba essere “specializzata” in<br />
<strong>di</strong>versi contesti<br />
Ad esempio,<br />
un cliente <strong>di</strong> un hotel potrebbe essere un privato, una agenzia<br />
o una societá<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Relazione<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
È il legame esistente fra <strong>di</strong>fferenti entitá<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
La relazione permette <strong>di</strong> esplicitare i collegamenti logici<br />
esistenti fra le varie entitá che compongono le informazioni da<br />
trattare<br />
Ad esempio:<br />
un me<strong>di</strong>co cura un paziente<br />
una SDO é rilasciata ad un paziente<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Relazione (2)<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ad esempio: l’entitá me<strong>di</strong>co cura (relazione) l’entitá paziente<br />
I numeri rappresentano la car<strong>di</strong>nalitá (minima e massima) della<br />
relazione<br />
un me<strong>di</strong>co cura da un minimo <strong>di</strong> 0 ad un massimo <strong>di</strong> “n” pazienti<br />
un paziente é curato da un minimo <strong>di</strong> 1 ad un massimo <strong>di</strong> “n”<br />
me<strong>di</strong>ci<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Car<strong>di</strong>nalitá delle relazioni<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
La car<strong>di</strong>nalitá <strong>di</strong> una relazione identifica quante istanze <strong>di</strong> una<br />
certa entitá si “collegano” ad una istanza <strong>di</strong> un’altra entitá<br />
Relazione uno-a-uno<br />
Relazione uno-a-molti o molti-a-uno<br />
Relazione molti-a-molti<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Entitá debole<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Facciamo l’esempio delle entitá studente e universitá, tra loro<br />
legate dalla relazione stu<strong>di</strong>a in<br />
Qual é la chiave primaria dell’entitá studente ?<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Entitá debole<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
È la matricola, a seconda dell’universitá, i.e. possono esserci<br />
studenti con lo stesso numero <strong>di</strong> matricola in <strong>di</strong>fferenti<br />
universitá, ma non con la stessa matricola nella stessa<br />
universitá<br />
Una chiave primaria che <strong>di</strong>pende anche dalla relazione, dá<br />
origine ad una entitá debole<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Relazioni n-arie<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Esiste anche la possibilitá <strong>di</strong> dover utilizzare relazioni fra più<br />
<strong>di</strong> due entitá<br />
In tale caso, si parla <strong>di</strong> relazioni n-arie<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Gli attributi<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Gli attributi possono anche essere posizionati sulle relazioni<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Uno schema E/R semplice<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Costruiamo lo schema E/R <strong>di</strong> una base <strong>di</strong> <strong>dati</strong> per<br />
memorizzare le risposte date al questionario introduttivo.<br />
Il questionario é composto da 9 domande a risposta multipla;<br />
degli studenti ci interessa la matricola, l’etá ed il sesso<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Le entitá e le relazioni<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Identificazione delle entitá<br />
Questionario<br />
Studente<br />
Identificazione delle relazioni<br />
Lo studente riempie il questionario<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Uno schema E/R complesso<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Costruiamo lo schema E/R <strong>di</strong> una base <strong>di</strong> <strong>dati</strong> per il seguente<br />
stu<strong>di</strong>o:<br />
Analisi geografica <strong>di</strong> morbilitá <strong>di</strong> malattie neoplastiche, con<br />
<strong>di</strong>saggregazione per sede elettorale, a seguito dell’installazione<br />
<strong>di</strong> una industria chimica che prevede, nel ciclo <strong>di</strong> lavorazione,<br />
l’emissione <strong>di</strong> gas in aria<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Le entitá e le relazioni<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Identificazione delle entitá<br />
Sede elettorale<br />
Paziente<br />
Patologia<br />
Identificazione delle relazioni<br />
Il paziente risiede in una sede elettorale<br />
Il paziente soffre <strong>di</strong> una certa patologia<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
La sede elettorale<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Gli attributi dell’entitá sede elettorale<br />
Numero della sede (chiave primaria)<br />
Distanza dall’industria chimica<br />
Numero <strong>di</strong> votanti<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Il paziente<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Gli attributi dell’entitá paziente<br />
Identificatore numerico<br />
Sesso<br />
Etá<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
La patologia<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Gli attributi dell’entitá patologia<br />
Co<strong>di</strong>ce<br />
DRG<br />
Diagnosi principale<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
La relazione risiede<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
La relazione risede fra il paziente e la sede elettorale<br />
Il paziente risiede in 1 sede elettorale<br />
In una sede elettorale risedono n pazienti<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
La relazione soffre<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
La relazione soffre fra il paziente e la patologia<br />
Un paziente può soffrire <strong>di</strong> n patologie<br />
Di una patologia soffrono n pazienti<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Lo schema E/R completo<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Esempi<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
1 Disegnare lo schema E/R relativo ai co<strong>di</strong>ci ICD-10<br />
I co<strong>di</strong>ci ICD-10 sono organizzati in capitoli, blocchi e patologie.<br />
I capitoli hanno una numerazione con numeri romani, i blocchi<br />
e le patologie hanno una numerazione alfanumerica<br />
2 Disegnare lo schema E/R relativo a una biblioteca<br />
Voglio memorizzare la collocazione <strong>di</strong> ogni volume. Per ogni<br />
volume voglio sapere il tipo (libro, rivista, procee<strong>di</strong>ngs, etc.), la<br />
casa e<strong>di</strong>trice, e voglio memorizzarne gli autori<br />
3 Disegnare lo schema E/R relativo ad un dominio informativo<br />
(semplificato) che permetta <strong>di</strong> calcolare le spese – in termini<br />
<strong>di</strong> DRG – all’interno <strong>di</strong> un ospedale<br />
Voglio memorizzare, per ciascun reparto, i pazienti, la<br />
patologia (usando i co<strong>di</strong>ci ICD-9-CM), e il DRG assegnato<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Esempi (2)<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
1 Disegnare lo schema E/R relativo alla valutazione dei servizi<br />
ospedalieri<br />
Per ogni servizio, è necessario sapere il tipo <strong>di</strong> prestazione che<br />
viene erogata, e si aggiunga la possibilità <strong>di</strong> dare una<br />
valutazione al servizio (0=insufficiente, 1=sufficiente,<br />
2=ottima)<br />
2 Disegnare lo schema E/R relativo alle analisi delle acque<br />
Si consideri la presenza <strong>di</strong> pozzi d’acqua (con le informazioni<br />
circa il nome, la profon<strong>di</strong>tà) e le relative analisi (data,<br />
temperatura, pH, presenza inquinanti)<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Il modello relazionale<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Il modello relazionale fu introdotto da Codd (1970) e si basa<br />
su una semplice ed uniforme struttura <strong>dati</strong> chiamata relazione,<br />
ed ha una solida base teorica<br />
La relazione del modello relazionale NON é la relazione degli<br />
schemi E/R<br />
Si introduce tale modello in quanto la maggior parte dei<br />
DBMS sono relazionali (e.g. Oracle, Access, MySQL)<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Concetti fondamentali<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Il modello relazionale rappresenta una base <strong>di</strong> <strong>dati</strong> come un<br />
insieme <strong>di</strong> relazioni<br />
Informalmente,<br />
una relazione é (praticamente) una tabella<br />
ciascuna riga della relazione é detta tupla<br />
l’intestazione <strong>di</strong> una colonna della tabella é chiamata attributo<br />
il tipo <strong>di</strong> dato che mi specifica ciò che può apparire in ciascuna<br />
colonna é detto dominio<br />
Per semplicità (e per non fare confusione) useremo il termine<br />
(improprio) tabella al posto del termine (corretto) relazione<br />
Data Ora<br />
Tabella<br />
↓<br />
Cassa Ricetta Prezzo ← Attributi<br />
26-04-04 11.22 2 Analisi del sangue 20<br />
26-04-04 11.22 2 Analisi delle urine 8 ← Tuple<br />
...<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Dallo schema E/R allo schema relazionale<br />
A partire dallo schema E/R, é possibile costruire la base <strong>di</strong> <strong>dati</strong><br />
sotto forma <strong>di</strong> tabelle, utilizzando un algoritmo “grafico”<br />
Dallo schema E/R, si creano gruppi <strong>di</strong> entitá e/o relazioni<br />
come segue:<br />
A partire da una entitá o relazione dello schema E/R, si<br />
aggregano nel gruppo tutte le relazioni/entitá legate con<br />
car<strong>di</strong>nalitá unaria massima<br />
Ogni entitá o relazione non aggregata deve <strong>di</strong>ventare un nuovo<br />
gruppo<br />
I gruppi in<strong>di</strong>viduati corrispondono alle tabelle da creare<br />
Gli attributi <strong>di</strong> ciascuna tabella variano a seconda del<br />
“contenuto” del gruppo<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Algoritmo “grafico”: questionario<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Partiamo da una qualunque entitá e incorporiamo le relazioni<br />
e/o entitá quando la loro car<strong>di</strong>nalitá massima é 1<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Algoritmo “grafico”: questionario<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Anche l’altra entitá e la relazione stessa é stata “inglobata”<br />
ottenendo un’unica tabella<br />
1 questionari studenti(matricola, sesso, eta, r1, r2, r3,<br />
r4, r5, r6, r7, r8, r9)<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Algoritmo “grafico”: questionario (2)<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Per completare questo passo, è inoltre importante specificare<br />
il tipo <strong>di</strong> dato che verrà usato per memorizzare le istanze dei<br />
vari attributi<br />
questionari studenti(matricola, sesso, eta, r1, r2, r3,<br />
r4, r5, r6, r7, r8, r9)<br />
matricola: int<br />
sesso: char[1]<br />
eta: int<br />
r1 ... r9: int<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Algoritmo “grafico”: analisi geografica<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Partiamo dall’entitá “paziente” e proce<strong>di</strong>amo con le<br />
relazioni...<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Algoritmo “grafico”: analisi geografica<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
La relazione “risiede” é stata aggregata all’entitá “paziente”<br />
in un gruppo<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Conversione delle entitá singole<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Per le entitá singole patologia e sede elettorale, si creano due<br />
tabelle<br />
1 patologie(co<strong>di</strong>ce, drg, <strong>di</strong>agnosi principale)<br />
2 se<strong>di</strong> elettorali(numero, <strong>di</strong>stanza, votanti)<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Conversione dei gruppi<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Per l’entitá paziente e la relazione risiede, si crea una tabella<br />
1 pazienti(numero, sesso, eta, numero sede elettorale)<br />
dove numero sede elettorale é una chiave esterna<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Conversione delle relazioni singole<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Per la relazione singola soffre, si crea una tabella<br />
1 soffre(co<strong>di</strong>ce patologia, numero paziente)<br />
dove la coppia co<strong>di</strong>ce patologia e numero paziente é la chiave<br />
primaria<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Lo schema relazionale<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Abbiamo identificato quin<strong>di</strong> quattro tabelle:<br />
1 patologie(co<strong>di</strong>ce, drg, <strong>di</strong>agnosi principale)<br />
co<strong>di</strong>ce: int<br />
drg: char[3]<br />
<strong>di</strong>agnosi principale: char[50]<br />
2 se<strong>di</strong> elettorali(numero, <strong>di</strong>stanza, votanti)<br />
numero: int<br />
<strong>di</strong>stanza: float<br />
votanti: int<br />
3 pazienti(numero, sesso, eta, numero sede elettorale)<br />
numero: int<br />
sesso: char[1]<br />
eta: int<br />
numero sede elettorale: int (stesso tipo <strong>di</strong><br />
se<strong>di</strong> elettorali.numero)<br />
4 soffre(co<strong>di</strong>ce patologia, numero paziente)<br />
co<strong>di</strong>ce patologia: int (stesso tipo <strong>di</strong> patologie.co<strong>di</strong>ce)<br />
numero paziente: int (stesso tipo <strong>di</strong> pazienti.numero)<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Primo blocco<br />
Entitá patologia<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Tabella patologie(co<strong>di</strong>ce, drg, <strong>di</strong>agnosi principale)<br />
co<strong>di</strong>ce drg <strong>di</strong>agnosi principale<br />
1459 064 Tumori maligni del cavo orale<br />
1478 064 Tumori maligni del rinofaringe<br />
1504 173 Tumori maligni dell’esofago<br />
... ... ...<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Secondo blocco<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Entitá sede elettorale<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Tabella se<strong>di</strong> elettorali(numero, <strong>di</strong>stanza, votanti)<br />
numero <strong>di</strong>stanza votanti<br />
1 0.55 756<br />
2 0.35 899<br />
3 0.95 938<br />
... ... ...<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Terzo blocco<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Entitá paziente + relazione risiede<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Tabella pazienti(numero, sesso, eta, numero sede elettorale)<br />
numero sesso eta numero sede elettorale<br />
1 m 26 79<br />
2 f 65 82<br />
3 m 69 75<br />
... ... ... ...<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Quarto blocco<br />
Relazione soffre<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Tabella soffre(co<strong>di</strong>ce patologia, numero paziente)<br />
numero paziente co<strong>di</strong>ce patologia<br />
1 1910<br />
6 1984<br />
14 1459<br />
... ...<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Esempi<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Si convertano in schema relazionale gli esempi <strong>di</strong> schemi E/R<br />
introdotti precedentemente<br />
Co<strong>di</strong>ci ICD-10<br />
Biblioteca<br />
Calcolo delle spese – in termini <strong>di</strong> DRG – all’interno <strong>di</strong> un<br />
ospedale<br />
Valutazione dei servizi ospedalieri<br />
Analisi delle acque<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Definizioni formali<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Un dominio D é un insieme <strong>di</strong> valori atomici non<br />
ulteriormente sud<strong>di</strong>visibili, e.g.<br />
Il dominio Z + é l’insieme dei numeri interi positivi [0, ∞)<br />
Il dominio CF é l’insieme delle stringhe alfanumeriche lunghe<br />
16 caratteri<br />
Il dominio S é l’insieme dei due caratteri {f , m}<br />
Un attributo A é un nome che fa riferimento ad un dominio<br />
D = dom(A), e.g.<br />
L’attributo eta ∈ Z + identifica l’etá<br />
L’attributo CF ∈ CF identifica il co<strong>di</strong>ce fiscale<br />
L’attributo sesso ∈ S identifica il sesso<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Definizioni formali (2)<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Uno schema <strong>di</strong> relazione R(A1, A2, ..., An) é composto da un<br />
nome R e da un insieme <strong>di</strong> attributi A1, A2, ..., An, e.g.<br />
Lo schema <strong>di</strong> relazione soggetto(CF , eta, sesso) in<strong>di</strong>ca che <strong>di</strong><br />
un soggetto ne consideriamo il co<strong>di</strong>ce fiscale, l’etá e il sesso<br />
Dato l’insieme <strong>di</strong> attributi A1, A2, ..., An dello schema <strong>di</strong><br />
relazione R, una tupla t = (v1, v2, ..., vn) é una lista or<strong>di</strong>nata<br />
<strong>di</strong> valori tali che vi ∈ dom(Ai), e.g.<br />
La tupla (ABCXYZ98X 76A345X , 34, m) identifica una<br />
instanza <strong>di</strong> un soggetto con co<strong>di</strong>ce fiscale<br />
ABCXYZ98X76A345X, etá 34 anni, e <strong>di</strong> sesso maschile<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Definizioni formali (3)<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Una relazione r ∈ R é un insieme <strong>di</strong> tuple t1, t2, ..., tn, e.g.<br />
La relazione {(ABCXYZ98X 76A345X , 34, m) ,<br />
(DEFTUV 76W 54B678A, 35, f )} identifica i soggetti nella<br />
nostra base <strong>di</strong> <strong>dati</strong><br />
La relazione <strong>di</strong>fferisce quin<strong>di</strong> da una tabella per il solo fatto <strong>di</strong><br />
non avere un or<strong>di</strong>namento sulle righe<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Vincoli su schemi relazionali<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Definizione<br />
Un vincolo é una proprietá che deve essere sod<strong>di</strong>sfatta dalle istanze<br />
<strong>di</strong> una base <strong>di</strong> <strong>dati</strong>. Ogni vincolo può essere visto come un<br />
pre<strong>di</strong>cato che può assumere il valore vero o falso: se il pre<strong>di</strong>cato<br />
assume il valore vero <strong>di</strong>ciamo che l’istanza sod<strong>di</strong>sfa il vincolo.<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Vincoli su schemi relazionali<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Vincoli <strong>di</strong> dominio Un vincolo <strong>di</strong> dominio impone che ciascun<br />
attributo A debba appartenere al suo dominio<br />
dom(A)<br />
Vincoli <strong>di</strong> chiave Se una chiave PK é il sottoinsieme <strong>di</strong> attributi<br />
che identifica univocamente una tupla, date due<br />
tuple t1 e t2 <strong>di</strong> una relazione R, si avrá<br />
t1[PK] = t2[PK]<br />
Vincolo <strong>di</strong> integritá <strong>di</strong> chiave afferma che nessuna chiave primaria<br />
può assumere un valore nullo<br />
Vincolo <strong>di</strong> integritá referenziale é specificato fra più relazioni e<br />
serve ad assicurare la consistenza fra le tuple delle<br />
due relazioni<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Vincolo <strong>di</strong> integritá referenziale<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Per introdurre il concetto <strong>di</strong> vincolo <strong>di</strong> integritá referenziale<br />
fra due relazioni R1 e R2, é necessario definire formalmente il<br />
concetto <strong>di</strong> chiave esterna<br />
Definizione<br />
Un insieme <strong>di</strong> attributi FK <strong>di</strong> uno schema R1 é una chiave esterna<br />
<strong>di</strong> R1 se sod<strong>di</strong>sfa:<br />
1 Gli attributi <strong>di</strong> FK appartengono allo stesso dominio della<br />
chiave primaria PK <strong>di</strong> R2<br />
2 Un valore <strong>di</strong> FK presente in una tupla t1 <strong>di</strong> R1 corrisponde ad<br />
un valore della chiave primaria PK <strong>di</strong> una tupla t2 <strong>di</strong> R2 (i.e.<br />
t1[FK] = t2[PK]) oppure assume valore nullo<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Vincolo <strong>di</strong> integritá referenziale (2)<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Un vincolo <strong>di</strong> integritá referenziale esplicita l’esistenza <strong>di</strong> una<br />
relazione (in terminologia E/R) fra <strong>di</strong>fferenti entitá<br />
Violare un vincolo <strong>di</strong> integritá referenziale significa provocare<br />
problemi <strong>di</strong> consistenza, e.g.<br />
L’attributo ICD10 rappresenta la patologia <strong>di</strong> un paziente ed é<br />
chiave esterna verso la tabella delle patologie<br />
Il co<strong>di</strong>ce J01.10 non é presente nella tabella delle patologie e<br />
viola la seconda proprietá delle chiavi esterne<br />
co<strong>di</strong>ce eta sesso icd10<br />
... ... ... ...<br />
4 34 m J01.1<br />
5 35 f J01.9<br />
6 44 m J01.10<br />
... ... ... ...<br />
icd10 descrizione<br />
... ...<br />
J01.1 Sinusite frontale acuta<br />
... ...<br />
J01.9 Sinusite acuta non specificata<br />
... ...<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Operazioni sulla base <strong>di</strong> <strong>dati</strong> e vincoli<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Inserimento L’inserimento <strong>di</strong> una tupla in una relazione può<br />
violare tutti i tipi <strong>di</strong> vincoli<br />
Il vincolo <strong>di</strong> dominio se un valore non é nel<br />
dominio del corrispondente attributo<br />
Il vincolo <strong>di</strong> chiave se il valore della chiave<br />
primaria é gia presente nella relazione<br />
Il vincolo <strong>di</strong> integritá <strong>di</strong> chiave se il valore della<br />
chiave primaria é nullo<br />
Il vincolo <strong>di</strong> integritá referenziale se il valore<br />
della chiave esterna non é presente nella<br />
relazione referenziata<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Operazioni sulla base <strong>di</strong> <strong>dati</strong> e vincoli (2)<br />
Cancellazione La cancellazione <strong>di</strong> una tupla da una relazione può<br />
violare solo il vincolo <strong>di</strong> integritá referenziale<br />
Si viola il vincolo <strong>di</strong> integritá referenziale se viene<br />
eliminata una riga che é referenziata tramite una<br />
chiave esterna <strong>di</strong> una <strong>di</strong>fferente relazione<br />
Mo<strong>di</strong>fica La mo<strong>di</strong>fica può essere vista come una operazione <strong>di</strong><br />
cancellazione seguita da un inserimento<br />
Si fa notare che la mo<strong>di</strong>fica <strong>di</strong> attributi che non<br />
siano né chiave primaria né chiave esterna non<br />
provocano problemi<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Dipendenze funzionali<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Definizione<br />
Una <strong>di</strong>pendenza funzionale, denotata con X → Y , é un vincolo<br />
esistente fra due insiemi <strong>di</strong> attributi X e Y della base <strong>di</strong> <strong>dati</strong><br />
In altri termini, una <strong>di</strong>pendenza funzionale implica che il valore<br />
degli attributi Y é determinato dal valore degli attributi X<br />
Ad esempio,<br />
CF → eta<br />
CAP → residenza<br />
L’esistenza <strong>di</strong> una <strong>di</strong>pendenza funzionale genera problemi <strong>di</strong><br />
consistenza, e.g. come mi comporto se in una tupla trovo<br />
CAP = 67100 e residenza = Teramo ?<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Dipendenze funzionali e problemi <strong>di</strong> consistenza<br />
La risoluzione <strong>di</strong> problemi potenzialmente causabili<br />
dall’esistenza <strong>di</strong> <strong>di</strong>pendenze funzionali devono essere risolte<br />
normalizzando la base <strong>di</strong> <strong>dati</strong><br />
Normalizzazione<br />
La normalizzazione é il processo per cui schemi relazionali non<br />
sod<strong>di</strong>sfacenti vengono decomposti, <strong>di</strong>videndone gli attributi in<br />
<strong>di</strong>pendenza funzionale, e creando schemi relazionali più piccoli<br />
dotati delle proprietá richieste<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Seconda forma normale (2NF)<br />
2NF<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Uno schema relazionale é in seconda forma normale (2NF) se<br />
nessun attributo A é in <strong>di</strong>pendenza funzionale con la chiave<br />
primaria PK<br />
Pren<strong>di</strong>amo l’esempio <strong>di</strong> una relazione che mi rappresenta i<br />
pazienti curati dai me<strong>di</strong>ci <strong>di</strong> un reparto<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Normalizzazione in seconda forma normale<br />
Per normalizzare una relazione in 2NF, é necessario rimuovere<br />
dalla relazione tutti gli attributi in <strong>di</strong>pendenza funzionale e<br />
posizionarli in una relazione separata<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Terza forma normale (3NF)<br />
3NF<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Uno schema relazionale é in terza forma normale (3NF) se nessun<br />
attributo A é in <strong>di</strong>pendenza funzionale con altri attributi B in<br />
<strong>di</strong>pendenza funzionale con la chiave primaria PK (<strong>di</strong>pendenza<br />
funzionale transitiva PK → B → A)<br />
Pren<strong>di</strong>amo l’esempio <strong>di</strong> una relazione che mi rappresenta i<br />
pazienti curati dai me<strong>di</strong>ci <strong>di</strong> un reparto<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Normalizzazione in terza forma normale<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Per normalizzare una relazione in 3NF in cui é presente una<br />
<strong>di</strong>pendenza funzionale transitiva PK → B → A, é necessario<br />
portarla in 2NF, far <strong>di</strong>ventare l’attributo B chiave esterna per<br />
la relazione B → A<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Algebra relazionale<br />
Definizione<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
L’algebra relazionale è un insieme <strong>di</strong> operazioni (query) che<br />
servono per manipolare relazioni (tabelle). In altri termini,<br />
l’algebra relazionale è la formalizzazione matematica del modo in<br />
cui è possibile estrarre da un database le informazioni <strong>di</strong> interesse.<br />
1 Operazione <strong>di</strong> selezione (σ)<br />
2 Operazione <strong>di</strong> proiezione (π)<br />
3 Operazione <strong>di</strong> join (⊲⊳) e natural join (∗)<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
L’operatore <strong>di</strong> selezione<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Selezione σ<br />
L’operatore <strong>di</strong> selezione σ é usato per selezionare da una relazione<br />
un sottoinsieme <strong>di</strong> tuple che sod<strong>di</strong>sfano un certo criterio<br />
Una operazione <strong>di</strong> selezione si specifica tramite la seguente<br />
espressione:<br />
σcon<strong>di</strong>zione(relazione)<br />
Una operazione <strong>di</strong> selezione, quin<strong>di</strong>, restituisce una relazione<br />
con il medesimo schema, ma con le sole tuple che sod<strong>di</strong>sfano<br />
la con<strong>di</strong>zione<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
L’operatore <strong>di</strong> selezione (2)<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ad esempio, consideriamo <strong>di</strong> voler selezionare il questionario<br />
dello studente <strong>di</strong> matricola ’120142’<br />
questionari studenti<br />
σmatricola= ′ 120142 ′(questionari studenti)<br />
matricola eta sesso r1 ... r9<br />
123456 31 f 2 1<br />
◮ 120142 34 m 2 3<br />
172012 23 f 1 2<br />
σmatricola= ′ 120142 ′(questionari studenti)<br />
matricola eta sesso r1 ... r9<br />
120142 34 m 2 3<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
L’operatore <strong>di</strong> selezione (3)<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ad esempio, consideriamo <strong>di</strong> voler selezionare i questionari<br />
delle ragazze<br />
questionari studenti<br />
σsesso= ′ f ′(questionari studenti)<br />
matricola eta sesso r1 ... r9<br />
◮ 123456 31 f 2 1<br />
120142 34 m 2 3<br />
◮ 172012 23 f 1 2<br />
σsesso= ′ f ′(questionari studenti)<br />
matricola eta sesso r1 ... r9<br />
123456 31 f 2 1<br />
172012 23 f 1 2<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
L’operatore <strong>di</strong> selezione (4)<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ad esempio, consideriamo <strong>di</strong> voler selezionare i questionari<br />
delle ragazze con meno <strong>di</strong> 30 anni<br />
questionari studenti<br />
σsesso= ′ f ′ AND eta
L’operatore <strong>di</strong> proiezione<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Proiezione π<br />
L’operazione <strong>di</strong> proiezione π seleziona dalla relazione solo le<br />
colonne specificate<br />
Una operazione <strong>di</strong> proiezione si specifica tramite la seguente<br />
espressione:<br />
πattributi(relazione)<br />
Una operazione <strong>di</strong> proiezione, quin<strong>di</strong>, restituisce una relazione<br />
con <strong>di</strong>fferente schema, ma con le stesse tuple della relazione<br />
originaria<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
L’operatore <strong>di</strong> proiezione (2)<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ad esempio, consideriamo l’operazione seguente (i.e.<br />
restituisci le colonne “matricola” e “r1”)<br />
πmatricola,r1(questionari studenti)<br />
questionari studenti<br />
<br />
matricola eta sesso r1 ... r9<br />
123456 31 f 2 1<br />
120142 34 m 2 3<br />
172012 23 f 1 2<br />
πmatricola,r1(questionari studenti)<br />
matricola r1<br />
123456 2<br />
120142 2<br />
172012 1<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Sequenze <strong>di</strong> operatori<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ad esempio, consideriamo l’operazione seguente (i.e.<br />
restituisci le colonne “matricola” e “r1” dalle tuple in cui il<br />
sesso é ’f’)<br />
questionari studenti<br />
πmatricola,r1(σsesso= ′ f ′(questionari studenti))<br />
<br />
matricola eta sesso r1 ... r9<br />
◮ 123456 31 f 2 1<br />
120142 34 m 2 3<br />
◮ 172012 23 f 1 2<br />
πmatricola,r1(σsesso= ′ f ′(questionari studenti))<br />
matricola r1<br />
123456 2<br />
172012 1<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
L’operatore <strong>di</strong> join<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Join ⊲⊳<br />
L’operazione <strong>di</strong> join ⊲⊳ viene usata per combinare tuple provenienti<br />
da più relazioni in uniche tuple, secondo un determinato criterio<br />
Una operazione <strong>di</strong> join si specifica tramite la seguente<br />
espressione:<br />
relazione1 ⊲⊳criterio relazione2<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
L’operatore <strong>di</strong> join (2)<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ad esempio, consideriamo l’operazione seguente (i.e.<br />
restituisci tutte le informazioni circa i pazienti e le rispettive<br />
se<strong>di</strong> elettorali)<br />
pazienti ⊲⊳pazienti.numero sede elettorale=se<strong>di</strong> elettorali.numero se<strong>di</strong> elettorali<br />
pazienti<br />
<br />
numero sesso eta numero sede elettorale<br />
1 m 26 79<br />
2 f 65 82<br />
3 m 69 75<br />
se<strong>di</strong> elettorali<br />
pazienti ⊲⊳pazienti.numero sede elettorale=se<strong>di</strong> elettorali.numero<br />
se<strong>di</strong> elettorali<br />
<br />
numero <strong>di</strong>stanza votanti<br />
75 0.55 756<br />
79 0.35 899<br />
82 0.95 938<br />
numero sesso eta numero sede elettorale numero <strong>di</strong>stanza votanti<br />
1 m 26 79 79 0.35 899<br />
2 f 65 82 82 0.95 938<br />
3 m 69 75 75 0.55 756<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Natural join<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
L’operatore <strong>di</strong> join é fondamentale perché permette <strong>di</strong> reperire<br />
informazioni che sono contenute in relazioni tra loro collegate<br />
tramite chiavi esterne<br />
In tal caso, é possibile ricorrere al natural join<br />
Natural join ∗<br />
Date due relazioni R1 e R2, in cui é stato definito il vincolo <strong>di</strong><br />
integritá referenziale t1[FK] = t2[PK], si definisce natural join<br />
R1 ∗ R2 ← πR1−FK,R2 (R1 ⊲⊳R1.FK=R2.PK R2)<br />
Il natural join é – essenzialmente – il join su tabelle collegate<br />
secondo quanto espresso dal vincolo <strong>di</strong> integritá referenziale<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Natural join (2)<br />
pazienti<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Siccome pazienti.numero sede elettorale é chiave esterna per<br />
se<strong>di</strong> elettorali.numero, allora<br />
pazienti ∗ se<strong>di</strong> elettorali<br />
numero sesso eta numero sede elettorale<br />
1 m 26 79<br />
2 f 65 82<br />
3 m 69 75<br />
pazienti ∗ se<strong>di</strong> elettorali<br />
se<strong>di</strong> elettorali<br />
numero sesso eta numero <strong>di</strong>stanza votanti<br />
1 m 26 79 0.35 899<br />
2 f 65 82 0.95 938<br />
3 m 69 75 0.55 756<br />
numero <strong>di</strong>stanza votanti<br />
75 0.55 756<br />
79 0.35 899<br />
82 0.95 938<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Come si compone una query<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Una query in algebra relazionale si può sempre scrivere come:<br />
πattributi(σcriterio(r1 ∗ r2 ∗ · · · ∗ rn))<br />
Per comporre una query in algebra relazionale<br />
1 Identificare le tabelle che contengono i <strong>dati</strong> oggetto della<br />
query, e metterle nei natural join<br />
2 Identificare la parte della query che rappresenta il criterio <strong>di</strong><br />
selezione delle righe<br />
3 Identificare la parte della query che specifica quali attributi<br />
vogliamo ottenere in uscita tramite proiezione<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Esempi <strong>di</strong> query in algebra relazionale<br />
Query 1 - Tutti i pazienti maschi<br />
σ sesso= ′ m ′(pazienti)<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
1 Una sola tabella è<br />
coinvolta nella query:<br />
pazienti<br />
2 Il criterio <strong>di</strong> selezione<br />
in<strong>di</strong>ca i soli maschi:<br />
sesso=’m’<br />
3 Voglio tutti gli attributi:<br />
nessun π<br />
pazienti<br />
numero sesso eta num...<br />
◮ 1 m 26 79<br />
2 f 65 82<br />
◮ 3 m 69 75<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Esempi <strong>di</strong> query in algebra relazionale (2)<br />
1 Una sola tabella è<br />
coinvolta nella query:<br />
pazienti<br />
2 Il criterio <strong>di</strong> selezione<br />
in<strong>di</strong>ca una età < <strong>di</strong> 30:<br />
eta < 30<br />
3 Voglio il solo sesso come<br />
attributo: sesso<br />
pazienti<br />
<br />
numero sesso eta num...<br />
◮ 1 m 26 79<br />
2 f 65 82<br />
3 m 69 75<br />
Query 2 - Sesso dei pazienti <strong>di</strong> etá inferiore ai 30 anni<br />
πsesso(σeta
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Esempi <strong>di</strong> query in algebra relazionale (3)<br />
1 Due tabelle sono<br />
coinvolte nella query:<br />
pazienti, se<strong>di</strong> elettorali<br />
2 Il criterio <strong>di</strong> selezione<br />
in<strong>di</strong>ca il sesso femminile:<br />
sesso=’f’<br />
3 Voglio il solo sesso come<br />
attributo: eta, <strong>di</strong>stanza<br />
Query 3 - Etá e <strong>di</strong>stanza dall’azienda chimica <strong>di</strong> tutti i pazienti <strong>di</strong><br />
sesso feminile<br />
πeta,<strong>di</strong>stanza(σ sesso= ′ f ′(pazienti ∗ se<strong>di</strong> elettorali))<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Esempi <strong>di</strong> query in algebra relazionale (4)<br />
Etá e <strong>di</strong>stanza dall’azienda chimica <strong>di</strong> tutti i pazienti <strong>di</strong> sesso<br />
feminile<br />
Dai pazienti ...<br />
pazienti<br />
numero sesso eta numero sede elettorale<br />
1 m 26 79<br />
2 f 65 82<br />
3 m 69 75<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Esempi <strong>di</strong> query in algebra relazionale (4)<br />
pazienti<br />
numero sesso eta numero sede elettorale<br />
1 m 26 79<br />
2 f 65 82<br />
3 m 69 75<br />
Si aggiungono le informazioni sulle rispettive se<strong>di</strong> elettorali...<br />
pazienti ∗ se<strong>di</strong> elettorali<br />
numero sesso eta numero <strong>di</strong>stanza votanti<br />
1 m 26 79 0.35 899<br />
2 f 65 82 0.95 938<br />
3 m 69 75 0.55 756<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Esempi <strong>di</strong> query in algebra relazionale (4)<br />
pazienti ∗ se<strong>di</strong> elettorali<br />
numero sesso eta numero <strong>di</strong>stanza votanti<br />
1 m 26 79 0.35 899<br />
2 f 65 82 0.95 938<br />
3 m 69 75 0.55 756<br />
Si selezionano quelli <strong>di</strong> sesso femminile...<br />
σsesso= ′ f ′(pazienti ∗ se<strong>di</strong> elettorali)<br />
numero sesso eta numero <strong>di</strong>stanza votanti<br />
2 f 65 82 0.95 938<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Esempi <strong>di</strong> query in algebra relazionale (4)<br />
σsesso= ′ f ′(pazienti ∗ se<strong>di</strong> elettorali)<br />
numero sesso eta numero <strong>di</strong>stanza votanti<br />
2 f 65 82 0.95 938<br />
Infine, si restituiscono i <strong>dati</strong> relativi all’etá e alla <strong>di</strong>stanza.<br />
πeta,<strong>di</strong>stanza(σsesso= ′ f ′(pazienti ∗ se<strong>di</strong> elettorali))<br />
eta <strong>di</strong>stanza<br />
65 0.95<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Esempi <strong>di</strong> query in algebra relazionale (5)<br />
Query 4 - Etá, sesso e DRG <strong>di</strong> tutti i pazienti<br />
πeta,sesso,DRG (pazienti ∗ soffre ∗ patologie)<br />
1 Tre tabelle sono coinvolte<br />
nella query: pazienti,<br />
soffre, patologie (N.B.<br />
anche le tabelle<br />
“interme<strong>di</strong>e” devono<br />
essere considerate)<br />
2 Il criterio <strong>di</strong> selezione non<br />
è specificato: nessun σ<br />
3 Voglio l’età, il sesso e il<br />
DRG come attributi: eta,<br />
sesso, DRG<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Esempi <strong>di</strong> query in algebra relazionale (6)<br />
Etá, sesso e DRG <strong>di</strong> tutti i pazienti<br />
Dalle tabelle dei pazienti e delle patologie <strong>di</strong> cui soffrono...<br />
pazienti<br />
soffre<br />
numero sesso eta numero sede elettorale<br />
1 m 26 79<br />
2 f 65 82<br />
3 m 69 75<br />
numero paziente co<strong>di</strong>ce patologia<br />
1 1910<br />
1 1984<br />
2 1984<br />
3 1459<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Esempi <strong>di</strong> query in algebra relazionale (6)<br />
Si aggiungono i co<strong>di</strong>ci delle patologie <strong>di</strong> ciascun paziente...<br />
soffre ∗ pazienti<br />
numero sesso eta numero sede elettorale co<strong>di</strong>ce patologia<br />
1 m 26 79 1910<br />
1 m 26 79 1984<br />
2 f 65 82 1984<br />
3 m 69 75 1459<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Esempi <strong>di</strong> query in algebra relazionale (6)<br />
Quin<strong>di</strong> gli ulteriori <strong>dati</strong> relativamente alle patologie...<br />
patologie ∗ soffre ∗ pazienti<br />
numero sesso eta num... co<strong>di</strong>ce DRG <strong>di</strong>agnosi principale<br />
1 m 26 79 1910 064 Tumori maligni del rinofaringe<br />
1 m 26 79 1984 173 Tumori maligni dell’esofago<br />
2 f 65 82 1984 173 Tumori maligni dell’esofago<br />
3 m 69 75 1459 064 Tumori maligni del cavo orale<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Esempi <strong>di</strong> query in algebra relazionale (6)<br />
Infine, si restituiscono i soli attributi relativi all’etá, il sesso e il<br />
DRG<br />
πeta,sesso,DRG (patologie ∗ soffre ∗ pazienti)<br />
eta sesso DRG<br />
26 m 064<br />
26 m 173<br />
65 f 173<br />
69 m 064<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
SQL<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
SQL (Structured Query Language)<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Linguaggio standard usato da ogni DBMS per l’interrogazione<br />
dei <strong>dati</strong><br />
Può<br />
Creare/<strong>di</strong>struggere database<br />
Creare/alterare/<strong>di</strong>struggere tabelle<br />
Inserire/rimuovere <strong>dati</strong><br />
Interrogare la base <strong>di</strong> <strong>dati</strong><br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Query <strong>di</strong> selezione<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Il comando SQL per estrarre <strong>dati</strong> da un DB é la SELECT<br />
La query <strong>di</strong> selezione si compone <strong>di</strong> (almeno) tre parti<br />
Gli attributi da restituire<br />
Le tabelle da cui estrarre i <strong>dati</strong><br />
Il criterio <strong>di</strong> selezione<br />
... più eventuali in<strong>di</strong>cazioni circa l’or<strong>di</strong>namento, etc.<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Query <strong>di</strong> selezione (2)<br />
Select<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
La forma <strong>di</strong> una query <strong>di</strong> selezione<br />
SELECT [ l i s t a d e g l i a t t r i b u t i ]<br />
FROM [ l i s t a d e l l e t a b e l l e ]<br />
WHERE [ c r i t e r i o ]<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
L’SQL e l’algebra relazionale<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Data una query scritta in algebra relazionale, è possibile<br />
scrivere la corrispondente query in SQL seguendo il seguente<br />
schema:<br />
1 Gli attributi del π <strong>di</strong>ventano gli attributi della parte SELECT<br />
2 Le tabelle messe in ∗ si elencano nella lista delle tabelle della<br />
parte FROM<br />
3 Il criterio <strong>di</strong> selezione e le con<strong>di</strong>zioni <strong>di</strong> natural join <strong>di</strong>ventano il<br />
criterio della parte WHERE<br />
Le con<strong>di</strong>zioni <strong>di</strong> natural join sono l’equivalenza della chiave<br />
primaria con la chiave esterna della tabella collegata dal join<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
I pazienti maschi<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Query 5 - L’etá <strong>di</strong> tutti i pazienti maschi<br />
SELECT e t a<br />
FROM p a z i e n t i<br />
WHERE s e s s o =’m’<br />
πeta(σ sesso= ′ m ′(pazienti))<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Il sesso dei pazienti <strong>di</strong> etá inferiore ai 30 anni<br />
Query 6 - Sesso dei pazienti <strong>di</strong> etá inferiore ai 30 anni<br />
SELECT s e s s o<br />
FROM p a z i e n t i<br />
WHERE e t a < 30<br />
πsesso(σeta
Paziente e <strong>di</strong>stanza<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Query 7 - Etá e <strong>di</strong>stanza dall’industria dei pazienti <strong>di</strong> sesso<br />
femminile<br />
πeta,<strong>di</strong>stanza(σ sesso= ′ f ′(pazienti ∗ se<strong>di</strong> elettorali))<br />
SELECT p a z i e n t i . eta , s e d i e l e t t o r a l i . d i s t a n z a<br />
FROM p a z i e n t i , s e d i e l e t t o r a l i<br />
WHERE p a z i e n t i . n u m e r o s e d e e l e t t o r a l e = s e d i e l e t t o r a l i . numero AND<br />
p a z i e n t i . s e s s o = ’ f ’<br />
Quando esistono delle omonimie, é necessario specificare da<br />
quale relazione “preleviamo” gli attributi<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Paziente e DRG<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Query 8 - Etá, sesso e DRG <strong>di</strong> tutti i pazienti<br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
πeta,sesso,DRG (pazienti ∗ soffre ∗ patologie)<br />
SELECT eta , s e s s o , DRG<br />
FROM p a z i e n t i , s o f f r e , p a t o l o g i e<br />
WHERE ( numero = n u m e r o p a z i e n t e ) AND<br />
( c o d i c e p a t o l o g i a = c o d i c e )<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Conteggio <strong>di</strong> tuple<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Query 9 - Il numero <strong>di</strong> pazienti <strong>di</strong> sesso femminile<br />
SELECT COUNT( ∗ )<br />
FROM p a z i e n t i<br />
WHERE s e s s o =’ f ’<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Valori me<strong>di</strong><br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Query 10 - L’etá me<strong>di</strong>a dei casi <strong>di</strong> sesso maschile<br />
SELECT AVG( e t a )<br />
FROM p a z i e n t i<br />
WHERE s e s s o =’m’<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
Raggruppamento<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Query 11 - Per ogni sede elettorale: numero della sede ed etá<br />
me<strong>di</strong>a dei casi<br />
SELECT s e d i e l e t t o r a l i . numero , AVG( p a z i e n t i . e t a )<br />
FROM p a z i e n t i , s e d i e l e t t o r a l i<br />
WHERE p a z i e n t i . n u m e r o s e d e e l e t t o r a l e = s e d i e l e t t o r a l i . numero<br />
GROUP BY s e d i e l e t t o r a l i . numero<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni
L’ultima query<br />
<strong>Basi</strong> <strong>di</strong> <strong>dati</strong><br />
Modello concettuale: schemi entitá/relazione<br />
Modello logico: modello relazionale<br />
Algebra relazionale ed SQL<br />
Query 12 - Per ogni sede elettorale, or<strong>di</strong>nate per <strong>di</strong>stanza: numero della sede,<br />
<strong>di</strong>stanza, numero <strong>di</strong> casi, numero totale <strong>di</strong> residenti, tasso grezzo ed etá me<strong>di</strong>a<br />
SELECT s e d i e l e t t o r a l i . numero , s e d i e l e t t o r a l i . d i s t a n z a , count ( ∗ ) ,<br />
s e d i e l e t t o r a l i . v o t a n t i , count (∗) / s e d i e l e t t o r a l i . v o t a n t i ,<br />
avg ( p . e t a )<br />
FROM p a z i e n t i , s e d i e l e t t o r a l i<br />
WHERE p a z i e n t i . n u m e r o s e d e e l e t t o r a l e = s e d i e l e t t o r a l i . numero<br />
GROUP BY s e d i e l e t t o r a l i . numero<br />
ORDER BY s e d i e l e t t o r a l i . d i s t a n z a<br />
Ing. Pierpaolo Vittorini Sistemi <strong>di</strong> elaborazione delle informazioni