Il modello relazionale
Oggi è il modello logico più diffuso ed è adottato dalla larga maggioranza dei DBMS disponibili a livello commerciale. È caratterizzato da una semplice struttura dati, la relazione, ed è basato su precise basi matematiche (insiemi, logica dei predicati). I vantaggi che presenta sono una facilità nell’esprimere interrogazioni anche complesse e una semplicità nella rappresentazione dei dati.
Linguaggi di interrogazione
I due linguaggi di interrogazione base dal quale è poi stato sviluppato il linguaggio SQL sono:
- Algebra Relazionale (esprime le interrogazioni tramite operatori specializzati alle operazioni)
- Calcolo Relazionale (esprime le interrogazioni per mezzo di formule logiche, e solo le tuple che soddisfano tali formule vengono prese in considerazione come risposta all’interrogazione)
Definizioni utili
Dominio: è un insieme (anche infinito) di valori, troveremo:
- int (insieme dei numeri interi)
- real (insieme dei numeri reali)
- string (insieme delle stringhe)
- date (insieme delle date)
Prodotto Cartesiano: è un prodotto tra k domini anche non distinti (è possibile fare un prodotto tra lo stesso dominio), è quindi un insieme di componenti chiamati tupla, in cui ognuna di esse vi sono k elementi, tali che ognuno di questi elementi della tupla appartiene a un dominio. (Gli elementi tra una tupla e un’altra possono anche ripetersi).
Esempio di domini: A (a, aa) prodotto cartesiano: A x B x AB (b, bb)
- Tupla 1: (a, b, a)
- Tupla 2: (aa, bb, a)
- Tupla 3: (a, b, aa)
- Tupla 4: (aa, b, aa)
- Tupla 5: (a, bb, a)
- Tupla 6: (aa, bb, aa)
Il grado del prodotto cartesiano corrisponde al numero di domini presenti nel prodotto (grado 3 nell’esempio sopra).
Relazione: è un sottoinsieme finito del prodotto cartesiano di k domini e ha grado k (la relazione può anche coincidere col prodotto cartesiano), la cardinalità di una relazione è il numero di tuple che appartengono a tale relazione. (Le tuple appartenenti alla relazione di grado k hanno anch’esse k componenti)
Per indicare l’i-esimo elemento della tupla t si usa la notazione t[i], come per gli array, questo sistema è chiamato notazione posizionale.
Proprietà della relazione
Una relazione è dunque un insieme finito nel quale non è definito un ordinamento tra le tuple, e in cui ogni tupla è differente dall’altra (ogni tupla ha però gli elementi ordinati in base al prodotto cartesiano sul quale si basa la relazione, es. prod. cart. = A x A x B, rel = (t2, t16, t1, t3…)).
t1 = (a, a, b)
Notazione per nome
In questa notazione viene associato un nome (nome di attributo) ad ogni co…