Modello relazionale E fondato sul concetto matematico di relazione tra insiemi di oggetti Una relazione su n insiemi A1, A2,..,An è un sottoinsieme di tutte le n-uple a1,a2,,an che si possono costruire prendendo nell ordine un elemento a1 dal primo insieme A1, a2 dal secondo insieme A2, e così via. Una relazione con n-colonne si indica come una relazione di grado n, il nome con il quale si identifica una colonna si chiama attributo, l insieme dei valori che possono essere assunti da un attributo definiscono il dominio di quell attributo, e il numero che compongono la tabella (indicate con il termine di tuple) si chiama cardinalità della relazione. ing. Alfredo Cozzi 1
Relazione a1 a2 an Grado C a r d i n a l i t à I nomi dei domini sono i nomi delle colonne, i valori che compaiono in una colonna sono omogenei tra loro, cioè appartengono allo stesso dominio. La relazione è quindi una collezione di n-ple, ciascuna delle quali contiene i valori di un numero prefissato di colonne. La relazione rappresenta un entità, ogni n-upla rappresenta un istanza dell entità, le colonne contengono i valori assunti dagli attributi dell entità. 2
La chiave della relazione è un attributo o una combinazione minimale di attributi che identificano univocamente le n.ple all interno della relazione, cioè ogni riga della tabella possiede valori diversi per l attributo (o gli attributi) chiave. Si rappresenta una tabella mediante il suo schema, secondo una scrittura del tipo: Automobili (Modello, Costruttore, Segmento, Porte, Posti) Indicando tra parentesi, dopo il nome della relazione, i nomi degli attributi e sottolineando l attributo chiave. Si usano spesso i termini record e campo al posto di tupla e attributo. Il termine tabella viene usato come sinonimo di relazione. 3
I requisiti fondamentali che caratterizzano il modello relazionale sono: tutte le righe della tabella contengono lo stesso numero di colonne, corrispondenti agli attributi gli attributi rappresentano informazioni elementari (o atomiche), non scomponibili ulteriormente, cioè non ci sono campi di gruppo che contengono per ogni riga un insieme di valori anziché un solo valore. i valori assunti da un campo appartengono al dominio dei valori possibili per quel campo, e quindi sono valori omogenei tra loro, cioè sono dello stesso tipo. in una relazione, ogni riga è diversa da tutte le altre, cioè non ci possono essere due righe con gli stessi valori dei campi: questo significa che esiste un attributo o una combinazione di attributi che identificano univocamente la n-pla, e che assumono perciò la funzione di chiave primaria della relazione. le n-ple compaiono nella tabella secondo un ordine non prefissato, cioè non è rilevante il criterio con il quale le righe sono sistemate nella tabella. Il modello relazionale fissa una regola di integrità secondo la quale la chiave primaria non può avere valore nullo 4
La derivazione delle relazioni dal modello E/R Dal modello concettuale dei dati è possibile ottenere il modello logico dei dati: in altre parole si può definire la struttura degli archivi adatti per organizzare i dati. Nel caso del modello relazionale le tabelle, che costituiscono il modello logico dei dati, vengono ricavate dal modello E/R mediante alcune semplici regole di derivazione: ogni entità diventa una relazione ogni attributo di un entità diventa un attributo della relazione, cioè il nome di una colonna della tabella ogni attributo della relazione eredita le caratteristiche dell attributo dell entità da cui deriva l identificatore univoco di un entità diventa la chiave primaria della relazione derivata l associazione uno a uno diventa un unica relazione che contiene gli attributi della prima e della seconda entità l associazione uno a molti viene rappresentata aggiungendo, agli attributi dell entità che svolge il ruolo a molti, l identificatore univoco dell entità che svolge il ruolo a uno nell associazione. Questo identificatore, che prende il nome di chiave esterna dell entità associata, è costituito dall insieme di attributi che compongono la chiave della entità a uno dell associazione l associazione molti a molti diventa una nuova relazione composta dagli identificatori univoci delle due entità e degli eventuali attributi dell associazione. La chiave della nuova relazione è formata dall insieme di attributi che compongono le chiavi delle due entità, oltre agli attributi dell associazione necessari a garantire l unicità delle tuple nella relazione ottenuta. 5
Relazioni e chiavi Una chiave primaria è una colonna, o un insieme di colonne, che identificano univocamente una riga nella tabella. Una chiave esterna è una colonna, o un insieme di colonne, i cui valori sono gli stessi della chiave primaria di un altra tabella. 6
Manipolazione dei dati relazionali Le tabelle relazionali possono essere considerate come insiemi, i cui elementi sono costituiti dalle righe delle tabelle stesse. Su di esse possono quindi essere eseguiute le operazioni eseguibili sugli insiemi: 7
Intersezione prodotto 8
Proiezione Selezione 9
Congiunzione (join) 10
join 11
join 12
join 13
join 14
La normalizzazione delle relazioni La normalizzazione consente di creare tabelle ben definite, che facilitano le operazioni di aggiunta, modifica e cancellazione delle informazioni, e che rendono possibili i cambiamenti nella struttura del modello con l evolvere delle esigenze aziendali e degli utenti del database. Nel seguito della trattazione verranno utilizzate le seguenti definizioni: - la chiave o chiave primaria, è l insieme di uno o più attributi che identificano in modo univoco una n-upla (riga della tabella) - la chiave candidata è ogni insieme minimale di uno o più attributi che possono svolgere la funzione di chiave (ci possono essere molte chiavi candidate, ma una sola chiave candidata) - l attributo non-chiave è un campo che non fa parte della chiave primaria. 15
Prima forma normale Una relazione è in prima forma normale quando rispetta i requisiti fondamentali del modello relazionale che sono: - tutte le righe della tabella contengono lo stesso numero di colonne - gli attributi rappresentano informazioni elementari - i valori che compaiono in una colonna sono dello stesso tipo, cioè appartengono allo stesso dominio - ogni riga è diversa da tutte le altre, cioè non ci possono essere due righe con gli stessi valori nelle colonne - l ordine con il quale le righe compaiono nella tabella è irrilevante Gli attributi devono essere informazioni non ulteriormente scomponibili (cioè non devono avere sottoattributi) 16
Prima forma normale Per es. nella relazione: Dipendenti (Matricola, Nome, Indirizzo, FamiliariACarico) L attributo FamiliariACarico non è elementare, in quanto non è costituito da un gruppo di attributi ripetuti dello stesso tipo (i nomi dei familiari). La relazione non è in prima forma normale. La relazione può essere convertita in due tabelle: Dipendenti (Matricola, Nome, Indirizzo) Familiari (CodiceFam, NomeFam, MatricolaDip) Risulta più facile aggiungere eventuali nuovi attributi (es. età, sesso..) 17
Seconda forma normale Una relazione è in seconda forma normale quando è in prima forma normale e tutti i suoi attributi non chiave dipendono dall intera chiave, cioè non possiede attributi che dipendono soltanto da una parte della chiave. La seconda forma normale elimina la dipendenza parziale degli attributi dalla chiave e riguarda il caso di relazioni con chiavi composte (formate da più attributi). La relazione Inventario: Inventario (Prodotto, Magazzino, Quantità, IndirizzoMagazzino) non è in seconda forma normale; infatti l attributo IndirizzoMagazzino dipende funzionalmente dall attributo Magazzino, che rappresenta una porzione di chiave. La soluzione consiste nel costruire nuove relazioni, togliendo dalla relazione di partenza gli attributi che dipendono solo parzialmente dalla chiave primaria. R1 (Magazzino, IndirizzoMagazzino) R2 (Prodotto, Magazzino, Quantità) 18
Terza forma normale Una relazione è in terza forma normale quando è in seconda forma normale e tutti gli attributi non-chiave dipendono direttamente dalla chiave (viene eliminata la dipendenza transitiva degli attributi dalla chiave). Per es. si consideri la gestione anagrafica di un associazione di studenti di scuole diverse. Studenti (Nome, scuola, telefonoscuola) Il nome è l attributo chiave e il telefono della scuola dipende dalla scuola. Nella relazione è presente un attributo non chiave (telefonoscuola) che dipende da un altro attributo non-chiave (scuola). Si possono avere anomalie nell aggiornamento e inconsistenza dei dati per il fatto che il telefono della scuola è ripetuto per ogni studente appartenente a quella scuola. La normalizzazione in 3FN si ottiene scomponendo la relazione di partenza in due nuove relazioni, nelle quali gli attributi dipendono direttamente dalla chiave. Studenti (Nome, scuola) Istituti (scuola, telefonoscuola) 19
L integrità referenziale L integrità referenziale è un insieme di regole del modello relazionale che garantiscono l integrità dei dati quando si hanno relazioni associate tra loro attraverso la chiave esterna; queste regole servono per rendere valide le associazioni tra le tabelle e per eliminare gli errori di inserimento, cancellazione o modifica dei dati collegati tra loro. L integrità referenziale viene rispettata quando per ogni valore non nullo della chiave esterna, esiste un valore corrispondente della chiave primaria nella tabella associata. Per es. nel db relazionale che contiene la tabella dei Clienti e la tabella degli Ordini, il codice del cliente della tabella Ordini è associato alla chiave della tabella Clienti. Clienti (Codice, RagioneSociale, Indirizzo) Ordini (NumeroOrdine, DataOrdine, CodiceCliente) Applicare l integrità referenziale al db significa garantire che un valore, presente nella tabella Ordini per la chiave esterna CodiceCliente, abbia un corrispondente valore di Codice in una delle righe della tabella Clienti. Inoltre non si deve consentire la cancellazione di un cliente dalla tabella Clienti se ci sono righe nella tabella Ordini che si riferiscono ad esso. 20
L integrità referenziale Quando viene applicata l integrità referenziale, è necessario osservare le seguenti regole pratiche: - non è possibile immettere un valore nella chiave esterna della tabella associata, se tale valore non esiste tra le chiavi della tabella primaria - non è possibile eliminare una n-pla dalla tabella primaria, se esistono righe legate ad essa attraverso la chiave esterna nella tabella correlata - non si può modificare il valore alla chiave nella tabella primaria se ad essa corrispondono righe nella tabella correlata 21
Le transazioni Una transazione consiste in un insieme di operazioni di interrogazione o di modifica del database che devono essere eseguite unitariamente come se fossero un unica operazione Esempi di transazione sono: un operazione di trasferimento di fondi da un conto ad un altro, un prelievo a uno sportello Bancomat, la prenotazione di un volo.. Consideriamo l esempio del trasferimento di fondi dal conto di X al conto di Y. Descriviamo la transazione, il cui completamento è subordinato all esistenza di un adeguata copertura di fondi sul conto X, mediante il seguente codice: 22
Le transazioni Begin_transaction read(saldox) saldox=saldox importo write(saldox) read(saldoy) saldoy=saldoy+importo write(saldoy) if (saldox < fido) then rollback else commit endif End_transaction 23
Le transazioni: rollback commit Dall esame del codice si osserva la presenza di due comandi speciali indicati con rollback e commit. Rollback ha l effetto di annullare tutte le modifiche alla base dati apportate dall inizio della transazione Commit indica la conferma di tutto il lavoro fatto e termina la transazione L importo trasferito deve essere tolto da un conto e aggiunto all altro. Entrambe le operazioni devono essere eseguite per potere affermare di avere concluso il trasferimento e non è tollerabile che venga eseguita una sola delle due operazioni. Le transazioni sono caratterizzate dalle seguenti proprietà: -Atomicicty: una transazione è un entità atomica indivisibile -Consistency: le transazioni non devono violare i vincoli di integrità dei dati -Isolation: gli effetti di una transazione devono essere indipendenti da quello di tutte le altre transazioni (esecuzione concorrente delle transazioni) -Durability: gli effetti di una transazione con esito positivo devono essere memorizzati permanentemente del database. 24
Le transazioni: lock Nel caso di esecuzione concorrente delle transizioni per prevenire anomalie di aggiornamento si usa il lock. Ogni transazione prima di accedere ai dati invia al concorrente della concorrenza una richiesta di lock. Se la richiesta viene esaudita la transizione procede, diversamente si blocca in attesa che il lock le venga concesso. Nella gestione delle transazioni occorre considerare il problema del deadlock (stallo). Accade quando un processo è in attesa di una risorsa che è utilizzata da un altro processo, e quest ultimo richiede una risorsa utilizzata dal primo. Lo stallo è difficile da identificare; una tecnica consiste nell usa del timeout nella concessione dei lock (una transazione può rimanere in attesa di un lock solo per un tempo predefinito; il gestore della concorrenza, se non riesce a concedere il lock la interrompe e la fa ripartire da capo). 25