Documente Academic
Documente Profesional
Documente Cultură
Proiect
la disciplina "Asistenţa Bazelor de Date"
Tema: "Tranzacţiile într-o bază de date"
A EFECTUAT: A VERIFICAT:
st. grupei I-1435 profesorul
Filip Florin V. Bulat
Chişinău 2016
Sarcina
de creat baza de date in care se duce evidenţa manualelor împrumutate de elevii grupei I-1435 de la
Creează un tabel, în care se vor copia datele, care corespund manualelor care deja trebuie
pentru a satisface simultan cerintele mai multor utilizatori intr-un mod selectiv si in timp rezonabil. Descrierea
structurii poartă numele de dicţionar de date sau metadate şi crează o interdependenţă între datele propriu-
zise şi programe.
Baza de date poate fi privită ca o colecţie de fişiere interconectate care conţin nucleul de date
necesare unui sistem informatic. Astfel, poate fi considerată drept un model al unor aspecte ale realităţii unei
unităţi economice, modelată prin intermediul datelor. Diferitele obiecte din cadrul realităţii, ce prezintă interes,
sunt denumite clase sau entităţi. Pentru aceste obiecte sunt achiziţionate şi memorate date referitoare la
diferite caracteristici (atribute). Baza de date se constituie ca un ansamblu intercorelat de colecţii de date, prin
Paşii recomandaţi a fi realizaţi pentru proiectarea modelului relaţional prin normalizare, utilizând formele
normale sunt :
1. Inventarierea atributelor şi constituirea tabelului relaţional iniţial (relaţiei universale). Se vor prelua toate
atributele care fac obiectul problemei de rezolvat, din documentele primare şi situaţiile de ieşire.
2. Se determină cheia primară a relaţiei şi se reprezintă toate dependenţele funcţionale ce decurg de aici.
3. Se elimină atributele calculabile şi cele repetitive astfel încât tabelul iniţial să respecte FN1.
4. Se elimină dependenţele funcţionale parţiale prin descompunerea tabelului iniţial în tabele cu structuri mai
5. Se elimină dependenţele funcţionale tranzitive prin descompunerea tabelelor din etapa anterioară astfel
6. Se identifică eventualele dependenţe multivaloare şi se elimină astfel încât să tabelele să respecte FN4,
respectiv FN5.
Conţinut
Proiect 1
Sarcina 2
Introducere 3
Baza de date 5
Inventarierea atributelor 5
Determinarea cheii primare 5
Eliminarea atributelor calculabile 5
Normalizarea bazei de date 6
Rezultatul executarii comenzii SELECT * FROM MANUALE 10
Eliminarea dependenţelor funcţionale parţiale 11
Eliminarea dependenţelor funcţionale tranzitive 12
Concluzie 14
Baza de date
Domeniul de aplicare a bazei de date este larg, deoarece această bază de date permite administrarea
intregilor biblioteci, librarii, şi chiar, dacă modificăm denumirea cărorva atribute, administrarea firmelor ce dau
Inventarierea atributelor
Am următoarele atribute:
Denumirea manualului, numele posesorului, prenumele posesorului, telefonul posesorului pentru a-l
putea contacta in caz de necesitate, orasul posesorului pentru a-l gasi in caz de necesitate, editura manualului
pentru a nu-l confunda cu altul asemanator, strada si blocul editurii pentru a o gasi mai usor, telefonul editurii
pentru a o putea contacta in caz de necesitate, anul in care s-a produs manualul, starea manualului pentru a
sti care actiuni trebuie intreprinse in caz de posibilitate de a mai procura manuale, pretul manualului pentru a
afla costul innoirii bibliotecii sau pentru a estima datoria elevului ce pierde sau degradează careva manuale.
Am determinat chei primare pentru fiecare manual din grupă şi am creat primul tabel adus la forma normală 2.
Mai jos urmează lista comenzilor, executarea executivă a cărora duce la cerarea şi popularea tabelului
FN 1
Se elimină atributele calculabile şi cele repetitive astfel încât tabelul iniţial să respecte FN1.
In tabelul Manuale se depistează că se repetă Denumirea manualelor, editurile, Numele posesorilor, etc.
Posesori
values('064','Chimia', 'Spinu', 'Petru', '069000004', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'pdf', '50');
insert into Manuale(ID_manual, denumire_manual, nume_posesor, prenume_posesor, telefon_posesor, oras_posesor, editura, strada_editura, bloc_editura, telefon_editura, anul, stare, pret)
values('065','Chimia', 'Micu', 'Radu', '069000005', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'sat', '50');
insert into Manuale(ID_manual, denumire_manual, nume_posesor, prenume_posesor, telefon_posesor, oras_posesor, editura, strada_editura, bloc_editura, telefon_editura, anul, stare, pret)
values('066','Chimia', 'Mocanu', 'Radu', '069000006', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'nesat', '50');
insert into Manuale(ID_manual, denumire_manual, nume_posesor, prenume_posesor, telefon_posesor, oras_posesor, editura, strada_editura, bloc_editura, telefon_editura, anul, stare, pret)
values('067','Chimia', 'Antoni', 'Ion', '069000007', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'nesat', '50');
insert into Manuale(ID_manual, denumire_manual, nume_posesor, prenume_posesor, telefon_posesor, oras_posesor, editura, strada_editura, bloc_editura, telefon_editura, anul, stare, pret)
values('068','Chimia', 'Rusu', 'Cristian', '069000008', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'sat', '50');
insert into Manuale(ID_manual, denumire_manual, nume_posesor, prenume_posesor, telefon_posesor, oras_posesor, editura, strada_editura, bloc_editura, telefon_editura, anul, stare, pret)
values('069','Chimia', 'Timbalari', 'Mihai', '069000009', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'sat', '50');
insert into Manuale(ID_manual, denumire_manual, nume_posesor, prenume_posesor, telefon_posesor, oras_posesor, editura, strada_editura, bloc_editura, telefon_editura, anul, stare, pret)
values('070','Astronomia', 'Mocanu', 'Radu', '069000006', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'nesat', '50');
insert into Manuale(ID_manual, denumire_manual, nume_posesor, prenume_posesor, telefon_posesor, oras_posesor, editura, strada_editura, bloc_editura, telefon_editura, anul, stare, pret)
values('071','Astronomia', 'Filip', 'Florin', '060543219', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'pdf', '50');
insert into Manuale(ID_manual, denumire_manual, nume_posesor, prenume_posesor, telefon_posesor, oras_posesor, editura, strada_editura, bloc_editura, telefon_editura, anul, stare, pret)
values('072','Astronomia', 'Vulpe', 'Denis', '069000001', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'pdf', '50');
insert into Manuale(ID_manual, denumire_manual, nume_posesor, prenume_posesor, telefon_posesor, oras_posesor, editura, strada_editura, bloc_editura, telefon_editura, anul, stare, pret)
values('073','Astronomia', 'Vlas', 'Mihai', '069000002', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'pdf', '50');
insert into Manuale(ID_manual, denumire_manual, nume_posesor, prenume_posesor, telefon_posesor, oras_posesor, editura, strada_editura, bloc_editura, telefon_editura, anul, stare, pret)
values('074','Astronomia', 'Cazacliu', 'Cristian', '069000003', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'pdf', '50');
insert into Manuale(ID_manual, denumire_manual, nume_posesor, prenume_posesor, telefon_posesor, oras_posesor, editura, strada_editura, bloc_editura, telefon_editura, anul, stare, pret)
values('075','Astronomia', 'Spinu', 'Petru', '069000004', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'pdf', '50');
insert into Manuale(ID_manual, denumire_manual, nume_posesor, prenume_posesor, telefon_posesor, oras_posesor, editura, strada_editura, bloc_editura, telefon_editura, anul, stare, pret)
values('076','Astronomia', 'Micu', 'Radu', '069000005', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'pdf', '50');
insert into Manuale(ID_manual, denumire_manual, nume_posesor, prenume_posesor, telefon_posesor, oras_posesor, editura, strada_editura, bloc_editura, telefon_editura, anul, stare, pret)
values('077','Astronomia', 'Antoni', 'Ion', '069000007', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'sat', '50');
insert into Manuale(ID_manual, denumire_manual, nume_posesor, prenume_posesor, telefon_posesor, oras_posesor, editura, strada_editura, bloc_editura, telefon_editura, anul, stare, pret)
values('078','Astronomia', 'Rusu', 'Cristian', '069000008', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'nesat', '50');
insert into Manuale(ID_manual, denumire_manual, nume_posesor, prenume_posesor, telefon_posesor, oras_posesor, editura, strada_editura, bloc_editura, telefon_editura, anul, stare, pret)
values('079','Astronomia', 'Timbalari', 'Mihai', '069000009', 'Chisinau', 'Lumina', 'Stefan', '180', '022295864', '2013', 'sat', '50');
Rezultatul executarii comenzii SELECT * FROM MANUALE
Edituri
ID_editura den_editura str_editura bloc_editura telefon_editura
01 Stiinta Academiei 3 022739616
02 Arc Meniuc 3 022735329
03 Cartier Toamnei 24 022108051
04 Lumina Stefan 180 022295864
Posesori
ID Nume Prenume Telefon oras
01 Filip Florin 060543219 Chisinau
02 Vulpe Denis 069000001 Chisinau
03 Vlas Mihai 069000002 Chisinau
04 Cazacliu Cristian 060000003 Chisinau
05 Spinu Petru 069000004 Chisinau
06 Micu Radu 069000005 Chisinau
07 Mocanu Radu 069000006 Chisinau
08 Antoni Ion 069000007 Chisinau
09 Rusu Cristi 069000008 Chisinau
10 Timbalari Mihai 069000009 Chisinau
Manual
ID_manual denumire_manual ID_editura anul pret
01 Informatica 01 2015 50
02 Biologia 01 2015 50
03 Geografia 02 2010 50
04 Fizica 02 2010 50
05 Franceza 03 2014 50
06 Engleza 03 2014 50
07 Chimia 04 2013 50
08 Astronomia 04 2013 50
Stări
ID_m ID_p stare
01 01 pdf
02 01 pdf
03 01 pdf
04 01 pdf
05 01 pdf
06 01 pdf
07 01 pdf
08 01 pdf
01 02 pdf
02 02 pdf
03 02 pdf
04 02 pdf
05 02 pdf
06 02 pdf
07 02 pdf
08 02 pdf
01 03 sat
02 03 sat
03 03 sat
04 03 sat
05 03 nesat
06 03 sat
07 03 pdf
08 03 pdf
01 04 sat
02 04 nesat
03 04 pdf
04 04 pdf
05 04 sat
06 04 pdf
07 04 nesat
08 04 pdf
01 05 pdf
02 05 sat
03 05 pdf
04 05 pdf
05 05 nesat
06 05 pdf
07 05 pdf
08 05 pdf
01 06 sat
02 06 pdf
03 06 pdf
04 06 sat
05 06 pdf
06 06 nesat
07 06 pdf
08 06 pdf
01 07 nesat
02 07 pdf
03 07 pdf
04 07 sat
05 07 pdf
06 07 sat
07 07 pdf
08 07 pdf
01 08 nesat
02 08 pdf
03 08 pdf
04 08 sat
05 08 pdf
06 08 nesat
07 08 pdf
08 08 pdf
01 09 sat
02 09 nesat
03 09 pdf
04 09 pdf
05 09 sat
06 09 pdf
07 09 sat
08 09 pdf
01 10 nesat
02 10 sat
03 10 pdf
04 10 sat
05 10 pdf
06 10 nesat
07 10 pdf
08 10 sat
Eliminarea dependenţelor funcţionale parţiale
Deasemenea, baza pe care o voi prezenta în continuare, va fi fără dependenţe funcţionale tranzitive.
Mai jos, urmează comenzile, executarea consecutivă a cărora permite obţinerea unei baze de date
insert into Posesori(ID, Nume, Prenume, Telefon, oras) values('01','Filip', 'Florin', '060543219', 'Chisinau');
insert into Posesori(ID, Nume, Prenume, Telefon, oras) values('02','Vulpe', 'Denis', '069000001', 'Chisinau');
insert into Posesori(ID, Nume, Prenume, Telefon, oras) values('03','Vlas', 'Mihai', '069000002', 'Chisinau');
insert into Posesori(ID, Nume, Prenume, Telefon, oras) values('04','Cazacliu', 'Cristian', '060000003', 'Chisinau');
insert into Posesori(ID, Nume, Prenume, Telefon, oras) values('05','Spinu', 'Petru', '069000004', 'Chisinau');
insert into Posesori(ID, Nume, Prenume, Telefon, oras) values('06','Micu', 'Radu', '069000005', 'Chisinau');
insert into Posesori(ID, Nume, Prenume, Telefon, oras) values('07','Mocanu', 'Radu', '069000006', 'Chisinau');
insert into Posesori(ID, Nume, Prenume, Telefon, oras) values('08','Antoni', 'Ion', '069000007', 'Chisinau');
insert into Posesori(ID, Nume, Prenume, Telefon, oras) values('09','Rusu', 'Cristi', '069000008', 'Chisinau');
insert into Posesori(ID, Nume, Prenume, Telefon, oras) values('10','Timbalari', 'Mihai', '069000009', 'Chisinau');
--Crearea tabelului stări, acesta e principalul tabel care ajută la nemijlocita ducere de evidenţă a manualelor şi al stării lor.
create table stari(
ID_m char(2) not null,
ID_p char(2) not null,
stare char(5) not null
);
insert into stari(ID_m,ID_p,stare) values('01','01','pdf');insert into stari(ID_m,ID_p,stare) values('02','01','pdf');insert into stari(ID_m,ID_p,stare) values('03','01','pdf');
insert into stari(ID_m,ID_p,stare) values('04','01','pdf');insert into stari(ID_m,ID_p,stare) values('05','01','pdf');insert into stari(ID_m,ID_p,stare) values('06','01','pdf');
insert into stari(ID_m,ID_p,stare) values('07','01','pdf');insert into stari(ID_m,ID_p,stare) values('08','01','pdf');insert into stari(ID_m,ID_p,stare) values('01','02','pdf');
insert into stari(ID_m,ID_p,stare) values('02','02','pdf');insert into stari(ID_m,ID_p,stare) values('03','02','pdf');insert into stari(ID_m,ID_p,stare) values('04','02','pdf');
insert into stari(ID_m,ID_p,stare) values('05','02','pdf');insert into stari(ID_m,ID_p,stare) values('06','02','pdf');insert into stari(ID_m,ID_p,stare) values('07','02','pdf');
insert into stari(ID_m,ID_p,stare) values('08','02','pdf');insert into stari(ID_m,ID_p,stare) values('01','03','sat');
insert into stari(ID_m,ID_p,stare) values('02','03','sat');insert into stari(ID_m,ID_p,stare) values('03','03','sat');insert into stari(ID_m,ID_p,stare) values('04','03','sat');
insert into stari(ID_m,ID_p,stare) values('05','03','nesat');insert into stari(ID_m,ID_p,stare) values('06','03','sat');insert into stari(ID_m,ID_p,stare) values('07','03','pdf');
insert into stari(ID_m,ID_p,stare) values('08','03','pdf');insert into stari(ID_m,ID_p,stare) values('01','04','sat');insert into stari(ID_m,ID_p,stare) values('02','04','nesat');
insert into stari(ID_m,ID_p,stare) values('03','04','pdf');insert into stari(ID_m,ID_p,stare) values('04','04','pdf');insert into stari(ID_m,ID_p,stare) values('05','04','sat');
insert into stari(ID_m,ID_p,stare) values('06','04','pdf');insert into stari(ID_m,ID_p,stare) values('07','04','nesat');insert into stari(ID_m,ID_p,stare) values('08','04','pdf');
insert into stari(ID_m,ID_p,stare) values('01','05','pdf');insert into stari(ID_m,ID_p,stare) values('02','05','sat');insert into stari(ID_m,ID_p,stare) values('03','05','pdf');
insert into stari(ID_m,ID_p,stare) values('04','05','pdf');insert into stari(ID_m,ID_p,stare) values('05','05','nesat');insert into stari(ID_m,ID_p,stare) values('06','05','pdf');
insert into stari(ID_m,ID_p,stare) values('07','05','pdf');insert into stari(ID_m,ID_p,stare) values('08','05','pdf');insert into stari(ID_m,ID_p,stare) values('01','06','sat');
insert into stari(ID_m,ID_p,stare) values('02','06','pdf');insert into stari(ID_m,ID_p,stare) values('03','06','pdf');insert into stari(ID_m,ID_p,stare) values('04','06','sat');
insert into stari(ID_m,ID_p,stare) values('05','06','pdf');insert into stari(ID_m,ID_p,stare) values('06','06','nesat');insert into stari(ID_m,ID_p,stare) values('07','06','pdf');
insert into stari(ID_m,ID_p,stare) values('08','06','pdf');insert into stari(ID_m,ID_p,stare) values('01','07','nesat');insert into stari(ID_m,ID_p,stare) values('02','07','pdf');
insert into stari(ID_m,ID_p,stare) values('03','07','pdf');insert into stari(ID_m,ID_p,stare) values('04','07','sat');insert into stari(ID_m,ID_p,stare) values('05','07','pdf');
insert into stari(ID_m,ID_p,stare) values('06','07','sat');insert into stari(ID_m,ID_p,stare) values('07','07','pdf');insert into stari(ID_m,ID_p,stare) values('08','07','pdf');
insert into stari(ID_m,ID_p,stare) values('01','08','nesat');insert into stari(ID_m,ID_p,stare) values('02','08','pdf');insert into stari(ID_m,ID_p,stare) values('03','08','pdf');
insert into stari(ID_m,ID_p,stare) values('04','08','sat');insert into stari(ID_m,ID_p,stare) values('05','08','pdf');insert into stari(ID_m,ID_p,stare) values('06','08','nesat');
insert into stari(ID_m,ID_p,stare) values('07','08','pdf');insert into stari(ID_m,ID_p,stare) values('08','08','pdf');insert into stari(ID_m,ID_p,stare) values('01','09','sat');
insert into stari(ID_m,ID_p,stare) values('02','09','nesat');insert into stari(ID_m,ID_p,stare) values('03','09','pdf');insert into stari(ID_m,ID_p,stare) values('04','09','pdf');
insert into stari(ID_m,ID_p,stare) values('05','09','sat');insert into stari(ID_m,ID_p,stare) values('06','09','pdf');insert into stari(ID_m,ID_p,stare) values('07','09','sat');
insert into stari(ID_m,ID_p,stare) values('08','09','pdf');insert into stari(ID_m,ID_p,stare) values('01','10','nesat');insert into stari(ID_m,ID_p,stare) values('02','10','sat');
insert into stari(ID_m,ID_p,stare) values('03','10','pdf');insert into stari(ID_m,ID_p,stare) values('04','10','sat');insert into stari(ID_m,ID_p,stare) values('05','10','pdf');
insert into stari(ID_m,ID_p,stare) values('06','10','nesat');insert into stari(ID_m,ID_p,stare) values('07','10','pdf');insert into stari(ID_m,ID_p,stare) values('08','10','sat');
Iată, deci, reprezentarea grafică a bazei de date normalizate şi împărţite în tabelele:
Manual - care conţine informaţii despre manualele din care se efectuează studii la lecţii.
Stări - care conţine informaţii despre faptul care manual al cărui elev şi în ce stare se află.
Am scris un cod care crează baza de date Manuale, apoi, adaugă în ea un tabel numit Manuale, în
În setul acesta de instrucţiuni nu se inserează ID-ul deoarece, pana la un moment anumit, nu stiam de
Deasemenea, concluzionez că MySQL Server este un program util pentru programatori făcînd posibilă
cerarea şi gestionarea bazelor de date pentru a permite de a face lucruri fermecătoare atît programatorilor cît
şi utilizatorilor.
Consider că fiecare ar trebui să înveţe Administrarea Bazelor de Date pentru că este ceva minunat, şi
dacă toţi ar şti cum funcţionează, acest fapt, ar uşura, probabil, viaţa multor oameni, şi chiar, poate, ar
integritate
de facut schema unui tabel asta campurile si tipurile datelor din aceste campuri