BASI DATI: modello relazionale BIOINGEGNERIA ELETTRONICA ED INFORMATICA Lezione IIIb - AA 2014/20151
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) Lezione IIIb - AA 2014/20152
Concetti fondamentali Lezione IIIb - AA 2014/20153 Il modello relazionale rappresenta una base di dati come un insieme di relazioni Informalmente, una relazione è (praticamente) 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à (e per non fare confusione) useremo il termine (improprio) tabella al posto del termine (corretto) relazione
Dallo schema E/R allo schema relazionale A partire dallo schema E/R, è possibile costruire la base di dati sotto forma di relazioni Quali e quante relazioni creare? Lezione IIIb - AA 2014/20154
Algoritmo di conversione E/R in relazionale Lezione IIIb - AA 2014/20155 Algoritmo per realizzare lo schema relazionale a partire dallo schema E/R: 1. Per ogni entità E dello schema E/R, crea una relazione R che include tutti gli attributi di E
Algoritmo di conversione E/R in relazionale Lezione IIIb - AA 2014/ Per ogni relazione 1:1 dello schema E/R esistente fra le due entità E1 ed E2, trasforma le due relazioni R1 e R2 (di E1 ed E2) in una unica relazione R12 unendone tutti gli attributi preferendo una chiave primaria sull’altra
Algoritmo di conversione E/R in relazionale Lezione IIIb - AA 2014/ Per ogni relazione 1:n dello schema E/R esistente fra le due entità E1 ed E2, aggiungi la chiave primaria della relazione E2 come attributo nella relazione E1 (chiave esterna)
Algoritmo di conversione E/R in relazionale Lezione IIIb - AA 2014/ Per ogni relazione n:m dello schema E/R, crea una relazione R i cui attributi sono le chiavi primarie dell’entità in relazione (chiavi esterne)
Lo schema relazionale del questionario Sulla base del passo (1) del precedente algoritmo, ottengo le due relazioni (notate l’uso del plurale) 1. studenti(matricola, sesso, eta) 2. questionari (r1, r2, r3, r4, r5, r6, r7, r8, r9) Il passo (2) ci impone – siccome le due entità sono in relazione 1:1 – di unirle in una unica relazione 1. questionari_studenti(matricola, sesso, eta, r1, r2, r3, r4, r5, r6, r7, r8, r9) Lezione IIIb - AA 2014/20159
Lo schema relazionale dello studio ambientale Passo (1) 1. patologie(codice,DRG, diagnosi principale) 2. pazienti(numero, eta, sesso) 3. sedi_elettorali (numero, distanza, votanti) Lezione IIIb - AA 2014/201510
Lo schema relazionale dello studio ambientale Passo (2) : Non c’è nessuna relazione di tipo 1:1 Lezione IIIb - AA 2014/201511
Lo schema relazionale dello studio ambientale Passo (3) : C’è una unica relazione di tipo 1:n (e.g. risiede) 1. pazienti(numero, eta, sesso, numero_sede_elettorale) Lezione IIIb - AA 2014/201512
Lo schema relazionale dello studio ambientale Passo (4) : C’è una unica relazione di tipo n:m (e.g. soffre) 1. soffre(codice patologia, numero_paziente) Lezione IIIb - AA 2014/201513
Lo schema relazionale dello studio ambientale Si ottiene quindi 1. patologie(codice,DRG, diagnosi principale) 2. sedi_elettorali (numero, distanza, votanti) 3. pazienti(numero, età, sesso, numero_sede_elettorale) 4. soffre(codice patologia, numero paziente) Lezione IIIb - AA 2014/201514
Dallo schema E/R allo schema relazionale Lezione IIIb - AA 2014/ A partire dallo schema E/R, è possibile costruire la base di dati sotto forma di tabelle, utilizzando un algoritmo «grafico» 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
Algoritmo «grafico» (1) Partiamo da una qualunque entità e incorporiamo le relazioni/entità quando la cardinalità è di tipo (1,1) Lezione IIIb - AA 2014/201516
Algoritmo «grafico» (2) Anche l’altra entità e la relazione stessa è stata “inglobata” ottenendo un’unica relazione 1. questionari_studenti(matricola, sesso, eta, r1, r2, r3, r4, r5, r6, r7, r8, r9) Lezione IIIb - AA 2014/201517
Algoritmo «grafico» (3) Lezione IIIb - AA 2014/ Per completare questo passo, è inoltre importante specificare il tipo di dato che verrà usato per memorizzare le istanze dei vari attributi questionari_studenti(matricola; sesso; eta; r1; r2; r3; r4; r5; r6; r7; r8; r9) matricola: int sesso: char(1) eta: int r1... r9: int
Algoritmo «grafico»: analisi geografica Partiamo dall’entità «paziente» e procediamo con le relazioni... Lezione IIIb - AA 2014/201519
Algoritmo «grafico» analisi geografica La relazione «risiede» è stata aggregata all’entità «paziente» in un gruppo Lezione IIIb - AA 2014/201520
Primo blocco Entità patologia Relazione patologie(codice, drg, diagnosi_principale) Lezione IIIb - AA 2014/201521
Secondo blocco Entità sede_elettorale Relazione: sedi_elettorali (numero, distanza, votanti) Lezione IIIb - AA 2014/201522
Quarto blocco Relazione soffre soffre(numero_paziente,codice_patologia) Lezione IIIb - AA 2014/201523
Conversioni delle entità singole Per le entità singole patologia e sede elettorale, si creano due relazioni 1. patologie(codice, drg, diagnosi principale) 2. sedi_elettorali (numero, distanza, votanti) Lezione IIIb - AA 2014/201524
Conversioni dei gruppi Per l’entità paziente e la relazione risiede, si crea una relazione 1. pazienti(numero, sesso, eta, numero_sede_elettorale) dove numero_sede_elettorale è una chiave esterna Lezione IIIb - AA 2014/201525
Conversioni delle relazioni singole Per la relazione singola soffre, si crea una relazione 1. soffre(codice patologia, numero paziente) dove la coppia_codice patologia e numero_paziente è la chiave primaria Lezione IIIb - AA 2014/201526
Lo schema relazionale Lezione IIIb - AA 2014/ Abbiamo identificato quindi quattro tabelle: 1. patologie(codice; drg; diagnosi principale) codice: int drg: char(3) diagnosi_principale: char(50) 2. sedi_elettorali (numero; distanza; votanti) numero: int distanza: float votanti: int 3. pazienti(numero; sesso; eta; numero_sede_elettorale) numero: int sesso: char(1) eta: int numero_sede_elettorale: int (stesso tipo di sedi_elettorali.numero) 4. soffre(codice patologia; numero paziente) codice patologia: int (stesso tipo di patologie.codice) numero paziente: int (stesso tipo di pazienti.numero)
Lo schema relazionale Abbiamo identificato quindi quattro relazioni: 1. patologie(codice, drg, diagnosi principale) 2. sedi_elettorali (numero, distanza, votanti) 3. soffre(codice patologia, numero paziente) 4. pazienti(numero, sesso, eta, numero sede elettorale) Sono ovviamente le stesse che abbiamo trovato utilizzando l’algoritmo non grafico. Lezione IIIb - AA 2014/201528
Esercizio Lezione IIIb - AA 2014/ Si desidera modellare la gestione di un ospedale. La base di dati dovrà memorizzare informazioni relative ai pazienti, al ricovero dei pazienti nei reparti ospedalieri, ai trattamenti cui sono sottoposti i pazienti ed alla loro dimissione. Di ogni paziente, vengono registrati il nome, l'indirizzo, il sesso, il numero di carta di identità, il numero della tessera sanitaria, il reparto ove è ricoverato e il letto occupato (reparto e letto possono cambiare durante il periodo di degenza). Di ogni reparto, vengono memorizzati il nome, la localizzazione, il nome del primario responsabile, il nome degli (eventuali) altri medici presenti, il numero delle stanze, il numero di letti presenti per stanza e il numero di letti occupati per stanza. Si vuole inoltre tener traccia delle date di ricovero, di (eventuale) trasferimento da un reparto all'altro e di dimissione dei pazienti. Ogni paziente può essere sottoposto a più trattamenti durante il periodo di degenza ospedaliera. Di ogni trattamento, vengono conservate informazioni relative al nome, alla durata e alle possibili reazioni del paziente.
Esercizi Lezione IIIb - AA 2014/ Realizzare il database che permette di memorizzare i codici ICD-10 I codici ICD-10 sono organizzati in capitoli, blocchi e patologie. I capitoli hanno una numerazione con numeri romani, i blocchi e le patologie hanno una numerazione alfanumerica Realizzare il database di una biblioteca Voglio memorizzare la collocazione di ogni volume. Per ogni volume voglio sapere il tipo (libro, rivista, proceedings, etc.), la casa editrice, e voglio memorizzarne gli autori Realizzare il database (semplificato) che permette di calcolare le spese – in termini di DRG – all’interno di un ospedale Voglio memorizzare, per ciascun reparto, i pazienti, la patologia (usando i codici ICD-9-CM), e il DRG assegnato
Esempi Lezione IIIb - AA 2014/ Si convertano in schema relazionale gli esempi di schemi E/Rintrodotti precedentemente Codici ICD-10 Biblioteca Calcolo delle spese - in termini di DRG - all'interno di un ospedale Valutazione dei servizi ospedalieri Analisi delle acque
Definizioni formali (1) Lezione IIIb - AA 2014/201532
Definizioni formali (2) Lezione IIIb - AA 2014/201533
Definizioni formali (3) Lezione IIIb - AA 2014/201534
Vincoli su schemi relazionali Un vincolo è una proprietà che deve essere soddisfatta dalle istanze di una base di dati. Ogni vincolo può essere visto come un predicato che può assumere il valore vero o falso: se il predicato assume il valore vero diciamo che l’istanza soddisfa il vincolo. Lezione IIIb - AA 2014/201535
Vincoli su schemi relazionali Lezione IIIb - AA 2014/201536
Vincoli su schemi relazionali Lezione IIIb - AA 2014/201537
Vincoli su schemi relazionali Un vincolo di integrità referenziale esplicita l’esistenza di una relazione (in terminologia E/R) fra differenti entità Violare un vincolo di integrità referenziale significa provocare problemi di consistenza, e.g. L’attributo ICD10 rappresenta la patologia di un paziente ed è chiave esterna verso la tabella delle patologie Il codice J01.10 non è presente nella tabella delle patologie e viola la seconda proprietà delle chiavi esterne Lezione IIIb - AA 2014/201538
Operazioni sulla base di dati e vincoli (1) Lezione IIIb - AA 2014/ Inserimento L'inserimento di una tupla in una relazione può violare tutti i tipi di vincoli Il vincolo di dominio se un valore non e nel dominio del corrispondente attributo Il vincolo di chiave se il valore della chiave primaria è già presente nella relazione Il vincolo di integrità di chiave se il valore della chiave primaria e nullo Il vincolo di integrità referenziale se il valore della chiave esterna non e presente nella relazione referenziata
Operazioni sulla base di dati e vincoli (2) Lezione IIIb - AA 2014/ Cancellazione La cancellazione di una tupla da una relazione può violare solo il vincolo di integrità referenziale Si viola il vincolo di integrità referenziale se viene eliminata una riga che e referenziata tramite una chiave esterna di una differente relazione Modica La modica può essere vista come una operazione di cancellazione seguita da un inserimento Si fa notare che la modica di attributi che non siano ne chiave primaria ne chiave esterna non provocano problemi
Dipendenze funzionali Lezione IIIb - AA 2014/201541
Dipendenze funzionali e problemi di consistenza Lezione IIIb - AA 2014/ La risoluzione di problemi potenzialmente causabili dall'esistenza di dipendenze funzionali devono essere risolte normalizzando la base di dati Normalizzazione. La normalizzazione è il processo per cui schemi relazionali non soddisfacenti vengono decomposti, dividendone gli attributi in dipendenza funzionale, e creando schemi relazionali più piccoli dotati delle proprietà richieste
Seconda forma normale (2NF) Lezione IIIb - AA 2014/ Uno schema relazionale è in seconda forma normale (2NF) se nessun attributo A e in dipendenza funzionale con la chiave primaria PK Prendiamo l'esempio di una relazione che mi rappresenta i pazienti curati dai medici di un reparto
Normalizzazione in seconda forma normale Lezione IIIb - AA 2014/ Per normalizzare una relazione in 2NF, è necessario rimuovere dalla relazione tutti gli attributi in dipendenza funzionale e posizionarli in una relazione separata
Terza forma normale (3NF) Lezione IIIb - AA 2014/201545
Terza forma normale (3NF) Lezione IIIb - AA 2014/201546