|
SGBD: descriere functionala ( I )
1.Sarcinile SGBD
2.Diagrama entitate relatie
1. Sarcinile SGBD
Gestiunea datelor a stat in atentia majoritatii utilizatorilor calcilatoarelor inca de la inceputul folosirii acestora.
La inceput, datele au fost memorate pe banda magnetica sub forma unui fisier secvential (colectie de date); un fisier era construit pentru a rezolva o anumita problema.
Unele date erau necesare mai multor aplicatii, deci, aceleasi date trebuiau memorate in difetite fisiere; acesta redundanta a datelor (multiplicarea datelor) poate conduce la erori: o aceeasi data e posibil sa fie memorata diferit in fisierele existente (mai ales cand datele se modifica si acest lucru nu se reflecta identic in fisierele ce o pastreaza).
O astfel de situatie se numeste si inconsistenta a datelor.
Pentru a consulta datele memorate in fisierele secventiale se poate folosi numai accesul secvential (pentru a citi o data trebuie parcurse toate datele precedente).
In momentul aparitiei discurilor magnetice (suporturi adresabile, deci se poate citi de la o anumita adresa fixata de pe suport) s-au dezvoltat diferite organizari (inversata, indexata, directa, etc), care permiteau o regasire a datelor memorate in ele.
Pentru a citi, scrie sau modifica date dintr-un fisier, deci pentru a gestiona acest fisier, trebuie scrise programe intr-un anumit limbaj de programare.
In cadrul programului este necesara precizarea formatului de citire sau scriere din fisier (trebuie descris articolul care genereaza fisierul).
Modificarea structurii fisierului (prin adaugarea de date noi, prin eliminarea datelor de care nu mai este nevoie sau modificarea structurii datelor care raman) implica si modificarea programelor care gestioneaza acest fisier.
Eliminarea deficientelor aparute la gestiunea fisierelor (redundanta, inconsistenta, necesitatea descrierii structurii datelor in programele de aplicatie) a condus la aparitia bazelor de date.
Acestea au impus o alta viziune asupra colectiilor de date:
-fiecare data este memorata intr-un singur loc, iar intre date pot exista anumite relatii.
Pentru a nu obliga utilizatorii sa gestionaze ei aceste relatii, exista comenzi
(proceduri, functii, macroinstructiuni) specializate pentru utilizarea relatiilor si
pentru accesul la date.
- apare o separare intre definirea datelor si utilizarea bazei de date.
Structura datelor este definita o singura data, ea se memoreaza in mai multe
Tabele, iar programele care gestioneaza date vor folosi aceste tabele de
descriere (deci datele nu mai trebuie descrise in programe).
Avand in vedere aceste considerente, se poate spune ca o baza de date contine:
-o descriere a datelor,
-o colectie de date aflate in interdependenta.
Toate aceste date se memoreaza in unul sau mai multe fisiere, deci se poate considera ca o baza de date este formata dintr-o multime de fisiere.
Pentru a gestiona o baza de date sunt necesare programe specializate, care rezolva anumite sarcini concrete si care formeaza un Sistem de gestiune a bazei de date (SGBD).
Prezentam succint patru sarcini mari care trebuie sa fie rezolvate de SGBD:
1. Definirea bazei de date: aceasta permite, printre altele:
- stabilirea structurii datelor ce se vor memora in baza de date;
- precizarea modului in care se vor memora datele in fisiere.
Aceste informatii sunt precizate cu ajutorul unui Limbaj de Definire a Datelor (LDD), prin comenzi diferite (daca acest tip de limbaj nu exista) sau interactiv (utilizatorul raspunde la diferite intrebari ale sistemului sau completeaza anumite zone de pe ecran.
2. Manipularea datelor din baza de date, care cuprinde:
- regasirea (extragerea) datelor memorate in baza de date,
- introducerea (adaugarea) datelor in baza de date,
- actualizarea (stergerea, modificarea) datelor din baza de date.
Aceste operatii se precizeaza in doua moduri:
- in modul asistat de sistem: utilizatorul alege diferite variante din mai multe puse la
dispozitie de sistem,
- in modul programat: scriind un program cu ajutorul unor comenzi dintr-un LMD -
Limbaj de Manipulare a Datelor.
Acest limbaj se poate construi pe baza unuia existent (limbaj gazda) si
cunoscut de multi programatori, sau acesta poate fi un limbaj autonom.
La o aceeasi baza de date, gestionata de un SGBD, se pot utiliza mai multe LMD, in functie de:
- categoriile de utilizatori: programatori profesionisti, utilizatori ocazionali,.etc;
- tipurile de prelucrari dorite.
Pentru a se usura munca programatorilor sunt puse la dispozitia acestora anumite facilitati:
- generarea automata de rapoarte (tabele, situatii);
- generarea unor ecrane (ferestre) pentru introducerea sau extragerea de date;
- integrarea mai multor elemente de program (ferestre, meniuri, functii, proceduri, etc),
construite si testate independent, intr-o unitate noua de program;
- asistenta "help" cu privire la facilitatile sistemului.
3. Administrarea bazei de date: se refera la controlul informatiilor din baza de date.
Persoana (sau grupul de persoane) care are astfel de sarcini se numeste administratorul bazei de date, iar functiile indeplinite formeaza administrarea bazei de date.
Sarcinile de baza ale administratorului bazei de date sunt:
- Organizarea bazei de date:
- definirea structurii datelor ce vor fi incluse in baza de date,
- stabilirea structurii fizice a bazei de date (fisierele unde se memoreaza
baza de date si modul de organizare a acestora,
- incarcarea bazei de date cu informatiile initiale (preluate eventual dintr-o
baza de date mai veche sau din fisiere gestionate in diferite limbaje
de programare).
- Urmarirea functionarii bazei de date:
- pastrarea cerectitudinii si actualitatii datelor,
- urmarirea performantelor bazei de date,
- punerea la dispozitia utilizatorilor a unor programe care usureaza gestiunea
datelor.
- Reorganizarea bazei de date:
- modificarea structurii bazei de date pentru a cuprinde noi date sau
eliminarea datelor care nu mai sunt necesare,
- rescrierea unor programe de acces la date (pe care le pot folosi
utilizatorii).
4. Protectia informatiilor din baza de date, care cuprinde:
- protectia impotriva accesului neautorizat la date,
- protectia impotriva alterarii continutului bazei de date datorita unor
programe eronate, defecte ale echipamentelor, distrugeri.
Baza de date poate fi privita in doua moduri:
- fizic: ca o colectie de fisiere secventiale, fiecare avand o anumita organizare si
Eventual fisiere asociate celor secventiale, pentru a micsora timpul de acces;
- logic: ca o multime de "elemente", conform unui model de organizare.
Aceste elemente pot fi:
- entitati si relatii intre entitati - in modelul entitate-relatie,
- inregistrari si legaturi intre inregistrari - in modelul retea,
- tabele (relatii) - in modelul relational,
- obiecte - in modelul orientat obiect.
Un utilizator priveste baza de date conform unui astfel de model, el nu trebuie sa stie toate detaliile cu privire la modul in care se memoreaza pe suport magnetic.
Utilizatorul doreste sa gestioneze date din baza de date folosind anumite functii de baza si intr-un timp cat mai scurt.
Acest timp depinde de:
- modul in care a fost stabilita structura logica a bazei de date (elementele din cadrul
logic),
- modul in care s-a memorat baza de date (deci structura fizica),
- performantele SGBD-ului si a programelor de gestiune oferite de administratorul bazei
de date.
Datorita simplitatii modelului si usurintei cu care poate fi implementat, modelul relational (baza de date este considerata ca o multime de relatii, tabelul fiind considerat, el insusi o relatie) este unul dintre cele mai raspandite in lumea bazelor de date.
Astfel, sa luam in considerare tabelul de mai jos, notat T, care contine n coloane (in mod formalizat, le vom numi campuri) care au diferite denumiri (atribut, camp, discriminant, proprietate, nume de data, etc) si m linii (orizontale).
T |
C1 |
C2 |
..... |
Cn |
t 1 |
d 11 |
d 12 |
... |
d 1n |
t 2 |
d 21 |
d 22 |
.... |
d 2n |
.... |
.... |
.... |
.... |
.... |
t m |
d m1 |
d m2 |
.... |
d mn |
Intr-o coloana avem date de un anumit tip, deci campul poate lua diferite valori.
Daca notam cu Di multimea valorilor campului Ci, pentru i = 1, 2, 3, ..,n, atunci o linie din tabel se obtine luand cate o valoare din multimile D1, D2, D3, .., Dn, ceea ce este chiar expresia produsului cartezian:
P = D1 x D2 x D3 x ... xDn, dij Є Dj, pentru i = 1 ÷ m si j = 1 ÷ m.
Dar produsul cartezian respectiv este chiar tabelul de date T, care este un model relational (tabelul T fiind o relatie).
2. Diagrama entitate-relatie
O baza de date poate fi definita ca o multime de date ce modeleaza un univers.
Acest univers este format din obiecte legate intre ele.
Obiectele de acelasi tip constituie o entitate, iar legatura intre doua entitati defineste o relatie (asociere).
Entitatile si relatiile au anumite caractertistici (atribute).
Procesul de descriere a entitatilor si a asocierilor este denumit modelare si este realizat cu ajutorul unui model de date.
Modelarea unei baze de date permite trecerea de la perceptia unor fapte din lumea reala la reprezentarea lor prin date; lumea reala este observata la anumite momente de timp, intre care se petrec schimbari ale obiectului (sau fenomenului) tinut sub observatie.
Modelul de date trebuie sa reflecte fidel fenomene ale lumii reale, sa urmareasca evolutia acestei lumi si comunicarea intre fenomenele respective.
Analiza (modelarea) datelor se desfasoara conform schemei din figura de mai jos.
Diagrama entitate-relatie nu este un model teoretic de reprezentare a datelor, ci reprezinta un model neformalizat pentru reprezentarea unor fenomene (unui sistem) din lumea reala.
Diagrama este adeseori utilizata pentru reprezentarea grafica a modelului relational.
Absenta unui limbaj de manipulare a datelor bine formalizat, corespunzator acestei diagrame, face ca alegerea sa mearga spre modelul relational.
Practic, se construieste diagrama entitate-relatie careia i se asociaza modelul relational si acestuia i se adreseaza cererile.
In felul acesta se imbina simplitatea descriptiva a diagramei entitate-relatie cu puterea limbajului de manipulare a datelor al modelului relational.
Modelul entitate-relatie imparte elementele unui sistem real in doua categorii si anume entitati si legaturi (asocieri) intre aceste entitati.
Nu trebuie confundat conceptul de relatie - in - sensul - asociere, care intervine in definirea diagramei entitate-relatie cu conceptul de relatie care desemneaza o comunicare intre doua sau mai multe entitati.
Entitate
Semnifica: persoana, loc, concept, activitate, eveniment, etc, care are un sens pentru ceea ce modelam.
De exemplu, consideram o institutie formata din mai multe departamente, in care lucreaza salariati; acestia sunt atasati la anumite proiecte, executand in cadrul acestor proiecte diferite sarcini.
Evenimentele semnificative ale modelului analizat si legaturile dintre acestea sunt reprezentate in figura urmatoare.
Pentru aceasta diagrama Salariat, Departament, Proiect, Sarcina sunt entitati.
Observatii:
- Entitatile (scrise cu litere mari, in general) devin tabele in modelele relationale.
- Entitatile sunt substantive, dar nu orice substantiv este o entitate.
Trebuie ignorate substantivele nerelevante.
- Pentru fiecare entitate trebuie sa se dea o descriere detaliata. De exemplu, un salariat este orice angajat permanent, functionar care lucreaza cu jumatate de timp, dar persoanele care au fost angajate numai pentru un anumit contract nu apartin acestei entitati.
- Nu pot exista doua entitati cu acelasi nume sau o entitate cu doua nume diferite.
- Cheia primara identifica unic o entitate si face distinctie intre valori diferite ale entitatii.
De exemplu, codul salariatilor este o cheie primara pentru entitatea SALARIAT, dar numele salariatului nu este o cheie primara, pentru ca pot exista doi salariati avand acelasi nume.
Cheia primara tebuie sa fie unica si cunoscuta la orice moment.
Cheia primara trebuie sa satisfaca urmatoarele conditii:
- sa fie controlata de administratorul bazei de date;
- sa nu contina informatii descriptive;
- sa fie scurta, simpla, fara ambiguitati;
- sa fie stabila, deoarece schimbarea ei poate duce la confuzii;
- sa fie familiara utilizatorului astfel incat acesta sa o poata folosi cu
usurinta.
Relatie
Reprezinta o comunicare intre doua sau mai multe entitati; exprima un raport care exista intre aceste entitati.
De exemplu,
atasat_la
reprezinta o relatie care leaga entitatile SALARIAT si PROIECT.
O valoare a unei relatii este o comunicare intre valorile entitatilor care le leaga.
Existenta unei asocieri este subordonata existentei entitatilor care le leaga.
Observatii:
- In modelul relational, relatiile devin tabele speciale sau coloane speciale care refera
chei primare.
- Relatiile sunt verbe, dar nu orice verb este o relatie.
- Pot exista relatii diferite cu acelasi nume; in acest caz le diferentiaza entitatile care sunt
asociate prin relatia respectiva.
- Pentru fiecare relatie este important sa se dea o descriere detaliata.
- Cardinalitatea relatiei, adica numarul de tupluri apartinand unei relatii este raspunsul
la intrebari de tipul:
a) Cati salariati pot lucra intr-un departament? Multi !
In cate departamente poate sa lucreze un salariat la un moment dat? Cel mult unul !
Deci relatia "SALARIAT_lucreaza in_DEPARTAMENT" estemany-one (n : 1).
b) Cati salariati pot conduce un departament? Unul !
Cate departamente poate conduce un salariat? Unul !
Deci relatia "SALARIAT_conduce_DEPARTAMENT" este one-one (1 : 1).
c) Cati salariati pot fi atasati la un proiect? Multi !
La cate proiecte poate fi atasat un salariat? Multe !
Deci relatia "SALARIAT_atasat la_PROIECT" este many-many (n : m).
Valorile (n : 1), (1 : 1), (n : m) reprezinta cardinalitatea maxima.
Daca in propozitiile anterioare se inlocuieste cuvantul "poate" cu "trebuie" se obtin relatii de tipul(0 : 1), (1 : 0), (0 : 0), care reprezinta cardinalitatea minima.
Exemplu:
Cati salariati trebuie sa conduca un departament? Cel putin unul !
Cate departamente trebuie sa conduca un salariat? Zero !
Deci relatia "SALARIAT_conduce_DEPARTAMENT" are cardinalitatea minima (1 : 0).
Atribut
Este o proprietate descriptiva unei entitati sau a unei relatii.
De exemplu, codul salariatului este o caracteristica a entitatii SALARIAT, iar data la care un salariat este asociat unui proiect este un atribut al relatiei "atasat_la", asa cum apare si in schema de mai jos.
Observatii:
- Trebuie facuta distinctie intre tipul atributului care uzual devine coloana in modelele relationale si valoarea acestuia, care devine valoare in coloane.
- Atributele sunt substantive, dar nu orice substantiv este atribut.
- Fiecarui atribut trebuie sa i se dea o descriere completa (exemple, contraexemple, caracteristici).
- Pentru fiecare atribut trebuie specificat numele, tipul fizic, valori posibile, valori implicite, reguli de validare.
Intr-o diagrama entitate-relatie:
- entitatile sunt reprezentate prin dreptunghiuri;
- relatiile dintre entitati prin arce de cerc neorientate;
- atributele care reprezinta chei primare trebuie subliniate
- cardinalitatea minima este indicata in paranteze, iar cardinalitatea maxima fara paranteze;
- nu trebuie specificate toate atributele.
Chestionar
1. Cum au fost memorate datele la inceput?
2. Care au fost deficientele a caror inlaturare a dus la aparitia bazelor de date?
3. Care este continutul bazelor de date?
4. Ce anume formeaza un SGBD?
5. Care sunt sarcinile rezolvate de un SGBD?
6. Ce cuprinde manipularea bazelor de date?
7. Care sunt sarcinile administratorului bazei de date?
8. Care sunt modurile in care este privita o baza de date (BD)?
9. Care sunt modelele de organizare a BD, din punct de vedere logic?
10. Cum se descrie un model relational?
11. Cum definim modelarea?
12. Cum definim entitatea si relatia?