basi di dati · basi di dati gabriella trucco gabriella.trucco@unimi.it. esempio quando si pensa ad...
Post on 22-Aug-2020
5 Views
Preview:
TRANSCRIPT
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
top related