Limbaje formale pentru baze de date

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Limbajele formale ale bazelor de date sunt limbi pentru descrierea operațiunilor de acces la date ale unei baze de date ;
Principalele, cu care pot fi exprimate interogări , sunt:

  • Algebra relațională , care este un limbaj procedural (adică procedura de construire a informațiilor solicitate este explicită). Se bazează pe cinci operații fundamentale (selecție, proiecție, unire, diferență și produs cartezian) și trei derivate (intersecție, îmbinare și semi-îmbinare) care dau puterea expresivă deplină a limbajului.
  • Calculul relațional , care este în schimb declarativ (adică ce informații trebuie extrase, dar nu cum). Acest limbaj se bazează pe logica primului ordin și, în afară de formulele nesigure, are o putere expresivă echivalentă cu cea a algebrei relaționale. Este împărțit în două tipuri principale: calculul tuplurilor (TRC, Tuple Relational Calculus ) și calculul domeniilor (DRC, Domain Relational Calculus ).
  • Datalog , care posedă o putere expresivă mai mare decât algebra relațională și trc, deoarece poate exprima interogări recursive. De asemenea, se bazează pe programarea logică, ca derivat al Prolog .
 Exemplu de algebră relațională și interogare TRC:
Arată numele studenților
care au luat 28 la examinarea bazelor de date.

Bază de date:
STUDENT (număr de serie, nume, data nașterii, adresă);
EXAMEN (numărul de serie, codul cursului, data, nota);
CURS (Cod curs, titlu, profesor);

Algebră relațională:
Π Nume σ Rating = 28 ∧ Titlu = 'BasidiDati'
(STUDENT ▷ ◁ EXAMEN ▷ ◁ CURS)

TRC:
{t | ∃ t1 ∈ STUDENT,
∃ t2 ∈ EXAMEN,
∃ t3 ∈ CURS
(t [Nume] = t1 [Nume] ∧
t1 [Număr de serie] = t2 [Număr de serie] ∧
t2 [CourseCode] = t3 [CourseCode] ∧
t2 [Scor] = 28 ∧ t3 [Titlu] = 'BasidiDati')}

Jurnal de date:
VOTĂ (Nume): -Estudiant (M, Nume, _ _),
Examen (M, CCorso, _, V),
Curs (CCorso, T, _),
V = 28, T = „Baze de date”

Expresii algebrice în TRC

Deoarece interogările de algebră relațională pot fi exprimate prin cinci funcții fundamentale, pentru a demonstra că puterea sa expresivă este inclusă în cea de calcul (adică nu există interogări exprimabile în algebră relațională, dar nu și în trc) este suficient să arătăm cum aceste cinci primitivele sunt exprimabile în trc.

Selecţie
Proiecție
produs cartezian
Dacă TABELUL 1 este compus din atributele a, b, c și TABEL este compus din d, e
Diferență
Uniune

Expresii TRC în algebră relațională

Dacă, așa cum am văzut anterior, toate operațiile algebrei relaționale pot fi traduse cu expresii mai mult sau mai puțin complexe în TRC, nu este sigur că acest lucru se poate întâmpla și invers. De fapt, este important să subliniem că puterea expresivă a algebrei relaționale și a TRC poate fi considerată echivalentă numai atunci când limbajul din urmă este limitat la expresiile definite ca sigure .

O formulă sigură în Calcul, este o formulă independentă de domeniu, adică nu trebuie să depindă de posibilitatea de a-l varia.

Interogare nesigură

O formulă nesigură este o formulă dependentă de domeniu.

  • Exemplu de interogare nesigură :
 {t | t ∉ R}

Această expresie are ca rezultat tupluri infinite (sau mai bine zis toate tuplurile construibile pornind de la domeniul pe care este definit t) și, prin urmare, nu este „independentă de domeniu”. Prin urmare, această interogare nu poate fi evaluată în algebră.

Superioritatea registrului de date

Interogările recursive nu pot fi exprimate în algebră relațională sau trc (o interogare este recursivă dacă este exprimată în termeni în sine). Mai jos oferim un exemplu de interogare care nu poate fi exprimată în algebră fără a furniza o dovadă a acestui fapt.

Tabelul Ierarhia reprezintă o organigramă corporativă în care fiecare angajat are cel mult un supervizor.
Grefier de anul întâi bobocSuperior
În acest context, întrebarea „pentru a extrage numărul de înregistrare a tuturor angajaților direcți sau indirecți ai unui superior” nu poate fi exprimată în algebră. De fapt, ar trebui realizat printr-un număr de îmbinări în funcție de instanța tabelului și, prin urmare, ar fi imposibil să se garanteze întotdeauna corectitudinea acestuia (dată fiind o interogare constând din n îmbinări, este suficient ca un angajat să aibă n + 1 superiori indirecți pentru a face ca rezultatul interogării să nu fie costum de afaceri). Exprimarea corectă a interogării necesită utilizarea recursivității.

Recursivitate în Datalog

Întrebările recursive, pe de altă parte, pot fi exprimate în Datalog: capul unei reguli poate apărea în corpul său. Regula de mai sus ar putea fi, de exemplu, rezolvată astfel:
 Supervizor (IMP, MAN): -Ierarhie (IMP, MAN)
Supervizor (IMP, MAN): -Ierarhie (IMP, MED), Supervizor (MED, MAN)
? -Supervizor („Antonio”, _)

Notă