Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad...

Post on 22-Aug-2020

8 views 0 download

Transcript of Basi di dati · Basi di dati Gabriella Trucco gabriella.trucco@unimi.it. Esempio Quando si pensa ad...

Basi di datiGabriella Trucco

gabriella.trucco@unimi.it

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

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

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)

Limiti dei DBMS

Presentazione grafica limitata

Funzionalità statistiche di base

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

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

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)

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

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

Attributi

A volte, gli attributi possono essere compositi

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

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

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

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

Entità debole

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

relazione studia_in

Qual è la chiave primaria di studente?

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

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

Attributi

Gli attributi possono anche essere posizionati sulle relazioni

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

Entità e relazioni

Identificazione delle entità

Questionario

Studente

Identificazione delle relazioni

Lo studente riempie il questionario

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

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

Sede elettorale

Gli attributi dell'entità sede elettorale

Numero della sede (chiave primaria)

Distanza dall'industria chimica

Numero di votanti

Paziente

Gli attributi dell'entità paziente

Identificatore numerico

Sesso

Età

Patologia

Gli attributi dell'entità patologia

Codice

DRG

Diagnosi principale

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

Relazione soffre

La relazione soffre fra il paziente e la patologia

Un paziente può soffrire di n patologie

Di una patologia soffrono n pazienti

Schema E/R completo

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)

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

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

Esempio1: questionario

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

quando la loro cardinalità massima è 1

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

Esempio2: analisi geografica

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

Esempio2: analisi geografica

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

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)

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

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

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)

Primo blocco

Entità patologia

Tabella patologie(codice; drg; diagnosi principale)

Secondo blocco

Entità sede elettorale

Tabella sedi elettorali (numero; distanza; votanti)

Terzo blocco

Entità paziente + relazione risiede

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

Relazione soffre

Relazione soffre

Tabella soffre(codice patologia; numero paziente)

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

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

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