Databases Doc

4
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. C 1 ( 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 C 2 (cod_carte, titlu, cod_domeniu, domeniu, cod_editura, editura, oras, strada, numar); o C 3 (cod_autor, nume_autor); o C 4 (cod_carte, cod_autor); Ptr. FN3: Eliminarea dependentelor transitive de cheie consta in impartirea schemelor de la FN2 astfel: o C 5 (cod_carte, titlu, cod_domeniu, cod_editura) o C 6 (cod_domeniu, domeniu) o C 7 (cod_editura, editura, oras, strada, numar) o C 8 = C 3

description

vcvc

Transcript of Databases Doc

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:

cod_carte -> titlu

cod_domeniu -> domeniu;

cod_editura -> editura;

cod_editura -> oras;

cod_editura -> strada;

cod_editura -> numar;

cod_autor -> autor;

eliminarea dependentelor partiale se face grupand atributele in functie tinand cont de dependentele functionale astfel:

C2 (cod_carte, titlu, cod_domeniu, domeniu, cod_editura, editura, oras, strada, numar); C3(cod_autor, nume_autor);

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)

C6(cod_domeniu, domeniu)

C7(cod_editura, editura, oras, strada, numar)

C8 = C3 C9 = C42. 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 F2WHERE cod_beneficiar NOT IN {SELECT cont_beneficiar FROM F6 GROUP BY cod_benef}SELECT denumire

FROM F2JOIN F6 ON F2.cod_beneficiar = F6.cod_beneficiarWHERE COUNT(F6.numar_factura) = 0c. Cel mai bine vandut produs;

SELECT denumire_produs, MAX(SUM(cant_prod_fact))FROM F4JOIN F5 ON F4.cod_produs = F5.cod_produs

GROUP BY denumire_produsd. Beneficiarii care au total valori / facturi pe mai 2012 > 1000 RON.SELECT denumire, SUM(prt_produs * cantitate_produs_per_factura) AS suma

FROM F2JOIN 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_produsWHERE 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)