Sunteți pe pagina 1din 25

Baza de date(database) este o colectie de fisiere si inregistrari legate intre ele.

Avantajele folosirii bazelor de date in locul fisierelor de date sunt:


1.

2.

3.

Partajarea informatiilor. Spre deosebire de datele din fisierele de date la care au acces numai utilizatorii care le-au creat si le intretin, la datele din baza de date pot avea acces toti membrii unei organizatii, care isi vor partaja datele din baza de date. Pot fi create aplicatii noi care sa foloseasca datele din mai multe colectii de date si care sa furnizeze informatii noi folosind tot ansamblul de date. In acest mod, fiecare utilizator are senzatia ca este beneficiarul unic al colectiei de date. Cresterea cantitatii de informatii disponibile unui utilizator. Deoarece datele produse de un compartiment al organizatiei pot fi folosite de toti membrii organizatiei si nu numai de membrii compartimentului respectiv, creste cantitatea de informatii la care au acces membrii organizatiei, chiar daca se vor impune unele restrictii de acces pentru unele grupuri de membrii. Gruparea datelor intr-o colectie unica de date face posibil ca utilizatorul sa poata obtine toate datele legate logic de o data elementara de care el are nevoie pentru a-si desfasura activitatea in cadrul companiei. Micsorarea redundantei datelor. embrii organizatiei vor avea acces la aceiasi colectie de date, in loc sa-si creeze fiecare propria colectie de date, care inseamna de fapt e!istenta acelorasi date in mai multe colectii "multiplicarea unor seturi de date#. $aman multiplicate numai acele date care trebuie sa asigure coerenta bazei de date. Prin eliminarea datelor multiplicate se micsoreaza si spatiul de memorie e!terna alocat pentru colectia de date si timpul de actualizare a colectiei de date, deoarece o data va fi actualizata o singura data, si nu de mai multe ori, in fiecare fisier de date in care apare.

!.

$.

&.

'. ).

Consistenta datelor. %ctualizarea datelor din baza de date este perceputa de fiecare utilizator al bazei de date, nu numai de utilizatorii din compartimentul care gestioneaza acelel date. Deoarece nu mai e!ista mai multe copii ale acelorasi date, se elimina situatiile in care pot sa apara valori diferite pentru aceiasi data. "nte#ritatea datelor. &n alt efect al eliminarii redundantei datelor este integritatea datelor, deoarece datele vor fi actualizate intr-un singur loc "in baza de date# si nu in fiecare colectie de date "in fisierele de date#. In plus, pot fi adaugate diferite proceduri pentru validarea datelor introduse sau actualizate. %stfel, nu mai e!ista riscul sa apara neconcordante intre datele care corespund acelorasi informatii, dar care apartin unor colectii diferite de date, sau riscul ca datele sa fie incorecte. %ecuritatea datelor. Se poate asigura mult mai usor pentru o singura colectie de date "baza de date# decat pentru mai multe colectii de date "fisierele de date#. %stfel, numai utilizatorii autorizati vor avea acces la un anumit set de date din colectia de date. Controlul centralizat al datelor. Prin stabilirea unui administrator al bazei de date se poate asigura mai usor controlul tuturor datelor din colectia de date "baza de date#, decat in cazul colectiilor de date independente "fisiere de date# unde fiecare utilizator isi e!ercita controlul la nivelul propriei colectii de date. (ransparenta. &tilizatorul poate obtine informatii din baza de date fara sa cunoasca toata organizarea ei cople!a. *ezvoltarea standardelor. Se pot dezvolta standarde referitoare la bazele de date atat la nivelul organizarii logice a datelor, cat si la nivelul limbajelor pentru manipularea si interogarea datelor, standarde care sa permita transferul datelor dintr-o baza de date in alta. 'ererea de date se poate face prin intermediul unui limbaj simplu, prin precizarea criteriului de selectare a datelor si a modului de prezentare a informatiilor.

1+.

"ndependenta datelor. Se asigura doua tipuri de independenta a datelor: independenta fizica si independenta logica. "ndependenta fizica inseamna independenta datelor fata de programele de aplicatie, adica orice modificare a structurii datelor nu afecteaza programul de aplicatie si, reciporc, orice modificare a programului de aplicatie nu afecteaza structura de date. "ndependenta lo#ica inseamna ca pot fi definite noi entitati si pot fi adaugate noi date in baza de date fara sa fie afectati utilizatorii care au nevoie de ele. In plus, baza de date poate fi reorganizata "pot fi regrupate entitatile din structurile de date# pentru a face fata cerintelor unui nou utilizator, fara a fi afectati vechii utilizatori. (liminarea unor entitati din baza de date poate afecta insa utilizatorii care fac referiri la acele entitati.

%"%(,M-. *, /,%("-0, A BA1,.23 *, *A(,


Pentru gestionarea datelor din baza de date trebuie sa se foloseasca un %istem de /estiune a Bazelor de *ate (%/B*) %istemul de #estiune a bazelor de date (database management) este un soft)are specializat pentru crearea, intretinerea si consultarea bazelor de date. (ste un instrument soft)are specializat in: crearea structurii de date, manipularea datelor in cadrul structurii si regasirea datelor in vederea e!tragerii informatiilor. (l asigura interfata cu sistemul de operare in scopul simplificarii procesului de acces la datele fizice de pe suportul de memorare. In general, sistemele de gestiune a bazelor de date au implementate limbaje #azda care permit atat descrierea algoritmului rezolvarii problemei folosind structurile de control din limbajele de programare clasice, cat si comenzi specializate in manipularea datelor din baza de date, specifice numai sistemelor de gestiune a bazelor de date. Principalele facilitati oferite de un sistem de gestiune a bazelor de date sunt:
4acilitatea de descriere a datelor 5 asigurata de limbajul de descriere a datelor (.**). Prin

aceasta facilitate se realizeaza legatura intre sistemul de gestiune a bazelor de date si baza de date. %cest limbaj permite descrierea modelului bazei de date "schema bazei de date# si a restrictiilor aplicate colectiei de date. 4acilitatea de manipulare a datelor 5 asigurata de limbajul de manipulare a datelor (.M*). Prin acasta facilitate se realizeaza legatura intre sistemul de gestiune a bazelor de date si utilizator. %cest limbaj este o colectie de comenzi care permit e!ecutarea operatiilor de e!ploatare si intretinere a bazei de date: cererile de acces la date si actualizarea lor "adaugare, stergere, modificare#.

Modele de baze de date


'ele mai raspandite modele de organizare a bazelor de date sunt urmatoarele:
"erar6ice 3etea 3elationale

Baza de date relationala


Baza de date relationala este formata din mai multe tabele, fiecare dintre ele fiind format din linii si coloane. Intre tabele se stabilesc le#aturi prin itermediul unor campuri c6eie. De e!emplu, baza de date Scoala este formata din urmatoarele tabele:

Elevi
identif . elev num e prenume adresa identif . elev

Absente
data absent a identif. disciplin a identif. profesor

Discipline
identif. disciplina nume . identif. profesor

Profesori
nume .

*abelul Elevi contine date despre elevii scolii *abelul Absente contine date despre absentele elevilor din toata scoala *abelul Profesori pastreaza date despre profesorii din scoala *abelul Discipline contine date despre disciplinele predate in scoala

Intre tabele s-au stabilit urmatoarele legaturi, prin intermediul unor campuri care contin o informatie comuna ambelor tabele, numite campuri cheie: *abelele Elevi si Absente sunt legate prin campul c6eie identificatorul elevului. *abelele Profesori si Absente sunt legate prin campul c6eie identificatorul profesorului. *abelele Discipline si Absente sunt legate prin campul c6eie identificatorul disciplinei. %ceste patru tabele impreuna cu legaturile stabilite intre ele formeaza o baza de date relationala. +iecare rand din tabelul Elevi in care se gasesc informatii despre un elev corespunde unei inre#istrari de date. +iecare coloana cu informatii corespunde unui camp "e!emplu: adresa#.

Capul de tabel "antetul tabelului# defineste structura tabelului si se mai numeste si inre#istrare de structura. Datele sunt inregistrate in baza de date prin intermediul structurii definite in inrergistrarea de structura. ,a crearea unui tabel trebuie definita mai intai structura tabelului "capul de tabel#, adica trebuie precizate campurile care o compun, cat si caracteristicile acestora. *abelul permite gruparea unor date inrudite si poate fi privit ca o colectie de campuri. Pentru fiecare camp sunt descrise datele care vor fi memorate in el. Descrierea se face prin tipul datelor, dimensiunea lor si alte proprietati. (le definesc implicit domeniul de definitie al datelor memorate in camp. Daca domeniul datelor este inclus in domeniul implicit de definitie, se pot defini conditii de validare a datelor care sa controleze corectitudinea datelor introduse sau modificate. (abelul contine toate instantele unei entitati. -n rand al tabelului reprezinta o instanta7 iar o coloana a tabelului un atribut al instantei. In teoria bazelor de date relationale, tabelele se mai numesc si relatii, fiecare coloana din tabel care corespunde unui camp se mai numeste si atributul relatiei, iar fiecare rand din tabel care contine cate o instanta a entitatii se mai numeste si tuplu. *uplul corespunde inre#istrarii din fisierul de date. Intr-un tabel al unei baze de date relationale nu pot e8ista inre#istrari identice "nu pot fi identice doua instante ale aceleiasi entitati#.

%c6ema #enerala a unei baze de date relationale este formata din ansamblul tabelelor si al legaturilor dintre ele.

(abelul
%tructura tabelului este definita prin:

numele campurilor care corespund numelor de atribute ale entitatiitipul campurilor care corespunde tipului domeniului de definitie al atributului. In general, sistemele de gestiune a bazelor de date au implementate urmatoarele tipuri

de date:

.umeric%lfanumeric,ogicData*imp/biect.

(ipul numeric este folosit pentru a manipula valori numerice rationale si contine subtipuri pentru reprezentarea numerelor intregi, a numerelor reale si a valorilor numerice e!primate in unitati monetare "specifice domeniului financiar-contabil#.

(ipul alfanumeric este folosit pentru a manipula te!te si contine subtipuri pentru reprezentarea sirurilor de caractere de lungime fi!a, restrictionata de obicei la 011 de caractere si a sirurilor de caractere de lungime variabila. (ipul lo#ic este folosit pentru a manipula date care nu pot lua decat doua valori: adevarat sau fals. (ipul *ata(imp este folosit pentru a manipula date calendaristice si timp. (ipul 2biect este folosit pentru a manipula obiecte create cu alte aplicatii "de e!emplu, o imagine, o legatura la o adresa )eb etc.# 'onstanta 0-.. se foloseste pentru a indica lipsa unei date intr-un camp. C6eia de identificare este formata din numarul minim de campuri alese astfel incat ansamblul lor de valori sa fie unic in cadrul unui tabel7 pentru a permite identificarea inre#istrarilor din tabel. +iecare inregistrare din tabel va putea fi identificata in mod unic prin valorile cheii astfel definite. (ste posibil ca intr-un tabel sa poata fi evidentiate mai multe grupuri de campuri care sa permita identificarea in mod unic a inregistrarilor tabelului, deci pot fi definite mai multe chei de identificare. Deoarece un tabel nu poate avea doua inregistrari identice, orice tabel poate avea cel putin o c6eie de identificare7 formata in cel mai rau caz din toate campurile inre#istrarii.

/peratiile specifice prelucrarilor tabelare sunt: 2. /peratii de actualizare prin care sunt aduse la zi informatiile din tabel. %ceste operatii pot fi: - adau#area de noi inregistrari- ster#erea unor inregistrari- modificarea valorilor unor campuri din tabel. 0. /peratii de consultare (intero#are) prin care se obtin informatii din tabel. %ceste operatii pot fi: - operatii de calcul statistic cu valorile din campurile unui tabel "suma valorilor unui camp, media aritmetica a valorilor unui camp, valoarea minima sau ma!ima a unui camp, numarul de inregistrari din tabel#- operatii de cautare a anumitor inregistrari 3 operatiile de cautare trebuie sa precizeze criteriul de cautare si modul de afisare a informatiilor "pe ecran, la imprimanta#- operatii de sortare "de reordonare a inregistrarilor din tabel, folosind un criteriu de sortare#.

In procesul de prelucrare a datelor din tabel pot sa apara anomalii de actualizare:

Anomalia de adau#are. %numite date care ar trebui adaugate nu pot fi adaugate deoarece fac parte din inregistrari incomplete "pentru care nu se cunosc toate valorile campurilor#. Anomalia de ster#ere. %numite date care ar trebui sterse nu pot fi sterse deoarece fac parte din inregistrari care contin si date care nu trebuie sterse. Anomalia de modificare. (ste dificil de modificat o anumita valoare a unui camp, cand acea valoare apare in mai multe inregistrari din tabel.

3elatia
$elatia intre doua tabele care pastreaza instantele a doua entitati se stabileste pe baza unei asocieri intre cele doua entitati. Pentru a putea stabili legaturi intre tabele, in fiecare tabel se definesc chei de identificare.
C6eia primara este aleasa din multimea cheilor de identificare, pe baza anumitor criterii,

si este folosita pentru a face legatura intre inregistrarile mai multor tabele ale bazei de date. 'heia primara va fi folosita de sistemul de gestiune a bazelor de date pentru a identifica unic inregistrarile in procesul de cautare si regasire a datelor. Se recomanda ca din multimea cheilor de identificare sa se aleaga, pentru cheia primara, cheia care este formata din cele mai putine campuri. C6eia secundara este formata dintr-unul sau mai multe campuri dintr-un tabel, care sunt folosite ca o cheie primara in alt tabel, valorile campurilor din cheie fiind identice in ambele tabele. Se mai numeste si cheie straina. $elatiile care se vor stabili intre tabele sunt unidirectionale, adica intre doua tabele nu se stabileste o relatie de egalitate ci o relatie de subordonare: unul dintre tabele este tabelul conducator sau principal "tabelul de la care porneste legatura#, iar celalalt este tabelul condus sau secundar "tabelul la care ajunge legatura#. *abelul condus este subordonat tabelului conducator. %ceasta inseamna ca, daca utilizatorul selecteaza o inregistrare in tabelul conducator, sistemul va selecta automat inregistrarea de care este legata din tabelul condus.

,egatura dintre tabelele bazei de date se realizeaza prin mecanismul de propa#are a c6eilor. In tabelul sursa, tabelul de la care incepe propagarea cheii " tabelul conducator#, se gaseste cheia primara, iar in tabelul destinatie, tabelul pana la care se propaga cheia " tabel condus#, se gaseste cheia secundara. Se spune ca a avut loc propagarea cheii din tabelul sursa in tabelul destinatie. %cest mecanism permite stabilirea legaturii intre o inregistrare din tabelul sursa si o inregistrare din tabelul destinatie. De obicei, modelul relational cel mai des intalnit este cel descris printr-un arbore cu o singura radacina, adica in baza de date e!ista un singur tabel conducator care reprezinta radacina arborelui. 'elelalte tabele sunt legate de tabelul conducator direct sau indirect "prin intermediul altor tabele#.

3elatia este o le#atura dintre un camp sau un ansamblu de campuri dintr9un tabel (c6eia primara) si campurile corespunzatoare dintr9un alt tabel (c6eia secundara).
3estrictii de inte#ritate

4aloarea cheii primare trebuie sa fie diferita de constanta .&,, "lipsa orcarei valori#. 4aloarea cheii secundare trebuie sa fie inclusa in multimea valorilor cheii primare.

(ipuri de relatii
(!ista mai multe tipuri de relatii: 1. -na9la9una "one-to-one#. Inseamna ca o inregistrare din primul tabel este legata la o singura inregistrare din al doilea tabel. 'orespunde unei conectivitati ma!ime egale cu 2 pentru fiecare entitate care participa la asociere. (ste posibil si in cazul in care o inregistrare din primul tabel nu este legata cu nicio inregistrare din al doilea tabel.

Tabelul A a1 a2 a3 a4 a5

Tabelul B b1 b2 b3 b4

De e!emplu, relatia stabilita intre tabelele Salarii si Angajati In tabelul Angajati sunt pastrate date despre angajatii companiei: numele si prenumele, marca, codul numeric personal, adresa, numarul de telefon, data nasterii, data angajarii, studii, functia si departamentul in care lucreaza etc. In tabelul Salarii sunt pastrate date despre salariile angajatilor companiei: marca, codul numeric personal, salariul tarifar, numarul de ore lucrate, retineri lunare, salariul lunar etc.

$elatia stabilita intre cele doua tabele este de una9la9una deoarece unui angajat ii corespune un singur salariu, iar un salariu corespunde unui singur angajat. ,egatura intre cele doua tabele se face prin intermediul campului Marca. 2. -na9la9mai9multe "one-to-many#. Inseamna ca o inregistrare din primul tabel poate fi legata cu mai multe inregistrari din al doile tabel. 'orespunde unei conectivitati ma!ime egale cu 2, pentru o entitate care participa la asociere, si unei conectivitati ma!ime egala cu n, pentru cealalta entitate. (ste cel mai raspandit tip de relatie. Primul tabel trebuie sa aiba un camp cheie primara, iar al doilea tabel sa contina un camp similar, prin care sa se poata identifica inregistrarea din primul tabel de care este legata inregistrarea din al doilea tabel

Tabelul A a1

Tabelul B b1 b2 b3 b4

a2

De e!emplu, relatia stabilita intre tabelul Clienti si tabelul Comenzi: In tabelul Clienti sunt pastrate date despre clientii companiei: numele companiei client, codul clientului, adresa, numele persoanei de contact, telefonul etc. In tabelul Comenzi sunt pastrate informatii despre comenzile clientilor: numarul comenzii, codul clientului care a emis comanda, continutul comenzii, data comenzii etc.

$elatia stabilita intre cele doua tabele este de tip una9la9mai9multe: unui client ii corespund mai multe comenzi, dar o comanda poate fi emisa de catre un singur client. 'ampul cheie folosit pentru legatura este CodClient. 3. Mai9multe9la9mai9multe "many-to-many#. Inseamna ca o inregistrare din primul tabel poate fi legata de mai multe inregistrari din al doilea tabel, si invers, o inregistrare din al doilea tabel poate fi legata de una sau mai multe inregistrari din primul tabel.

Tabelul A a1 a2 a3 a4

Tabelul B b1 b2 b3 b4

De e!emplu, relatia stabilita intre tabelul anzari si tabelul Produse: In tabelul anzari sunt pastrate date despre vanzarile de produse ale companiei: codul produsului, denumirea produsului, unitatea de masura, cantitatea, data vanzarii, codul angajatului care a intermediat vanzarea, date despre clientul care a cumparat produsul etc. In tabelul Produse sunt pastrate date despre produsele realizate: codul produsului, denumirea produsului, unitatea de masura, cantitatea, data la care a fost realizat produsul, pretul de fabricatie etc.

$elatia stabilita intre cele doua tabele este de tip mai9multe9la9mai9multe: un angajat comercial poate vinde mai multe produse, iar un produs este vandut de mai multi angajati comerciali. 2bservatie. Datorita mecanismului de propagare a cheilor intre tabelele bazei de date, nu pot e!ista relatii de tip mai9multe9la9mai9multe. %ceasta situatie poate fi rezolvata prin descompunerea relatiei mai9multe9la9mai9multe in doua relatii una9la9mai9multe, prin construirea unui tabel suplimentar care sa realizeze aceasta descompunere.

De e!emplu, in baza de date Scoala au fost definite doua tabele: tabelul Elevi cu elevii din scoala si tabelul Discipline cu disciplinele predate in scoala. +iecarei inregistrari din tabelul Elevi ii corespund mai multe inregistrari in tabelul Discipline "un elev studiaza mai multe discipline# si fiecarei inregistrari din tebelul Discipline ii corespund mai multe inregistrari in tabelul Elevi "o disciplina este studiata de mai multi elevi#. %ceasta relatie se poate descompune in doua relatii una-la-mai-multe prin crearea unui tabel suplimentar !ncadrari care sa contina inregistrari cu doua campuri: 'od(lev si 'odDisciplina. $elatiile vor fi de una-lamai-multe intre tabelul Elevi si tabelul !ncadrari "unui elev ii corespund mai multe incadrari, cate una pentru fiecare disciplina pe care o studiaza# si intre tabelul Discipline si tabelul !ncadrari "unei discipline ii corespund mai multe incadrari, cate una pentru fiecare elev care o studiaza#.

"nte#ritatea referentiala
'onditia care trebuie respectata pentru a putea fi asigurata legatura intre o inregistrare din tabelul sursa si o inregistrare din tabelul destinatie se numeste conditia de inte#ritate referentiala. (a este specifica relatiilor dintre tabelele bazei de date si este formata dintr-o colectie de reguli si restrictii impuse tabelelor intre care s-au stabilit relatii. %sfel, a asigura integritatea referentiala inseamna ca atunci cand se fac modificari ale valorii unui camp dintr9un tabel sa nu fie afectata relatia dintre tabele. %ceasta problema apare in cazul campurilor care fac parte dintr-o cheie primara sau secundara. (le trebuie sa respecte conditia de inte#ritate referentiala.

Conditia de inte#ritate referentiala impune ca multimea valorilor unei c6ei secundare sa fie inclusa in multimea valorilor c6eii primare din care s9a propa#at.
"nte#ritatea referentiala trebuie sa fie satisfacuta permanent in baza de date.

astfel:

2peratiile de adau#are7 ster#ere si modificare pot afecta inte#ritatea referentiala "n tabelul condus: 2peratia de adau#are a unei inregistrari trebuie sa se faca numai daca valorile din campurile cheii secundare se gasesc in multimea valorilor cheii primare din care s-au propagat. 2peratia de ster#ere a unei inregistrari se poate face fara se fie afectata integritatea referentiala. 2peratia de modificare a valorii unui camp dintr-o inregistrare trebuie sa aiba in vedere faptul ca, daca acel camp este un camp al cheii secundare, valoarea sa trebuie sa se gaseasca in multimea valorilor cheii primare din care s-a propagat

"n tabelul conducator: 2peratia de adau#are a unei inregistrari se poate face fara sa fie afectata integritatea referentiala. 2peratia de ster#ere a unei inregistrari poate sa afecteze relatiile dintre tabele numai in cazul in care e!ista chei secundare care au aceiasi valoare cu a cheii primare din inregistrarea stearsa. In acest caz se pot folosi doua metode: %ter#erea restrictionata "nu se accepta stergerea inregistrarii daca e!ista cel putin o cheie secundara, intr-unul din tabelele bazei de date, propagata de cheia primara si care are aceiasi valoare cu cheia primara din inregistrarea care trebuie stearsa-

%ter#erea in cascada "stergerea inregistrarii va avea ca efect stergerea din toate tabelele a inregistrarilor care contin chei secundare propagate din cheia primara si care au aceiasi valoare cu cheia primara din inregistrarea stearsa. 2peratia de modificare a unei inregistrari poate sa afecteze relatiile dintre tabele numai in cazul in care e!ista chei secundare care au aceiasi valoare cu a cheii primare care se modifica. Si in acest caz se pot folosi doua metode: Modificarea restrictionata "nu se accepta modificarea unui camp daca el este cheie primara si daca e!ista cel putin o cheie secundara, intr-unul din tabelele bazei de date, propagata din cheia primara, care au aceiasi valoare cu cheia primara care trebuie modificata# Modificarea in cascada "modificarea cheii primare va avea ca efect modificarea tuturor cheilor secundare propagate din aceasta, din toate tabelele, care au aceiasi valoare cu cheia primara care se modifica#.

S-ar putea să vă placă și