BASE DI DATI. Progettazione logica. Informatica Umanistica Università di Pisa

Documenti analoghi
Basi di Dati. La Progettazione Logica. Sommario. Il Processo di Progetto della BD. Algoritmo di Progettazione Logica

Basi di Dati. Progettazione Logica

BASE DI DATI. Esercizi Progettazione concettuale Progettazione logica. Informatica Umanistica Università di Pisa

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella

Algebra Relazionale. Concetti Fondamentali

Basi di Dati. Modello Concettuale

Basi di Dati. Definizione del Modello Concettuale dei Dati: Concetti Fondamentali

Basi di Dati. Algebra Relazionale. Concetti Fondamentali

BASE DI DATI. Esercizio: FACEBOOK Progettazione concettuale Progettazione logica. Informatica Umanistica Università di Pisa

4/16/07. Le Basi di Dati Relazionali. Concetti Fondamentali. Base di dati, tabella, ennupla, attributo, dominio. Valori nulli

Algebra Relazionale. Concetti Fondamentali

Basi di Dati. Sistemi per Basi di Dati Relazionali: Modello Logico. Concetti Fondamentali. Concetti Fondamentali

Basi di Dati. Algebra Relazionale. Concetti Fondamentali

BASI di DATI. SQL: concetti fondamentali

Basi di Dati. Concetti Avanzati

Mirco Nanni ISTI CNR, Pisa. CdL in Lettere A.A. 2007/2008

Basi di Dati. Concetti Fondamentali SQL-92 25/02/2004. Concetti Fondamentali. Introduzione. Interrogazioni. Creazione ed eliminazione di bd

Introduzione. Introduzione

BASE DI DATI. Esercizio: Agenzia pubblicitaria Progettazione concettuale Progettazione logica. Informatica Umanistica Università di Pisa

Basi di Dati SQL-92. Concetti Fondamentali

Basi di Dati. Dettagli e Approfondimenti

Interrogazioni con Raggruppamenti

BASE DI DATI. Esercizi Progettazione concettuale Progettazione logica Concetti avanzati SQL: Raggruppamento Nidificazione

BASE DI DATI. Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste. Informatica Umanistica Università di Pisa

SQL: RAGGRUPPAMENTI, QUANTIFICAZIONE, METODO. Patrizio Dazzi a.a

BASE DI DATI. Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste. Informatica Umanistica Università di Pisa

Basi di Dati. Dettagli e Approfondimenti SQL-92 25/02/2004. Dettagli e Approfondimenti. DDL: Tabelle. DML: Aggiornamenti.

Basi di Dati SQL-92. Dettagli e Approfondimenti

Basi di Dati SQL-92. Dettagli e Approfondimenti

VISTE. 19/11/2015 Concetti Avanzati - SQL 71

BASE DI DATI. Esercizio: Campionato corse Progettazione concettuale Progettazione logica. Informatica Umanistica Università di Pisa

SQL: ALTRE FORME DI JOIN, FUNZIONI AGGREGATIVE, ESPRESSIONI. Patrizio Dazzi a.a

4/16/07. Algebra Relazionale. Introduzione. La Base di Dati di Esempio

IL MODELLO RELAZIONALE. Patrizio Dazzi a.a

Gestione e Analisi dei Dati. Lezione 4 Relazioni multi tabella Relazioni uno-a-uno, uno-a-molti, molti-a-molti

BASE DI DATI. Progettazione Concettuale Parte I: Definizione del Modello Concettuale dei Dati: Concetti Fondamentali

Progettazione di basi di dati D B M G

Progettazione concettuale usando il modello Entità-Relazione (ER)

Corso di Laurea in Ingegneria Informatica Fondamenti di informatica II Modulo Basi di dati a.a

2 - Metodologie e modelli per la progettazione di BD. Informatica II Basi di Dati (08/09) Parte 1. Introduzione alla progettazione

SCHEMA E/R DI UNA UNIVERSITA'

Progettazione logica relazionale (1/2)

SQL: SCRIVERE INTERROGAZIONI E ANNIDARLE. Patrizio Dazzi a.a

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

STRUCTURED QUERY LANGUAGE (SQL) E INTERROGAZIONI. Patrizio Dazzi a.a

Alessandra Raffaetà. La costruzione di una base di dati

Progettazione logica. Algoritmo di traduzione E-A in DDL-SQL

Traduzione. Scelta degli identificatori principali

La progettazione logica Traduzione dal modello Entità-Associazione al modello relazionale Anno accademico 2008/2009

Basi di da' Il modello relazionale. Anna Monreale Università di Pisa

ESAME di INFORMATICA e ARCHIVIAZIONE

Il modello Entità-Relazioni (entity-relationship)

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati. Progettazione di Basi di Dati: Introduzione. Sommario. Il Processo di Sviluppo dell Applicazione

REGISTRO DELLE LEZIONI

Scopo Laboratorio di Informatica

Model o relazionale 1

LA PROGETTAZIONE LOGICA

ESAME di INFORMATICA e ARCHIVIAZIONE

Partizionamento/accorpamento di concetti

Modello relazionale e algebra relazionale

Scopo Informatica. Sistema informativo. Sistema informatico. Gestione dell informazione per le lauree triennali

Traduzione ER - relazionale

D B M G. Sistemi informativi. Modello relazionale e algebra relazionale. Modello relazionale. Algebra relazionale

Modello relazionale e algebra relazionale

Elena baralis 2007 Politecnico di Torino 1

Informatica. per laurea triennale di area non informatica. 1 Le basi di dati

Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno Cognome e nome: Matricola:

Progettazione logica relazionale. Basi di dati. Elena Baralis 2007 Politecnico di Torino D B M G D B M G3 D B M G6 D B M G5

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Fondamenti di Informatica e Programmazione

Basi di dati e Relazioni

INTRODUZIONE ALLA PROGETTAZIONE. Patrizio Dazzi a.a

Lezione 4. Dallo schema ER al relazionale

Corso di Basi di Dati

Progettazione logica relazionale (1/2) Progettazione logica. Progettazione logica relazionale (2/2) Introduzione. Progettazione logica

SQL /10/2016 Basi di dati - SQL 1

Obiettivi della progettazione logica. Fasi della progettazione logica. Ristrutturazione dello schema ER. Parte VI. Progettazione logica

Vincoli. In ogni schema E/R sono presenti dei vincoli Alcuni sono impliciti, in quanto dipendono dalla semantica stessa dei costrutti del modello:

Scopo. Informatica. Sistema informativo. Sistema informatico

Dichiarazione degli schemi in SQL DDL 1

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di dati I 8 settembre 2011 Tempo a disposizione: un ora e trenta minuti. Libri chiusi.

PROGETTAZIONE LOGICA. Prof. Ing. Alfredo GARRO 1/6. Artista. Cantante. DataDiNascita. Codice. Nazionalità

Esame di Basi di Dati SOLUZIONE APPELLO 05/09/2011

Basi di dati (database)

Modello Relazionale. Università degli Studi di Salerno

REGISTRO DELLE LEZIONI

Basi di Dati Corso di Laura in Informatica Umanistica

Traduzione di associazioni molti a molti

Laboratorio di Basi di Dati

Concettuale. Giuseppe Amato

SQL-DDL. Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste

LE BASI DI DATI. Seconda parte La progettazione di database Relazionali SCHEMA LOGICO Regole di derivazione Tabelle riassuntive

Elena Baralis 2007 Politecnico di Torino 1

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Progettazione logica. Dati di ingresso e uscita

Principi di Progettazione del Software a.a

Progettazione logica D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2012/2013

Transcript:

BASE DI DAI Progettazione logica Informatica Umanistica Università di Pisa

Concetti Fondamentali (precedente lezione) Introduzione Raccolta dei Requisiti Diagramma Concettuale delle Classi Classe Associazione Cardinalità Generalizzazione Linee Guida per la Modellazione Progettazione logica 2

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 1-1 e 1-molti Progettazione logica 3

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 Requisiti della base di dati Progettazione concettuale Schema concettuale Progettazione logica Schema logico Progettazione fisica Schema fisico Progettazione logica 4

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 viene condotta sulla base di un semplice algoritmo sistematico Progettazione Fisica lo schema logico viene sottoposto a verifica e viene ottimizzato attività mista: progettazione e tuning difficilmente sistematizzabile In questa lezione ci concentriamo sulla progettazione logica Progettazione logica 5

Algoritmo di Progettazione Logica I passo: traduzione iniziale delle classi non coinvolte in gerarchie II passo: traduzione iniziale delle gerarchie III passo: traduzione degli attributi multivalore IV passo: traduzione delle associazioni molti a molti V passo: traduzione delle associazioni uno a molti VI passo: traduzione delle associazioni uno a uno VII passo: introduzione di eventuali ulteriori vincoli VIII passo: progettazione degli schemi esterni Progettazione logica 6

Schema Concettuale 0..* titolarità Corso <<id>> codice titolo ciclo 1..1 < relativo a relatore solo se al 3 anno 1 0..* Esame voto lode data ha sostenuto > 0..* irocinio 0..* cognome nome qualifica numelefono [0..*] relatore > 0..1 0..* <<id>> matricola cognome Nome ciclo anno 1..1 sede datainizio durata ha svolto > 0..1 Interno Supplente Dipartimento Laurea Laurea riennale Specialistica tutor > 0..* 0..1 Progettazione logica 7

Notazione Grafica per le abelle Stereotipo di UML tabella e attributi chiave primaria chiave esterna Esempio: CREAE ABLE ( matricola integer PRIMARY KEY, cognome char(20), nome char(20), anno integer, ciclo char(20), relatore char(4) REFERENCES (codice)); Studenti matricola INEGER anno INEGER ciclo CHAR(20) relatore CHAR(4) codice CHAR(4) FK Progettazione logica 8

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 Progettazione logica 9

I Passo: raduzione delle Classi individuare la chiave primaria Chiave primaria deve essere semplice da usare e compatta identificatore interno esplicito (es: matricola per, codice per Corso) un identificatore esterno può diventare una chiave primaria esterna (es: matricola dello studente per irocinio) purché sia compatto altrimenti si aggiunge un identificatore sintetico Progettazione logica 10

I Passo: raduzione delle Classi Esempio: Classi e chiave primaria Corso codice CHAR(3) identificatore esplicito Corso titolo CHAR(20) <<id>> codice titolo ciclo ciclo CHAR(20) Esame codice CHAR(5) identificatore sintetico Esame voto INEGER voto lode data lode BOOL data DAE irocinio irocinio matricola INEGER, FK identificatore esterno luogo sede CHAR(20) datainizio durata datainizio DAE durata INEGER Progettazione logica 11

I Passo: raduzione delle Classi Esempio: Classi e chiave primaria Corso <<id>> codice titolo ciclo Corso codice CHAR(3) titolo CHAR(20) ciclo CHAR(20) {ADS Algoritmi e Strutt. Dati laurea tr.} {PR1, Programm. I laurea tr.} {INF, Inf. eorica laurea sp.} codice titolo ciclo PR1 Programmazione I laurea tr. ASD Algoritmi e Str. Dati laurea tr. INF Informatica eorica laurea sp. Progettazione logica 12

I Passo: raduzione delle Classi Esempio irocinio luogo datainizio durata irocinio matricola INEGER sede CHAR(20) datainizio DAE durata INEGER, FK {Microsoft, 25/06/2002, 3 mesi} {SOGEI 1/7/2002, 4 mesi} {Microsoft, 25/06/2002, 3 mesi} studente sede datainizio durata 444 Microsoft 2002-05-15 3 77777 Microsoft 2002-05-15 3 88888 Basica 2002-09-01 3 Progettazione logica 13

II Passo: raduzione delle Gerarchie E l unico passo di una certa complessità non esiste la generalizzazione nel modello relazionale re possibili strade: radurre solo il padre della gerarchia (accorpare i figli nel padre) tradurre solo i figli della gerarchia (accorpare il padre nei figli) tradurre il padre e i figli collegandoli con chiavi esterne Progettazione logica 14

II Passo: raduzione delle Gerarchie I Soluzione: Solo il padre un unica tabella con il nome 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 applicazioni genera valori nulli Esempio: cognome nome qualifica per ora l attributo multivalore viene trascurato codice CHAR(4) numelefono [0..*] Dipartimento CHAR(10) qualifica CHAR(15) Interno Dipartimento Supplente tipo CHAR(10) tipo può valere: -interno oppure -supplente Progettazione logica 15

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 cognome Interno codice CHAR(4) Dipartimento CHAR(10) Esempio: nome qualifica numelefono [0..*] qualifica CHAR(15) Supplente codice CHAR(4) Interno Dipartimento Supplente qualifica CHAR(15) Progettazione logica 16

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 Esempio: cognome codice CHAR(4) nome qualifica qualifica CHAR(15) numelefono [0..*] Interno Supplente codice CHAR(4),FK codice CHAR(4), FK Dipartimento CHAR(10) indirizzo CHAR(20) Interno Supplente Dipartimento indirizzo Progettazione logica 17

II Passo: raduzione delle Gerarchie (cont. esempio) III Soluzione: Sia il padre che i figli codice CHAR(4) qualifica CHAR(15) codice cognome nome qualifica Interno Supplente F otti Francesco ordinario CV Vieri Christian associato codice CHAR(4) Dipartimento CHAR(10),FK codice CHAR(4) indirizzo CHAR(20), FK ADP Del Piero Alessandro null Interno Supplente codice Dipartimento codice Indirizzo F Ingegneria ADP Stadio delle Alpi, orino CV Informatica Progettazione logica 18

II Passo: raduzione delle Gerarchie (cont. esempio) Gerarchia: Docenti soluzione n.1 per i docenti (Solo il padre) un unica tabella cognome nome qualifica numelefono [0..*] per ora l attributo multivalore viene trascurato codice CHAR(4) Dipartimento CHAR(10) qualifica CHAR(15) tipo CHAR(10) Interno Dipartimento Supplente tipo può valere: -interno oppure -supplente Progettazione logica 19

II Passo: raduzione delle Gerarchie (cont. esempio) Gerarchia: Studenti soluzione n.1 per gli studenti (Solo il padre) un unica tabella <<id>> matricola cognome Nome anno matricola INEGER anno INEGER Laurea riennale Laurea Specialistica ciclo CHAR(15) Progettazione logica 20

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 Esempio: cognome codice CHAR(4) Numeri nome numero CHAR(15) qualifica docente CHAR(4) FK numelefono [0..*] Dipartimento CHAR(10) qualifica CHAR(15) tipo CHAR(10) Progettazione logica 21

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 titolarità 1..* 0..* Corso <<id>> codice titolo ciclo cognome nome qualifica Corso codice CHAR(3) titolo CHAR(20) ciclo CHAR(20) itolarità corso CHAR(3) docente CHAR(4) primoannoit INEGER, FK, FK numelefono [0..*] codice CHAR(4) primoannoit Progettazione logica 22

IV Passo: rad. delle Associazioni m-m (cont. esempio) 1..* Corso <<id>> codice titolo ciclo Corso codice CHAR(3) titolo CHAR(20) ciclo CHAR(20) codice titolo ciclo PR1 Programmazione I laurea tr. ASD Algoritmi e Str. Dati laurea tr. INF Informatica eorica laurea sp. titolarità 0..* cognome nome qualifica numelefono [0..*] itolarità corso CHAR(3) docente CHAR(4) primoannoit INEGER codice CHAR(4), FK, FK docente corso primoannoit F PR1 2001 CV ASD 2002 F ASD 1999 codice cognome nome F otti Francesco primoannoit CV Vieri Christian ADP Del Piero Alessandro Progettazione logica 23

V Passo: rad. delle Associazioni 1-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 1 chiave esterna della tabella dal lato 1 nella tabella corrispondente alla classe dal lato m Oggetto Lato 1 1..1 < relativo a 0..* Oggetto Lato m Chiave esterna su oggetto Lato 1 Progettazione logica 24

V Passo: rad. delle Associazioni 1-m (cont. Esempio) Corso <<id>> codice titolo 1..1 < relativo a 0..* Esame voto lode ciclo data Corso Esame codice CHAR(3) codice CHAR(5) titolo CHAR(20) ciclo CHAR(20) voto INEGER lode BOOL data DAE corso CHAR(3) FK Progettazione logica 25

V Passo: rad. delle Associazioni 1-m (cont. Esempio) cognome nome qualifica numelefono [0..*] relatore > 0..1 0..* <<id>> matricola cognome Nome Anno ciclo codice CHAR(4) matricola INEGER Dipartimento CHAR(10) anno INEGER qualifica CHAR(15) Ciclo CHAR(20) tipo CHAR(10) relatore CHAR(4) FK Progettazione logica 26

V Passo: rad. delle Associazioni 1-m (cont. Esempio) cognome nome qualifica numelefono [0..*] relatore > 0..1 0..* <<id>> matricola cognome Nome Anno ciclo codice CHAR(4) Dipartimento CHAR(10) qualifica CHAR(15) tipo CHAR(10) matricola INEGER anno INEGER Ciclo CHAR(20) relatore CHAR(4) FK codice cognome nome F otti Francesco CV Vieri Christian ADP Del Piero Alessandro matricola cognome nome relatore 111 Rossi Mario null 222 Neri Paolo null 333 Rossi Maria null 444 Pinco Palla F 77777 Bruno Pasquale F 88888 Pinco Pietro CV Progettazione logica 27

V Passo: rad. delle Associazioni 1-m (cont. Esempio) Attenzione: nel caso degli studenti, l associazione del tutorato produrrebbe un vincolo di riferimento ricorsivo (scomodo) Il sistema deve tenere traccia delle attività di tutorato svolte dagli studenti della laurea sp. nei confronti degli studenti della laurea triennale <<id>> matricola cognome Nome anno Lurea Laurea riennale Specialistica 0..* 0..1 tutor > matricola INEGER anno INEGER ciclo CHAR(15) matricola INEGER anno INEGER Ciclo CHAR(20) relatore CHAR(4) FK tutor INEGER FK nonostante non sia scorretta, non adotteremo questa soluzione Progettazione logica 28

V Passo: rad. delle Associazioni 1-m (cont. Esempio) I sistema deve tenere traccia delle attività di tutorato svolte dagli studenti della laurea sp. nei confronti degli studenti della laurea triennale Laurea Laurea riennale Specialistica 0..* 0..1 tutor > utorato studente INEGER tutor INEGER, FK, FK matricola INEGER anno INEGER Ciclo CHAR(20) relatore CHAR(4) FK Progettazione logica 29

VI Passo: rad. delle Associazioni 1-1 Discorso simile a quelle 1 a molti posso scegliere dove mettere la chiave esterna si preferisce un lato in cui la card. min. è 1 matricola INEGER irocinio irocinio <<id>> matricola cognome Nome Anno 1..1 0..1 ha svolto > sede datainizio durata matricola INEGER sede CHAR(20) datainizio DAE durata INEGER, FK ciclo Progettazione logica 30

Corso itolarità codice CHAR(3) corso CHAR(3), FK titolo CHAR(20) Esame docente CHAR(4), FK ciclo CHAR(20) codice CHAR(5) voto INEGER irocinio studente INEGER sede CHAR(20) datainizio DAE, FK codice CHAR(4) lode BOOL data DAE corso CHAR(3) stud INEGER FK FK durata INEGER dipartimento CHAR(10) Numeri qualifica CHAR(15) tipo CHAR(10) numero CHAR(15) docente CHAR(4) FK matricola INEGER utorato anno INEGER Ciclo CHAR(20) studente INEGER tutor INEGER, FK, FK relatore CHAR(4) FK Progettazione logica 31

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.) Progettazione logica 32

VII Passo: Aggiunta di Vincoli Ulteriori In particolare: le cardinalità minime danno origine a vincoli NO NULL Esempio: Corso <<id>> codice titolo < relativo a 1..1 0..* Esame voto lode Corso codice CHAR(3) titolo CHAR(20) ciclo data ciclo CHAR(20) CREAE ABLE Esame ( codice char(5) PRIMARY KEY, corso char(3) NO NULL REFERENCES Corso(codice),... ); Progettazione logica 33

Lo Schema Finale Vincolo: Gli studenti della laurea triennale possono chiedere un relatore solo se sono iscritti al terzo anno codice CHAR(4) CREAE ABLE ( codice char(4) PRIMARY KEY, cognome varchar(20) NO NULL, nome varchar(20) NO NULL, qualifica char(15), dipartimento char(10), tipo char(10) NO NULL ); matricola INEGER CREAE ABLE ( matricola integer PRIMARY KEY, anno INEGER cognome char(20), Ciclo CHAR(20) nome char(20), anno integer, relatore CHAR(4) ciclo char(20), relatore char(4) REFERENCES (codice)) CHECK(relatore is NULL or anno=3 or ciclo= Laurea sp. ) ); FK dipartimento CHAR(10) qualifica CHAR(15) tipo CHAR(10) Progettazione logica 34

CREAE ABLE Corso ( codice char(3) PRIMARY KEY, titolo varchar(20) NO NULL, ciclo 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>=18 and voto<=30), CHECK (not lode or voto=30), UNIQUE (studente, corso) ); Corso codice CHAR(3) titolo CHAR(20) ciclo CHAR(20) Esame codice CHAR(5) voto INEGER lode BOOL data DAE Vi deve essere un vincolo sul voto? corso CHAR(3) stud INEGER Vi deve essere un vincolo sulla lode? FK FK Vi deve essere un vincolo su «studente» e «corso»? Progettazione logica 35

CREAE ABLE irocinio ( studente integer PRIMARY KEY REFERENCES (matricola), sede char(20) NO NULL, datainizio date, durata integer ); irocinio CREAE ABLE utorato ( studente integer REFERENCES (matricola), tutor integer REFERENCES (matricola), PRIMARY KEY (studente, tutor) ); studente INEGER sede CHAR(20) datainizio DAE durata INEGER matricola INEGER, FK anno INEGER Ciclo CHAR(20) utorato studente INEGER tutor INEGER, FK, FK relatore CHAR(4) FK Progettazione logica 36

Corso itolarità codice CHAR(3) corso CHAR(3), FK titolo CHAR(20) docente CHAR(4), FK ciclo CHAR(20) codice CHAR(4) CREAE ABLE Numeri ( numero char(9) PRIMARY KEY, docente char(4) REFERENCES (codice) ); dipartimento CHAR(10) Numeri qualifica CHAR(15) tipo CHAR(10) numero CHAR(15) docente CHAR(4) FK CREAE ABLE itolarita ( docente char(4) REFERENCES (codice), corso char(3) REFERENCES Corso(codice), PRIMARY KEY (docente, corso) ); Progettazione logica 37

Una Possibile Istanza codice cognome nome qualifica dipartimento tipo F otti Francesco ordinario Ingegneria interno CV Vieri Christian associato Informatica interno ADP Del Piero Alessandro null null supplente matricola cognome nome ciclo anno relatore 111 Rossi Mario laurea tr. 1 null 222 Neri Paolo laurea tr. 2 null 333 Rossi Maria laurea tr. 1 null 444 Pinco Palla laurea tr. 3 F 77777 Bruno Pasquale laurea sp. 1 F 88888 Pinco Pietro laurea sp. 1 CV Progettazione logica 38

Corso utorato Esame codice titolo ciclo PR1 Programmazione I laurea tr. ASD Algoritmi e Str. Dati laurea tr. INF Informatica eorica laurea sp. studente tutor 111 77777 222 77777 333 88888 444 88888 codice studente corso voto lode data pr101 111 PR1 27 false 2002-06-12 asd01 222 ASD 30 true 2001-12-03 inft1 111 INF 24 false 2001-09-30 pr102 77777 PR1 21 false 2002-06-12 asd02 77777 ASD 20 false 2001-12-03 asd03 88888 ASD 28 false 2002-06-13 pr103 88888 PR1 30 false 2002-07-01 inft2 88888 INF 30 true 2001-09-30 Progettazione logica 39

irocinio studente sede datainizio durata 444 Microsoft 2002-05-15 3 77777 Microsoft 2002-05-15 3 88888 SOGEI 2002-09-01 3 Numeri numero docente itolarita docente corso 0971205145 F F PR1 347123456 F 0971205227 VC 0971205363 ADP 338123456 ADP CV ADP ADP F ASD INF PR1 ASD Progettazione logica 40

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 ) Progettazione logica 41

Riepilogo Algoritmo di Progettazione Logica raduzione delle Classi raduzione delle Gerarchie traduzione degli attributi multivalore raduzione delle Associazioni molti a molti 1-molti 1-1 introduzione di eventuali ulteriori vincoli progettazione degli schemi esterni Progettazione logica 42

Esempio Università: Schema concettuale 0..* titolarità Corso <<id>> codice titolo ciclo 1 < relativo a relatore solo se al 3 anno 1 0..* Esame voto lode data ha sostenuto > 0..* irocinio 0..* cognome nome qualifica relatore > 0..1 0..* <<id>> matricola cognome nome 1 luogo datainizio durata numelefono [0..*] annodicorso ha svolto > 0..1 Interno Supplente facolta Laurea Laurea riennale Specialistica 0..* tutor > 0..1 Progettazione logica 43

Esempio Università: Schema logico Corso itolarità codice CHAR(3) corso CHAR(3), FK titolo CHAR(20) Esame docente CHAR(4), FK ciclo CHAR(20) codice CHAR(5) voto INEGER irocinio studente INEGER sede CHAR(20) datainizio DAE, FK codice CHAR(4) lode BOOL data DAE corso CHAR(3) stud INEGER FK FK durata INEGER dipartimento CHAR(10) Numeri qualifica CHAR(15) tipo CHAR(10) numero CHAR(15) docente CHAR(4) FK matricola INEGER utorato anno INEGER studente INEGER, FK Ciclo CHAR(20) tutor INEGER, FK relatore CHAR(4) FK Progettazione logica 44