31.05.2013 Views

03. Basi di dati - Medicina e chirurgia

03. Basi di dati - Medicina e chirurgia

03. Basi di dati - Medicina e chirurgia

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!