Sunteți pe pagina 1din 3

CARTE = (Cod_carte, titlu, Cod_domeniu, Domeniu, 5(cod_autor, nume_autor),

cod_editura, editura, adresa)


Adresa = (oras, strada, numar)
1. Sa se aduca la FN1, 2, 3 si sa se specifice cheile folosind dependentele
functionale;
Ptr. FN1:
se elimina din schema data grupurile repetitive se face identificand cheia
primara din grupul repetitiv.
se desfiinteaza si grupurile compuse.
C1 (
cod_carte,
titlu,
cod_domeniu,
domeniu,
cod_autor,
nume_autor,
cod_editura,
editura,
oras,
strada,
numar);
Ptr. FN2:
se incearca eliminarea dependentelor partiale de cheie:
o cod_carte -> titlu
o cod_domeniu -> domeniu;
o cod_editura -> editura;
o cod_editura -> oras;
o cod_editura -> strada;
o cod_editura -> numar;
o cod_autor -> autor;
eliminarea dependentelor partiale se face grupand atributele in functie tinand
cont de dependentele functionale astfel:
o C2 (cod_carte, titlu, cod_domeniu, domeniu, cod_editura, editura, oras,
strada, numar);
o C3(cod_autor, nume_autor);
o C4(cod_carte, cod_autor);
Ptr. FN3:
Eliminarea dependentelor transitive de cheie consta in impartirea schemelor
de la FN2 astfel:
C5(cod_carte, titlu, cod_domeniu, cod_editura)
o
C6(cod_domeniu, domeniu)
o
C7(cod_editura, editura, oras, strada, numar)
o
C8 = C 3
o
C9 = C 4
o

2. Pe forma finala sa se exprime urmatoarele cereri:


a. Tabel cu editurile din Bucuresti;
b. Tabel cu cartile scrise de Eminescu;
c. Tabel cu cartile scrise numai de Eminescu.
a) SELECT editura FROM C7 WHERE oras = Bucuresti;
b) SELECT titlu
FROM C5
JOIN C9 ON C5.cod_carte = C9.cod_carte
JOIN C8 ON C9.cod_autor = C8.cod_autor
WHERE nume_autor = Eminescu;
3. FACTURA = (cod_beneficiar, denumire, numar_factura, data_factura,
20(cod_produs, denumire_produs, pret_produs),
cantitate_produs_per_factura)
a. FN(1-3);
FN1:
FACTURA = (cod_beneficiar, denumire, numar_factura, data_factura,
cod_produs, denumire_produs, prt_produs, cantitate_produs_per_factura)
F2 = (cod_beneficiar, denumire)
F3 = (numar_factura, data_factura)
F4 = (cod_produs, denumire_produs, prt_produs)
F5 = (numar_factura, cod_produs, cantitate_produs_per_factura)
F6 = (cod_beneficiar, numar_factura, cod_produs)
b. Beneficiarii care nu au cumparat nimic;
SELECT denumire
FROM F2
WHERE cod_beneficiar NOT IN {SELECT cont_beneficiar FROM F 6 GROUP BY
cod_benef}
SELECT denumire
FROM F2
JOIN F6 ON F2.cod_beneficiar = F6.cod_beneficiar
WHERE COUNT(F6.numar_factura) = 0
c. Cel mai bine vandut produs;
SELECT denumire_produs, MAX(SUM(cant_prod_fact))
FROM F4
JOIN F5 ON F4.cod_produs = F5.cod_produs
GROUP BY denumire_produs

d. Beneficiarii care au total valori / facturi pe mai 2012 > 1000 RON.
SELECT denumire, SUM(prt_produs * cantitate_produs_per_factura) AS suma
FROM F2
JOIN F6 ON F2.cod_beneficiar = F6.cod_beneficiar
JOIN F5 ON F6.numar_factura = F5.numar_factura
JOIN F4 ON F5.cod_produs = F4.cod_produs
WHERE suma > 1000
4. CANTEC = (id_melodie, id_suport, titlu_melodie, cod_tip_suport, tip_suport,
solist, pret_suport, cod_formatie, 30(cod_instrument, nume_instrument));
a. FN(1-3);
b. Toate melodiile cantate de un artist;
c. Solistii cu numar de melodii cantata;
d. Valoare totala a CD-urilor.
a) FN1:
C1=(id_melodie, id_suport, titlu_melodie, cod_tip_suport, tip_suport, solist,
pret_suport, cod_formatie, cod_instr, nume_instr)
FN2:
C1=(id_melodie, titlu_melodie. solist, cod-formatie)
C2=(id_suport, cod_tip_suport, tip_suport, pret_suport)
C3=(cod_instr, nume_instr)
C4=(id_melodie, id_suport, cod_instr)
FN3:
C1=(id_melodie, titlu_melodie, cod_formatie, solist)
C2=(id_suport, cod_tip_suport, tip_suport, pret_suport)
C3=(cod_instr, nume_instr)
C4=(id_melodie, id_suport, cod_instr)

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