lucrarea de laborator nr -...

19
Lucrarea de Laborator Nr. 1 Rememorarea capacităţilor constructive ale BAZELOR de DATE RELATIONALE. 1.1. – Construiti o structura relationala intr-o Baza de Date care descrie OFERTELE UNOR FURNIZORI, avand urmatoarea structura: Furnizori(fid: integer, nume_f: varchar(30), adresa_f: varchar(50)) Parti(pid: integer, nume_p: varchar(30), culoare: varchar(10)) Catalog(fid: integer, pid: integer, cost: real) 1.2. – Proiectati urmatorii patru constructori rela tionali in Baza de Date definita anterior: 1.2.1. – o RELATIE intre doua ENTITATI (legatura 1- n) 1 n E 1 E 2 Fig. 1.2.1.1. Diagrama simbolica in Spatiul de Informatii E 1 E 2 X X Fig. 1.2.1.2. Arborele de Structura in Spatiul de Date

Upload: phamtruc

Post on 06-Feb-2018

228 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

Lucrarea de Laborator Nr. 1 Rememorarea capacităţilor constructive ale BAZELOR de DATE

RELATIONALE. 1.1. – Construiti o structura relationala intr-o Baza de Date care descrie

OFERTELE UNOR FURNIZORI, avand urmatoarea structura:

Furnizori(fid: integer, nume_f: varchar(30), adresa_f: varchar(50))

Parti(pid: integer, nume_p: varchar(30), culoare: varchar(10))

Catalog(fid: integer, pid: integer, cost: real) 1.2. – Proiectati urmatorii patru constructori rela tionali in Baza de Date

definita anterior:

1.2.1. – o RELATIE intre doua ENTITATI (legatura 1- n)

1 n

E 1 E 2

Fig. 1.2.1.1. Diagrama simbolica

in Spatiul de Informatii

E 1 E 2 X

X

Fig. 1.2.1.2. Arborele de Structura

in Spatiul de Date

Page 2: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

1.2.2. – o RELATIE intre doua ENTITATI (legatura m- n)

m n

E 1 E 2

Fig. 1.2.2.1. Diagrama simbolica

in Spatiul de Informatii

ES 1 ES 1 X

X

R

X X

Fig. 1.2.2.2. Arborele de Structura

in Spatiul de Date

E 1 E 2

1 1

n m

R

Fig. 1.2.2.3. Diagrama simbolica

in Spatiul de Date

Page 3: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

1.2.3. – o RELATIE recursiva in cadrul aceleiasi ENTITATI (legatura 1-n)

E 1

n 1

Fig. 1.2.3.1. Diagrama simbolica

in Spatiul de Informatii

E

X

Fig. 1.2.3.2. Arborele de Structura

in Spatiul de Date

Page 4: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

1.2.4. – o RELATIE recursiva in cadrul aceleiasi ENTITATI (legatura m-n)

E

n m

Fig. 1.2.4.1. Diagrama simbolica

in Spatiul de Informatii

E

X

R

X X

Fig. 1.2.4.2. Arborele de Structura

in Spatiul de Date

E

1 1

n m

R

Fig. 1.2.4.3. Diagrama simbolica

in Spatiul de Date

Page 5: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

1.3.Rezolvati urmatoarele interogari SQL:

1. Gasiti numele acelor furnizori care ofera parti rosii. 2. Gasiti identificatorii (fid) acelor furnizori care ofera parti rosii sau verzi. 3. Gasiti identificatorii (fid) acelor furnizori care ofera parti rosii, sau isi au

sediul pe Packer Street, la numarul 221. 4. Gasiti identificatorii acelor furnizori care ofera atat parti rosii, cat si parti

verzi. 5. Aflati identificatorii acelor furnizori care ofera toate partile. 6. Aflati identificatorii acelor furnizori care ofera toate partile rosii. 7. Gasiti identificatorii acelor furnizori care ofera toate partile rosii sau verzi. 8. Gasiti identificatorii acelor furnizori care ofera toate partile rosii, sau toate

partile verzi. 9. Gasiti perechi de identificatori de furnizori astfel incat primul furnizor cere

pe o anumita parte mai mult decat cere cel de-al doilea furnizor. 10. Gasiti identificatorii partilor oferite de cel putin doi furnizori diferiti. 11. Gasiti identificatorii celor mai scumpe parti oferite de furnizorul Yosemite

Sam. 12. Gasiti identificatorii acelor parti oferite de toti furnizorii la mai putin de

$200. (Daca exista un furnizor care fie nu ofera partea respectiva, fie cere

pentru partea respectiva mai mult decat $200, acea parte nu este selectata.)

1.4. Optional: Distingeti relatiile identificatoare/neidentificatoare, respectiv entitatile

tari/slabe.

Documentatie:

https://msdn.microsoft.com/en-us/library/ms174979.aspx

https://msdn.microsoft.com/en-us/library/ms189499.aspx

http://www.sqlzoo.net

Page 6: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

Lucrarea de Laborator nr. 2 Constrangeri la nivelul bazei de date, interogari SQL

I. Considerati baza de date cu urmatoarea structura, destinata stocarii datelor

unei companii multinationale: Angajati(Id_angajat int, Nume nvarchar(30), Varsta int, Nr_telefon char(10), Salar real)

Lucreaza(Id_angajat int, Id_departament int, procent_timp int)

Departamente(Id_departament int, Nume_departament nvarchar (30), Buget real,

Id_manager int )

1. Definiti urmatoarele constrangeri:

Constrangeri de integritate referentiala:

1. Cascadare la stergere: la stergerea unui angajat din tabela Angajati, sa se

stearga toate tuplele legate de acel angajat din tabela Lucreaza.

2. Restrictionare la actualizare (update): sa nu se poata modifica identificatorul unui departament, daca acest departament se afla in tabela Lucreaza.

3. Setarea unei valori implicite: daca se sterge un angajat din tabela Angajati, sa

se inlocuiasca identificatorul angajatului respectiv, in tabela Lucreaza, cu o valoare implicita (default).

Constrangeri definite de utilizator:

1. Definiti o constrangere pe tabela Angajati, astfel incat fiecare angajat sa castige

cel putin $10. 2. Definiti o constrangere pe tabela Departament, astfel incat fiecare manager sa

aiba varsta > 30 ani.

3. Definiti o constrangere de domeniu astfel incat numarul de telefon al fiecarui

angajat sa aiba o valoare valida (fiecare caracter sa fie reprezentat printr-o cifra).

4. Fiecare manager trebuie sa fie si angajat.

5. Un manager trebuie sa aiba intotdeauna un salariu mai mare decat oricare

angajat care ii este subordonat. 6. Procentul total al tuturor responsabilitatilor pentru un angajat trebuie sa fie mai

mic sau egal cu 100%.

7. Scrieti instructiuni SQL pentru a sterge intreaga informatie legata de acei angajati ale caror salarii depasesc pe cele ale managerilor departamentelor unde

acestia lucreaza. Asigurati-va ca toate constrangerile de integritate referentiala

raman satisfacute dupa aceasta operatie.

Page 7: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

2. Rezolvati urmatoarele interogari SQL:

1. Afisati numele si varsta fiecarui angajat care lucreaza atat in departamentul de

Hardware, cat si in cel de Software. 2. Pentru fiecare departament cu mai mult de 20 de angajati full-time (unde pocentele

angajatilor part-time si full-time se insumeaza la cel putin tot atatia angajati full-

time), listati identificatorul departamentului, impreuna cu numarul de angajati care

lucreaza in acel departament. 3. Afisati numele fiecarui angajat al carui salar depaseste bugetul tuturor

departamentelor in care acesta lucreaza. 4. Gasiti identificatorii acelor manageri care coordoneaza doar departamente cu

bugetul mai mare decat 1 milion $. 5. Gasiti numele managerilor care coordoneaza departamentele cu cele mai mari

bugete. 6. Daca un manager coordoneaza mai mult de 1 departament, acesta controleaza

suma tuturor bugetelor pentru acele departamente. Gasiti identificatorii acelor

manageri care controleaza sume mai mari decat 5 milioane $. 7. Gasiti identificatorii managerilor care controleaza cele mai mari sume. 8. Gasiti numele managerilor care coordoneaza doar departamente al caror buget

este mai mare decat 1 milion $, si cel putin un departament cu un buget mai mic

decat 5 milioane $.

II. Considerati, de asemenea, urmatoarea baza de date:

Student(snum int, numes varchar(30), CNP char(13), directie_studiu

varchar(30), nivel varchar(30), varsta int) Clasa (nume varchar(20), intalnire datetime, sala varchar(30), fid int)

Inrolare(snum int, numec varchar(20)) Facultate(fid int, numef varchar(30), deptid int)

1. Definiti o constrangere pe campul CNP din tabela Student, astfel incat fiecare

caracter ce intra in componenta acestuia sa ia o valoare valida: primul caracter este ‘1’

sau ‘2’, urmatoarele 2 caractere reprezinta anul nasterii, urmatoarele 2 caractere

reprezinta luna nasterii, urmatoarele 2 ziua nasterii, iar urmatoarele 6 caractere trebuie

sa fie cifre (numere intregi in intervalul 0-9).

Page 8: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

2. Rezolvati urmatoarele interogari SQL:

1. Gasiti numele tuturor juniorilor (nivel = junior), inrolati intr-o clasa la care preda profesorul I. Teach.

2. Cati ani are cel mai in varsta student care are istoria ca directie de studiu, sau este

inrolat intr-un curs predat de profesorul I. Teach? 3. Gasiti numele tuturor claselor care fie se intalnesc in camera R128, fie au

inrolati 5 sau mai multi student. 4. Gasiti numele studentilor inrolati in cele mai multe clase. 5. Gasiti numele acelor student inrolati in doua clase care se intalnesc in acelasi

timp. 6. Gasiti numele acelor studenti care nu sunt inrolati in nicio clasa.

Documentatie:

https://msdn.microsoft.com/en-us/library/ms174979.aspx

https://msdn.microsoft.com/en-us/library/ms190273.aspx

https://msdn.microsoft.com/en-us/library/ms189499.aspx

Page 9: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

Lucrarea de Laborator Nr. 3

I. Rezolvati urmatoarele interogari de pe site-ul http://www.sqlzoo.net, selectand

optiunea SQL Server in combo-box-ul SQL Engine:

De la sectiunea 1. SELECT names, interogarile: 2, 4, 6, 7.

De la sectiunea 2. SELECT from WORLD, interogarile: 3, 5, 7, 8, 12.

De la sectiunea 3. SELECT from NOBEL, interogarile: 4, 5, 6.

De la sectiunea 4. SELECT within SELECT, interogarile: 2, 4, 7, 9, 10.

De la sectiunea 5. SUM and COUNT, interogarile: 2, 3, 4, 6, 7, 8.

De la sectiunea 6. JOIN, interogarile: 4, 5, 6, 7.

De la sectiunea 7. More JOIN Operations, interogarile: 3, 6, 12, 15.

De la sectiunea 8. Using NULL, interogarile: 5, 8, 10.

De la sectiunea 9. Self JOIN, interogarile: 4, 7.

Documentatie: https://msdn.microsoft.com/en-us/library/ms189499.aspx

Page 10: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

Lucrarea de Laborator nr. 4

1. Sa se construiasca baza de date Muzica, avand urmatoarea structura: Genuri_muzicale(Id int, Denumire varchar(30), An_aparitie int) Artisti (Id int, Nume varchar(20), Prenume varchar(20), Data_nasterii datetime)

Instrumente (Id_instrument int, Nume_intrument varchar(20)) Formatii(Id_formatie int, Nume_formatie varchar(30), Id_gen_muzical int, An_aparitie

int) Concerte(Id_formatie int, Data_concertului datetime, Oras varchar(20), Loc_concert

varchar(20))

Sa se construiasca diagrama bazei de date in Microsoft SQL Server si in SQL Power

Architect.

2. Implementati urmatoarele constrangeri, completand structura bazei de date

atunci cand este necesar:

Un artist poate sa faca parte din una sau mai multe formatii, respectiv sa cante la unul sau mai multe instrumente.

Fiecare formatie are un singur artist sef. Fiecare artist poate fi sef la cel mult o formatie.

Cheile primare (id) trebuie sa ia valori intregi pozitive. Nu se pot inregistra formatii care au aparut inainte de 1970, nici genuri muzicale

aparute inainte de 1960. Fiecare artist trebuie sa aiba varsta de cel putin 16 ani. Se pot inregistra doar urmatoarele genuri muzicale: Rock, Heavy Metal, Popp,

Jazz.

3. Populati baza de date folosind instructiunea Insert. 4. Modificati apoi valorile campurilor utilizand instructiunea Update:

Data concertului formatiei Compact, se modifica, din 7 Martie 2012 in 14 Martie 2012.

Artistul Johnny Smith isi schimba instrumentul, trecand de la chitara bass la saxofon.

5. Stergeti inregistrarile inutile utilizand instructiunea Delete: Se anuleaza toate concertele formatiei Metallica din perioada 15 Martie 2012

– 15 Aprilie 2012.

Page 11: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

6. Rezolvati urmatoarele interogari SQL:

Numele formatiilor care concerteaza in Cluj-Napoca in perioada 10 Martie 2012 – 10 Aprilie 2012.

Numele artistilor care canta la cel putin 2 instrumente si fac parte dintr-o singura formatie.

Numele formatiilor care au sustinut cele mai multe concerte pe saptamana, in perioada 1 Ianuarie 2012 – 1 Martie 2012.

7. Creati urmatoarele vederi:

Numele, prenumele si anul nasterii, precum si formatiile in care canta fiecare artist.

Numele, prenumele si denumirile instrumentelor la care canta fiecare artist.

Numele formatiilor, genul muzical si numarul de membri pentru fiecare formatie.

Numele formatiilor, orasul si locul concertului, cat si data concertului pentru fiecare formatie, in luna curenta.

Numele, prenumele si instrumentul artistului celui mai tanar din fiecare formatie.

Documentatie https://msdn.microsoft.com/en-us/library/ms174335.aspx

https://msdn.microsoft.com/en-us/library/ms187956.aspx

http://www.sqlpower.ca/page/architect_download_os

Page 12: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

Lucrarea de laborator nr. 5

1. Creati o baza de date destinata vanzarilor de produse online.

Considerati ca model unul din urmatoarele web-site-uri:

http://www.amazon.com http://www.emag.ro

http://www.shopmania.ro

http://www.shopcosmetic.ro/

http://www.salonauto.ro/shop/

1.1. Modelati urmatoarele tipuri de entitati:

- Categorii si subcategorii de produse - Produse - Cos de cumparaturi - Comenzi efectuate de utilizatori - Comenzi deja onorate - Istorie a comenzilor - Utilizatori

precum si alte tipuri de entitati, specifice web-site-ului ales. Inserati in

baza de date cate o imagine reprezentativa pentru fiecare produs.

Folositi tipul Transact SQL varbinary(max).

http://msdn.microsoft.com/en-us/library/ms188362.aspx

Instantiati valorile campurilor utilizand script-ul din urmatorul

exemplu:

UPDATE flower SET image = (SELECT BulkColumn FROM OPENROWSET (Bulk 'D:\tmp\img_floare.jpg', SINGLE_BLOB) AS BLOB) WHERE flower_id = 1;

Obtineti valoarea campului imagine utilizand urmatorul script:

EXEC xp_cmdshell 'BCP "SELECT image FROM flower WHERE

flower_id = 1" queryout D:\tmp\img_floare.jpg -T ‘

1.2. Construiti diagrama bazei de date, ilustrand relatiile dintre tabele. 1.3. Definiti chei primare si straine, restrictii de unicitate,

restrictii de integritate referentiala, restrictii de domeniu. 1.4. Creati urmatoarele vederi:

a. O vedere pentru a ilustra denumirile produsele disponibile,

preturile acestora, cantitatea disponibila; b. O vedere pentru a ilustra primele 5 cele mai bine vandute categorii de produse in ultima luna;

1.5. Modificati vederea de la punctul b., pentru a ilustra primele 10

cele mai bine vandute produse in luna februarie a anului curent.

Utilizati atat facilitatea View Designer din SQL Server 2005, cat si

instructiunile Transact-SQL Create/Alter/Drop View.

1.6. Creati in Microsoft SQL Server urmatoarele proceduri stocate:

Page 13: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

a. Afisati numele, prenumele si orasele utilizatorilor care au realizat

comenzi pentru produse din categoria al carei nume este specificat ca

parametru.

b. Afisati numarul de utilizatori care au comandat produsul al carui

nume este pecificat ca parametru.

c. Creati o procedura de inserare a comenzilor, cu urmatorii parametri:

nume utilizator, nume produs, cantitate, valoare totala, data.

d. Creati o procedura de modificare a datelor presonale (nume,

prenume, data nasterii) pentru utilizatorii al caror user-name este dat ca

parametru, noile valori pentru nume, prenume si data nasterii fiind de

asemenea furnizate ca parametri.

Documentatie:

http://msdn.microsoft.com/en-us/library/ms187956(SQL.90).aspx

http://msdn.microsoft.com/en-us/library/ms173846(SQL.90).aspx

http://msdn.microsoft.com/en-us/library/ms173492.aspx

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-procedure-

transact-sql

Page 14: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

Lucrarea de laborator nr. 6

1. Creati o baza de date destinata gestiunii unui hotel. Considerati ca

model unul din urmatoarele web-site-uri, pentru a modela baza de

date din spatele acestuia:

https://www.tourismguide.ro/tgr/hotel_opera_plaza_cluj-

napoca_1490.php

http://www.vilaeuropa.ro/?gclid=CNuJ_s7y3aACFQkeZwodOml0Mg

1.1. Modelati urmatoarele tipuri de entitati:

- Tipuri de camere - Sejururi – perioada - Servicii - Camere – numar, tip, stare: liber/ocupat - Clienti – nume si prenume client, CNP, ocupatie - Cereri ale clientilor pentru rezervari - Rezervari – client, camera, servicii, sejur, cost total

precum si alte tipuri de entitati, specifice web-site-ului ales.

Pretul fiecarei camere variaza in functie de sejurul ales.

1.2. Construiti diagrama bazei de date, ilustrand relatiile dintre

tabele. Definiti chei primare si straine, restrictii de unicitate, restrictii

de integritate referentiala, restrictii de domeniu. ·

1.3. Creati urmatoarele proceduri stocate: a. O procedura stocata pentru a afisa serviciile si tipurile de camere

disponibile in functie de sejurul ales, precum si preturile corespunzatoare.

b. Proceduri stocate pentru a efectua/modifica rezervari realizate de

clienti al caror nume este dat ca parametru, perioada rezervarii fiind specificata

prin intermediul unui parametru. Procedura trebuie sa gaseasca una dintre

camerele libere corespunzatoare serviciilor si perioadei solicitate si sa modifice

starea acesteia din “liber” in “ocupat”.

c. O procedura stocata pentru a insera clienti in baza de date, avand

urmatorii parametri: numele si prenumele clientilor, CNP, ocupatie.

1.4. Creati urmatoarele triggere: a. Trigger la inserare/modificare in tabela Clienti: toti clientii

inregistrati sa aiba varsta mai mare decat 18 ani.

b. Trigger la stergere pe tabela Rezervari: sa nu se poata sterge rezervarile efectuate pe o perioada ce include data curenta; daca se sterg alte

rezervari, acestea sa fie trecute intr-o tabela History_rezervari, avand aceeasi

structura cu tabela Rezervari.

c. Un trigger care sa nu permita rezervarea unei camere daca aceasta este deja ocupata.

d. Un trigger care sa nu permita stergerea din baza de date a clientilor

ce au ocupatia “programator”.

Page 15: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

1.5. Creati un cursor care sa parcurga tabela Rezervari si sa insereze in tabela

History_Rezervari acele rezervari din anul curent pentru care sejurul corespunzator s-a terminat (data de sfarsit a sejurului este mai mica decat data

curenta).

Documentatie: http://msdn.microsoft.com/en-us/library/ms187926.aspx http://msdn.microsoft.com/en-us/library/ms191524(SQL.90).aspx

https://msdn.microsoft.com/en-us/library/ms189799(v=sql.105).aspx https://msdn.microsoft.com/en-us/library/ms175502(v=sql.105).aspx

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/control-of-

flow

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/declare-

cursor-transact-sql

https://technet.microsoft.com/en-us/library/ms180169(v=sql.105).aspx

Page 16: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

Lucrarea de laborator nr. 7

Luand in considerare structura bazei de date destinata aplicatiilor de comert

electronic, realizata la laboratoarele trecute, si adaptand corespunzator aceasta

structura, construiti urmatoarele rapoarte utilizand SQL Server Reporting

Services: 1. Denumirile produselor vandute, cantitatea totala vanduta din fiecare

produs, in fiecare luna. 2. Numele clientilor, valoarea totala a tuturor comenzilor realizate,

pentru fiecare client. Sa se afiseze si valoarea totala a tuturor

comenzilor realizate, pentru toti clientii. 3. Numele clientilor care au cumparat produsul ‘aspirator’, orasul de

provenienta al fiecarui client, cu grupare si ordonare dupa orase, apoi dupa numele clientilor.

4. Numele angajatilor, numarul de clienti asignati fiecarui angajat,

orasul si tara pentru care se face vanzarea. 5. Numele oraselor, numarul de comenzi pentru fiecare oras, inregistrate

in cursul lunii curente. 6. Clasele de produse, numarul de comenzi pentru fiecare clasa de

produse, pentru fiecare tara in parte.

Documentatie:

https://technet.microsoft.com/en-us/library/ms159106(v=sql.105).aspx

Page 17: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

Lucrarea de laborator nr. 8

1. Extindeti structura bazei de date destinata aplicatiilor de comert electronic

implementand conceptul de ierarhie de clase. Astfel, adaugati, pe langa tabela

reprezetand clasa generica produse, tabele corespunzaoare unor subclase ale acesteia,

precum articole de imbracaminte, de incaltaminte, sau telefoane mobile, acestea

avand fieare caracteristici (atribute) specifice. Reprezentati diagrama rezultata si in

SQL Power Architect.

2. Luand in considerare structura bazei de date destinata aplicatiilor de comert

electronic, realizata la laboratoarele trecute, construiti urmatoarele rapoarte utilizand

SQL Server Reporting Services:

Un raport de tip tabular care sa afiseze denumirile si imaginile articolelor de

imbracaminte comandate de clientii din orasul al carui nume este specificat

ca parametru, numele si prenumele clientilor, valoarea totala a comenzii si

anul, cu grupare dupa numele si prenumele clientului, apoi dupa an. Raportul

sa includa subtotaluri si sa permita operatia drilldown.

Un raport care sa afiseze numele produsului si valoarea totala a comenzilor

pentru acel produs pe anii 2015, 2016 si 2017.

a. Raportul sa se creeze sub forma matriceala, cu anii 2015, 2016 si 2017

constituind coloanele, denumirile de produse constituind randurile si valoarea

comenzilor pentru produsul dat pe fiecare an constituind detaliile (valorile

din celulele matricei).

b. Raportul sa se creeze sub forma tabulara, utilizand operatia de pivotare in

cadrul unei interogari SQL, avand toate campurile specificate in capul

tabelului (numele produsului, valoarea comenzilor pentru acesta pe anul

2015, valoarea comenzilor pe 2016, apoi valoarea comenzilor pe 2017).

Un raport care sa afiseze comenzile utilizatorilor pe anul 2016: numele

utilizatorului, data comenzii, valoarea totala a comenzii, precum si detaliile

comenzii sub forma unui sub-raport. Acest sub-raport sa contina numele

produselor comandate si cantitatea comandata din fiecare produs. Relationati

cele doua rapoarte folosind campul id_comanda.

3. Exportati baza de date de comert electronic intr-o baza de date MySQL, Access

sau Excel folosind facilitatea de export de date din Microsoft SQL Server (Click

dreapta-> Tasks -> Export Data).

Documentatie:

https://technet.microsoft.com/en-us/library/ms159106(v=sql.105).aspx

https://technet.microsoft.com/en-us/library/aa337401(v=sql.105).aspx

https://docs.microsoft.com/en-us/sql/reporting-services/report-design/report-

parameters-report-builder-and-report-designer

https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx

https://www.youtube.com/watch?v=G1OuPZNsCr4

https://blogs.msdn.microsoft.com/sqlforum/2011/01/02/walkthrough-add-a-subreport-

in-local-report-in-reportviewer/

http://morrisbahrami.blogspot.ro/2009/03/error-subreport-could-not-be-shown.html

Page 18: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

Lucrarea de laborator nr. 9

Structuri si interogari recursive in baze de date relationale:

1. Creati o baza de date pentru a modela arborele genealogic al

familiei regale britanice (British Royal Family),

http://www.britroyals.com/royalfamily.htm.

a. Definiti o interogare care sa afiseze numarul de descendenti

pentru fiecare nod.

b. Definiti o vedere care sa afiseze fiecare nod cu descendentii sai

directi.

c. Definiti o procedura stocata care sa afiseze toti descendentii unui

anumit nod, dat ca parametru.

d. Definiti un trigger care sa nu permita stergerea unui anumit nod

daca acesta are cel putin un descendent.

Baza de date trebuie creata utilizand unul dintre SGBD-uril Microsoft

SQL Server sau MySQL si trebuie migrata in toate celelate SGBD-uri.

2. Creati o baza de date similara cu cea de la punctul 1, care sa modeleze

arborele genealogic al matematicienilor, oferind informatii despre fiecare

matematician si supervizorii acestuia,

http://genealogy.math.ndsu.nodak.edu/.

Fiecare matematician poate avea cel mult doi supervizori.

a. Definiti o vedere care sa afiseze suprevizorii fiecarui matematician.

b. Definiti o procedura stocata care sa afiseze numarul de discipoli de

sex masculin ai unui anumit nod si numarul de discipoli de sex

feminin ai aceluiasi nod, dat ca parametru.

c. Definiti un trigger care sa nu permita stergerea unui anumit nod

daca acesta are cel putin doi descendenti.

Alegeti unul din SGBD-urile: Microsoft SQL Server sau MySQL.

Documentatie:

https://myadventuresincoding.wordpress.com/2014/05/02/sql-server-simple-recursive-

query-example/

https://technet.microsoft.com/en-us/library/ms190766(v=sql.105).aspx

Page 19: Lucrarea de Laborator Nr - users.utcluj.rousers.utcluj.ro/~dmitrea/Pagina_persDM/labs/Laborator_PBD.pdf · inrolat intr-un curs predat de profesorul I. Teach? 3. ... Artistul Johnny

Lucrarea de laborator nr. 10

1.Cititi despre business intelligence, data warehouse si OLAP in Microsoft SQL

Server.

http://www.microsoft.com/technet/prodtechnol/sql/2005/dwsqlsy.mspx

http://www.devx.com/dbzone/Article/21410/1954

2. Utilizând SQL Server Analysis Services, ṣi baza de date FoodMart, realizaţi un

cub care să furnizeze date despre vânzările realizate în anul 1998, conţinând

următoarele elemente: tabela sales_fact_1998 ca tabelă centrală (fact table),

dimensiunile cubului fiind reprezentate prin intermediul tabelelor: Product, Store,

Customer, Time_By_Day. Realizaţi operaţiile de navigare „roll-up” şi „drill-down”,

precum şi operaţii de selecţie.

3. Utilizând facilităţile de Data Mining integrate în SQL Server Analysis Services,

stabiliţi cum depind vânzările realizate de oraşul în care locuieşte cumpărătorul.

Bibliografie suplimentară: R. Ramakrishnan, J. Gehrke, “Database

Management Systems, 3rd Edition”, McGraw Hill Higher Education, 2007