Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoPio Rocca Modificato 8 anni fa
1
BASI DATI: modello relazionale BIOINGEGNERIA ELETTRONICA ED INFORMATICA Lezione IIIb - AA 2014/20151
2
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
3
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
4
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
5
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
6
Algoritmo di conversione E/R in relazionale Lezione IIIb - AA 2014/20156 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
7
Algoritmo di conversione E/R in relazionale Lezione IIIb - AA 2014/20157 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)
8
Algoritmo di conversione E/R in relazionale Lezione IIIb - AA 2014/20158 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)
9
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
10
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
11
Lo schema relazionale dello studio ambientale Passo (2) : Non c’è nessuna relazione di tipo 1:1 Lezione IIIb - AA 2014/201511
12
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
13
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
14
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
15
Dallo schema E/R allo schema relazionale Lezione IIIb - AA 2014/201515 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
16
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
17
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
18
Algoritmo «grafico» (3) Lezione IIIb - AA 2014/201518 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
19
Algoritmo «grafico»: analisi geografica Partiamo dall’entità «paziente» e procediamo con le relazioni... Lezione IIIb - AA 2014/201519
20
Algoritmo «grafico» analisi geografica La relazione «risiede» è stata aggregata all’entità «paziente» in un gruppo Lezione IIIb - AA 2014/201520
21
Primo blocco Entità patologia Relazione patologie(codice, drg, diagnosi_principale) Lezione IIIb - AA 2014/201521
22
Secondo blocco Entità sede_elettorale Relazione: sedi_elettorali (numero, distanza, votanti) Lezione IIIb - AA 2014/201522
23
Quarto blocco Relazione soffre soffre(numero_paziente,codice_patologia) Lezione IIIb - AA 2014/201523
24
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
25
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
26
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
27
Lo schema relazionale Lezione IIIb - AA 2014/201527 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)
28
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
29
Esercizio Lezione IIIb - AA 2014/201529 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.
30
Esercizi Lezione IIIb - AA 2014/201530 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
31
Esempi Lezione IIIb - AA 2014/201531 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
32
Definizioni formali (1) Lezione IIIb - AA 2014/201532
33
Definizioni formali (2) Lezione IIIb - AA 2014/201533
34
Definizioni formali (3) Lezione IIIb - AA 2014/201534
35
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
36
Vincoli su schemi relazionali Lezione IIIb - AA 2014/201536
37
Vincoli su schemi relazionali Lezione IIIb - AA 2014/201537
38
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
39
Operazioni sulla base di dati e vincoli (1) Lezione IIIb - AA 2014/201539 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
40
Operazioni sulla base di dati e vincoli (2) Lezione IIIb - AA 2014/201540 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
41
Dipendenze funzionali Lezione IIIb - AA 2014/201541
42
Dipendenze funzionali e problemi di consistenza Lezione IIIb - AA 2014/201542 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
43
Seconda forma normale (2NF) Lezione IIIb - AA 2014/201543 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
44
Normalizzazione in seconda forma normale Lezione IIIb - AA 2014/201544 Per normalizzare una relazione in 2NF, è necessario rimuovere dalla relazione tutti gli attributi in dipendenza funzionale e posizionarli in una relazione separata
45
Terza forma normale (3NF) Lezione IIIb - AA 2014/201545
46
Terza forma normale (3NF) Lezione IIIb - AA 2014/201546
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.