mercoledì 17 ottobre 2012

Esercitazione Libreoffice Base

Esercitazione Libreoffice Base 17/10/2012

Si crei un database con 3 tabelle, ciascuna con 5 colonne, tali che il database possa rappresentare un ambiente di propria scelta.


Svolgimento:



L'ambiente di mia scelta è un generico sistema scolastico.
Al fine di poter rappresentare al meglio un sistema scolastico con solo 3 tabelle, dobbiamo comprendere quali sono le entità essenziali che gli appartengono:
  1. Ci sono le scuole, che si possono immaginare coincidere con la loro sede. 
  2. In una scuola ci sono dei docenti che insegnano le materie di propria competenza
  3. In una scuola ci sono le aule dove vengono tenute le lezioni dei docenti.
Possiamo rappresentare le entità che appartengono ad un sistema scolastico con il seguente schema:




Il grafico riporta dei riferimenti interrelazionali (Foreign Keys),
tuttavia per il momento se ne tralascia il commento.


Ogni entità è descritta tramite i suoi attributi.
•La sede è l'edificio dove si svolgono le attività scolastiche, essa è caratterizzata da un nome,  che si suppone essere lo stesso della scuola (per ipotesi una scuola ha una sola sede) e da un indirizzo rappresentato dai campi via, numero civico, cap e provincia.
•I docenti sono le persone predisposte all'insegnamento all'interno della scuola, essi hanno un  nome ed un cognome, ma, dato che potrebbero esistere omonimi all'interno della stessa scuola o scuole differenti, per identificarli univocamente usiamo il codice fiscale. Essi inoltre sono caratterizzati dall'avere una materia d'insegnamento ed una scuola di appartenenza.
•Le aule sono i locali di una sede dove i docenti svolgono la loro attività. Ogni aula ha un nome (es B3, I5, LabInf, …) ma non è sufficiente ad identificarla poiché scuole differenti potrebbero avere aule con lo stesso nome. Esse sono quindi identificate dai valori della coppia di attributi <nome aula, nome sede>.
Una caratteristica comune di ogni aula è il numero di posti a disposizione per gli alunni. Le aule potrebbero avere altri attributi, ma dato il carattere estremamente esemplificativo e generico con cui si cerca di svolgere l'esercitazione non se ne evincono altri. Quindi, sebbene la traccia richieda tabelle di 5 colonne, ne sono state identificate solo 3, le altre 2 potranno essere aggiunte all'occorrenza.

Dopo quest'analisi sarà molto semplice creare il database con l'ausilio di un DBMS, ad esempio con Base della suite di programmi LibbreOffice.






 Osservazione pratica: creare i riferimenti interrelazionali con Base

Prima di popolare le tabelle del database, è necessario impostare i riferimenti interrelazionali affinché, comunque si eseguano delle operazioni sul database, i riferimenti si trovino sempre in uno stato valido.
Niente di più semplice:  basta andare in “strumenti → relazioni “e si aprirà una finestra dove poter specificare le Foreign Keys.










Dopo aver specificato le foreign keys, è opportuno impostare le azioni da intraprendere nel caso che una query di insert, update o delete violi i vincoli d'integrità referenziale.
Le azioni che un DBMS, solitamente, mette a disposizione in questi casi sono:

•REJECT, l'azione consiste nel rifiutare la query e generare un errore (è l'azione predefinita se non è specificato altro), solitamente viene causata dalle insert quando si cerca d'inserire un record che ha un riferimento ad una chiave remota inesistente.
•CASCADE: Quest'azione può essere scatenata da un update o un delete.
Se una chiave remota viene modificata allora le modifiche si propagano a cascata anche ai campi dei record che la referenziano.
Se invece un record che contiene una chiave remota viene cancellato, allora vengono cancellati a cascata anche tutti i record che contengono campi che la referenziano.
•SET NULL oppure SET DEFAULT: i campi riferimento dei record delle tabelle che referenziano le chiavi remote dei record interessati dalla query vengono impostati ad un valore prestabilito quando la query va a “togliergli” il record referenziato. Quest'azione può essere scatenata da un update o un delete.


LibreOffice Base permette d'impostare in modo grafico queste azioni:

Nel caso del riferimento tra aule e sede, ho impostato che se viene aggiornato il nome di una sede, automaticamente viene aggiornato allo stesso valore il campo “nomeSede” in tutte le righe della tabella “aule” che lo referenziavano.

Nel caso di eliminazione di una sede, ho impostato che vengano eliminate a cascata anche tutte le aule appartenenti a quella determinata sede. Ciò è naturale, poiché se nella realtà accade che una sede viene chiusa o demolita, allora si perdono anche tutte le aule che le appartenevano.

Nella relazione tra docenti e sedi il discorso è un po' diverso dal caso precedente.

Se nella realtà accade che una sede viene chiusa o demolita, i docenti non dovrebbero seguire la stessa sorte, ma si dovrebbero ritrovare senza una sede di appartenenza, in attesa di essere riassegnati.
Per cui è logico imporre che il valore dell'attributo “nomeSede” nella tabella “docenti” venga impostato a NULL in tutte le righe dove occorre il nome della sede eliminata.

Nessun commento:

Posta un commento