mihaispr
Administrator
 Inregistrat: acum 18 ani
Postari: 2142
|
|
//Baza a fost testata in PhpMyAdmin cu ajutorul utilitarului EasyPhp 1. Structura bazei de date
Baza de date BIBLIOTECĂ
Tabela1: Patrimoniu_cărţi
Field Type
Cota_carte int(4) – cheie primară Titlu_carte varchar(30) Autor varchar(30) Editura varchar(30) Domeniu varchar(30) Nr_exemplare int(2) Pret_carte int(4)
Tabela2: Cititori_înregistraţi
Field Type
Cnp bigint(13) – cheie primară Nume_cititor varchar(30) Data_naşterii date() Domiciliu varchar(30) Data_înscrierii date()
Tabela3: Cărţi_cerute_împrumut
Field Type
Cota_carte int(4) – cheie primară Cnp bigint(13) Titlu_carte varchar(30) Data_solicitare date() Data_restituire date() Nr_imprumuturi int(2)
Tabela4: Repartizare_sală_lectură
Field Type
Cnp bigint(13)-cheie primară Titlu_carte varchar(30) Ora_venire time Ora_plecare time
Tabela5: Cărţi_cerute_sală_lectură
Field Type
Cnp bigint(13)-cheie primară Cota_carte int(4) Data_solicitare date() Nr_loc_repartizat int(2) Validare_loc binary(2)
Tabela6: Cititori_restanţieri
Field Type
Cnp bigint(13)-cheie primară Titlu_carte varchar(30)
2. Cerinţe pentru baza de date
1)Selectarea titlurilor carţilor din tabela Patrimoniu_carti din domeniul literatură
2)Selectarea carţilor cu titlul Baltagul din tabela Carti_cerute_imprumut
3) Selectarea carţilor din tabela Patrimoniu_carti de la editura Rao
4) Selectarea car’ilor din tabela Patrimoniu_carti în care nr de exemplare este egal cu 8
5) Selectarea carţilor din tabela Patrimoniu_carti în care preţul carţilor este egal cu 50
6)Selectarea carţilor din tabela Patrimoniu_carti în care nr.de exemplare este egal cu 8 si preţul acestora este egal cu 50
7) Selectarea carţilor din tabela Patrimoniu_carti din domeniul Literatură sau domeniul Biologie
8) Selectarea carţilor din tabela Patrimoniu_carti din editura Albatros sau editura Rao
9) Selectarea carţilor din tabela Patrimoniu_carti scrise de M.Sadoveanu din domeniul Literatură
10) Valoarea medie a preţurilor cărţilor din tabela Patrimoniu_carti
11) Valoarea totală a patrimoniului carţilor
12) Valoarea totală a carţilor din tabela Patrimoniu_carti pe fiecare domeniu în parte
13)Lista carţilor de la editura Albatros şi din domeniul Literatura
14)Lista cititorilor al căror nume începe cu litera "A"
15)Lista cititorilor al căror nume nu se termină în "ase"
16)Lista cititorilor ce au domiciliul în Ploiesti 17) Lista locurilor libere în salile de lectură
18)Lista cititorilor şi a cărţilor împrumutate de aceştia începând cu o anumită dată cuprinse într-un interval dat ordonate crescător după editură
19)Lista cititorilor şi a cărţilor solicitate la sala de lectură(cu aceleaşi condiţii ca mai sus)
20)Lista cititorilor pe fiecare loc din sala de lectură într-un interval de timp(pe locul2 pot sta mai mulţi cititori în decursul unei zile la intervale de timp diferite)
21)Statistica împrumuturilor pe un titlu de carte(listare editură,titlu carte, nr. de împrumuturi)
22)Selecţia cititorilor ce au împrumuturi, dar au şi carţi luate la sala de lectură
23)Lista cititorilor restanţieri şi a cărţilor restante
24)Selectarea cărţilor împrumutate din domeniul literatură(SELECT IMBRICAT sau SELECT ÎN SELECT)
25)Valoarea cărţilor împrumutate se realizează astfel:
26)Valoarea cărţilor cititorilor restanţieri se realizează astfel:
3. Rezolvarea cerinţelor
Baza de date funcţionează prin intermediul aplicaţiei PHPMyAdmin. Noi realizăm relaţii între tabele în baya de date calc2007 aflată pe server.Înainte de a trece la rezolvarea propriu-zisă a cerinţelor vom realiza următoarele etape:
Pasul1: Crearea celor 6 tabele cu câmpurile şi tipul câmpurilor asociate
Pasul2: Crearea celor 6 fişiere text intr-un editor de text(ex:notepad) având numele celor 6 tabele urmate de extensia .txt pentru a fi încărcate date(înregistrari) în cele 6 tabele din baza noastră de date folosind aplicaţia PHPMyAdmin.
Pasul1:
Comanda generală pentru crearea unei tabele folosind prompterul MySql este:
CREATE TABLE nume_tabelă(camp1 tip_camp1,camp2 tip_camp2, camp3 tip_camp3,......., campn tip_campn)
În cazul nostru avem:
Tabela Patrimoniu_cărţi este creată astfel:
CREATE TABLE `patrimoniu_carti` (`Cota_carte` INT(4) not null PRIMARY KEY auto_increment, `Titlu_carte` VARCHAR(30) not null, `Autor ` VARCHAR(30) not null, `Editura` VARCHAR(30) not null, `Domeniu` VARCHAR(30) not null, `Nr_exemplare` INT(2) not null, `Pret_carte` INT(4) not null );
Obs: Cheia primară este Cota_carte
Tabela Cititori_înregistraţi este creată astfel:
CREATE TABLE Cititori_înregistraţi(Cnp bigint(13),Nume_cititor varchar(30),Data_naşterii date(),Domiciliu varchar(30), Data_înscrierii date(),PRIMARY KEY (Cnp));
De fapt SQL-Query dupa ce am introdus campurile tabelei patrimoniu_carti este:
Obs: Cheia primară este Cnp Obs. Aceeasi fraza SQL-Query apare si la celalte 5tabele numai ca difera numele campurilor 
Tabela Cărţi_cerute_împrumut este creată astfel:
CREATE TABLE Cărţi_cerute_împrumut(Cnp bigint(13),Titlu_carte varchar(30), Cota_carte int(4),Data_solicitare date(),Data_restituire date(),Nr_imprumuturi int(2), PRIMARY KEY (Cota_carte));
Tabela Repartizare_sală_lectură este creată astfel:
CREATE TABLE Repartizare_sală_lectură(Cnp bigint(13),Titlu_carte varchar(30),Ora_venire time,Ora_plecare time);
Tabela Cărţi_cerute_sală_lectură este creată astfel:
CREATE TABLE Cărţi_cerute_sală_lectură(Cnp bigint(13), Cota_carte int(4),Data_solicitare date(),Nr_loc_repartizat int(2),Validare_loc binary(2));
Tabela Cititori_restanţieri este creată astfel:
CREATE TABLE Cititori_restanţieri(Cnp bigint(13),Titlu carte varchar(30));
Pasul2: Crearea celor 6 fisiere text care conţin înregistrarile tabelelor
Sau daca folositi utilitarul EasyPhp care ati vazut cat de simplu se instaleaza introduceti aceste valori in casetele corespunzatoare fiecarui camp fara a folosi delimitatorul ;. Si apoi ca sa vizualizati toate inregistrarile tabelei Patrimoniu_carti care ati creat-o manual dati pe browse si veti vedea toate inregistrarile introduse de voi. La fel si in cazul celorlalte 5tabele.
Fişierul patrimoniu carti.txt conţine următoarele înregistrări:
1000;"Neamul Soimarestilor";"M.Sadoveanu";"Albatros";"Literatura";2;50 1001;"Pescarul amin";"V.Voiculescu";"Rao";"Literatura";3;50 1002;"Baltagul";"M.Sadoveanu";"Enigma";"Literatura";4;50 1003;"Hanul Ancutei";"M.Sadoveanu";"Enigma";"Literatura";6;50 1004;"Tehnologii Web";"N.Schultz";"Info Press";"Calculatoare";7;50 1005;"Moara cu Noroc";"M.Sadoveanu";"Albatros";"Literatura";8;50 1006;"Enigma Otiliei";"G.Calinescu";"Enigma";"Literatura";5;50 1007;"Corpul Uman";"Adrian Murarescu";"Enigma";"Biologie";9;50 1008;"Creierul Uman";"Denisa Marcu";"Teora";"Biologie";8;20 1009;"Tehnici de Comunicare";"G.Vasilescu";"Info Press";"Psihologie";3;20 1010;"Management Educational";"R.Tudorica";"Info Press";"Pedagogie";2;20 1011;"RadioComunicatii pt amatori";"Adrian Sturdzu";"Albatros";"Electronica";4;20 1012;"Sarpele";"V.Voiculescu";"Albatros";"Literatura";8;20 1013;"Lostrita";"V.Voiculescu";"Albatros";"Literatura";3;40 1014;"Retele de calculatoare";"A.Tanenbaum";"Teora";"Calculatoare";4;30 1015;"Verisoara mea Rachel";"Daphne du Maurier";"Rao";"Literatura";2;30 1016;"Rebecca";"Daphne du Maurier";"Rao";"Literatura";2;50 1017;"Algebra";"C.Nastasescu";"Rotech Pro";"Matematica";9;50 1018;"Matematici speciale";"T.Dinu";"UPG";"Matematica";9;50 1019;"Mihai Viteazul";"Ion C.Petrescu";"CS";"Istorie";6;50 1020;"Matlab";"M.Ghinea";Teora";"Calculatoare";8;50 1021;"Notiuni de algebra";"G.Ghiciu";"Rotech Pro";"Matematica";5;50 Fişierul cititori înregistraţi.txt conţine următoarele înregistrări:
1861624297339;"Gavrila Velican";1990-11-12;"Brasov";2003-11-12 1850624297369;"Felix Cioltea";1992-03-04;"Bucuresti";2006-12-13 1850644297359;"Danut Carlescu";1991-04-11;"Ploiesti";2001-02-21 1850624298349;"Laurentiu Durleci";1988-03-18;"Buzau";2005-04-15 1833624295309;"Ioan Lutuc";1993-08-09;"Ploiesti";2004-06-18 1820524297319;"Pandele Dafinescu";24/03/1986-03-24;"Bucuresti";2006-07-16 1821624277929;"Misa Dobrinescu";1987-05-22;"Ploiesti";2007-09-19 1810324286315;"Nelu Varga";1985-06-28;"Brasov";2006-01-17 1850620266324;"Oreste Sabau";1985-07-26;"Buzau";2006-10-26 1851634297339;"Alina Petre";1989-09-25;"Ploiesti";2006-12-23 1850634297638;"Narcis Micu";1989-09-21;"Ploiesti";2006-11-20 1851614297739;"Andrei Rosoiu";1989-09-25;"Ploiesti";2006-12-23 1852624297839;"Corina Dragoi";1988-10-23;"Bucuresti";2006-07-22 1852624297939;"Paulina Enciu";1987-06-15;"Brasov";2003-06-16 1852624277139;"Serban Vasiliu";1987-11-13;"Brasov";2006-09-17 1852624267329;"Lucia Nastase";1986-12-12;"Bucuresti";2006-10-19 1852624207199;"Marian Popa";1985-06-10;"Bucuresti";2005-12-18 1852624217001;"Vlad Lambru";1986-09-25;"Buzau";2005-07-22 1852624218109;"Alin Nastase";1990-11-21;"Buzau";2005-04-02 1852624217007;"Alex Ionascu";1985-06-24;"Ploiesti";2006-06-06
Fişierul cărţi cerute împrumut.txt conţine următoarele înregistrări:
1005;1850624297369;"Moara cu Noroc";2006-12-15;2007-01-06;0 1012;1852624297839;"Sarpele";2006-07-24;2006-08-04;0 1002;1852624267329;"Baltagul";2006-10-24;2006-11-03;0 1002;1850624298349;"Baltagul";2005-04-17;2005-05-01;0 1019;1851634297339;"Mihai Viteazul";2006-12-23;2007-01-10;0 1002;1852624297939;"Baltagul";2003-06-18;2003-06-26;0 1017;1850620266324;"Algebra";2006-10-26;2006-11-03;0 1017;1820524297319;"Algebra";2006-07-19;2006-07-27;0
Fişierul repartizare sală lectura.txt conţine următoarele înregistrări:
1852624267329;"Matlab";10:03:55;11:30:20 1852624218109;"Baltagul";9:50:20;10:20:29 1820524297319;"Retele de calculatoare";8:30:21;10:00:29 1850624298349;"Enigma Otiliei";12:02:21;14:24:25 1852624217001;"Baltagul";13:12:24;15:01:03 1852624277139;"Tehnologii Web";15:10:10;17:13:23 1850620266324;"Moara cu Noroc";15:15:39;17:13:23 1851634297339;"Algebra";15:12:10;17:43:23 1850634297638;"Mihai Viteazul";16:08:10;17:13:23
Fişierul cărti cerute sală lectură.txt conţine următoarele înregistrări:
1852624267329;1020;2006-06-10;2;1 1852624218109;1002;2005-04-06;4;0 1820524297319;1014;2003-11-15;2;1 1850624298349;1006;2005-12-21;2;0 1852624217001;1002;2005-07-23;3;1 1852624277139;1004;2006-09-19;2;0 1850620266324;1005;2006-12-23;11;1 1851634297339;1017;2001-02-25;9;0 1850634297638;1019;2006-11-20;5;1
Fişierul cititori restanţieri.txt conţine următoarele înregistrări:
1850624297369;"Notiuni de algebra" 1850620266324;"Rebecca" 1820524297319;"Matematici speciale"
Altă variantă de inserare a înregistrarilor într-o tabelă se poate realiza scriind în prompterul MySql următoarea comandă:
INSERT INTO nume_tabelă (camp1, camp2,....campn) VALUES (valoarea1, valoarea2,....,valoarean);
Pasul3: Realizarea interogării bazei de date
1)Selectarea titlurilor cărţilor din tabela Patrimoniu_carti din domeniul literatură se realizează astfel:
SELECT Titlu_carte,Domeniu FROM `Patrimoniu_carti` WHERE Domeniu='Literatura'
2)Selectarea cărţilor cu titlul Baltagul din tabela Carti_cerute imprumut se realizează astfel:
SELECT Titlu_carte FROM `Carti_cerute_imprumut` WHERE Titlu_carte='Baltagul'
3) Selectarea cărţilor din tabela Patrimoniu_carti de la editura Rao se realizează astfel:
SELECT Titlu_carte,Editura FROM `Patrimoniu_carti` WHERE Editura='Rao'
4) Selectarea cărţilor din tabela Patrimoniu_carti în care nr de exemplare este egal cu 8 se realizează astfel:
SELECT Titlu_carte,Nr_exemplare FROM `Patrimoniu_carti` WHERE Nr_exemplare=8
5) Selectarea cărţilor din tabela Patrimoniu_carti în care preţul cărţilor este egal cu 50 se realizează astfel:
SELECT Titlu_carte,Pret_carte FROM `Patrimoniu_carti` WHERE Pret_carte=50
6)Selectarea cărţilor din tabela Patrimoniu_carti în care nr.de exemplare este egal cu 8 şi preţul acestora este egal cu 50 se realizează astfel:
SELECT Titlu_carte,Nr_exemplare,Pret_carte FROM `Patrimoniu_carti` WHERE Nr_exemplare=8 AND Pret_carte=50
7) Selectarea cărţilor din tabela Patrimoniu_carti din domeniul Literatură sau domeniul Biologie se realizează astfel:
SELECT Titlu_carte,Domeniu FROM `Patrimoniu_carti` WHERE Domeniu='Literatura' OR Domeniu='Biologie'
8) Selectarea cărţilor din tabela Patrimoniu_carti din editura Albatros sau editura Rao se realizează astfel:
SELECT Titlu_carte,Editura FROM `Patrimoniu_carti` WHERE Editura='Albatros' OR Editura='Rao'
9) Selectarea cărţilor din tabela Patrimoniu_carti scrise de M.Sadoveanu din domeniul Literatură se realizează astfel:
SELECT Titlu_carte,Autor,Domeniu FROM `Patrimoniu_carti` WHERE Autor LIKE 'M.Sadoveanu' AND Domeniu LIKE 'Literatura'
10) Valoarea medie a preţurilor cărţilor din tabela Patrimoniu_carti se realizează astfel:
SELECT AVG(pret_carte*nr_exemplare) AS AverageSum FROM `Patrimoniu_carti`
Îmi dă bine media aritmetică. Eventual la sfârşit putem pune şi un GROUP BY Titlu_carte
11) Valoarea totală a patrimoniului carţilor se realizează astfel:
SELECT SUM(pret_carte*nr_exemplare) AS Sumatotala FROM `Patrimoniu_carti`
Eventual la sfarsitul frazei se poate adauga GROUP BY Titlu_carte.
12) Valoarea totală a cartilor din tabela patrimoniu carti pe fiecare domeniu în parte se realizează astfel:
SELECT Domeniu,SUM(pret_carte*nr_exemplare) AS Sumatotala FROM `Patrimoniu_carti` GROUP BY Domeniu
13)Lista carţilor de la editura Albatros şi din domeniul Literatură se realizează astfel:
SELECT Titlu_carte,Editura,Domeniu FROM `Patrimoniu_carti` WHERE Editura LIKE 'Albatros' AND Domeniu LIKE 'Literatura'
14)Lista cititorilor al căror nume începe cu litera "A" se realizează astfel:
SELECT Nume_cititor FROM `Cititori_inregistrati` WHERE Nume_cititor LIKE 'A%';
15)Lista cititorilor al căror nume nu se termină în "ase" se realizează astfel:
SELECT Nume_cititor FROM `Cititori_inregistrati` WHERE Nume_cititor NOT LIKE '%ase';
16)Lista cititorilor ce au domiciliul în Ploiesti se realizează astfel:
SELECT Nume_cititor,Domiciliu FROM `Cititori_inregistrati` WHERE Domiciliu LIKE 'Ploiesti%';
17) Lista locurilor libere în salile de lectură se realizează astfel:
SELECT Nr_loc_repartizat FROM Carti_cerute_sala_lectura WHERE Validare_loc=1
18)Lista cititorilor şi a carţilor împrumutate de aceştia începând cu o anumită dată cuprinse într-un interval dat ordonate crescător dupa editură se realizează astfel:
SELECT patrimoniu_carti.Nume_cititor, carti_cerute_imprumut.Titlu_carte FROM patrimoniu_carti E, carti_cerute_imprumut F WHERE cititori_inregistrati.Cnp= carti_cerute_imprumut.Cnp AND Data_solicitare BETWEEN 2006-07-19 AND 2006-12-23 ORDER BY Editura ASC
19)Lista cititorilor şi a cartilor solicitate la sala de lectură(cu aceleaşi condiţii ca mai sus) se realizează astfel:
SELECT Patrimoniu_carti.Nume_cititor, Carti_cerute_sala_lectura.Titlu_carte FROM Patrimoniu_carti, Carti_cerute_sala_lectura WHERE Cititori_înregistrati.Cnp= Carti_cerute_sala_lectura.Cnp AND Data_solicitare BETWEEN 2005-04-06 AND 2006-11-20 AND ORDER BY Editura ASC
20)Lista cititorilor pe fiecare loc din sala de lectură într-un interval de timp(pe locul2 pot sta mai mulţi cititori în decursul unei zile la intervale de timp diferite) se realizează astfel:
SELECT E.Nume_cititor, F. Nr_loc_repartizat FROM Cititori_înregistrati E,Repartizare_sala_lectura F WHERE Ora_venire> 9:50:20 AND Ora_plecare<=15:20:00
21)Statistica împrumuturilor pe un titlu de carte(listare editură,titlu carte, nr. de împrumuturi) se realizează astfel:
SELECT E.Editura, E.Titlu_carte, F.Nr_imprumuturi, COUNT(*) AS [Nr imprumuturi] FROM Patrimoniu_carti E, Carti_cerute_împrumut F GROUP BY Titlu_carte
//Obs: AS si intre [] daca sunt 2 cuvinte; dk este Nr_imprumuturi scriu doar AS fara [] deoarece avand _ el il considera un cuvant
22)Selectia cititorilor ce au împrumuturi, dar au şi carti luate la sala de lectură se realizează astfel:
SELECT E.Nume_cititor,F.Titlu carte, G.Titlu carte FROM Cititori_înregistrati E, Carti_cerute_împrumut F, Carti_cerute_sala_lectura G WHERE E.Cnp= F.Cnp AND E.Cnp= G.Cnp
23)Lista cititorilor restanţieri şi a cărţilor restante se realizează astfel:
SELECT E.Nume_cititor,F.Titlu_carte FROM Cititori_înregistrati E, Cititori_restantieri F WHERE E.Cnp= F.Cnp
24)Selectarea cărţilor împrumutate din domeniul literatură(SELECT IMBRICAT sau SELECT ÎN SELECT) se realizează astfel:
SELECT Titlu_carte FROM Patrimoniu_carti WHERE Domeniu='Literatura' IN (SELECT Titlu_carte FROM Carti_cerute_împrumut)
25)Valoarea cărţilor împrumutate se realizează astfel:
SELECT SUM(Patrimoniu_carti.Pret_carte) FROM Patrimoniu_carti,Carti_cerute_imprumut WHERE Patrimoniu_carti.Cota_carte=Carti_cerute_imprumut.Cota_carte
26)Valoarea cărţilor cititorilor restanţieri se realizează astfel:
SELECT SUM(Patrimoniu_carti.Pret_carte) FROM Patrimoniu_carti,Cititori_restantieri WHERE Patrimoniu_carti.Titlu_carte= Cititori_restantieri.Titlu_carte
Iata un exemplu concret de cum lucrati in MySQL. Nu va ramane decat sa parcurgeti acesti 4 pasi esentiali:
Pasul1: Crearea bazei de date cu numele dorit de voi Pasul2: Crearea tabelelor cu numele dorit de voi Pasul3: Completarea inregistrarilor(dati click pe butonul insert cu albastru) pentru fiecare tabela in parte Pasul4: Interogarea bazei de date(a tabelelor aferente) folosind SQL-Query
Obs1. Daca aplicati o interogare asupra tabelei Patrimoniu_carti click pe ea sa fie selectata si sa va apara sus campurile acesteia si apoi introduceti fraza select aplicabila acestei tabele . Primele cerinte au fost aplicate tabelei Patrimoniu_carti
Obs2. Cand lucrez cu 2 tabele si selectez un camp dintr-o tabela si alt camp din alta tabela definesc 2 variabile E si F (sa zic) si dk vreau sa accesez campul Titlu_carte din prima tabela scriu E.Titlu_carte. Dk vreau sa accesez campul Nume_cititor din a doua tabela scriu F.Nume_cititor.
|
|