DBMS - Basi di dati

Il modello relazionale


Introduzione

Il modello relazionale è stato proposto agli inizi degli anni Settanta da E. F. Codd, con l’obiettivo di realizzare l’indipendenza dei dati. Unisce concetti derivati dalla teoria degli insiemi, in particolare le relazioni, a una rappresentazione dei dati di tipo tabellare.

È stato teorizzato per separare il più possibile il livello logico dal livello fisico della descrizione dei dati. Si basa su un rigoroso modello matematico e permette un elevato grado di astrazione.

Un database relazionale è un database costruito basandosi sul modello relazionale, in cui le entità di interesse vengono rappresentate mediante una struttura dati chiamata relazione. I sistemi di gestione di dati relazionali vengono chiamati RDBMS.

La rappresentazione del modello è semplice e intuitiva. Le relazioni e i risultati delle operazioni su di esse sono facilmente rappresentabili e interpretabili dagli utenti.

Prodotto cartesiano

Dati due insiemi D₁ e D₂, si definisce prodotto cartesiano di D₁ e D₂, e si indica con D₁ × D₂, l’insieme delle coppie ordinate (v₁, v₂) tali che v₁ sia un elemento di D₁ e v₂ sia un elemento di D₂.

Esempio

Dati gli insiemi:

  • FORME = {cubo, cono}
  • COLORI = {rosso, verde, blu}

Il loro prodotto cartesiano è:

{(cubo, rosso), (cono, rosso), (cubo, verde), (cono, verde), (cubo, blu), (cono, blu)}

Una relazione matematica su due insiemi D₁ e D₂ è un sottoinsieme di D₁ × D₂.

A livello formale gli insiemi possono essere infiniti; a livello pratico non possiamo però considerare relazioni infinite.

Una possibile relazione sugli insiemi dell’esempio è:

{(cubo, rosso), (cono, rosso), (cubo, blu)}

FormeColori
cuborosso
conorosso
cuboblu

Nota editoriale: nel testo fornito l’ultima riga della tabella era “cono, blu”, mentre nell’insieme era “cubo, blu”. La tabella è stata uniformata all’insieme.

Le definizioni viste per due insiemi possono essere generalizzate a n insiemi.

Attributo, tupla e relazione

AttributoÈ l’identificatore di un dominio su cui è definito.TuplaÈ un insieme di valori, uno per attributo, ordinati secondo lo schema della relazione e definiti ciascuno su un proprio dominio. Ogni riga della tabella è una tupla ordinata di elementi.RelazioneÈ un insieme di tuple definite sul dominio della relazione, cioè sull’insieme ordinato dei domini dei singoli attributi.GradoIl numero n dei domini è detto grado del prodotto cartesiano e quindi della relazione.CardinalitàIl numero di elementi della relazione è detto cardinalità della relazione.

Osservazioni

  • Non esiste un ordinamento fra le tuple.
  • Non possono esistere due tuple uguali.
  • Ogni tupla è internamente ordinata; se si scambiano due righe, la relazione non cambia.
  • Se si scambiano due colonne senza mantenere la corrispondenza con i rispettivi attributi, il significato può cambiare o perdere consistenza.
  • Un insieme può apparire più volte in una relazione.

Esempio: la relazione “Risultati Schedina” è un sottoinsieme del prodotto cartesiano SQUADRA × SQUADRA × RISULTATO.

Il termine relazione deve essere interpretato nel giusto contesto. Nel modello relazionale indica la struttura principale del modello. In altri contesti, come nei diagrammi Entity-Relationship, indica un legame fra due entità.

In inglese questa ambiguità viene solitamente evitata usando relation per il primo significato e relationship per il secondo.

Modello sui valori

Il modello relazionale è basato su valori: i riferimenti fra dati in relazioni diverse avvengono attraverso i valori dei domini corrispondenti che appaiono nelle tuple.

Altri modelli, come quello gerarchico e quello reticolare, utilizzano puntatori per le corrispondenze e sono detti basati su record e puntatori.

I vantaggi dell’approccio per valori sono:

  • Si inseriscono nella base di dati solo valori significativi per l’applicazione; i puntatori sono dati aggiuntivi relativi alla sola implementazione.
  • Il trasferimento dei dati da un ambiente a un altro è più semplice, perché i puntatori hanno validità solo locale.
  • La rappresentazione logica dei dati non fa riferimento a quella fisica e quindi si ottiene l’indipendenza dei dati.

Schemi

Se t è una tupla definita sul dominio X della relazione e A è uno degli attributi di X, t[A] oppure t.A indica il valore di t relativo ad A.

Esempio: nella relazione COLOREFORMA, se t è la prima tupla, t.forme = cubo.

Uno schema di relazione R(X) è costituito da un simbolo R, nome della relazione, e da una serie di attributi X = {A₁, A₂, …, Aₙ}.

Corsi (Codice, NomeCorso, Docente)

Uno schema di base di dati è un insieme di schemi di relazione con nomi diversi:

R = {R₁(X₁), R₂(X₂), …, Rₙ(Xₙ)}

Una relazione su uno schema R(X) è un insieme r di tuple su X.

Una base di dati sullo schema R = {R₁(X₁), R₂(X₂), …, Rₙ(Xₙ)} è un insieme di relazioni r = {r₁, r₂, …, rₙ}, dove ogni rᵢ è una relazione sullo schema Rᵢ(Xᵢ).

Vincoli d’integrità

I vincoli d’integrità sono condizioni, espresse sotto forma di predicati logici, inserite nella base di dati per garantirne la consistenza.

Ogni istanza della base di dati deve soddisfare i vincoli di integrità. Un’istanza che li soddisfa tutti è detta corretta, lecita o ammissibile.

I vincoli possono essere di vario tipo:

  • Intrarelazionali: coinvolgono attributi della stessa relazione.
  • Vincoli di tupla: possono essere valutati su ciascuna tupla indipendentemente dalle altre.
  • Vincoli di dominio: sono definiti su singoli valori.
  • Interrelazionali: coinvolgono più relazioni.

Valori nulli

Le tuple che compongono la base di dati devono essere omogenee: a ogni attributo deve essere associato un valore in ogni tupla. Non sempre questo è possibile.

Esempio: nella relazione Persone (Cognome, Nome, Indirizzo, Telefono) potrebbe esserci una persona che non ha un telefono o di cui non conosciamo l’indirizzo.

In questo caso viene definito un valore convenzionale, detto valore nullo, che indica la non disponibilità dell’informazione.

Il valore nullo può rappresentare tre tipi di informazione:

  • Sconosciuta.
  • Inesistente.
  • Indeterminata: nei DBMS disponibili si considera in genere questo caso.

Esempi di vincoli

Non tutte le combinazioni possibili dei valori dei domini su cui è definita una relazione sono accettabili.

  • Alcuni attributi possono assumere valori solo all’interno di un certo intervallo.
  • Alcuni attributi devono essere diversi in ogni tupla della stessa relazione: per esempio, la Matricola in Studenti (Matricola, Cognome, Nome, DataNascita).
  • Alcuni valori possono essere incompatibili con altri all’interno della stessa relazione. In Esami (Matricola, Voto, Lode, CodCorso), una stessa coppia (Matricola, CodCorso) può apparire una sola volta. Il valore Vero per Lode è corretto solo se Voto = 30.
  • Alcuni valori possono essere incompatibili con quelli di un’altra relazione. Date Esami e Corsi (CodCorso, Titolo, Docente), ogni valore di CodCorso in Esami deve esistere anche in Corsi.

I vincoli di integrità possono essere definiti attraverso operatori booleani. Esempi:

  • (Voto >= 18) AND (Voto <= 30)
  • (NOT (Lode = Vero)) OR (Voto = 30)

Data la relazione Pagamenti (Data, Importo, Ritenute, Netto), un ulteriore vincolo è:

Netto = Importo − Ritenute

Chiavi

Una chiave è un insieme minimale di attributi utilizzato per identificare univocamente le tuple di una relazione.

Formalmente, un insieme di attributi K è superchiave per una relazione r se r non contiene due tuple distinte t₁ e t₂ tali che t₁[K] = t₂[K].

Un insieme di attributi K è chiave per r se è una superchiave minimale, cioè se non esiste un’altra superchiave K′ che sia un sottoinsieme proprio di K.

Una chiave è tale se soddisfa la definizione per tutte le possibili tuple appartenenti alla relazione, e non soltanto per quelle che appaiono effettivamente come istanze. La chiave è quindi legata allo schema della relazione.

Ogni relazione, per definizione, possiede una chiave: infatti l’insieme di tutti gli attributi X su cui è definita è sicuramente una superchiave.

Chiave primaria

La presenza di valori nulli in una chiave può vanificare la proprietà di unicità delle tuple identificate da quella chiave.

Si impone quindi che almeno una chiave non contenga valori nulli. Tale chiave è detta chiave primaria. Di solito viene sottolineata nello schema di una relazione.

Studenti (Matricola, Cognome, Nome, Nascita, Corso)

info@giannimessina.it