lucrarea de laborator nr -...
TRANSCRIPT
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
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
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
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
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
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.
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).
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
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
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.
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
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:
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
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”.
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
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
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
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
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