Calcolo relazionale
Una famiglia di linguaggi dichiarativi, basati sul calcolo dei predicati del primo ordine
Diverse versioni:
- calcolo relazionale su domini
- calcolo su ennuple con dichiarazioni di range
Calcolo su domini, sintassi e semantica
Le espressioni hanno la forma: $\{A_1: x_1,..,A_k:x_k|f\}$
- $f$ è una formula (con connettivi booleani e quantificatori)
- $A_1: x_1,..,A_k:x_k$ “target list”:
- $A_1,..,A_k$ attributi distinti (anche non nella base di dati)
- $x_1,..,x_k$ variabili distinte
Semantica: il risultato è una relazione su $A_1,..,A_k$ che contiene ennuple di valori per $x_1,..,x_k$ che rendono vera la formula $f$
Commenti
Differenze rispetto al calcolo dei predicati (per chi lo conosce):
- simboli di predicato
- relazioni nella base di dati
- predicati “standard” predefiniti (=, >, ..)
- non ci sono “simboli di funzione”
- interessano (quasi) solo “formule aperte”
- utilizziamo notazione non posizionale
Quantificatori
Quantificatori esistenziali o universali? Sono intercambiabili per le leggi di De Morgan