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
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. ![]() |
||||||||||||||||||||||||||||||||||||||||||||||||
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.
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
|
||||||||||||||||||||||||||||||||||||||||||||||||
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. ![]() 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
|
||||||||||||||||||||||||||||||||||||||||||||||||
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.
CLASSI
ALUNNI
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:
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.
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
STUDENTI
ESAMI
|
||||||||||||||||||||||||||||||||||||||||||||||||
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:
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) CITTADINI
UNIONI
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. |
||||||||||||||||||||||||||||||||||||||||||||||||