Basi di Dati La Progettazione Logica Progettazione Logica >> Sommario Sommario Introduzione Il Processo di Progetto della BD Algoritmo di Progettazione Logica raduzione delle Classi raduzione delle Gerarchie raduzione delle Associazioni molti a molti raduzione delle Associazioni - e -molti 2
Progettazione Logica >> Introduzione Introduzione Siamo nella fase di progettazione si è conclusa (un iterazione del)la fase di analisi Attività da svolgere definire l architettura dell applicazione definire la struttura e i metodi delle classi definire la struttura della base di dati Fase successiva: sviluppo 3 Progettazione Logica >> Introduzione Il Processo di Progetto della BD Punto di partenza il modello concettuale dei dati Progettazione Logica dallo schema concettuale viene derivato uno schema logico standard e i necessari schemi esterni Progettazione Fisica lo schema logico viene sottoposto a verifica e viene ottimizzato 4 2
Progettazione Logica >> Introduzione Il Processo di Progetto della BD Progettazione logica viene condotta sulla base di un semplice algoritmo sistematico Progettazione fisica attività mista: progettazione e tuning difficilmente sistematizzabile In questa lezione ci concentriamo sulla progettazione logica 5 Algoritmo di Progettazione Logica I passo: trad. iniziale delle classi non coinvolte in gerarchie II passo: trad. iniziale delle gerarchie III passo: trad. degli attributi multivalore IV passo: trad. delle assoc. molti a molti V passo: trad. delle assoc. uno a molti VI passo: trad. delle assoc. uno a uno VII passo: introduzione di eventuali ulteriori vincoli VIII passo: progettazione degli schemi esterni 6 3
titolarità <<id>> codice titolo numelefono [] relatore > 0.. < relativo a relatore solo se al 3 anno <<id>> matricola anno Esame voto lode data ha sostenuto > irocinio sede datainizio durata ha svolto > 0.. Interno Supplente facolta Laurea Laurea Schema Concettuale riennale Specialistica tutor > 0.. 7 Notazione Grafica per le abelle Stereotipo di UML tabella e attributi chiave primaria chiave esterna Esempio: matricola INEGER CHAR(20) CHAR(20) anno INEGER CHAR(20) relatore CHAR(4) FK CREAE ABLE ( matricola integer PRIMARY KEY, char(20), char(20), codice CHAR(4) anno integer, char(20), relatore char(4) REFERENCES (codice)); 8 4
I Passo: raduzione delle Classi Idea ogni classe diventa una tabella inizialmente gli stessi attributi monovalore successivamente possono essere aggiunti altri attributi E necessario individuare il tipo degli attributi individuare la chiave primaria individuare eventuali chiavi esterne 9 I Passo: raduzione delle Classi Chiave primaria deve essere semplice da usare e compatta identificatore interno esplicito (es: matricola per, codice per ) un identificatore esterno può diventare una chiave primaria esterna (es: matricola dello studente per irocinio) purchè sia compatto altrimenti si aggiunge un identificatore sintetico 0 5
I Passo: raduzione delle Classi <<id>> codice codice CHAR(3) identificatore esplicito titolo titolo CHAR(20) CHAR(20) Esame voto lode Esame codice CHAR(5) voto INEGER identificatore sintetico data lode BOOL data DAE irocinio luogo datainizio irocinio matricola INEGER sede CHAR(20), FK identificatore esterno durata datainizio DAE durata INEGER I Passo: raduzione delle Classi <<id>> codice titolo codice CHAR(3) titolo CHAR(20) CHAR(20) {ADS Algoritmi e Strutt. Dati laurea tr.} {PR, Programm. I laurea tr.} {INF, Inf. eorica laurea sp.} codice PR ASD INF titolo Programmazione I Algoritmi e Str. Dati Informatica eorica laurea tr. laurea tr. laurea sp. 2 6
I Passo: raduzione delle Classi irocinio luogo datainizio durata irocinio matricola INEGER sede CHAR(20) datainizio DAE durata INEGER, FK {Microsoft, 25/06/2002, 3 mesi} {SOGEI /7/2002, 4 mesi} {Microsoft, 25/06/2002, 3 mesi} studente 444 77777 88888 sede Microsoft Microsoft Basica datainizio 2002-05-5 2002-05-5 2002-09-0 durata 3 3 3 3 II Passo: raduzione delle Gerarchie E l unico passo di una certa complessità non esiste la generalizzazione nel modello relazionale re possibili strade tradurre solo il padre della gerarchia tradurre solo i figli della gerarchia tradurre il padre e i figli collegandoli con chiavi esterne 4 7
II Passo: raduzione delle Gerarchie I Soluzione: Solo il padre un unica tabella con il del padre la tabella deve avere tutti gli attributi di padre e figli serve un ulteriore attributo (es: tipo) per distinguere le istanze dei figli conveniente se le operazioni sui figli non sono particolarmente rilevanti nell appl. genera valori nulli 5 II Passo: raduzione delle Gerarchie I Soluzione: Solo il padre per ora l attributo multivalore viene trascurato codice CHAR(4) CHAR(20) CHAR(20) numelefono [] facolta CHAR(0) CHAR(5) tipo CHAR(0) Interno facolta Supplente tipo può valere: -interno oppure -supplente 6 8
II Passo: raduzione delle Gerarchie II Soluzione: Solo i figli una tabella per ciascun figlio ciascun figlio eredita le associazioni e gli attributi del padre possibile solo se la gerarchia è completa conveniente se l applicazione richiede spesso di accedere singolarmente ai figli costringe ad effettuare molte unioni 7 II Passo: raduzione delle Gerarchie II Soluzione: Solo i figli numelefono [] Interno codice CHAR(4) CHAR(20) CHAR(20) facolta CHAR(0) CHAR(5) Interno facolta Supplente Supplente codice CHAR(4) CHAR(20) CHAR(20) CHAR(5) 8 9
II Passo: raduzione delle Gerarchie III Soluzione: Sia il padre che i figli una tabella per il padre e una per ciascun figlio (per ogni istanza del figlio: parte degli attributi nella tabella specifica, parte nella tabella generale) riferimento da ciascun figlio al padre conveniente se bisogna spesso accedere tanto al padre che singolarmente ai figli costringe ad effettuare molti join 9 II Passo: raduzione delle Gerarchie III Soluzione: Sia il padre che i figli numelefono [] codice CHAR(4) CHAR(20) CHAR(20) CHAR(5) Interno Supplente codice CHAR(4),FK codice CHAR(4), FK Interno Supplente facolta CHAR(0) indirizzo CHAR(20) facolta indirizzo 20 0
II Passo: raduzione delle Gerarchie III Soluzione: Sia il padre che i figli codice F otti Francesco ordinario CV Vieri Christian associato ADP Del Piero Alessandro null Interno Supplente codice F facolta Ingegneria codice ADP Indirizzo Stadio delle Alpi, orino CV Scienze 2 II Passo: raduzione delle Gerarchie Nel nostro esempio soluzione n. per i docenti un unica tabella soluzione n. per gli studenti un unica tabella matricola INEGER CHAR(20) CHAR(20) anno INEGER CHAR(5) 22
III Passo: rad. degli Attributi Multiv. Ogni attributo multivalore genera una nuova tabella chiave esterna per fare riferimento alla tabella che traduce la classe originale codice CHAR(4) Numeri numelefono [] CHAR(20) CHAR(20) facolta CHAR(0) CHAR(5) numero CHAR(5) docente CHAR(4) FK tipo CHAR(0) 23 IV Passo: rad. delle Associazioni m-m Ogni associazione molti a molti genera una tabella riferimenti (chiavi esterne) alle tabelle che traducono le classi coinvolte eventuali attributi dell associazione la chiave della tabella deve includere le chiavi esterne 24 2
IV Passo: rad. delle Associazioni m-m..* codice CHAR(3) <<id>> codice titolo titolo CHAR(20) CHAR(20) itolarità titolarità corso CHAR(3), FK docente CHAR(4), FK primoannoit INEGER primoannoit numelefono [] codice CHAR(4) CHAR(20) CHAR(20) attributo dell associazione (nel seguito omesso) 25 IV Passo: rad. delle Associazioni m-m codice PR titolo Programmazione I laurea tr...* <<id>> codice titolo ASD INF Algoritmi e Str. Dati Informatica eorica laurea tr. laurea sp. titolarità docente F corso PR primoannoit 200 CV ASD 2002 F ASD 999 numelefono [] codice F otti Francesco primoannoit CV ADP Vieri Del Piero Christian Alessandro 26 3
V Passo: rad. delle Associazioni -m Potrebbero essere tradotte con nuove tabelle sarebbe inefficiente costringerebbe a più join del normale Generano chiavi esterne ciascuna istanza dell associazione è identificata dall oggetto dal lato chiave esterna della tabella dal lato nella tabella corrispondente alla classe dal lato m 27 V Passo: rad. delle Associazioni -m <<id>> codice titolo < relativo a Esame voto lode data Esame codice CHAR(3) titolo CHAR(20) CHAR(20) codice CHAR(5) voto INEGER lode BOOL P K data DAE corso CHAR(3) FK 28 4
V Passo: rad. delle Associazioni -m numelefono [] relatore > 0.. <<id>> matricola anno codice CHAR(4) CHAR(20) matricola INEGER CHAR(20) CHAR(20) CHAR(20) facolta CHAR(0) anno INEGER CHAR(5) CHAR(5) tipo CHAR(0) relatore CHAR(4) FK 29 V Passo: rad. delle Associazioni -m numelefono [] relatore > 0.. <<id>> matricola anno matricola relatore codice Rossi Mario null F otti Francesco 222 Neri Paolo null CV Vieri Christian 333 Rossi Maria null ADP Del Piero Alessandro 444 Pinco Palla F 77777 Bruno Pasquale F 88888 Pinco Pietro CV 30 5
V Passo: rad. delle Associazioni -m Attenzione: nel caso degli studenti, l associazione del tutorato produrrebbe un vincolo di riferimento ricorsivo (scomodo) Laurea riennale Laurea Specialistica 0.. tutor > nonostante non sia scorretta, non adotteremo questa soluzione matricola INEGER CHAR(20) CHAR(20) anno INEGER relatore CHAR(4) tutor INEGER FK FK 3 V Passo: rad. delle Associazioni -m Laurea Laurea riennale Specialistica tutor > 0.. utorato matricola INEGER studente INEGER tutor INEGER, FK, FK CHAR(20) CHAR(20) anno INEGER relatore CHAR(4) FK 32 6
VI Passo: rad. delle Associazioni - Discorso simile a quelle a molti posso scegliere dove mettere la chiave est. si preferisce un lato in cui la card. min. è irocinio matricola INEGER <<id>> matricola 0.. ha svolto sede datainizio durata irocinio anno matricola INEGER sede CHAR(20), FK datainizio DAE durata INEGER 33 itolarità corso CHAR(3), FK codice CHAR(3) Esame docente CHAR(4), FK titolo CHAR(20) CHAR(20) codice CHAR(5) voto INEGER irocinio studente INEGER sede CHAR(20) datainizio DAE durata INEGER, FK codice CHAR(4) CHAR(20) CHAR(20) facolta CHAR(0) lode BOOL data DAE corso CHAR(3) stud INEGER Numeri FK FK CHAR(5) numero CHAR(5) tipo CHAR(0) docente CHAR(4) FK matricola INEGER CHAR(20) CHAR(20) utorato CHAR(5) anno INEGER studente INEGER tutor INEGER, FK, FK relatore CHAR(4) FK 34 7
VII Passo: Aggiunta di Vincoli Ulteriori A questo punto sono definite le tabelle gli attributi le chiavi primarie i vincoli di riferimento Per ottenere lo schema conclusivo è possibile aggiungere altri vincoli (NO NULL, DEFAUL, CASCADE, CHECK ecc.) 35 VII Passo: Aggiunta di Vincoli Ulteriori In particolare le cardinalità minime danno origine a vincoli NO NULL Esempio: <<id>> codice titolo < relativo a Esame voto lode data CREAE ABLE Esame ( codice char(5) PRIMARY KEY, corso char(3) NO NULL REFERENCES (codice),... ); 36 8
Progettazione Logica >> Lo Schema Finale Lo Schema Finale CREAE ABLE ( codice char(4) PRIMARY KEY, varchar(20) NO NULL, varchar(20) NO NULL, char(5), facolta char(0), tipo char(0) NO NULL ); CREAE ABLE ( matricola integer PRIMARY KEY, varchar(20) NO NULL, varchar(20) NO NULL, char(20), anno integer, relatore char(4) REFERENCES (codice), CHECK(relatore is NULL or anno=3 or = Laurea sp. ) ); 37 Progettazione Logica >> Lo Schema Finale CREAE ABLE ( codice char(3) PRIMARY KEY, titolo varchar(20) NO NULL, char(20) ); CREAE ABLE Esame ( codice char(5) PRIMARY KEY, studente integer NO NULL REFERENCES (matricola) ON DELEE cascade ON UPDAE cascade, corso char(3) NO NULL REFERENCES Corsi(codice), voto integer, lode bool, data date, CHECK (voto>=8 and voto<=30), CHECK (not lode or voto=30), UNIQUE (studente, corso) ); CREAE ABLE utorato ( studente integer REFERENCES (matricola), tutor integer REFERENCES (matricola), PRIMARY KEY (studente, tutor) ); 38 9
Progettazione Logica >> Lo Schema Finale CREAE ABLE Numeri ( numero char(9) PRIMARY KEY, docente char(4) REFERENCES (codice) ); CREAE ABLE irocinio ( studente integer PRIMARY KEY REFERENCES (matricola), sede char(20) NO NULL, datainizio date, durata integer ); CREAE ABLE itolarita ( docente char(4) REFERENCES (codice), corso char(3) REFERENCES (codice), PRIMARY KEY (docente, corso) ); 39 Progettazione Logica >> Lo Schema Finale Una Possibile Istanza codice F otti Francesco ordinario facolta Ingegneria tipo interno CV Vieri Christian associato Scienze interno ADP Del Piero Alessandro null null supplente matricola Rossi Mario laurea tr. anno relatore null 222 Neri Paolo laurea tr. 2 null 333 Rossi Maria laurea tr. null 444 Pinco Palla laurea tr. 3 F 77777 Bruno Pasquale laurea sp. F 88888 Pinco Pietro laurea sp. CV 40 20
Progettazione Logica >> Lo Schema Finale utorato codice PR titolo Programmazione I laurea tr. studente tutor 77777 ASD Algoritmi e Str. Dati laurea tr. 222 77777 INF Informatica eorica laurea sp. 333 88888 444 88888 Esame codice studente corso voto lode data pr0 PR 27 false 2002-06-2 asd0 222 ASD 30 true 200-2-03 inft INF 24 false 200-09-30 pr02 77777 PR 2 false 2002-06-2 asd02 77777 ASD 20 false 200-2-03 asd03 88888 ASD 28 false 2002-06-3 pr03 88888 PR 30 false 2002-07-0 inft2 88888 INF 30 true 200-09-30 4 Progettazione Logica >> Lo Schema Finale irocinio studente 444 sede Microsoft datainizio 2002-05-5 durata 3 77777 Microsoft 2002-05-5 3 88888 SOGEI 2002-09-0 3 Numeri numero 09720545 docente F itolarita docente F corso PR 34723456 F CV ASD 097205227 VC ADP INF 097205363 ADP ADP PR 33823456 ADP F ASD 42 2
VIII Passo: Schemi Esterni Dallo schema logico è necessario derivare gli schemi esterni eventuali viste autorizzazioni agli utenti su tabelle e viste Esempio: due categorie di utenti segreteria: accesso a tutti i dati docenti: accesso a dati ristretti sugli esami (es: una vista EsameSenzaVoto ) 43 Progettazione Logica >> Sommario Sommario Introduzione Il Processo di Progetto della BD Algoritmo di Progettazione Logica raduzione delle Classi raduzione delle Gerarchie raduzione delle Associazioni molti a molti raduzione delle Associazioni - e -molti 44 22
Progettazione Logica >> Modello Concettuale titolarità <<id>> codice titolo numelefono [] relatore > 0.. < relativo a relatore solo se al 3 anno <<id>> matricola annodi Esame voto lode data ha sostenuto > irocinio sede datainizio durata ha svolto > 0.. Interno Supplente facolta Laurea Laurea Schema Concettuale riennale Specialistica tutor > 0.. 45 23