S’intende fornire un esempio di Data Base Relazionale legato al mondo della scuola.
S’ipotizzi l’istituzione di alcuni “Corsi Abilitanti” rivolti ad insegnanti, abilitati e no, che intendano conseguire una prima o un’ulteriore abilitazione all’insegnamento. Si è pensato ad una situazione in cui, sebbene siano stati avviati corsi relativi ad abilitazioni per diverse classi di concorso, ogni corsista può concorrere all’ottenimento di una sola.
Il modello relazionale che si è progettato per la base di dati in questione è dato dall’insieme delle seguenti relazioni:
CLASSI_CONCORSO = (cod_conco,
classe_conco, note_conco) – grado della relazione: 3
CORSISTI = (cod_cors,
cognome_cors, nome_cors, sex_cors, datan_cors, telef_cors, cellul_cors,
mail_cors, indir_cors, codlocal_cors, codconco_cors, codtipo_cors,
codstudio_cors) – grado della relazione: 13
TIPOLOGIA_CORSISTI = (cod_tipo,
descr_tipo) – grado della relazione: 2
MATERIE_INSEGNAMENTO = (cod_mater,
descr_mater) – grado della relazione: 2
TITOLI_STUDIO = (cod_studio,
titolo_studio) – grado della relazione: 2
SCUOLE = (cod_scu,
descr_scu, indir_scu, codlocal_scu, telef_scu, fax_scu, mail_scu, tipo_scu,
preside_scu) – grado della relazione: 9
LOCALITA’ = (cod_local, città_local,
prov_local, cap_local) – grado della relazione: 4
nonché
dalle relazioni Associa_Corsisti_Materie e Associa_Corsisti_Scuole che
consentono di riferire anche più di una materia d’insegnamento e/o scuola di servizio ad un particolare
corsista:
ASSOCIA_CORSISTI_MATERIE
= (codcors_asso1, codmater_asso1)
ASSOCIA_CORSISTI_SCUOLE
= (codcors_asso2, codscu_asso2)
Da un punto di vista grafico, lo schema relazionale, completo dei legami tra le tabelle (schema relazionale esteso), relativo alla situazione proposta si presenta così:
Si noti la presenza di alcune chiavi esterne (codlocal_cors, codconco_cors, codtipo_cors, codstudio_cors in Corsisti e codlocal_scu in Scuole) che consentono la creazione di apposite associazioni tra le tabelle come graficamente evidenziato dallo schema. Oltre ad individuare alcune informazioni specifiche relative ai Corsisti (dati anagrafici, sesso, recapiti telefonici, ecc…) tramite questo modello è possibile individuare la tipologia del corsista (già abilitato, non abilitato, …), il titolo di studio di cui è in possesso, la classe di concorso per cui concorre, e inoltre la/e materia/e d’insegnamento e la/e scuola/e di servizio. La relazione Località consente di determinare dove risiede il corsista nonché di definire dov’è localizzata una determinata scuola.
Si vuole ora procedere all’interrogazione del Data Base adoperando le classiche operazioni di Proiezione, Selezione e Congiunzione di cui qui seguito ricordiamo il funzionamento:
Ø Proiezione: data una relazione R ed un sottoinsieme A={A1,A2,…AK} dei suoi attributi, si definisce proiezione di R su A la relazione di grado K che si ottiene da R ignorando gli attributi (colonne) non presenti in A. L’usuale denotazione per tale proiezione risulta essere: PA1,A2,…An(R)
Ø Selezione: tale operazione consente di estrarre delle tuple da una relazione R in base ad un certo criterio P, indicato come pedice nella notazione abitualmente utilizzata per questa operazione: sP(R). Il criterio P può essere espresso come condizione semplice o composta (con i connettivi and e or)
Ø Congiunzione: si definisce congiunzione di due relazioni R ed S, rispetto ad un attributo A di R ed un attributo B di S la relazione che si ottiene facendo il prodotto tra R ed S e mantenendo solo quelle righe in cui risultano uguali i due attributi A e B. La notazione usuale è: R¥S(A=B) º sA=B(R x S) (in questo caso, più specificatamente, occorrerebbe parlare di Equigiunzione o equijoin).
Facendo una proiezione della tabella Corsisti sulle colonne: Cognome_cors, Nome_cors, Sex_cors, Datan_cors, Telef_cors, Indir_cors, Codlocal_cors, Codconco_cors si ottiene la seguente relazione (di grado otto e con ventitre istanze):
EleCorsisti = PCognome_cors, Nome_cors, Sex_cors, Datan_cors, Telef_cors, Indir_cors, Codlocal_cors, Codconco_cors(Corsisti)
Cognome _cors |
Nome _cors |
Sex _cors |
Datan _cors |
Telef _cors |
Indir _cors |
Cod local _cors |
Codconco _cors |
Agrati |
Mauro |
M |
17 |
A071 |
|||
Ammenti |
Andrea |
M |
1 |
A071 |
|||
Bernardi |
Angela |
F |
5 |
A042 |
|||
Borniquez |
Claudio |
M |
5 |
A042 |
|||
Buccellato |
Rosa Alba |
F |
14 |
A019 |
|||
Calabrò |
Paolo |
M |
NB i dati sono |
2 |
A019 |
||
Denis |
Ettore |
M |
stati nascosti x |
1 |
A042 |
||
Faccin |
Claudia |
F |
riservatezza |
10 |
A042 |
||
Ferrante |
Bruno |
M |
16 |
A019 |
|||
Fico |
Maria Teresa |
F |
9 |
A019 |
|||
Girgenti |
Giorgio |
M |
2 |
A042 |
|||
Lorei |
Patrizia |
F |
13 |
A019 |
|||
Magro |
Salvatore |
M |
2 |
A042 |
|||
Micotti |
Chiara Maria |
F |
1 |
A019 |
|||
Orsi |
Luigi |
M |
1 |
A042 |
|||
Palladino |
Lucia |
F |
11 |
A071 |
|||
Piazzai |
Rolando |
M |
8 |
A019 |
|||
Possi |
Diego |
M |
4 |
A071 |
|||
Sampietri |
Franco |
M |
6 |
A019 |
|||
Tallachini |
Paola |
F |
15 |
A019 |
|||
Testa |
Vincenzo |
M |
18 |
---- |
|||
Udini |
Giorgio |
M |
4 |
A042 |
|||
Zuccari |
Mauro |
M |
12 |
A019 |
Facendo una selezione sull’attributo Codconco_cors = “A042” ed una proiezione sulle colonne Cognome_cors, Nome_cors, Telef_cors, Indir_cors si ottiene la seguente relazione:
EleA042 = PCognome_cors, Nome_cors, Telef_cors, Indir_cors (sCodconco_cors=“A042” (Corsisti))
Cognome_cors |
Nome_cors |
Telef_cors |
Indir_cors |
Bernardi |
Angela |
||
Borniquez |
Claudio |
||
Denis |
Ettore |
||
Faccin |
Claudia |
||
Girgenti |
Giorgio |
||
Magro |
Salvatore |
||
Orsi |
Luigi |
||
Udini |
Giorgio |
Se la tabella delle Località, in un dato istante, è data dalle seguenti istanze:
cod_local |
città_local |
prov_local |
cap_local |
1 |
Verbania Intra |
VB |
28921 |
2 |
Domodossola |
VB |
28845 |
3 |
Omegna |
VB |
28887 |
4 |
Verbania Pallanza |
VB |
28922 |
5 |
Villadossola |
VB |
28844 |
6 |
Stresa |
VB |
|
7 |
Gravellona Toce |
VB |
|
8 |
Orta S. Giulio |
NO |
|
9 |
Cannobio |
VB |
|
10 |
Varallo Pombia |
NO |
|
11 |
Arona |
NO |
|
12 |
Beura Cardezza |
VB |
|
13 |
Cannero |
VB |
|
14 |
Verbania Trobaso |
VB |
|
15 |
Verbania Suna |
VB |
|
Facendo una congiunzione tra le tabelle Corsisti e Località rispetto ai valori corrispondenti di Cod_local con Codlocal_cors, selezionando le righe che soddisfano il requisito Codconco_cors = “A042” e proiettando sulle colonne Cognome_cors, Nome_cors, Telef_cors, Indir_cors, Città_local la relazione risultante è:
PCognome_cors, Nome_cors, Telef_cors, Indir_cors, Città_local (sCodconco_cors=“A042” (Corsisti¥Località(Cod_local=Codlocal_cors)))
Cognome_cors |
Nome_cors |
Telef_cors |
Indir_cors |
Città_local |
Bernardi |
Angela |
Villadossola |
||
Borniquez |
Claudio |
Villadossola |
||
Denis |
Ettore |
Verbania Intra |
||
Faccin |
Claudia |
Varallo Pombia |
||
Girgenti |
Giorgio |
Domodossola |
||
Magro |
Salvatore |
Domodossola |
||
Orsi |
Luigi |
Verbania Intra |
||
Udini |
Giorgio |
Verbania Pallanza |