GESTIONE VOTI SCOLASTICI Progettare un modello di dati per la gestione delle informazioni riguardanti le prove, nelle diverse materie, sostenute dagli studenti di una scuola media superiore. Il sistema informativo deve essere in grado di consentire alla segreteria della scuola : la gestione anagrafica degli studenti; la gestione delle diverse classi, con il relativo indirizzo, in cui sono suddivisi gli studenti; la gestione dei voti attribuiti agli studenti nelle varie materie e del tipo di prova sostenuta (orale, scritta, pratica); Considerato il problema proposto, precisando eventuali ipotesi aggiuntive, si realizzi: un analisi della realtà di riferimento che illustri le premesse per i successivi passi della progettazione della base di dati; uno schema concettuale della base di dati; uno schema logico della base di dati; la definizione delle relazioni della base di dati in linguaggio SQL; LA SOLUZIONE Analisi Ipotesi aggiuntive Schema concettuale Schema logico Definizione delle relazioni Es. di analisi di un problema a cura del Prof. Salvatore DE GIORGI - I.T.I.S. FALANTO TALSANO (TA) Pag. 1
Analisi Le entità caratteristiche per la risoluzione del problema si riferiscono alla gestione degli studenti e delle materie oggetto delle prove a cui essi sono sottoposti. Le proprietà utilizzate per la definizione delle suddette entità devono consentire di soddisfare le richieste proposte dal problema. La soluzione adottata per la risoluzione del problema prevede l utilizzo del relativo programma da parte di una qualsiasi scuola di primo o secondo grado in quanto non esiste nessun vincolo specifico. Il problema comprende, quindi, la gestione di cinque tabelle, individuate dalle relative entità ed associazioni definite nel modello E/R. Per rispettare le regole di normalizzazione sarebbe stato opportuno definire un altra entità relativa alla località di residenza degli studenti. Per semplificare la trattazione, la località di residenza è definita come attributo degli studenti. Le tabelle relative ai possibili Indirizzi che una scuola può offrire nel suo piano di studi, alle Materie oggetto delle prove a cui vengono sottoposti gli studenti, alle Classi che costituiscono la scuola possono essere definite come tabelle di controllo che vengono create nella fase iniziale di creazione ed avviamento del database e che, nel tempo, subiranno poche modifiche. Il programma di creazione di tali tabelle deve, comunque, prevedere la possibilità di aggiornamento dei dati presenti nelle stesse tabelle. Occorre sempre tener presente che la decisione di ricorrere a tabelle esterne per la gestione di dati particolari deve tener conto del possibile vantaggio e svantaggio. Il vantaggio è senza dubbio quello di consentire all utilizzatore del programma la possibilità di aggiornare i dati in suo possesso, ovvero di inserirne dei nuovi, cancellare quelli non più utilizzabili ed eventualmente apportare delle modifiche ai dati esistenti. Lo svantaggio fondamentale, oltre a quello di appesantire il database, può essere quello di dover, comunque, realizzare un programma per la gestione della tabella con le opportune funzioni di inserimento, modifica, eliminazione, visualizzazione, stampa, ecc. Questa valutazione, ovviamente, può essere fatta solo per tabelle che hanno, oltre alla chiave primaria, come attributo un campo descrizione (corrispondente alla chiave primaria) il cui dominio (l insieme dei possibili valori assunti dall attributo) è costituito da quantità minima di valori e comunque tenendo presente che tali possibili valori sono gestiti dal programma e quindi non modificabili da parte dell utente. Nel nostro caso le due tabelle che si prestano alla suddetta valutazione sono la tabella degli Indirizzi e la tabella delle Materie. Per la tabella delle Materie è, senza dubbio, preferibile ricorrere ad una tabella esterna, in quanto le possibili materie insegnate in una scuola sono un numero sicuramente rilevante ed, inoltre, è anche possibile il caso in cui in una scuola venga inserito un nuovo indirizzo di studi con conseguente introduzione di alcune nuove materie. Per la tabella degli Indirizzi è preferibile ricorrere ad una tabella esterna in quanto rende il programma più facilmente adattabile a qualsiasi tipo di scuola avente indirizzi di Es. di analisi di un problema a cura del Prof. Salvatore DE GIORGI - I.T.I.S. FALANTO TALSANO (TA) Pag. 2
studi diversi, al limite anche a quelle scuole con un solo indirizzo. In pratica nella fase di avviamento del programma, in questa tabella vengono inseriti gli indirizzi relativi alla scuola che utilizza il programma stesso. Per gestire la classificazione della tipologia delle prove è stato inserito un appropriato attributo nella tabella Voti con la funzione di distinguere il tipo di prova a cui è stato sottoposto lo studente. Tale attributo è costituito da un campo di tipo testo (con dimensione uguale a 1) i cui valori sono : O (orale), S (scritto), P (pratico). Un altra soluzione potrebbe essere quella di ricorrere ad una tabella esterna, per es. TipoProve, in cui inserire i vari tipi di prove. In questo specifico caso, facendo riferimento alle considerazioni fatte sull uso di tabelle esterne, sembra più opportuna la prima soluzione proposta. Per quanto riguarda le tabella relativa agli studenti, la sua gestione deve essere realizzata mediante un tipico programma di aggiornamento che prevede le funzioni di inserimento, cancellazione e modifica dei record contenuti nelle suddette tabelle. Tale tabella contiene fondamentalmente i dati anagrafici degli studenti in cui è stato aggiunto un ulteriore attributo (chiave esterna) per associare lo studente alla rispettiva classe di appartenenza. Questa tabella può anche essere creata all avvio della procedura ma è evidente che, per la natura dei dati in essa contenuti, può essere abbastanza frequente il suo aggiornamento (inserimento nuovi studenti, studenti che cambiano scuola o classe, ecc.). Tutte le tabelle precedentemente trattate costituiscono, comunque, la fonte dei dati per la tabella Voti, che serve per gestire tutte le prove sostenute da un qualsiasi studente in una qualsiasi materia. La gestione della tabella in esame rappresenta il nucleo fondamentale della procedura che risolve il problema proposto. La tabella Voti è sicuramente una tabella che all inizio dell anno scolastico non presenta dati e che successivamente sarà sottoposta soprattutto ad operazioni di inserimento (ogni volta che ad uno studente viene assegnato un voto) e le cui modifiche si limitano a correggere eventuali errori nei dati precedentemente inseriti. La tabella Voti non presenta aspetti particolari in quanto viene usata semplicemente per realizzare l associazione molti-a-molti che sussiste fra la tabella Studenti e la tabella Materie. Oltre alle chiavi esterne alle chiavi primarie delle due tabelle in esame, la tabella contiene come attributi il voto, la data della prova, la fase dell anno scolastico (I o II quadrimestre, I, II o III trimestre) ed il tipo di prova in modo da classificare anche il tipo prova a cui è stato sottoposto lo studente. E da notare che con questi dati è sempre possibile conoscere tutti i voti di uno studente in una singola materia, indipendentemente dal docente che ha attribuito il voto. Nel caso in cui, infatti, durante il corso dell anno scolastico, per un qualsiasi motivo dovesse cambiare il docente di una materia, non si avrebbero variazioni sui precedenti voti attribuiti agli studenti dal docente precedente. Es. di analisi di un problema a cura del Prof. Salvatore DE GIORGI - I.T.I.S. FALANTO TALSANO (TA) Pag. 3
Ipotesi aggiuntive Entità Indirizzi : la chiave primaria è costituita da una sigla alfabetica di tre caratteri. L utilizzo dell entità Indirizzi permette di ottenere una descrizione univoca per ogni specializzazione della scuola. Entità "Materia": la chiave primaria è costituita da una sigla alfabetica di tre caratteri. L utilizzo dell entità Materia permette di ottenere una descrizione univoca per ogni materia. Entità "Classe": la chiave primaria è artificiale ad autoincremento. L utilizzo dell entità Classe permette di ottenere una descrizione univoca per ogni classe della scuola. Sono previste solo le proprietà strettamente necessarie per la risoluzione dei quesiti, ovvero il numero della classe, la sezione, l indirizzo, come chiave esterna all entità corrispondente, e l aula in cui è dislocata la classe. Come chiave primaria si potrebbe usare la combinazione dei campi numero, sezione e la chiave esterna della specializzazione. Entità Studente : la chiave primaria è artificiale ad autoincremento per evitare i problemi generati dalle omonimie. Sono previsti solo i dati anagrafici strettamente necessari per la risoluzione del problema con la chiave esterna della classe. Relazione Voti : la chiave primaria è artificiale ad autoincremento. La relazione contiene oltre alle chiavi esterne alle entità interessate (Studente e Materia) le proprietà necessarie alla gestione della prove e precisamente il voto, la data della prova, la fase dell anno scolastico ed il tipo di prova sostenuta (O, S,P). Es. di analisi di un problema a cura del Prof. Salvatore DE GIORGI - I.T.I.S. FALANTO TALSANO (TA) Pag. 4
Schema concettuale della base di dati Tipi di entità I tipi di entità caratteristici del sistema sono : Indirizzi contiene l elenco dei vari indirizzi della scuola; Materia contiene l elenco delle materie oggetto delle verifiche; Classe contiene l elenco di tutte le classi della scuola ; Studente contiene informazioni anagrafiche degli studenti della scuola; Attributi Tipo di entità Indirizzi Materia Classe Studente Sistema informativo Gestione Prove Studenti idindirizzo, Descrizione idmateria, Descrizione Attributi idclasse, Numero, Sezione, Indirizzo, Aula idstudente, Cognome, Nome, Via, Residenza, Telefono, Data di nascita; Relazioni fra le entità Le relazioni tra i tipi di entità nel modello dei dati sono individuate nel seguente Modello Entità/Relazioni (E/R) : INDIRIZZO CLASSE MATERIA Verifica STUDENTE Voto Periodo DataProva Tipo Es. di analisi di un problema a cura del Prof. Salvatore DE GIORGI - I.T.I.S. FALANTO TALSANO (TA) Pag. 5
Tra l entità Studente e l entità Materia esiste un associazione molti-a-molti in quanto uno studente deve essere verificato su una o più materie, ed una materia deve essere oggetto di verifica di uno o più studenti. Tra l entità Classe e l entità Studente per una scuola esiste un associazione uno-amolti in quanto ogni studente deve appartenere ad una classe ed ogni classe deve avere uno o più studenti. Tra l entità Indirizzo e l entità Classe esiste un associazione uno-a-molti in quanto un indirizzo deve essere attribuito ad una o più classi ed una classe deve essere associata ad un indirizzo. Nel modello E/R, inoltre, sono stati indicati, oltre ai nomi delle entità, l opzionalità od obbligatorietà delle associazioni (indicate rispettivamente con linea tratteggiata o continua). Il modello viene verificato utilizzando le regole di lettura : ogni indirizzo deve essere attribuito ad una o più classi, ogni classe deve essere associata ad un indirizzo; ogni classe deve essere formata da uno o più studenti, ogni studente deve essere abbinato ad una classe; ogni studente deve essere verificato in una o più materie, ogni materia deve essere utilizzata per sottoporre ad una verifica uno o più studenti. Es. di analisi di un problema a cura del Prof. Salvatore DE GIORGI - I.T.I.S. FALANTO TALSANO (TA) Pag. 6
Schema logico della base di dati Come tipo di schema logico, dovendo poi realizzarlo nello standard SQL, si sceglie di utilizzare quello relazionale. Applicando le regole di corrispondenza tra il modello E/R ed il modello Relazionale si passa dal precedente schema concettuale al modello logico che viene descritto sia nella forma testuale che in quella grafica. Rappresentazione testuale dello schema logico : Nella rappresentazione testuale si elencano le tabelle (indicando per ciascuna i campi) che rappresentano le entità dello schema concettuale e le tabelle che rappresentano le eventuali relazioni molti-a-molti, introducendo, inoltre, le chiave esterne per rappresentare le associazioni (le chiavi primarie sono sottolineate, le chiavi esterne sono in corsivo). Nello schema E/R precedente si può osservare che esiste una associazione moltia-molti (N:N) tra i tipi di entità Studente e Materia. Applicando il processo di normalizzazione (definito dalle forme normali) si deve inserire una entità ausiliaria (Verifica) che trasforma l associazione molti-a-molti in due associazioni uno-a-molti, anche per consentire di rappresentare gli attributi dell associazione (per esempio nell associazione fra l entità Studente e l entità Materia la data della prova, il voto ottenuto dallo studente, il periodo dell anno scolastico ed il tipo di prova sostenuto non sono attributi né dell entità Studente né dell entità Materia). Le associazioni, quindi, che ne derivano sono : uno-a-molti (1:N) tra Studente e Verifica (ogni studente deve essere verificato con una o più prove ed ogni prova deve essere sostenuta da un solo studente), e uno-a-molti (1:N) tra Materia e Verifica (ogni materia deve essere oggetto di verifica con una o più prove ma ogni prova deve essere riferita ad una sola materia). Si elencano di seguito le tabelle che rappresentano le entità dello schema concettuale : tbmaterie (idmateria, materia) tbindirizzi (idindirizzo, indirizzo) tbclassi (idclasse, num, sez, ksindirizzo, aula) tbstudenti (idstudente, cognome, nome, datanascita, via, residenza, telefono, ksclasse) tbvoti (idvoto, ksstudente, ksmateria, voto, tipo, datavoto, periodo) Per realizzare l associazione uno a molti fra l entità Indirizzo e l entità Classe si introduce, fra gli attributi dell entità a molti (Classe), la chiave esterna ksindirizzo associata alla chiave primaria idindirizzo dell entità a uno (Indirizzo). Per realizzare l associazione uno a molti fra l entità Studente e l entità Classe si introduce, fra gli attributi dell entità a molti (Studente), la chiave esterna ksclasse associata alla chiave primaria idclasse dell entità a uno (Classe). Es. di analisi di un problema a cura del Prof. Salvatore DE GIORGI - I.T.I.S. FALANTO TALSANO (TA) Pag. 7
Per realizzare l associazione molti-a-molti fra l entità Studente e l entità Materia si introduce una terza entità Verifica. Tale entità, oltre agli attributi propri dell associazione (voto, Tipo prova: orale, scritto, pratico e DataVerifica, Periodo) ha, come attributi, la chiave esterna ksstudente associata alla chiave primaria idstudente dell entità Studente e la chiave esterna ksmateria associata alla chiave primaria idmateria dell entità Materia. Rappresentazione grafica dello schema logico : La rappresentazione grafica dello schema logico relativo al sistema informativo per la gestione dei Voti è il seguente : Es. di analisi di un problema a cura del Prof. Salvatore DE GIORGI - I.T.I.S. FALANTO TALSANO (TA) Pag. 8
Definizione delle Tabelle Nel definire le tabelle e la struttura delle stesse, è consigliabile elencarle partendo dalle tabelle che non presentano chiavi esterne. In successione si definiscono le tabelle le cui chiavi primarie sono utilizzate da altre tabelle come chiavi esterne. Nel prospetto seguente, per es., si definiscono prima le tabelle tbmaterie e tbindirizzi, che non hanno chiavi esterne, quindi la tabella tbclassi, che ha fra gli attributi un campo definito come chiave esterna alla tabella tbindirizzi, successivamente la tabella tbstudenti, che ha fra gli attributi un campo definito come chiave esterna alla tabella tbclassi ed, infine, la tabella tbvoti, che ha fra gli attributi due campi definiti come chiavi esterne alle tabelle tbstudenti e tbmaterie. Tabella Nome campo Chiave Tipo dati Dim. Dec. Null Descrizione tbmaterie idmateria Primaria Carattere 3 materia Carattere 20 Vincolo: valori unici tbindirizzi idindirizzo Primaria Carattere 3 indirizzo Carattere 20 Vincolo: valori unici tbclassi idclasse Primaria Intero 3 Autoincremento num Carattere 1 1,2,3,4,5 sez Carattere 1 ksindirizzo Esterna Carattere 3 Integrità referenziale con idindirizzo della tabella tbindirizzi num+sez+ksindirizzo : Vincolo: valori unici aula Carattere 3 Vincolo: valori unici tbstudenti idstudente Primaria Intero 4 Autoincremento cognome Carattere 20 nome Carattere 20 datanascita Data/ora 10 va Carattere 30 SI residenza Carattere 20 SI telefono Carattere 15 SI kscasse Esterna Intero 4 Integrità referenziale con idclasse della tabella tbclassi tbvoti idvoto Primaria Intero 4 Autoincremento ksstudente Esterna Intero 4 Integrità referenziale con idstudente della tabella tbstudenti ksmateria Esterna Carattere 3 Integrità referenziale con idmateria della tabella tbmaterie voto Decimale 4 2 tipo Carattere 1 datavoto Data/ora 10 periodo Carattere 1 1, 2, 3 O = orale ; S = scritto ; P = pratico Es. di analisi di un problema a cura del Prof. Salvatore DE GIORGI - I.T.I.S. FALANTO TALSANO (TA) Pag. 9
Definizione delle relazioni della base di dati in SQL Lo schema logico relazionale precedente (tabelle, relazione ed applicazione dei vincoli di integrità dei dati e referenziale) può essere creato con le seguenti istruzioni SQL (proposte in versione per ACCESS e MYSQL. ACCESS CREATE TABLE tbmaterie ( idmateria Char(3) PRIMARY KEY, materia Char(20) NOT NULL UNIQUE); CREATE TABLE tbindirizzi ( idindirizzo Char(3) PRIMARY KEY, indirizzo Char(20) NOT NULL UNIQUE); MySQL CREATE TABLE tbmaterie( idmateria char(3) PRIMARY KEY, materia varchar(20) NOT NULL UNIQUE) TYPE=MyISAM; CREATE TABLE tbindirizzi( idindirizzo char(3) PRIMARY KEY, indirizzo varchar(20) NOT NULL UNIQUE) TYPE=MyISAM; CREATE TABLE tbclassi ( idclasse Counter PRIMARY KEY, num Char(1) NOT NULL, sez Char(1) NOT NULL, ksindirizzo Char(3) NOT NULL, aula Char(3) NOT NULL UNIQUE, CONSTRAINT un_classe UNIQUE(num,sez,ksindirizzo), CONSTRAINT ks_indirizzo FOREIGN KEY (ksindirizzo) REFERENCES tbindirizzi(idindirizzo)); CREATE TABLE tbclassi( idclasse int(3) AUTO_INCREMENT PRIMARY KEY, num char(1) NOT NULL, sez char(1) NOT NULL, ksindirizzo char(3) NOT NULL, aula char(3) NOT NULL UNIQUE, UNIQUE (num,sez,ksindirizzo) TYPE=MyISAM; CREATE TABLE tbstudenti ( idstudente Counter PRIMARY KEY, cognome Char(20) NOT NULL, nome Char(20) NOT NULL, datanascita Datetime NOT NULL, via Char(30), residenza Char(20), telefono Char(15), ksclasse Long NOT NULL, CONSTRAINT ks_classe FOREIGN KEY (ksclasse) REFERENCES tbclassi(idclasse)); CREATE TABLE tbstudenti( idstudente int(4) AUTO_INCREMENT PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, datanascita date NOT NULL, via varchar(30), residenza varchar(20), telefono varchar(15), ksclasse int(3) NOT NULL) TYPE=MyISAM; Es. di analisi di un problema a cura del Prof. Salvatore DE GIORGI - I.T.I.S. FALANTO TALSANO (TA) Pag. 10
CREATE TABLE tbvoti( idvoto Counter PRIMARY KEY, ksstudente Long NOT NULL, ksmateria Char(3) NOT NULL, voto Single NOT NULL, tipo Char(1) NOT NULL, datavoto Datetime NOT NULL, periodo Char(1) NOT NULL, CONSTRAINT ks_studente FOREIGN KEY (ksstudente) REFERENCES tbstudenti(idstudente), CONSTRAINT ks_materia FOREIGN KEY (ksmateria) REFERENCES tbmaterie(idmateria)); CREATE TABLE tbvoti( idvoto int(4) AUTO_INCREMENT PRIMARY KEY, ksstudente int(4) NOT NULL, ksmateria char(3) NOT NULL, voto decimal (4,2) NOT NULL, tipo ENUM('O', 'S', 'P') NOT NULL, datavoto date NOT NULL, periodo ENUM('1', '2', '3') NOT NULL) TYPE=MyISAM; Nota : le istruzioni proposte per MySQL sono relative all uso di tabelle tipo MyISAM che non supportano l integrità referenziale definita con FOREIGN KEY. Il tipo di tabella InnoDB, invece, supporta la FOREIGN KEY similmente ad ACCESS. Es. di analisi di un problema a cura del Prof. Salvatore DE GIORGI - I.T.I.S. FALANTO TALSANO (TA) Pag. 11