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. Membrii organizatiei vor avea acces la aceiasi colectie de date, in loc sa-si creeze fiecare propria colectie de date, care inseamna de fapt existenta acelorasi date in mai multe colectii (multiplicarea unor seturi de date). Raman multiplicate numai acele date care trebuie sa asigure coerenta bazei de date. Prin eliminarea datelor multiplicate se micsoreaza si spatiul de memorie externa 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.

4.

5.

6.

7.

8. 9.

Consistenta datelor. Actualizarea 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 exista mai multe copii ale acelorasi date, se elimina situatiile in care pot sa apara valori diferite pentru aceiasi data. Integritatea datelor. Un 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. Astfel, nu mai exista 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. Securitatea 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). Astfel, 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 exercita controlul la nivelul propriei colectii de date. Transparenta. Utilizatorul poate obtine informatii din baza de date fara sa cunoasca toata organizarea ei coplexa. Dezvoltarea 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. Cererea de date se poate face prin intermediul unui limbaj simplu, prin precizarea criteriului de selectare a datelor si a modului de prezentare a informatiilor.

10.

Independenta datelor. Se asigura doua tipuri de independenta a datelor: independenta fizica si independenta logica. Independenta 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. Independenta logica 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. Eliminarea unor entitati din baza de date poate afecta insa utilizatorii care fac referiri la acele entitati.

SISTEMUL DE GESTIUNE A BAZELOR DE DATE


Pentru gestionarea datelor din baza de date trebuie sa se foloseasca un Sistem de Gestiune a Bazelor de Date (SGBD) Sistemul de gestiune a bazelor de date (database management) este un software specializat pentru crearea, intretinerea si consultarea bazelor de date. Este un instrument software specializat in: crearea structurii de date, manipularea datelor in cadrul structurii si regasirea datelor in vederea extragerii informatiilor. El 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 gazda 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:

Facilitatea de descriere a datelor asigurata de limbajul de descriere a datelor (LDD). Prin aceasta facilitate se realizeaza legatura intre sistemul de gestiune a bazelor de date si baza de date. Acest limbaj permite descrierea modelului bazei de date (schema bazei de date) si a restrictiilor aplicate colectiei de date. Facilitatea de manipulare a datelor asigurata de limbajul de manipulare a datelor (LMD). Prin acasta facilitate se realizeaza legatura intre sistemul de gestiune a bazelor de date si utilizator. Acest limbaj este o colectie de comenzi care permit executarea operatiilor de exploatare si intretinere a bazei de date: cererile de acces la date si actualizarea lor (adaugare, stergere, modificare).

Modele de baze de date


Cele mai raspandite modele de organizare a bazelor de date sunt urmatoarele:
Ierarhice Retea Relationale

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 legaturi prin itermediul unor campuri cheie. De exemplu, baza de date Scoala este formata din urmatoarele tabele:

Elevi
identif. elev nume prenume adresa identif. elev

Absente
data absenta identif. disciplina identif. profesor

Discipline
identif. disciplina nume . identif. profesor

Profesori
nume .

Tabelul Elevi contine date despre elevii scolii Tabelul Absente contine date despre absentele elevilor din toata scoala Tabelul Profesori pastreaza date despre profesorii din scoala Tabelul 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: Tabelele Elevi si Absente sunt legate prin campul cheie identificatorul elevului. Tabelele Profesori si Absente sunt legate prin campul cheie identificatorul profesorului. Tabelele Discipline si Absente sunt legate prin campul cheie identificatorul disciplinei. Aceste patru tabele impreuna cu legaturile stabilite intre ele formeaza o baza de date relationala. Fiecare rand din tabelul Elevi in care se gasesc informatii despre un elev corespunde unei inregistrari de date. Fiecare coloana cu informatii corespunde unui camp (exemplu: adresa).

Capul de tabel (antetul tabelului) defineste structura tabelului si se mai numeste si inregistrare de structura. Datele sunt inregistrate in baza de date prin intermediul structurii definite in inrergistrarea de structura. La crearea unui tabel trebuie definita mai intai structura tabelului (capul de tabel), adica trebuie precizate campurile care o compun, cat si caracteristicile acestora. Tabelul 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. Ele 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. Tabelul contine toate instantele unei entitati. Un rand al tabelului reprezinta o instanta, 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. Tuplul corespunde inregistrarii din fisierul de date. Intr-un tabel al unei baze de date relationale nu pot exista inregistrari identice (nu pot fi identice doua instante ale aceleiasi entitati).

Schema generala a unei baze de date relationale este formata din ansamblul tabelelor si al legaturilor dintre ele.

Tabelul
Structura tabelului este definita prin:

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

de date:

Numeric; Alfanumeric; Logic; DataTimp; Obiect.

Tipul numeric este folosit pentru a manipula valori numerice rationale si contine subtipuri pentru reprezentarea numerelor intregi, a numerelor reale si a valorilor numerice exprimate in unitati monetare (specifice domeniului financiar-contabil).

Tipul alfanumeric este folosit pentru a manipula texte si contine subtipuri pentru reprezentarea sirurilor de caractere de lungime fixa, restrictionata de obicei la 255 de caractere si a sirurilor de caractere de lungime variabila. Tipul logic este folosit pentru a manipula date care nu pot lua decat doua valori: adevarat sau fals. Tipul DataTimp este folosit pentru a manipula date calendaristice si timp. Tipul Obiect este folosit pentru a manipula obiecte create cu alte aplicatii (de exemplu, o imagine, o legatura la o adresa web etc.)
Constanta NULL se foloseste pentru a indica lipsa unei date intr-un camp. Cheia de identificare este formata din numarul minim de campuri alese astfel incat ansamblul lor de valori sa fie unic in cadrul unui tabel, pentru a permite identificarea inregistrarilor din tabel. Fiecare inregistrare din tabel va putea fi identificata in mod unic prin valorile cheii astfel definite. Este 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 cheie de identificare, formata in cel mai rau caz din toate campurile inregistrarii.

Operatiile specifice prelucrarilor tabelare sunt:

1. Operatii de actualizare prin care sunt aduse la zi informatiile din tabel. Aceste operatii pot fi: - adaugarea de noi inregistrari; - stergerea unor inregistrari; - modificarea valorilor unor campuri din tabel. 2. Operatii de consultare (interogare) prin care se obtin informatii din tabel. Aceste 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 maxima a unui camp, numarul de inregistrari din tabel); - operatii de cautare a anumitor inregistrari 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 adaugare. Anumite 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 stergere. Anumite 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. Este dificil de modificate o anumita valoare a unui camp, cand acea valoare apare in mai multe inregistrari din tabel.

Relatia
Relatia 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.
Cheia 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. Cheia 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. Cheia 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. Relatiile 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). Tabelul condus este subordonat tabelului conducator. Aceasta inseamna ca, daca utilizatorul selecteaza o inregistrare in tabelul conducator, sistemul va selecta automat inregistrarea de care este legata din tabelul condus.

Legatura dintre tabelele bazei de date se realizeaza prin mecanismul de propagare a cheilor. 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. Acest 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 exista un singur tabel conducator care reprezinta radacina arborelui. Celelalte tabele sunt legate de tabelul conducator direct sau indirect (prin intermediul altor tabele).

Relatia este o legatura dintre un camp sau un ansamblu de campuri dintr-un tabel (cheia primara) si campurile corespunzatoare dintr-un alt tabel (cheia secundara).
Restrictii de integritate

Valoarea cheii primare trebuie sa fie diferita de constanta NULL (lipsa orcarei valori). Valoarea cheii secundare trebuie sa fie inclusa in multimea valorilor cheii primare.

Tipuri de relatii
Exista mai multe tipuri de relatii: 1. Una-la-una (one-to-one). Inseamna ca o inregistrare din primul tabel este legata la o singura inregistrare din al doilea tabel. Corespunde unei conectivitati maxime egale cu 1 pentru fiecare entitate care participa la asociere. Este 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 exemplu, 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.

Relatia stabilita intre cele doua tabele este de una-la-una deoarece unui angajat ii corespune un singur salariu, iar un salariu corespunde unui singur angajat. Legatura intre cele doua tabele se face prin intermediul campului Marca. 2. Una-la-mai-multe (one-to-many). Inseamna ca o inregistrare din primul tabel poate fi legata cu mai multe inregistrari din al doile tabel. Corespunde unei conectivitati maxime egale cu 1, pentru o entitate care participa la asociere, si unei conectivitati maxime egala cu n, pentru cealalta entitate. Este 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 exemplu, 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.

Relatia stabilita intre cele doua tabele este de tip una-la-mai-multe: unui client ii corespund mai multe comenzi, dar o comanda poate fi emisa de catre un singur client. Campul cheie folosit pentru legatura este CodClient. 3. Mai-multe-la-mai-multe (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 exemplu, relatia stabilita intre tabelul Vanzari si tabelul Produse: In tabelul Vanzari 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.

Relatia stabilita intre cele doua tabele este de tip mai-multe-la-mai-multe: un angajat comercial poate vinde mai multe produse, iar un produs este vandut de mai multi angajati comerciali. Observatie. Datorita mecanismului de propagare a cheilor intre tabelele bazei de date, nu pot exista relatii de tip mai-multe-la-mai-multe. Aceasta situatie poate fi rezolvata prin descompunerea relatiei mai-multe-la-mai-multe in doua relatii una-la-mai-multe, prin construirea unui tabel suplimentar care sa realizeze aceasta descompunere.

De exemplu, in baza de date Scoala au fost definite doua tabele: tabelul Elevi cu elevii din scoala si tabelul Discipline cu disciplinele predate in scoala. Fiecarei 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). Aceasta relatie se poate descompune in doua relatii una-la-mai-multe prin crearea unui tabel suplimentar Incadrari care sa contina inregistrari cu doua campuri: CodElev si CodDisciplina. Relatiile vor fi de una-la-mai-multe intre tabelul Elevi si tabelul Incadrari (unui elev ii corespund mai multe incadrari, cate una pentru fiecare disciplina pe care o studiaza) si intre tabelul Discipline si tabelul Incadrari (unei discipline ii corespund mai multe incadrari, cate una pentru fiecare elev care o studiaza).

Integritatea referentiala
Conditia 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 integritate referentiala. Ea 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. Asfel, a asigura integritatea referentiala inseamna ca atunci cand se fac modificari ale valorii unui camp dintr-un tabel sa nu fie afectata relatia dintre tabele. Aceasta problema apare in cazul campurilor care fac parte dintr-o cheie primara sau secundara. Ele trebuie sa respecte conditia de integritate referentiala.

Conditia de integritate referentiala impune ca multimea valorilor unei chei secundare sa fie inclusa in multimea valorilor cheii primare din care s-a propagat.
Integritatea referentiala trebuie sa fie satisfacuta permanent in baza de date.

Operatiile de adaugare, stergere si modificare pot afecta integritatea referentiala astfel:

In tabelul condus: Operatia de adaugare 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. Operatia de stergere a unei inregistrari se poate face fara se fie afectata integritatea referentiala. Operatia 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

In tabelul conducator: Operatia de adaugare a unei inregistrari se poate face fara sa fie afectata integritatea referentiala. Operatia de stergere a unei inregistrari poate sa afecteze relatiile dintre tabele numai in cazul in care exista chei secundare care au aceiasi valoare cu a cheii primare din inregistrarea stearsa. In acest caz se pot folosi doua metode: Stergerea restrictionata (nu se accepta stergerea inregistrarii daca exista 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;

Stergerea 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. Operatia de modificare a unei inregistrari poate sa afecteze relatiile dintre tabele numai in cazul in care exista 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 exista 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