Livello logico: regole di derivazione

Introduzione

Le regole di derivazione servono per passare dalla fase di livello concettuale al quella del livello logico, cioè per trasformare lo schema E-R nello schema delle relazioni. Se non fosse abbastanza chiaro, rivedere il significato dei termini associazione e relationship per non fare confusione con quello di relazione.

Prima di passare alle vere e proprie regole, dobbiamo precisare quale modello logico verrà adottato tra quelli conosciuti (relazionale, reticolare, gerarchico e orientato ad oggetti): poichè lo scopo di questo corso è quello di affrontare il progetto di database relazionali, sarà adottato il modello logico relazionale.

Convinti del fatto che prima sia meglio vedere qualche esempio e poi leggere le definizioni matematiche, lo studio teorico del modello relazionale viene lasciato al prossimo argomento, ma nulla vieta al lettore di studiare i due argomenti nell'ordine che preferisce, ammesso che ciò sia possibile.

Il modello logico relazionale si occupa dello studio delle Relazioni matematiche. Per affrontare questo livello di studio dovrebbe essere sufficiente ricordarsi semplicemente che una relazione matematica può essere rappresentata graficamente come una tabella. Va tenuto bene in mente che questa non è una definizione di relazione e che in futuro non ci dovrà essere confusione tra il concetto di relazione e quello di tabella (la rappresentazione grafica di una relazione).

Descrivendo come è fatta una tabella si descrive anche come è fatta una relazione. Una tabella è divisa in righe e in colonne: rispettando la terminologia usata negli archivi elettronici, le righe sono chiamate anche record e le colonne sono chiamate anche campi. I record (righe) di una tabella contengono gli elementi della relazione, mentre i campi (colonne) sono gli attributi della relazione. (NOTA: non confondere il termine atributo di relazione con attributo di entità).

NOME-RELAZIONE
attributo1 attributo2 attributo3 attributo4
... ... ... ...
... ... ... ...

Per rappresentare una relazione sarebbe troppo faticoso disegnare ogni volta una intera tabella, per questo si usa spesso la seguente convenzione alternativa o rappresentazione sintetica:

Nomerelazione (attributo1, attributo2, attributo3, attributo4)

Regola 1: entità

La prima regola di derivazione che si studia è quella che trasforma le entità dello schema E-R.

REGOLA 1: ogni entità dello schema E-R viene trasformata in una relazione.

Come esempio si può considerare l'entità alunno e i suoi attributi: matricola, nome e cognome.

rappresentazione dell'entità alunno

Regola 2: Attributi

Questa regola si riferisce esclusivamente agli attributi delle entità, mentre per quello che riguarda gli attributi delle associazioni seguiranno ulteriori precisazioni.

REGOLA 2: ogni attributo proprio di un'entità diventa un attributo proprio della relazione che ne è stata derivata.

rappresentazione dell'entità alunno

Seguendo la seconda regola, la relazione alunni sarà composta da 3 attributi: matricola, nome e cognome. Segue la rappresentazione sintetica della relazione alunni:

alunni (matricola, cognome, nome)

Per chiarezza segue anche la rappresentazione di una tabella di esempio:

ALUNNI
matricola cognome nome
002111 Rossi Mario
003450 Verdi Giuseppe
009000 Bianchi Anna

Regola 3: attributi identificatori

REGOLA 3: ogni attributo identificatore proprio di un'entità diventa una chiave primaria della relazione che ne è stata derivata.

Come ogni altro attributo, anche l'attributo identificatore diventa attributo della relazione, ma quello ottenuto dall'attributo identificatore ha un significato speciale: ha la funzione di identificare in modo univoco e di rendere accessibile ogni elemento della relazione. Tale attributo viene chiamato chiave primaria. I valori assunti dalla chiave primaria devono essere unici (non può essere ripetuto due volte lo stesso valore) e obbligatori (non ci può essere un elemento della relazione senza valore di chiave primaria). Ritornando al solito esempio possiamo dire che non ci possono essere due alunni con la stessa matricola oppure un alunno senza matricola.

rappresentazione dell'entità alunno

Nella rappresentazione sintetica della relazione, useremo la convenzione di sottolineare i campi chiave primaria per distinguerli dagli altri tipi di campi.

alunni (matricola, cognome, nome)

Per chiarezza segue anche la rappresentazione di una tabella di esempio:

ALUNNI
matricola cognome nome
002111 Rossi Mario
003450 Verdi Giuseppe
009000 Bianchi Anna

Regola 4

Associazioni uno a molti (prima parte)

Dopo aver derivato tutte le entità e tutti gli attributi, si passa alla derivazione delle associazioni tra entità (rombi nello schema E-R); il tipo più semplice è quello "uno a molti" (1:N).

REGOLA 4: ogni associazione binaria 1:N rende necessario aggiungere, alla relazione derivata con molteplicità N, un nuovo attributo, detto chiave esterna, collegato logicamente alla chiave primaria dell'altra relazione.

schema E-R dell'associazione tra alunno e classe

Nell'esempio delle classi e degli alunni, siccome ad ogni classe possono appartenere uno o più alunni, è necessario aggiungere alla relazione alunni(a molteplicità N) un nuovo attributo, che chiameremo codice-classe collegato all'attributo codice della relazione classi; collegato all'attributo codice, significa che può assumere solo i valori presenti nel campo codice della tabella classi. Questo legame logico tra le relazioni (e tra le tabelle che le rappresentano) viene chiamato tecnicamente vincolo di integrità referenziale , e verrà studiato più avanti.

CLASSI
codice anno sezione indirizzo
401 4 A Mercurio
502 5 A IGEA

ALUNNI
matricola cognome nome

codice-classe

002111 Rossi Mario 502
003450 Verdi Giuseppe 502
009000 Bianchi Anna 401

Tramite la chiave esterna è possibile sapere a quale classe di quale indirizzo appartiene ogni alunno, senza dover ripetere tutte le volte le stesse informazioni nella tabella alunni.

Sebbene la chiave esterna sia collegata alla chiave primaria vi sono profonde differenze tra i due tipi di attributi: la chiave esterna può essere non unica (nella chiave esterna si possono ripetere più volte gli stessi valori) ò essere non obbligatoria (questo accade solo quando le regole di lettura dell'associazione lo permettono, per esempio se ci potessere essere alunni senza una classe). Verificare alcune delle proprietà esposte nel precedente esempio.

Suggerimento: un errore, da evitare a questo punto del progetto, è quello di tornare indietro a modificare lo schema E-R per aggiungere la chiave esterna come attributo di un'entità.

Nella rappresentazione sintetica delle relazioni, useremo la convenzione di sopralineare gli attributi chiave esterna per distinguerli dagli altri tipi di attributi.

classi (codice, anno, sezione, indirizzo);

alunni ( matricola , cognome, nome, codice-classe)

Associazioni uno a molti (seconda parte)

Nel caso in cui anche l'associazione uno a molti avesse attributi, la regola continua così:

REGOLA 4: ... Gli eventuali attributi dell'associazione uno a molti vanno messi nella stessa relazione in cui si trova la chiave esterna

Ecco lo schema E-R:

schema E-R dell'associazione tra alunno e classe con un attributo

e come diventa lo schema delle relazioni:

classi (codice, anno, sezione, indirizzo);

alunni (matricola, cognome, nome, codice-classe, anno_scolastico)

Le tabelle sono lasciate come esercizio al lettore.

Regola 5

Associazioni molti a molti (prima parte)

Dopo aver applicato le regole di derivazione per entità e attributi di entità, nel caso di associazioni molti a molti si procede come segue.

Regola 5: per ogni associazione binaria N:N tra due entità, è necessario aggiungere alla due relazioni derivate dalle due entità, una terza relazione i cui attributi sono chiavi esterne logicamente collegate alle chiavi primarie delle altre due relazioni.

Come esempio possiamo considerare lo schema E-R dell'esercizio nella consegna 2.2.

schema ER dello studente e della materia d'esame

Le due entità dànno luogo alle relazioni studenti materie a cui va aggiunta la relazione esami, in cui saranno presenti due chiavi esterne matricola-studente e codice-materia, collegate alle chiavi primarie delle altre due relazioni:
studenti (matricola, cognome, nome, telefono, via, citta)
materie (codice, nome)
esami (matricola-studente, codice-materia)

Associazioni molti a molti (seconda parte)

Nel caso in cui sulla associazione siano presenti attributi, la regola dice:

REGOLA 5: gli eventuali attributi dell'associazione N:N diventano attributi della relazione che contiene le chiavi esterne.

Nell'esempio lo schema delle relazioni diventa:
studenti (matricola, cognome, nome, telefono, via, citta)
materie (codice, nome)
esami (matricola-studente, codice-materia, voto, data).

Per esercizio verificare che i dati contenuti nelle seguenti tabelle rispettino le regole di lettura dell'associazione "molti a molti":

MATERIE
codice nome
1 algebra
2 chimica
3 fisica
4 informatica

STUDENTI
matricola cognome nome via citta telefono
002111 Rossi Mario via stretta, 5 Pisa 050111111
003450 Verdi Giuseppe p.zza italia, 3 Roma 06121212

ESAMI

matricola-studente

codice-materia

voto data
002111 1 30 2008-12-23
003450 1 18 2008-12-23
002111 2 29 2008-10-01
003450 3 19 2007-01-31

Associazioni non obbligatorie

Dopo aver derivato le entità e gli attributi delle entità, per le associazioni uno a uno a cui entrambe le entità non partecipano obbligatoriamente, si procede come segue:

REGOLA 6: ogni associazione uno a uno non obbligatoria viene trasformata come se fosse un'associazione molti a molti. La stessa regola vale per gli eventuali attributi dell'associazione.

Nell'esercizio consegna 2.3 si aveva il seguente schema E-R:

schema ER delle unioni tra cittadini.

L'entità cittadino diventa la relazione cittadini con i suoi attributi, inoltre viene aggiunta una la relazione unioni che dovrà contenere due chiavi esterne. Poichè l'associazione unione prende due volte il cittadino, ci sarà una chiave esterna (codice fiscale) per cittadino-maschio e un'altra per cittadino-femmina, che chiameremo cf-maschio e cf-femmina.

cittadini(cf, cognome, nome, datadinascita)
unioni(cf-maschio, cf-femmina, data)

CITTADINI
cf cognome nome datadinascita
RSSMRA Rossi Mario 1950-12-25
VRDGPP Verdi Giuseppe 1950-12-31
BNCNNA Bianchi Anna 1960-02-28
RSSMRC Rossi Marco 1960-02-02
NRENRC Neri Enrico 1962-01-01
GLLGNN Gialli Gianna 1930-03-30

UNIONI

cf-maschio

cf-femmina

data
VRDGPP BNCNNA 1970-12-23

Solo le effettive unioni vengono registrate nella tabella unioni, e, nonostante le unioni non siano obbligatorie, nelle due precedenti tabelle non si trova nemmeno una sola cella vuota: si può quindi affermare che questo è il metodo più efficiente di memorizzare le unioni tra cittadini! Rispondere alla seguente domanda facendo un esempio: sarebbe stato ugualmente efficiente utilizzare le regole di derivazione proposte da altri testi?

Associazioni parzialmente obbligatorie

Dopo aver derivato le entità e gli attributi delle entità, per le associazioni uno a uno parzialmente obbligatorie si procede come segue:

REGOLA 6: ogni associazione uno a uno a cui una sola entità partecipa obbligatoriamente viene trasformata come se fosse un'associazione uno a molti, facendo finta che l'entità che vi partecipa obbligatoriamente sia quella con molteplicità maggiore di uno, a cui quindi si darà la chiave esterna. Gli eventuali attributi dell'associazione uno a uno vanno nella relazione che contiene la chiave esterna.

Si farà l'esempio di un database in cui ogni automobile debba essere di proprietà di un cittadino, ma in cui non tutti i cittadini debbano avere un'automobile (ogni cittadino può possedere una sola automobile).

AGGIUNGERE SCHEMA ER.

Le due entità diventano due relazioni (cittadini e automobili) e alla relazione derivata dall'entità obbligatoria (automobili) si aggiunge la chiave esterna collegata all'associazione derivata dall'entità opzionale (cittadini).


cittadini(cf__, cognome, nome)

automobili(targa__, alimentazione, cf-cittadino__)

AGGUINGERE TABELLE

Solo le effettive proprietà vengono registrate, e nonostante l'associazione non sia completamente obbligatoria, nelle due precedenti tabelle non si trova una sola cella vuota: si può quindi affermare che questo è il metodo più efficiente di memorizzare il possesso delle automobili dei cittadini!

Associazioni obbligatorie

Dopo aver derivato le entità e gli attributi delle entità, per le associazioni uno a uno completamente obbligatorie si procede come segue:

REGOLA 6: ogni associazione uno a uno completamente obbligatoria, viene trasformata come se fosse un'associazione uno a molti; in questo caso la chiave esterna può essere messa indifferentemente in una qualsiasi delle relazioni ottenute. Gli eventuali attributi dell'associazione uno a uno vanno nella stessa relazione che contiene la chiave esterna.

Questa volta non c'è nessuna partecipazione opzionale e non c'è la possibilità che nelle tabelle si abbiano delle celle vuote, perciò il collocamente della chiave esterna è più libero, senza vincoli sull'efficienza. Per coloro che si domandano se fosse possibile costruire un'unica relazione con gli attributi di entrambe le entità, la risposta è quasi sempre negativa. E' sempre meglio mantenere separate le due categorie, anche dopo la derivazione delle entità in relazioni, perchè esse rappresentano sempre due concetti distinti che il progettista ha individuato nella fase di progetto concettuale. Rimettere insieme due concetti che erano stati faticosamente individuati e separati, sarebbe considerare privo di importanza il lavoro precedente.