Documente Academic
Documente Profesional
Documente Cultură
Cheia primară este (cod_proiect). Atributul cod_director conţine marca (sau ID_angajat)
persoanei responsabile cu gestiunea proiectului.
cod_functie denumire
cd1 profesor
cd2 conferentiar
cd3 lector
cd4 asistent
cs1 cercetator I
cs2 cercetator II
cs3 cercetator III
Tabela FUNCTIA
1
ECHIPA [cod_proiect, marca]
cod_proiect marca
P234 11
P234 12
P234 15
P234 22
P234 21
P235 11
P235 12
P235 13
P300 15
P300 21
P300 22
P300 14
P305 12
P305 17
P399 17
P399 16
P399 19
Tabela ECHIPA
Cheia primară este (cod_proiect, marca).
2
Schema legăturilor dintre tabelele bazei de date
Observaţii.
Atributul cod_functie din tabela PERSONAL este o cheie externă şi asigură legătura cu
tabela FUNCTIA.
Atributul cod_director din tabela PROIECT este o cheie externă şi asigură legătura cu
tabela PERSONAL.
Pentru interogările formulate se vor prezenta rezolvările utilizând operaţiile algebrei relaţionale
şi limbajul SQL din Microsoft Access.
Algebră relaţională
3
Explicaţii
Relaţia R1 va conţine două tupluri selectate din relaţia PROIECT şi anume linia 3 şi linia 5 care
îndeplinesc condiţia de selecţie (proiectele sunt în derulare):
data curenta < data_finala.
Relaţia R2, rezultă în urma aplicării joncţiunii pe egalitate relaţiilor R1 şi PERSONAL.
Relaţia R2 are următoarea schemă:
[cod_proiect, titlul, tip, valoare, cod_director, data_inceput, data_finala, marca, nume, CNP,
cod_functie, tel, email].
Relaţia R2 are gradul 13 rezultat din suma gradelor relaţiilor: R1(PROIECT) care are gradul 7 cu
PERSONAL care are gradul 6.
În final, prin proiecţia relaţiei R2 pe atributele: cod_proiect, titlul, nume se obţine lista cerută:
directorii proiectelor în derulare.
SQL Access
SELECT cod_proiect, titlu, nume
FROM proiect, personal
WHERE DATE()<data_finala
AND
marca=cod_director;
Algebră relaţională
SQL Access
SELECT echipa.marca, nume, cnp
FROM echipa, personal
WHERE echipa.marca=personal.marca
AND
echipa.cod_proiect="P234";
4
Lista rezultat pentru P2 (SQL Access)
P3. Care este valoarea totală a proiectelor finalizate în anul 2016, pe tipuri de finanţare?
Algebră relaţională
Varianta 1
R1 = SELECT (PROIECT; (data_finala ≥ 01.01.2016) and (data_finala ≤ 31.12.2016))
R2 = SELECT (R1; tip = 1)
R3 = SUM (R2, valoare)
Q1 = SELECT (PROIECT; (data_finala ≥ 01.01.2016) and (data_finala ≤ 31.12.2016))
Q2 = SELECT (Q1; tip = 2)
Q3 = SUM (Q2, valoare)
Varianta 2
R1 = SELECT (PROIECT; (data_finala ≥ 01.01.2016) and (data_finala ≤ 31.12.2016))
R2 = SUM (R1, valoare; tip)
Observatie.
Varianta 2 calculează direct valoarea totală a proiectelor finalizate în 2016 pentru fiecare
valoare a atributului de regrupare tip. Relaţia R2 are două atribute: valoare şi tip şi două tupluri
(linii în tabelă), corespunzând celor două tipuri de finanţare.
Această variantă are o transpunere directă în MS Access, aşa după cum rezultă din secvenţa de
mai jos.
SQL Access
5
Lista rezultat pentru P3 (SQL Access)
Algebră relaţională
SQL Access
6
P5. Să se listeze directorii care gestionează în prezent mai mult de un proiect.
Algebră relaţională
Explicaţii.
Relaţia R2 are schema [cod_director, count]. Dintre tuplurile acestei relaţii sunt selectate cele
pentru care count > 1 şi se obţine relaţia R3.
Relaţia R4, rezultată prin aplicarea operaţiei de joncţiune pe egalitate are structura: [marca,
nume, CNP, cod_functie, tel, email, cod_director, count], având în fiecare tuplu, valori egale
pentru atributele: marca şi cod_director.
SQL Access
Algebră relaţională
7
SQL Access
Varianta 1:
SELECT AVG(valoare) AS valoare_medie
FROM proiect
WHERE tip="2";
Varianta 2:
SELECT SUM(valoare)/COUNT(*) AS valoare_medie
FROM proiect
WHERE tip="2";
P7. Care este titlul şi valoarea contractelor gestionate de directori cu funcţia de lector?
Algebră relaţională
SQL Access
8
Lista rezultat pentru P7 (SQL Access)
P8. Care sunt persoanele care nu sunt cuprinse în proiectele de cercetare ale instituţiei?
Algebră relaţională
Explicaţii.
Relaţia R3 are un singur atribut, marca. Tuplurile relaţiei R3 conţin mărcile angajaţilor din
PERSONAL care nu se regăsesc în ECHIPA, adică acele persoane care nu sunt cuprinse în
proiectele de cercetare ale instituţiei.
Relaţia R4 are structura:
[marca, nume, CNP, cod_functie, tel, email]
Relaţia R5 are structura:
[marca, nume, CNP, cod_functie, tel, email, denumire]
Se obţin astfel informaţiile de care avem nevoie în lista cerută (marca, nume, denumire), prin
aplicarea operaţiei de proiecţie relaţiei R5.
SQL Access
9
Lista rezultat pentru P8 (SQL Access)
P9. Lista persoanelor cuprinse în proiectele de cercetare ale instituţiei (ca membru în echipă
sau director de proiect) şi numărul de proiecte.
Algebră relaţională
SQL Access
10
Lista rezultat pentru P9 (SQL Access)
SQL Access
11