Mihai Sprinceana
Un forum de programare cu de toate. Va astept sa va inscrieti si sa deveniti moderatori. Oricine este binevenit aici sa se inscrie si sa aiba acces la informatie free! Fiecare este liber sa adauge proiecte programe free etc. Ajutati acest forum sa devina o comunitate puternica unde fiecare invata de la fiecare! Tot ce trebuie sa faceti este sa va inregistrati si fiecare contributie se poate dovedi utila in timp! Forumul este free informatia free dk aveti timp liber ajutati si pe ceilalti si invatati si voi in acelasi timp! Haideti sa facem ceva pt.a ne ajuta intre noi! Cititi regulament postare forum inainte de a posta!
Lista Forumurilor Pe Tematici
Mihai Sprinceana | Inregistrare | Login

POZE MIHAI SPRINCEANA

Nu sunteti logat.
Nou pe simpatie:
bruneta_mara pe Simpatie.ro
Femeie
24 ani
Ialomita
cauta Barbat
27 - 64 ani
Mihai Sprinceana / MySQL / Baza de date biblioteca-structura si cerinte Moderat de fireratbat, profu.info, sade5000
Autor
Mesaj Pagini: 1
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.


pus acum 18 ani
   
andreeavlaicu
Membru nou

Din: ploiesti
Inregistrat: acum 15 ani
Postari: 1
din cate imi dau seama cititorii restantieri i-ai scris tu. eu am facut o alta baza de date cu aceeasi tema si vreau sa generez automat cititorii restantieri, doar ca nu-mi aduc aminte functia care intoarce data intr-un intreg

_______________________________________
daca ti se pare prea frumos ca sa fie adevarat...probabil ca asa este

pus acum 15 ani
   
Pagini: 1  

Mergi la