- il modello relazionale è un modello basato sulla nozilone matematica di relazione.
- le relazioni si traducono in maniera naturale in tabelle (quindi i termini tabella e relazione sono interscambiabili)
- dati e relazioni (riferimenti) tra dati di tabelle diverse sono rappresentati come valori
relazioni
tre interpretazioni di "relazione"
- relazione matematica (teoria degli insiemi)
- relazione secondo il modello relazionale dei dati
- relazione (relationship) o associazione, che rappresenta una classe di fatti nel modello concettuale Entity-Relationship - un tipo di collegamento concettuale tra entità diverse
una relazione matematica è un qualsiasi sottoinsieme del prodotto cartesiano di 1+ domini. una relazione sottoinsieme del prodotto cartesiano di k domini si dice di grado k. gli elementi di una relazione si dicono tuple o ennuple. ogni tupla di una relazione di grado k ha k componenti ordinate, ma non c’è ordinamento tra le tuple.
{(nero, 0), (nero, 2), (bianco, 0)} è una relazione di grado 2, cardinalità 3
.
- si usano quasi sempre domini predifiniti, comuni ai linguaggi di programmazione (es. stringhe, interi)
ma come interpretare i dati delle tabelle? assegnando nomi alla tabella e alla colonna.
- un attributo è definito da un nome A e dal dominio dell’attributo A,
dom(A)
- dato un insieme di attributi R, un’ennupla (tuple) su R è una funzione definita su R che associa ad ogni attributo A in R un elemento di dom(A)
- se t è un’ennupla su R e A è un attributo in R, allora indichiamo con t(a) il valore assunto dalla funzione t in corrispondenza dell’attributo A
Ogni relazione può essere implementata come una tabella in cui ogni riga è una tupla della relazione (differente da ogni altra) e ogni colonna è una componente (valori omogenei, provenienti dallo stesso dominio). Le colonne corrispondono ai domini D1, D2, …, Dk e hanno associati i nomi degli attributi, nomi univici che descrivono il loro ruolo. La coppia nome di attributo-dominio è chiamata attributo. L’insieme di attributi di una relazione è detto schema. Uno schema è invariante nel tempo e descrive la struttura di una relazione (mentre un’istanza è volatile).
- se t è una tupla, t[nome] indica il valore dell’attributo con nome nome.
valori null
i valori null rappresentano mancanza di informazione o impossibilità di applicare un’informazione
- tutti i valori null sono considerati diversi tra di loro, quindi non è ammesso avere valori null come chiavi
- null è un valore polimorfo - non appartiene a nessun dominio, ma può sostituire valori in qualsiasi dominio
- (null non è zero)
errori nelle basi di dati
gli errori nelle basi di dati possono essere evitati con vincoli sui domini (es. limite inferiore per gli anni)
un vincolo di integrità è quindi una proprietà che deve essere soddisfatta da ogni istanza della base di dati perché essa sia corretta.
- i vincoli possono essere intrarelazionali (definiti su valori della stessa relazione) o interrelazionali (tra più relazioni)
chiavi
le chiavi sono attributi o insiemi di attributi che identificano univocamente una tupla.
un insieme X di attributi di una relazione R è una chiave se soddisfa le condizioni:
- per ogni istanza di R non esistono due tuple distinte t1 e t2 che hanno gli stessi valori (per tutti gli attributi in X)
- nessun sottoinsieme proprio di X soddisfa la condizione 1.
Una superchiave è un insieme che contiene una chiave (una superchiave non è una chiave, ma una chiave è anche una superchiave).
Una relazione può avere più chiavi alternative: in questo caso, si sceglie quella più usata o composta da un numero minore di attributi, la cosiddetta chiave primaria.
- una chiave primaria non ammette valori nulli
il vincolo interrelazionale foreign key, o vincolo di integrità referenziale fa sì che porzioni di informazione in relazioni diverse siano correlate attraverso valori di chiave
Le dipendenze relazionali vengono definite prima di cominciare a inserire dati - definite sullo schema - e si può inserire un valore solo se soddisfa tutti i vincoli.
dipendenze funzionali
Una dipendenza funzionale stabilisce un particolare legame semantico tra due insiemi non vuoti di attributi X e Y appartententi a uno schema R.
X -> Y
“X determina Y”
uso delle lettere
Le prime lettere dell’alfabeto (A,B,C) si riferiscono a singoli attributi Le ultime lettere dell’alfabeto (X,Y,Z) si riferiscono a insiemi di attributi.
esempio
supponiamo di avere uno schema di relazione:
- VOLI (CodiceVolo, Giorno, Pilota, Ora)
i vincoli “informali” sono:
- un volo con un determinato codice parte sempre alla stessa ora
- esiste solo un volo con un dato pilota in un dato giorno ad una data ora
- c’è un solo pilota di un dato volo in un dato giorno
i vincoli corrispondono alle dipendenze funzionali:
CodiceVolo -> Ora
{Giorno, Pilota, Ora} -> CodiceVolo
{CodiceVolo, Giorno} -> Pilota
in questo caso, la chiave sarebbe
CodiceVolo, Giorno
(domanda di esame:)
quando sono soddisfatte le dipendenze funzionali?
Diremo che una relazione r con schema R soddisfa la dipendenza funzionale
X -> Y
se:
- la dipendenza funzionale
X -> Y
è applicabile ad R, ovvero sia X che Y sono sottoinsiemi di R.- le ennuple r che concordano su X, concordano anche su Y (se le tuple sono uguali su X, devono essere uguali anche su Y)
t1[X] = t2[Y]
⇒t1[Y] = t2[X]
(⇒ implica)es. un’istanza con una sola tupla soddisfa
X->Y
, e la premessa della seconda condizione è verificata, quindi soddisfa la dipendenza funzionale, ma senza implicazioni su Y
domande orale
possibili domande esame
- cos’è una relazione/attributo/schema/istanza?
- cos’è una chiave? (risposta da integrare con chiave)
- cos’è una dipendenza funzionale e quando si dice soddisfatta? (integrare con 5 - dipendenze funzionali