Le interrogazioni si scrivono al seguente modo: {t |
p(t)
}
—> tutte le tuple per le quali è vera p(t), che è una formula costruita tramite atomi.
Gli atomi sono:
Formule Ben Formate
- se p è una fbf, lo sono anche ¬p e (p)
- se p1 e p2 sono fbf, lo sono anche p1∧p2,p1∨p2,p1→p2
- se p è una fbf in cui s è una variabile, lo sono anche ∃s∈r(p(s)) e ∀s∈r(p(s))
Esempio di Calcolo delle Tuple
{ t | ∃t1∈ Studente, ∃t2∈ Esame, ∃t3∈ Corso (
t[NOME] = t1[NOME] ∧
t1[MATR] = t2[MATR] ∧
t2[C-CORSO] = t3[C-CORSO] ∧
t2[VOTO] = 30 ∧
t3[TITOLO] = “matematica”)}
Proprietà importanti
p∧r≡¬(¬p∨¬r)
∀t∈r(p(t))≡¬∃t∈r(¬p(t))
p→r≡¬p∨r
Formule come {t | t
∈/
r}
sono dette unsafe e producono risultati infiniti.
Per rimanere in un ambito safe si restringe la formulazione del calcolo delle formule ai domini attivi: le tuple che soddisfano una formula possono essere composte solamente da valori che compaiono:
- esplicitamente nella formula
- in tuple di relazioni menzionate nella formula
Equivalenza tra Algebra Relazionale e Calcolo delle Tuple
Selezione: σA=1R={t∣∃t1∈R(t1[A]=1)∧t=t1}
Proiezione: ΠA,CR={t∣∃t1∈R(t[A,C]=t1[A,C])}
Prodotto Cartesiano: R(A,B,C)×S(D,E,F)={t∣∃t1∈R,∃t2∈S(t[A,B,C]=t1[A,B,C]∧t[D,E,F]=t2[D,E,F])}
Unione: R∪S={t∣(∃t1∈r(t=t1)∨(∃t2∈s(t=t2)}
Differenza: R−S={t∣(∃t1∈r(t=t1)∧¬(∃t2∈s(t=t2)}