Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Realizarea sistemului de gestionare a bazei de date "Biblioteca"
1. Detalii despre biblioteca
Cu aceasta baza de date se pot gestiona operatiile care au loc cu cartile unei biblioteci. Am presupus ca biblioteca respectiva se afla intr-o singura cladire si toate cartile pot fi gestionate de un singur bibliotecar. Din punct de vedere al locatiilor cartilor in cadrul bibliotecii am considerat ca biblioteca este formata din: sali(S), dulapuri(D) care sunt impartite in corpuri(C) care la randul lor sunt impartite in rafturi(R) .
Ca o restrictie pe care am impus-o este ca o carte ramane cu acelasi pret pana la casare. Cu alte cuvinte valoarea cartii din punct de vedere al pretului nici nu creste nici nu scade, ceea ce presupune ca in baza de date nu este nevoie sa se mai faca actualizari ale pretului. De asemenea nu am luat in considerare deprecierea cartii din punct de vedere fizic al ei, in sensul ca o carte ramane in circulatie atata timp cat se constata ca mai poate fi folosita, dupa care se caseaza.
De asemenea am restrictionat imprumuturile pe care le poate face un cititor la un numar maxim de trei carti.
Despre cititori am ales sa se introduca doar cateva date minimale necesare situatiei in care cititorul va trebui sa fie atentionat ca nu a restituit cartea, sau pentru cazul in care a pierdut-o si va trebui sa plateasca contravaloarea ei.
In cazul pierderii unei carti cititorul va plati contravaloarea cartii plus o amenda fixa in valoare 20 lei.
In continuare se prezinta informatiile pe care poate sa le obtina un utilizator al acestei baze de date.
In primul rand, baza de date ii da posibilitatea utilizatorului sa afle:
● daca o anumita carte exista in biblioteca
● ce editura a publicat aceea carte
● ce carti ale unui autor exista in biblioteca
● ce carti dintr-un anumit domeniu se gasesc in biblioteca
● in ce limba prefera sa citeasca o carte
Se pot face si anumite analize sau rapoarte referitoare la:
● numarul de cititori intr-o anumita perioada de timp
● topul cartilor citite
● preferintele cititorilor in materie de autori
● ce segment de varsta este mai activ in imprumutatul cartilor
Crearea tabelelor bazei de date "Biblioteca"
Prima faza a creerii bazei de date este identificarea entitatilor si a atributelor fiecarei entitati in parte. Astfel au rezultat un numar de sase entitati si anume:
CARTI
Id_carte <pk><fk>
ISBN <fk>
Titlul
An_aparitie
Id_editura <fk>
Id_autor <fk>
Domeniul
Limba
Valoare
Stare_carte
Stare_imprumut
Relatia "CARTI" are urmatoarele atribute:
○ Id_carte reprezinta numarul de inventar al cartii si care este si cheie primara, in acelasi timp, dar si cheie straina pentru relatia IMPRUMUT.
○ ISBN este numarul editiei cartii respective.
○ Titlul reprezinta titlul cartii.
○ An_aparitie se refera la anul aparitiei cartii.
○ Id_editura reprezinta codul editurii si este si cheie straina pentru relatia "EDITURI".
○ Id_autor reprezinta codul autorului si este cheie straina pentru relatia "AUTOR".
○ Domeniul este atributul care se refera la domeniul cartii (istorie, beletristica, fizica, informatica, medicina etc.).
○ Limba reprezinta limba in care este scrisa cartea.
○ Valoare se refera la pretul de achizitie al cartii.
○ Stare_fizica reprezinta una din cele trei stari ale cartii: foarte buna, buna, satisfacatoare.
○ Stare_imprumut atribut de tip boolean care specifica daca o carte este imprumutata sau nu.
EDITURI
ID_editura <pk>
Nume_editura
Adresa_editura
Nr_telefon_editura
E_mail_editura
Relatia "EDITURI" cuprinde atributele cu date referitoare la edituri:
○ Id_editura atributul relatiei care reprezinta si cheia primara.
○ Nume_editura se refera la numele editurii.
○ Adresa_editura se refera la adresa editurii.
○ Nr_telefon_editura reprezinta numarul de telefon al editurii.
○ E_mail_editura adica mailul la care pot fi trimise mesajele pentru editura.
Relatia nu are chei straine.
AUTOR
Id_autor <pk>
Nume_autor
Relatia "AUTOR" cuprinde urmatoarele atribute referitoare la autor :
○ Id_autor este cheia primara a relatiei.
○ Nume_autor se refera la numele autorului.
CITITORI
Numar_permis <pk>
Nume_cititor
Prenume _cititor
Adresa_cititor
Loc_de_munca
Telefon_cititor
Amenda_cititor
Relatia "CITITORI" este formata din atributele referitoare la cateva date despre cititor:
○ Numar_permis atribut care identifica unic orice cititor.
○ Nume_cititor se refera la numele cititorului.
○ Adresa_cititor adica adresa unde poate fi gasit acesta.
○ Loc_de_munca adica locul de munca al cititorului.
○ Telefon_cititor reprezinta numarul de telefon la care poate fi contactat cititorul.
○ Amenda_cititor reprezinta suma platita de cititor in cazul in care pierde o carte.
IMPRUMUT
Numar_permis <pk><fk>
Id_carte <pk>
Data_imprumut <pk>
Data_restituit
Relatia "IMPRUMUT" are urmatoarele atribute :
○ Numar_permis reprezinta numarul de permis al cititorului.
○ Id_carte numarul de inventar al cartii.
○ Data_imprumut se refera la data cand a fost imprumutata cartea.
○ Data_restituit reprezinta data la care a fost restituita cartea.
Cheia primara a acestei relatii este o cheie compusa formata din trei atribute (Numar_permis, Id_carte si Data_imprumut). In acelasi timp Numar_permis este si cheie straina pentru relatia "CITITORI".
CARTI_AUTOR
ISBN <pk>
Id_autor <pk>
In sfarsit ultima relatie "CARTI_AUTOR" are cheie primara compusa formata din atributele ISBN si Id_autor. Aceasta relatie a fost introdusa pentru a elimina asocierea de "multi la multi" care s-ar forma intre relatiile "CARTI" si "AUTOR" .
OBSERVATIE : In relatia "CITITORI" am considerat a alege drept cheie primara atributul Numar_permis in detrimentul CNP-ului deoarece am crezut de cuviinta ca Numar_permis este mai familiar bazei noastre de date si tot o data este si mai scurt.
3 Normalizarea bazei de date
Prima forma normala:eliminarea datelor repetate
O relatie este in prima forma normala atunci cand nu contine atribute cu valori multiple (atribute multivaloare), adica atribute care au mai multe valori pentru acelasi rand de date. Intr-o relatie orice intersectie a unui rand cu o coloana trebuie sa contina cel mult o valoare pentru ca relatia sa fie in prima forma normala.
Pentru transformarea relatiilor ne-normalizate in prima forma normala, trebuie sa mutam atributele multivaloare si grupurile repetitive in noi relatii. Deoarece grupurile repetitive reprezinta un set de atribute care se repeta impreuna, toate atributele dintr-un grup repetitiv ar trebui mutate in aceeasi relatie. Pe de alta parte, un atribut multivaloare (un atribut individual care are valori multiple) ar trebui sa fie mutat intr-o relatie proprie, nu sa fie combinat cu alte atribute mutivaloare in noua relatie.
Constatam ca in relatia CARTI unul din atributele sale are valori multiple si anume Id_autor deoarece o carte poate avea mai multi autori.
Pentru a transforma relatia CARTI in prima forma normala mutam atributul Id_autor intr-o noua relatie. Noua relatie o numim AUTORI_CARTI si are cheia primara compusa formata din atributele Id_carte, care reprezinta si cheie externa pentru noua relatie, si atributul Id_autor. Relatia nou creata are forma urmatoare:
Autorul cu codul (ID_autor) 12 se regaseste pe
coperta cartii 1 cat si a cartii 2
Id_carte |
ID_autor |
1 |
12 |
1 |
17 |
1 |
14 |
2 |
9 |
2 |
12 |
Fig. 3.1. Popularea entitatatii AUTORI_CARTI
De asemenea in relatia "CARTI" avem situatia in care o carte poate fi tiparita in doua limbi (bilingva). De exemplu volumul "Poezii" de Mihai Eminescu poate fi gasit in biblioteca tradus in doua limbi:engleza-romana. Prin urmare atributul "Limba" este un atribut cu valori multiple. Aplicand prima forma normala formam o noua relatie pe care o denumim TRADUCERE_CARTI care are ca si cheie primara atributul "Id_carte" si care este si cheie straina in aceasta noua relatie. In acelasi timp mutam si atributul "Limba" din relatia parinte CARTI si formam cu el cheia primara compusa in noua relatie care devine:
TRADUCERE_CARTI |
Id carte <pk><fk> Limba <pk> |
Fig. 3. Entitatea TRADUCERE_CARTI
Id_carte |
Limba |
1 2 3 3 4 |
Romana Romana Engleza Romana Romana |
TRADUCERE_CARTI
Fig. 3.3. Titlu
Cardinalitatile relatiilor sunt:
TRADUCERE_CARTI |
(1,n) (1,1) |
CARTI |
Fig. 3.4. Asicerea de 1:n intre entitati
Toate celelalte relatii se afla in forma normala unu.
A doua forma normala: eliminarea dependentelor partiale
Spunem ca o relatie este in a doua forma normala daca indeplineste urmatoarele criterii:
● relatia este in prima forma normala
● toate atributele non-cheie sunt dependente functional de identificatorul unic (cheie primara), luat ca intreg.
Spunem ca un atribut B este dependent functional de atributul A adica atributul A determina atributul B sau ca A este un determinant (identificator unic) pentru atributul B.
Cu alte cuvinte a doua forma normala se aplica numai relatiilor care au identificatoare unice concatenate (adica formate din atribute multiple). Intr-o relatie care are un singur atribut ca identificator unic (cheie primara), este imposibil ca un alt atribut sa depinda de o parte a identificatorului unic, deoarece acesta, fiind format dintr-un singur atribut, nu are parti componente. Ca urmare, orice relatie in prima forma normala care are cheie primara formata dintr-un singur atribut este automat in a doua forma normala.
In relatia IMPRUMUT unde cheia primara este formata din trei atribute celelalte atribute non-cheie nu sunt dependente functional de cheia primara luata ca intreg. Data restituiri cartii nu depinde de numarul de inventar al cartii si nici de numarul de permis al cititorului. De asemenea nici faptul ca un cititor are sau nu imprumutata o carte nu depinde de numarul de permis al cititorului sau de numarul de inventar al cartii.
Celelalte relatii avand chei primare formate dintr-un singur atribut nu pot fi normalizate cu FN
A treia forma normala: eliminarea dependentelor tranzitive
Spunem ca o relatie este in a treia forma normala daca indeplineste urmatoarele doua criterii:
● relatia este in a doua forma normala.
● nu exista dependente tranzitive (toate atributele non-cheie depind numai de identificatorul unic).
Despre un atribut care depinde de un atribut care nu este identificator unic (cheie primara) a relatiei se spune ca este dependent tranzitiv.
Pentru a aduce la a treia forma normala o relatie aflata in a doua forma normala, mutam atributele dependente tranzitiv in relatii in care depind numai de cheia primara.
Forma normala trei (FN3) se aplica tabelului CARTI deoarece intre anumite atribute ale relatiei exista o dependenta tranzitiva. Sa exemplificam: valoarea (pretul de achizitie) unei carti, editura unde a fost tiparita si anul cand a fost tiparita o carte depind toate de editia unei carti (ISBN). Deci toate cartile care apar intr-o editie au toate aceste atribute comune.
Formam o noua relatie care cuprinde toate atributele care sunt dependente tranzitiv de cheia primara, atributul ISBN pe care o denumim EDITIE.
EDITIE |
ISBN <pk> Id_carte <pk> Titlul An_aparitie ID_editura Limba |
.
Fig. 3.5. titlu
Celelalte relatii se afla in cea de treia forma normala.
Diagrama entitate-relatie poate fi prezentata sub forma urmatoare:
AMENZI Nr_permis Id_carte Amenda Carte UTILIZATORI Utilizatori v archar<pk> Nume varchar Parola varchar Email varchar
Fig. 3.6. Diagrama Entitate-Relatie
Copyright © 2024 - Toate drepturile rezervate