0% au considerat acest document util (0 voturi)
14 vizualizări4 pagini

Algebra Relationala

Documentul prezintă operațiile din algebră relațională, inclusiv operații unare și binare, funcții agregat și de grup, și exemple de cereri.

Încărcat de

Adriana Stănică
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
14 vizualizări4 pagini

Algebra Relationala

Documentul prezintă operațiile din algebră relațională, inclusiv operații unare și binare, funcții agregat și de grup, și exemple de cereri.

Încărcat de

Adriana Stănică
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

Algebră relațională

Operații unare:
1. SELECT:
- Selectează dintr-un tabel pe baza unei condiții;
- Are formatul:
S<condiție>(<Nume_Tabel/Nume_Relație>)

2. PROJECT:
- Selectează coloane dintr-un tabel;
- Are formatul:
P<listă_atribute>(<Nume_Tabel/Nume_Relație>)

Operații binare:
1. Operații din teoria mulțimilor:
a. Reuniune:
- Trebuie să fie compatibilă: Cele 2 relații trebuie să aibă același tip
de n-upluri;
- Face o mulțime cu mai multe înregistrări întoarse din alte relații;
b. Intersecție;
c. Diferența;
d. Produs cartezian:
- Rezultă o relație Q(A1, A2, ..., An, B1, B2, ..., Bm)
2. Operații JOIN:
a. JOIN:
- Similar cu produsul cartezian, doar că se păstrează elementele ce
satisfac condiția;
- Formă:
Tabel_1 ⋈ col_1=col_2 Tabel_2
b. NATURAL JOIN:
- Echivalent cu INNER JOIN din SQL;
- Are forma:
Tabel_1 * col_1=col_2 Tabel_2
- Dacă col_1 și col_2 au același nume, se poate speciica doar acela:
Tabel_1 * col Tabel_2
- Dacă nu se specifică nicio coloană la condiție se consideră
implicit toate perechile de coloanele cu același nume;
c. JOIN ADITIONAL DREPT/STÂNG:
- Echivalent cu LEFT/RIGHT JOIN din SQL;
- Forma - stânga:
Tabel_1 ]⋈ col_1=col_2 Tabel_2
- Forma – dreapta:
Tabel_1 ⋈[ col_1=col_2 Tabel_2

Funcții agregat:
* Rezultatul este o relație cu un singur n-uplu.
Formă: F<funcții pe aici>(<Nume_Tabel/Nume_Relație>)

Funcții de grup:
* Se aplică mai multe funcții pe grupuri de înregistrări.
Formă: <grupul atributelor>F<funcții pe aici>(<Nume_Tabel/Nume_Relație>)

1) Sa se gaseasca adresa tuturor angajatilor ce lucreaza pentru


departamentul 'Cercetare’:

R1 = SDep_Nume=’Cercetare’(Departament) //se selectează dep. De cercetare


R2 = R1 ⋈D_Nr=Dep_Nr Angajat //se selectează angajații din dep. De cercetare
REZ = PNume, Prenume, Adresă(R2) //se selectează adresa, numele și prenumele

2) Pentru fiecare proiect localizat in 'Bucuresti', se cere lista numarului


proiectului, numarul departamentului coodornator, numele managerului
departamentului, adresa si data sa de nastere:

R1 = SP_Loc=’Bucuresti’(Proiecte)
R2 = R1 ⋈D_Coord=D_nr Departament
R3 = R2 ⋈SSN=M_SSN Angajat
REZ = PNume, Prenume, Adr, Data_N, D_nr, P_nr (R3)
3) Sa se gaseasca numele angajatilor care lucreaza la toate proiectele
controlate de departamentul cu numarul 5:

R1 = SD_Nr=5 (Departament)
R2 = R1 ⋈D_Nr=D_Coord Proiect
R3 = R2 ⋈SSN=P_Nr AngajatiProiecte
R4 = R3 ⋈SSN=SSN Angajat
REZ = PNume, Prenume (R4)

4) Sa se gaseasca lista tuturor angajatilor care au in intretinere doua sau


mai multe persoane:

R1(SSN, Nr_Intretinuti) = <A_SSN>F<COUNT(I_SSN)>(Intretinut)


R2 = SNr_Intretinuti>=2 (R1)
REZ = PNume, Prenume (R2 * Angajat)

5) Sa se gaseasca lista numelor angajatilor care nu au persoane in


intretinere:

R1 = PSSN (Angajat)
R2 = PA_SSN (Intretinut)
R3 = R1 - R2
REZ = PNume, Prenume (R3 * Angajat)

6) Sa se gaseasca lista managerilor care au cel putin o persoana in


intretinere:

R1(M_SSN) = Departament ⋈A_SSN=M_SSN Intretinut


R2 = PM_SSN (R1)
REZ = PNume, Prenume (R2 * Angajat)

7) Să se determine numele angajaților + numele supervizorilor, rezultatul


conținând și angajații fără supervizor:

R1(Nume_A, Prenume_A, SSSN) = PNume, Prenume, SSSN (Angajat)


R2 = R1 ] ⋈SSSN=SSN Angajat
REZ = PNume_A, Prenume_A, Nume, Prenume (R2)
8) Să se determine numele și SSN al angajaților și întreținuților pe care îi
au (în rezultat vor fi incluși toți angajații, chiar și cei fără întreținuți):

R1(Nume_A, Prenume_A, SSN) = PNume, Prenume, SSN (Angajat)


R2(Nume_I, Prenume_I, A_SSN) = PNume, Prenume, A_SSN (Întreținut)
REZ = R1 ] ⋈SSN=A_SSN R2

9) Să se determine numele managerilor ce au persoane în întreținere:

R1 = Angajat ⋈SSN=M_SSN Întreținut


R2 = R1 ⋈SSN=A_SSN Întreținut
REZ = PNume, Prenume (R2)

10) Să se determine numele departamentelor, managerilor pt


departamentele ale căror manageri au cel puțin 2 persoane în întreținere +
coordonează cel puțin 5 proiecte:

R1 = Departament ⋈D_nr=D_coord Proiect


R2 = PD_Nume, D_nr, P_nr (R1)
R3(D_Nume, D_Nr, Nr_P) = <D_nr>F<COUNT(P_nr)> (R1)
R4 = SNr_P>=5 (R3)
R5 = Departament ⋈SSN=M_SSN Angajat
R6 = R5 ⋈SSN=A_SSN Întreținut
R7 = PNume, Prenume, D_nr, I_SSN (R6)
R8(Nume, Prenume, D_Nr, Nr_I) = <Nume, Prenume, D_Nr>F<COUNT(I_SSN)> (R7)
R9 = SNr_I>=2 (R8)
R10 = R4 ⋈D_nr=D_nr R9
REZ = PNume, Prenume, D_Nume (R10)

S-ar putea să vă placă și