Basi di dati · Basi di dati Gabriella Trucco [email protected]. Esempio Quando si pensa ad...

45
Basi di dati Gabriella Trucco [email protected]

Transcript of Basi di dati · Basi di dati Gabriella Trucco [email protected]. Esempio Quando si pensa ad...

Page 1: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Basi di datiGabriella Trucco

[email protected]

Page 2: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Esempio

Quando si pensa ad un database, generalmente si immagina una tabella

contenente grandi quantità di informazioni, sulla quale è possibile fare una

certa serie di operazioni

Operazioni semplici: registrazione dei ticket

Operazioni complesse:

Importo complessivo, per giorno, cassa, fascia oraria, ...

Correlazioni di ricette

Page 3: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

DBMS

Un DBMS (DataBase Management System) è un applicativo software:

in grado di gestire grandi quantità di dati (Giga-Tera byte e oltre)

in grado di garantirne la persistenza anche a fronte di guasti

in grado di condividere i propri dati garantendo privatezza con una disciplina di

controllo degli accessi

efficienza utilizzando al meglio le risorse di spazio e di tempo del sistema

efficacia rendendo produttive le attività dei suoi utilizzatori

integrità dei dati mantenendoli tra loro sempre consistenti

Page 4: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Integrità

I problemi di integrità sono tipicamente dovuti alla mancanza di una

adeguata progettazione del DB

Esempi di problema di integrità:

Di un paziente, memorizzo sia il CAP che il Comune di residenza. Nella base di

dati trovo un paziente con CAP non corrispondente al comune di residenza

In una tabella, ho che un certo paziente X è celibe e un'altra paziente Y che è

moglie di X

In una tabella ho l'elenco dei pazienti con indicato il codice della sua patologia,

ma tale codice non è nell'elenco delle malattie (elenco presente in un'altra

tabella)

Page 5: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Limiti dei DBMS

Presentazione grafica limitata

Funzionalità statistiche di base

Il trattamento statistico dei dati deve essere fatto con software ad-hoc

Page 6: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Progettazione di una base di dati

1. Raccolta ed analisi dei requisiti

2. Specifiche sui dati

Modello concettuale (schema E/R)

Modello logico (schema relazionale)

Implementazione fisica

3. Specifiche sulle funzioni

Interrogazioni sulla base di dati

Implementazione delle transazioni

Page 7: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Modello concettuale

Insieme di costrutti utilizzati per organizzare i dati e descriverne la struttura

Il modello Entità/Relazione (E/R) adotta un formalismo grafico e semplice

si basa su due concetti (entità e relazione)

Page 8: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Entità

Rappresenta una classe di oggetti del mondo reale (e.g., persone, cose,

eventi, ...) con proprietà comuni ed esistenza autonoma

Esempio

Paziente: entità astratta

Pierpaolo: istanza (e.g.) dell’entità paziente; è il paziente vero e proprio

Page 9: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Attributi

Entità sono composte da attributi

Esempio: l'entità paziente è composta dagli attributi: CF, Nome, Cognome,

Sesso e Indirizzo

CF: chiave primaria, ovvero l'attributo che permette di identificare

univocamente l'istanza

Page 10: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Attributi

A volte, gli attributi possono essere compositi

Ad esempio, l'attributo Generalità è composto dal Nome e dal Cognome

Page 11: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Relazione

Legame esistente fra differenti entità

La relazione permette di esplicitare i collegamenti logici esistenti fra le varie

entità che compongono le informazioni da trattare

Esempio: un medico cura un paziente

Page 12: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Relazione

Ad esempio: l'entità medico cura (relazione) l'entità paziente

I numeri rappresentano la cardinalità (minima e massima) della relazione

Un medico cura da un minimo di 0 ad un massimo di n pazienti

Un paziente è curato da un minimo di 1 ad un massimo di n medici

Page 13: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Cardinalità delle relazioni

La cardinalità di una relazione identifica quante istanze di una certa entità

si collegano ad una istanza di un'altra entità

Relazione uno-a-uno

Relazione uno-a-molti o molti-a-uno

Relazione molti-a-molti

Page 14: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Entità debole

Facciamo l'esempio delle entità studente e università, tra loro legate dalla

relazione studia_in

Qual è la chiave primaria di studente?

Page 15: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Entità debole

E’ la matricola, a seconda dell'università, i.e. possono esserci studenti con

lo stesso numero di matricola in differenti università, ma non con la stessa

matricola nella stessa università

Una chiave primaria che dipende anche dalla relazione dà origine ad una

entità debole

Page 16: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Relazioni n-arie

Esiste anche la possibilità di dover utilizzare relazioni fra più di due entità

In tale caso, si parla di relazioni n-arie

Page 17: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Attributi

Gli attributi possono anche essere posizionati sulle relazioni

Page 18: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Schema E/R semplice

Costruiamo lo schema E/R di una base di dati per memorizzare le risposte date

ad un questionario

Questionario composto da 9 domande a risposta multipla

Di ogni studente ci interessa la matricola, l'età ed il sesso

Page 19: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Entità e relazioni

Identificazione delle entità

Questionario

Studente

Identificazione delle relazioni

Lo studente riempie il questionario

Page 20: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Schema E/R complesso

Costruiamo lo schema E/R di una base di dati per il seguente studio:

Analisi geografica di morbilità di malattie neoplastiche, con disaggregazione

per sede elettorale, a seguito dell'installazione di una industria chimica che

prevede, nel ciclo di lavorazione, l'emissione di gas in aria

Page 21: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Entità e relazioni

Identificazione delle entità

Sede elettorale

Paziente

Patologia

Identificazione delle relazioni

Il paziente risiede in una sede elettorale

Il paziente soffre di una certa patologia

Page 22: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Sede elettorale

Gli attributi dell'entità sede elettorale

Numero della sede (chiave primaria)

Distanza dall'industria chimica

Numero di votanti

Page 23: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Paziente

Gli attributi dell'entità paziente

Identificatore numerico

Sesso

Età

Page 24: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Patologia

Gli attributi dell'entità patologia

Codice

DRG

Diagnosi principale

Page 25: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Relazione risiede

La relazione risiede fra il paziente e la sede elettorale

Il paziente risiede in 1 sede elettorale

In una sede elettorale risiedono n pazienti

Page 26: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Relazione soffre

La relazione soffre fra il paziente e la patologia

Un paziente può soffrire di n patologie

Di una patologia soffrono n pazienti

Page 27: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Schema E/R completo

Page 28: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Il modello relazionale

Il modello relazionale fu introdotto da Codd (1970) e si basa su una

semplice ed uniforme struttura dati chiamata relazione, ed ha una solida

base teorica

La relazione del modello relazionale NON è la relazione degli schemi E/R

Si introduce tale modello in quanto la maggior parte dei DBMS sono

relazionali (e.g. Oracle, Access, MySQL)

Page 29: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Concetti fondamentali

Il modello relazionale rappresenta una base di dati come un insieme di

relazioni

Informalmente,

una relazione è una tabella

ciascuna riga della relazione è detta tupla

l'intestazione di una colonna della tabella è chiamata attributo

il tipo di dato che mi specifica ciò che può apparire in ciascuna colonna è detto

dominio

Per semplicità useremo il termine (improprio) tabella al posto del termine

(corretto) relazione

Page 30: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Da schema E/R a schema relazionale

A partire dallo schema E/R, è possibile costruire la base di dati sotto forma

di tabelle

Dallo schema E/R, si creano gruppi di entità e/o relazioni come segue:

A partire da una entità o relazione dello schema E/R, si aggregano nel gruppo

tutte le relazioni/entità legate con cardinalità unaria massima

Ogni entità o relazione non aggregata deve diventare un nuovo gruppo

I gruppi individuati corrispondono alle tabelle da creare

Gli attributi di ciascuna tabella variano a seconda del contenuto del gruppo

Page 31: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Esempio1: questionario

Partiamo da una qualunque entità e incorporiamo le relazioni e/o entità

quando la loro cardinalità massima è 1

Page 32: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Esempio1: questionario

L'altra entità e la relazione stessa è stata inglobata ottenendo un'unica tabella

questionari studenti(matricola; sesso; età; r1; r2; r3; r4; r5; r6; r7; r8; r9)

Per completare questo passo, è inoltre importante specificare il tipo di dato usato per memorizzare le istanze dei vari attributi

questionari studenti(matricola; sesso; età; r1; r2; r3; r4; r5; r6; r7; r8; r9)

matricola: int

sesso: char[1]

età: int

r1 ... r9: int

Page 33: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Esempio2: analisi geografica

Partiamo dall'entità paziente e procediamo con le relazioni...

Page 34: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Esempio2: analisi geografica

La relazione risiede è stata aggregata all'entità paziente in un gruppo

Page 35: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Conversione delle entità singole

Per le entità singole patologia e sede elettorale, si creano due tabelle

1. patologie(codice; drg; diagnosi principale)

2. sedi elettorali (numero; distanza; votanti)

Page 36: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Conversione dei gruppi

Per l'entità paziente e la relazione risiede, si crea una tabella

pazienti(numero; sesso; età; numero sede elettorale)

dove numero sede elettorale è una chiave esterna

Page 37: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Conversione delle relazioni singole

Per la relazione singola soffre, si crea una tabella

soffre(codice patologia; numero paziente)

dove la coppia codice patologia e numero paziente è la chiave primaria

Page 38: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Schema relazionale

Abbiamo identificato quindi quattro tabelle:

patologie(codice; drg; diagnosi principale)

codice: int

drg: char[3]

diagnosi principale: char[50]

sedi elettorali (numero; distanza; votanti)

numero: int

distanza: float

votanti: int

pazienti(numero; sesso; età; numero sede elettorale)

numero: int

sesso: char[1]

età: int

numero sede elettorale: int (stesso tipo di sedi elettorali.numero)

soffre(codice patologia; numero paziente)

codice patologia: int (stesso tipo di patologie.codice)

numero paziente: int (stesso tipo di pazienti.numero)

Page 39: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Primo blocco

Entità patologia

Tabella patologie(codice; drg; diagnosi principale)

Page 40: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Secondo blocco

Entità sede elettorale

Tabella sedi elettorali (numero; distanza; votanti)

Page 41: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Terzo blocco

Entità paziente + relazione risiede

Tabella pazienti(numero; sesso; eta; numero sede elettorale)

Page 42: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Relazione soffre

Relazione soffre

Tabella soffre(codice patologia; numero paziente)

Page 43: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Definizioni formali

Un dominio D è un insieme di valori atomici non ulteriormente suddivisibili, e.g.

Il dominio Z+ è l'insieme dei numeri interi positivi [0;1)

Il dominio CF è l'insieme delle stringhe alfanumeriche lunghe 16 caratteri

Il dominio S è l'insieme dei due caratteri {f ;m}

Un attributo A è un nome che fa riferimento ad un dominio D = dom(A), e.g.

L'attributo età ∈ Z+ identifica l'età

L'attributo CF ∈ CF identifica il codice fiscale

L'attributo sesso ∈ S identifica il sesso

Page 44: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Definizioni formali

Uno schema di relazione R(A1; A2; …;An) è composto da un nome R e da

un insieme di attributi {A1; A2; …;An}, e.g.

Lo schema di relazione soggetto(CF; età; sesso) indica che di un soggetto

consideriamo il codice fiscale, l'età e il sesso

Dato l'insieme di attributi {A1;A2; …;An} dello schema di relazione R, una

tupla t = (v1; v2; …; vn) è una lista ordinata di valori tali che vi ∈ dom(Ai ),

e.g.

La tupla (ABCXYZ98X76A345X; 34;m) identifica una istanza di un soggetto con

codice scale ABCXYZ98X76A345X, età 34 anni, e di sesso maschile

Page 45: Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad un database, generalmente si immagina una tabella contenente grandi quantità di

Definizioni formali

Una relazione r ∈ R è un insieme di tuple {t1; t2; …; tn}, e.g.

La relazione {(ABCXYZ98X76A345X; 34;m) ; (DEFTUV76W54B678A; 35; f )} identica i

soggetti nella nostra base di dati

La relazione differisce quindi da una tabella per il fatto di non avere un

ordinamento sulle righe