Per introdurre in maniera formalizzata il concetto di Relazione, che è alla base del modello relazionale, occorre richiamare la definizione insiemistica di Prodotto Cartesiano tra insiemi.

Def.: dati N insiemi A1, A2, …. An, il loro Prodotto Cartesiano, A1 X A2 X….X An, è l’insieme di tutte le n-uple (a1, a2, … an) che si possono costruire prendendo nell’ordine un elemento a1 dal primo insieme A1, un elemento a2 dal secondo insieme A2, e così via.                                    A1 X A2 X….X An = { (a1, a2, …an) / a1 Î A1, … an Î An}

Def.: Una Relazione, R, definita sugli insiemi A1, A2,… An, è un sottoinsieme del prodotto cartesiano tra un numero finito di insiemi.                                                             R Í A1 X A2 X….X An

A1, A2,…An si dicono Domini della relazione R. Il loro numero, n, è il Grado della relazione.

Oss.: a differenza delle relazioni matematiche, le relazioni che analizzeremo nel modello relazionale sono variabili nel tempo, sono cioè degli oggetti modificabili. Nel gergo delle basi di dati relazionali si usa spesso tupla invece che n-upla

Il modello relazionale di un Data Base è in genere un insieme di più relazioni, sulle quali si possono effettuare operazioni, e tra le quali possono essere stabilite associazioni.

Una relazione viene comunemente rappresentata con una tabella, avente tante colonne quanti sono i domini (numero delle colonne = grado della relazione) e tante righe quante sono le n-uple presenti nella relazione in un dato istante (numero delle righe = cardinalità della relazione).

Nel modello relazionale ad ogni dominio di una relazione viene associato un nome, detto attributo (o campo) della relazione, che lo identifica univocamente rispetto agli altri attributi della stessa relazione. Nella rappresentazione tabellare tali attributi sono i nomi posti ad intestazione delle colonne. Ciascun dominio coincide con l’insieme di valori (di tipo atomico - non strutturati) che possono essere assunti da un attributo.

Esempio. Sia Studente la relazione costruita sui domini: Cognome, Nome, Sesso, Età, Classe, Sezione, Indirizzo. Dato che i domini sono sette il grado della relazione è sette. In un dato istante, Studente potrebbe essere l’insieme:

Studente = {(Rossi, Mario, M, 16, III, A, Igea), (Verdi, Federica, F, 15, II, B, Igea), (Bianchi, Guido, M, 18, V, A, Mercurio)}

In questo esempio la cardinalità della relazione è tre, in quanto tre sono le istanze occorrenti di Studente. Il dominio Cognome è dato da tutti i cognomi esistenti; lo stesso dicasi per il dominio Nome; il dominio Sesso è dato dai due soli valori "M" ed "F"; il dominio Età è dato da tutti gli interi compresi tra zero e 99 e così via. I nomi scelti per tali domini si dicono attributi: Cognome è un attributo della relazione Studente, così come lo è Classe.

La stessa relazione vista in forma tabellare può essere così rappresentata:

Cognome

Nome

Sesso

Età

Classe

Sezione

Indirizzo

Rossi

Mario

M

16

III

A

Igea

Verdi

Federica

F

15

II

B

Igea

Bianchi

Guido

M

18

V

A

Mercurio

L’intestazione della tabella, con l’elencazione di tutti gli attributi, fornisce lo schema della relazione, la sua parte intensionale, mentre le righe con i valori, le istanze, ne costituiscono la sua parte estensionale.

Uno schema di relazione è più propriamente costituito dalle seguenti informazioni:

a.       il nome della relazione (di solito scritto in maiuscolo; nell’es. STUDENTE)

b.      l’elenco degli attributi con il loro tipo (il tipo è spesso omesso per semplificare la notazione)

c.       l’insieme degli attributi, convenzionalmente sottolineati, che costituiscono la "chiave primaria" [Vedi Sotto per definizione di "chiave"]

Lo schema della relazione vista nell’esempio precedente è: STUDENTE(Cognome, Nome, Sesso, Età, Classe, Sezione, Indirizzo) ipotizzando la coppia Cognome e Nome chiave primaria della relazione e semplificando la notazione non includendovi le tipologie degli attributi.

Il modello relazionale è molto limitato dal punto di vista della possibilità di esprimere vincoli. L’unica possibilità offerta al progettista è quella di stabilire che un certo insieme degli attributi costituisce una chiave candidata (o, più semplicemente una "chiave").

Def.: Una chiave candidata di una relazione R è un insieme K = { k1, k2, …km } non vuoto di nomi di attributi di R che gode delle due seguenti proprietà:            Univocità e Non-ridondanza.

In altre parole, gli attributi di una chiave candidata sono tutti necessari e sufficienti per individuare una n-upla di una relazione R. In generale possono esistere più chiavi candidate. Fra di esse ne viene scelta una, generalmente con il minor numero di attribuiti, che viene designata come chiave primaria di R. Molto spesso si fa in modo che la chiave primaria sia costituita da un unico attributo introducendo degli attributi "codice" spesso intesi come progressivi numerici.

Nel modello relazionale particolare importanza riveste la normalizzazione delle relazioni che è un processo formalizzato attraverso il quale le tabelle vengono trasformate in modo tale che ognuna corrisponda ad un singolo oggetto della realtà rappresentata con il modello di Data Base. Questa semplificazione tenta di eliminare le cosiddette anomalie, inconvenienti che si presentano durante un operazione di modifica alla base dati, spesso conseguenze di ridondanze presenti nella base dati stessa.

Esistono regole di trasformazione dallo schema ER (Entity Relationship – vedi apposito modulo) allo schema relazionale di una base dati che, se lo schema ER di partenza è ‘buono’, conducono automaticamente alla definizione di schemi normalizzati. Queste regole possono così riassumersi:

·         una generica Entità (elemento base dello schema ER) può essere rappresentata con una tabella, avente come nome il nome assegnato all’entità e come nomi delle colonne i nomi degli attributi;

·         un’Associazione 1:1 (uno a uno) tra due entità dello schema ER viene convertita in un’unica tabella avente gli attributi dell’una e dell’altra entità;

·         un’associazione 1:N (uno a molti) viene tradotta con due tabelle che rappresentano le entità, aggiungendo alla tabella che rappresenta l’entità che sta vicino a N la chiave dell’entità che sta vicino a 1 (s’introduce il concetto di chiave esterna);

·         un’associazione N:M (molti a molti) viene tradotta con due tabelle che rappresentano le entità e con una terza relazione contenente le chiavi delle due entità e gli eventuali attributi dell’associazione.

Parte integrante del modello sono le operazioni che si applicano alla base dati: operazioni di manipolazione, che riguardano il trattamento delle relazioni, ed operazioni di interrogazione, che consentono di ottenere le informazioni desiderate estraendo da una tabella una sottotabella, oppure combinando tra loro due o più tabelle, generando così nuove relazioni. Tra le operazioni di interrogazione distinguiamo le seguenti fondamentali:

·         la selezione (select) genera una nuova relazione costituita solo dalle n-uple della relazione di partenza che soddisfano una determinata condizione; vengono cioè selezionate le righe con i valori corrispondenti alla condizione prefissata. La relazione ottenuta possiede tutte le colonne della relazione di partenza;

·         la proiezione (project) genera una nuova relazione estraendo dalla tabella iniziale due o più colonne corrispondenti agli attributi prefissati;

·         la congiunzione (join) serve a combinare due relazioni aventi un attributo in comune, generando una nuova relazione che contiene le righe della prima e della seconda tabella, che possono essere combinate secondo i valori uguali dell’attributo in comune.

Naturalmente gli operatori descritti possono essere applicati alle tabelle anche in successione; in questo modo vengono effettuate interrogazioni sulle relazioni ottenute come risultato di una interrogazione precedente. Il modello relazionale presenta una grande semplicità nell’uso e nell’implementazione, anche se è relativamente più lento nella ricerca e occupa più spazio su memoria di massa rispetto ai Data Base creati e gestiti secondo i modelli gerarchico e reticolare.

Il trattamento dei dati avviene per pacchetti di record, anziché su singoli record. Il ritrovamento delle informazioni viene realizzato operando sulle righe e sulle colonne delle tabelle, con gli operatori descritti e ponendo le condizioni che devono essere soddisfatte dai valori dei campi. Quindi non è necessario specificare il cammino che deve essere seguito per accedere ai dati contenuti nel Data Base. Questo ha favorito l’introduzione di linguaggi di nuova concezione, detti di ‘quarta generazione’ o non procedurali (vedi SQL), che svincolano l’utente da sofisticate conoscenze tecniche relative ai cammini di accesso ai dati, ai puntatori, alle liste concatenate, ecc… La formulazione delle richieste viene semplificata, l’utente è più libero di navigare all’interno della base di dati e, soprattutto nelle implementazioni di prodotti su personal computer, si può trovare un’interfaccia di tipo grafico che consente di operare in modo semplice ed intuitivo.

Torna a Denis Ettore