01. Il modello relazionale

Il modello relazionale

Il modello relazionale è un modello logico dei dati il cui elemento fondante è la nozione matematica di relazione (da non confondere con il termine Relationship usato nel modello E-R).

Una relazione matematica può essere rappresentata tramite una tabella e, coerentemente, il modello prevede una rappresentazione dei dati di tipo tabellare.

Questo modello si è avvalso, nel tempo, di una serie di nozioni teoriche derivate dalla matematica, che ne hanno consentito un ampio sviluppo. Del resto, il concetto di tabella è di per sé di facile comprensione a prescindere dalle nozioni matematiche.

Queste due circostanze hanno determinato il successo di questo modello sviluppato a partire dal 1970 e implementato realmente per la prima volta nel 1981.

Occorre aggiungere che una tabella rappresenta una relazione se sono soddisfatte le seguenti condizioni:

    • ciascuna colonna rappresenta un attributo della relazione;

    • i valori di ciascuna colonna sono fra loro omogenei (appartengono allo stesso dominio);

    • le righe sono diverse fra loro;

    • le intestazioni delle colonne (nomi degli attributi) sono diverse tra loro.

Inoltre, una tabella che rappresenta una relazione ha una struttura non posizionale, cioè:

    • l’ordinamento tra le righe è irrilevante;

    • l’ordinamento tra le colonne è irrilevante.

Gli attributi possono avere un valore non specificato; in tal caso si dice che l'attributo ha valore nullo e si scrive nella tabella la costante NULL (da intendersi al di fuori del dominio)

Un esempio di relazione descritta tramite una tabella è la seguente:

Uno schema di relazione è una notazione che riporta il nome della relazione (ovvero il nome della tabella) e il nome degli attributi (cioè la riga di intestazione della tabella). Inoltre evidenzia la chiave primaria, come mostra il seguente esempio:

Orario(treno, città di partenza, ora di partenza, città di arrivo, ora di arrivo)

Una chiave primaria è un insieme minimale di attributi che identificano univocamente ogni riga della tabella. Nell'esempio una chiave primaria è la coppia di attributi "treno" e "ora di partenza".

Osserviamo che, essendo tutte le righe di una tabella che rappresenta una relazione diverse tra loro, è sempre possibile individuare un insieme di attributi che definisce una chiave primaria (al più si selezionano tutti gli attributi).

Gli attributi che costituiscono la chiave primaria non possono avere valore nullo.

Il grado di una relazione è dato dal numero di attributi presenti nella relazione.

Due tabelle possono essere collegate tra loro tramite chiavi esterne.

Una chiave esterna (o foreign key) di una tabella è un insieme di attributi che corrispondono a quelli che costituiscono la chiave primaria di un’altra tabella, e stabiliscono quindi un riferimento tra le righe delle due tabelle.

Nello schema di relazione le chiavi esterne sono evidenziate con il simbolo ↑.

Consideriamo il seguente esempio:

Per la tabella Esami, l'attributo Studente è una chiave esterna che corrisponde alla chiave primaria Matricola della tabella Studenti.

Inoltre, sempre per la tabella Esami, l'attributo Corso è una chiave esterna che corrisponde alla chiave primaria Codice della tabella Corsi.

Una tabella che mette in relazione due chiavi esterne, è detta tabella associativa.

Gli schemi di relazione (inclusivi delle chiavi esterne) sono:

    • Studenti(Matricola, Cognome, Nome, Data di Nascita)

    • Esami(Studente, Voto, Corso)

        • Studente FK(Studenti.Matricola)

        • Corso FK(Corsi.Codice)

    • Corsi(Codice, Titolo, Docente)

Lo schema logico relazionale è un documento che descrive un insieme correlato di schemi di relazione con le relative chiavi esterne.

Le tabelle descritte dallo schema logico devono rispettare i seguenti vincoli di integrità:

    • vincoli di dominio: i valori di ciascuna colonna sono fra loro omogenei (appartengono allo stesso dominio);

    • vincoli di chiave primaria: una chiave primaria deve avere valori univoci e non nulli;

    • vincoli di chiave esterna (o integrità referenziale): i valori non nulli di una chiave esterna devono corrispondere ai valori di una chiave primaria.

Ulteriori vincoli di integrità possono essere specificati mediante le regole aziendali contenute nello schema concettuale. Ad esempio, il fatto che l'età di una persona sia calcolata come differenza tra la data odierna e la data di nascita.

Nella documentazione a corredo dello schema logico dovranno essere indicate le seguenti informazioni:

  • il significato delle relazioni e dei loro attributi;

  • il tipo degli attributi (semplice o calcolato), loro obbligatorietà e il dominio di appartenenza (es. dato numerico, stringa, data ecc.), i vincoli;

  • le regole aziendali, includendo le regole per il calcolo degli attributi derivati e di coerenza nell'ambito del dominio (ad esempio deve essere specificato come verificare se il codice fiscale è ammissibile o se una email ha un formato compatibile) e ulteriori vincoli.

La nozione matematica di relazione

Per introdurre la nozione matematica di relazionale è necessario richiamare alcune definizioni:

Insieme

E' una collezione di oggetti chiamati elementi dell'insieme. Un elemento non può comparire più di una volta in un insieme; gli elementi di un insieme non hanno un ordine di comparizione (l'insieme non è ordinato); gli elementi di un insieme lo caratterizzano univocamente: due insiemi coincidono se e solo se hanno gli stessi elementi.

Prodotto cartesiano

Il prodotto cartesiano di due insiemi A e B (si scrive A x B) è l'insieme costituito dalle coppie ordinate (a, b), dove a è un elemento di A e b un elemento di B. Le coppie sono ordinate, cioè la coppia (a, b) è diversa dalla coppia (b, a), perciò il prodotto A x B è diverso dal prodotto B x A.

Esempio di prodotto cartesiano:

Dati gli insiemi

    • A = {Rossi, Verdi}

    • B = {1980, 1990, 1991}

Il Prodotto cartesiano A x B = { (Rossi, 1980), (Rossi, 1990), (Rossi, 1991), (Verdi, 1980), (Verdi, 1990), (Verdi, 1991) }.

In generale il prodotto cartesiano può riguardare anche più di due insiemi (A, B, C, D,...), e al posto delle coppie si possono avere triple, quadruple, e in generale n-uple (pronunciato enn-uple).

Relazione (matematica)

Una Relazione matematica (o più brevemente una Relazione) R su A e B indicata da R(A, B) è un sottoinsieme dell'insieme prodotto cartesiano A x B.

Esempio di relazione matematica

Dato i prodotto cartesiano A x B precedentemente definito, una possibile relazione è

    • R(A, B) = { (Rossi, 1990), (Rossi, 1991), (Verdi, 1980) }

Grado e cardinalità di una Relazione

Il grado di una relazione è dato dal numero degli insiemi su cui è effettuata la relazione (A, B, C, D, ...).

La cardinalità di una relazione è data dal numero degli elementi che la costituiscono.

Esempio di grado e cardinalità

R(A, B) = { (Rossi, 1990), (Rossi, 1991), (Verdi, 1980) } è di grado 2 e di cardinalità 3.

Attributi

Sono gli insiemi che vengono utilizzati per costruire la Relazione, come A e B.

Dominio

E' l'insieme dei valori che può assumere un attributo. Nell'esempio precedente A è un insieme di nomi (stringhe), B è un insieme di numeri interi. Ogni attributo ha un proprio dominio di valori, che non può essere modificato.