Esempio Applicativo: “CORSO ABILITANTE”

 

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).

 

Interrogazioni al Data Base

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

 

Torna a Denis Ettore