BASI DATI: modello relazionale BIOINGEGNERIA ED INFORMATICA MEDICA 1
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) 2
Concetti fondamentali 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 3
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? 4
Algoritmo di conversione E/R in relazionale 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 5
Algoritmo di conversione E/R in relazionale 2. 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 6
Algoritmo di conversione E/R in relazionale 3. 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) 7
Algoritmo di conversione E/R in relazionale 4. 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) 8
Lo schema relazionale del questionario 9 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)
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) 10
Lo schema relazionale dello studio ambientale Passo (2) : Non c è nessuna relazione di tipo 1:1 11
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) 12
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) 13
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) 14
Dallo schema E/R allo schema relazionale 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 15
Algoritmo «grafico» (1) Partiamo da una qualunque entità e incorporiamo le relazioni/entità quando la cardinalità è di tipo (1,1) 16
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) 17
Algoritmo «grafico» (3) 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 18
Algoritmo «grafico»: analisi geografica Partiamo dall entità «paziente» e procediamo con le relazioni... 19
Algoritmo «grafico» analisi geografica 20 La relazione «risiede» è stata aggregata all entità «paziente» in un gruppo
Primo blocco Entità patologia Relazione patologie(codice, drg, diagnosi_principale) 21
Secondo blocco Entità sede_elettorale Relazione: sedi_elettorali (numero, distanza, votanti) 22
Quarto blocco Relazione soffre soffre(numero_paziente,codice_patologia) 23
Conversioni delle entità singole 24 Per le entità singole patologia e sede elettorale, si creano due relazioni 1. patologie(codice, drg, diagnosi principale) 2. sedi_elettorali (numero, distanza, votanti)
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 25
Conversioni delle relazioni singole 26 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
Lo schema relazionale 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) 27
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. 28
Esercizio Disegnare lo schema E/R e passare allo schema relazionale. Si studiare l organizzazione ospedaliera per un'azienda sanitaria locale, tenendo traccia delle seguenti informazioni: gli ospedali sono caratterizzati da un codice identificativo, dal nome e dall'indirizzo i dipendenti di ciascun ospedale sono caratterizzati dalla matricola (univoca all'interno dell'ospedale), dal cognome, dal nome, dalla data di nascita, dall'indirizzo e dal numero di figli a carico. I dipendenti sono suddivisi in medici (di cui si conosce l'elenco delle specialità conseguite), dagli impiegati amministrativi (di cui si conosce la mansione) e dagli infermieri. l'ospedale è suddiviso in reparti, caratterizzati da un codice, un nome, il numero di posti letto disponibili. Per ogni reparto, si conosce inoltre il medico che ne e' il primario ed i dipendenti che vi lavorano. ciascuno reparto può gestire delle sale operatorie di cui è noto un codice identificativo, il nome ed il numero di tavoli operatori disponibili. 29
Esercizio Disegnare lo schema E/R e passare allo schema relazionale. Si vuole rappresentare la gestione della maternità di un reparto di ostetricia/ginecologia di un ospedale. Per ogni madre si conosce il nome, l età, il tipo di parto effettuato (cesareo o naturale), il numero di letto e di stanza, eventuali malattie. Per ogni bambino si conosce il nome, la madre, il numero di lettino, la dieta (quantità di latte al giorno). Inoltre si conoscono i turni del personale, che si divide in medici, ostetriche ed infermieri. Di ogni componente del personale si conoscono il nome, il numero di matricola, il turno (per ogni giorno della settimana le ore di presenza e le stanze a cui è assegnato). Per i medici si conoscono i pazienti di cui si occupano, che possono anche essere indipendenti dalle stanze che gli sono assegnate. Per ogni ostetrica si conoscono le madri assistite durante il parto. I medici possono essere ginecologi o pediatri. 30
Esercizio Si progetti una base di dati che contenga le informazioni necessarie per la gestione dell agenda degli appuntamenti di un medico di base. Il sistema a cui si sta pensando deve consentire al medico di: gestire gli appuntamenti dal lunedì al venerdì, a partire dalle ore 8:00 alle ore 19:00. (fissare gli appuntamenti, visionare gli appuntamenti, rimuovere un appuntamento); ogni appuntamento dura 1 ora. gestire le informazioni ricevute dal telefono durante la conversazione telefonica gestire le informazioni relative alle prescrizioni terapeutiche annotare i dati dei pazienti all interno dell agenda, per poter gestire gli appuntamenti di una intera settimana. Per ogni paziente si dovranno memorizzare il nome, cognome,l anno di nascita; Il sistema dovrà fornire al medico: 1. la lista dei pazienti visitati nel mese precedente 2. la lista degli appuntamenti presi per il mese corrente 3. per ogni paziente la lista di tutti gli appuntamenti presi e delle visite eseguite 4. la lista dei farmaci prescritti 5. selezionato il paziente Pippo, la lista dei Codici Impegnativa emessi per la prescrizione dei farmaci in terapia. 31 Lezione IV - BioIngInfMed
Esempi 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 34