CURS BAZE DE DATE
Bibliografie:
1. Octavian Bâsca - Baze de date, Editura ALL, 1998.
Menachem Bazian - Totul despre Visual Foxpro 6, Editura Teora 2001.
Gabriel Dima, Mihai Dima - Bazele Visual FoxPro , Editura teora, 1999
4. MSDN Microsoft - Documentatia pentru Visual Studio 6.0.
STRUCTURA CURSULUI :
I. Fundamentele bazelor de date
II. Prezentarea unui SGBD - Visual Foxpro.
I . Introducere în baze de date. Concepte ale bazelor de date.
Cea mai importanta aplicatie a calculatoarelor zilelor noastre o constituie memorarea si prelucrarea informatiilor . Acest lucru se face folosind sisteme special dedicate prelucrarii datelor numite sisteme de gestiune a bazelor de date , sisteme ce opereaza cu baze de date . Ele reprezinta un domeniu de interes foarte important din aria stiintei computerelor .
O agenda de telefon este un bun exemplu de baza de date. Ea contine date relevante pentru o anumita persoana (numele, adresa, numarul de telefon). Culoarea telefonului unei persoane este o informatie irelevanta si ea nu este continuta în aceasta baza de date. Foarte multe baze de date se axeaza pe domeniul economic, dar exista si baze de date cu scopuri stiintifice, militare, etc. Pentru a raspunde cerintelor actuale, bazele de date contin pe lânga date de tip text sau numeric si alte tipuri cum ar fi imaginile, sunetele si elementele multimedia.
Un sistem de baze de date poate fi vazut (structurat )din patru puncte de vedere numite nivele:
conceptual, extern, logic si fizic.
Este un nivel fundamental deoarece descrie într-un mod natural si fara ambiguitati sistemul ce urmeaza a fi modelat. Daca o persoana este familiara cu un anumit sistem, atunci ea poate realiza designul acestuia fara a mai comunica cu alte persoane. În caz contrar, trebuie consultate mai multe persoane care sunt familiare cu sistemul respectiv. Asa cum oamenii comunica între ei cu ajutorul cuvintelor, figurilor sau exemplelor, cel mai clar mod de a descrie un sistem este utilizarea unui limbaj natural, a unor diagrame intuitive si bineînteles a exemplelor. Pentru a simplifica procesul de modelare se examineaza informatia în cele mai mici unitati posibile: un fapt la un anumit moment. Aceste principii conduc la ideea de a exprima mai întâi un sistem la nivel conceptual, folosind concepte cu care oamenii pot lucra foarte usor. Prin urmare la acest nivel va fi realizata schema conceptuala ce reprezinta design-ul general al sistemului bazei de date.
Nivelul extern
La nivel extern se specifica design-ul bazei de date perceput de un anumit utilizator sau grup de utilizatori precum si modul în care acest design este legat de schema conceptuala. Schema externa reprezinta specificarea informatiilor care pot fi vazute de catre un utilizator si modul în care acestea sunt prezentate. În cele mai multe cazuri, un utilizator poate accesa doar o parte din informatii. De exemplu, este mult mai usor ca utilizator sa selecteze numai informatii relevante pentru acesta sau din motive de securitate sa nu poata obtine anumite informatii. Schema externa este realizata astfel încât grupuri diferite de utilizatori sa acceseze numai anumite subscheme ale schemei conceptuale globale. Mai mult, utilizatori diferiti pot dori ca aceiasi informatie sa fie reprezentata în moduri diferite (tabele, grafice) sau pot prefera anumite metode de operare sau navigare în functie de nivelul de experienta acumulat. Prin urmare la acest nivel se pot proiecta diferite interfete cu utilizatorul.
Nivelul logic
Asa cum am vazut pâna acum, schema conceptuala este creata pentru a comunica, adica pentru a reprezenta sistemul ce urmeaza a fi proiectat într-un mod cât mai clar. Pentru a realiza o implementare eficienta aceasta schema conceptuala trebuie convertita într-o structura de nivel inferior. Prin urmare, pentru o anumita aplicatie data, se alege un model logic adecvat de organizare a datelor (de exemplu, modelul relational, ierarhic, retea, etc.). Se mai spune ca schema conceptuala este transformata într-o scema logica exprimata cu ajutorul unor structuri abstracte de date si operatii furnizate de modelul de date respectiv. De exemplu, pentru modelul relational faptele sunt depozitate în tabele, constrângerile sunt exprimate cu ajutorul cheilor primare sau straine, etc.
Dupa ce a fost realizata schema logica, aceasta trebuie proiectata prin intermediul unei scheme interne într-un anumit SGBD (Sistem de Gestiune a Bazelor de Date). De exemplu, schema relationala poate fi implementata în Oracle, Access, Visual Foxpro sau DB2. Schema interna include toate detaliile despre stocarea fizica si structurile de acces utilizate în sistemul respectiv (de exemplu, indecsi, clustere, etc.). Pentru acelasi SGBD pot fi alese diferite structuri de stocare, dupa cum si pentru SGBD-uri diferite exista structuri diferite. Prin urmare, pentru aceeasi schema logica pot fi alese mai multe scheme interne.
În concluzie, unul dintre avantajele nivelului conceptual este acela de a fi cel mai stabil dintre niveluri. El nu este practic afectat de schimbarile interfetelor cu utilizatorii, de structurile fizice de stocare sau de tehnicile de accesare a datelor. Presupunând ca schema conceptuala a fost implementata într-un SGBD ierarhic, dar mai târziu se doreste utilizarea unui SGBD relational, acest lucru nu va duce la modificarea schemei conceptuale, exceptând faptul când sistemul studiat s-a modificat.
Structura logica Structura logica Structura logica programatorulul
administratorul bazei de date
|
II. Modele de date pentru baze de date - modele conceptuale
Dupa cum am vazut , baza de date este descrisa conceptual de administratorul b.d. Pentru aceasta, el apeleaza la un model de date cu ajutorul caruia poate structura informatia din lumea reala pe care doreste sa o pastreze . Modelul de date este de fapt un fel de ghid pentru reprezentarea datelor. Acesta se refera doar la structura virtuala si cea logica, nicidecum la structura fizica ( care structura fizica depinde de sistemul de operare si de S.G.B.D.-ul folosit).
Modelul de date folosit de un SGBD descrie modul de organizare a datelor în baza de date. Modelul de date reprezinta un tipar dupa care este organizata din punct de vedere logic baza de date. Modelul de date nu specifica datele, implementarea sau organizarea lor fizica, ci doar modul lor de organizare logica. Dupa modelul folosit, exista mai multe categorii principale de SGBD-uri.
Exista mai multe modele conceptuale principale folosite pentru modelarea conceptuala a datelor, dintre acestea cele mai cunoscute fiind :
modelul relational
modelul retea
modelul ierarhic
modelul obiect pe obiect.
Fiecare model capteaza într-un anumit fel proprietatile lumii înconjuratoare pe care dorim sa o modelam.
Modelul relational : introdus de Codd în 1970 .
Este un model simplu ce ofera independenta datelor, model folosit astazi în multe din SGBD-urile existente pe piata .
O baza de date relationala, bazata pe acest model relational, este formata din trei parti principale:
structura datelor, prin definirea unor domenii de valori si a relatiilor n -are cum ar fi atributele , cheile primare . De fapt aceasta parte se refera la tabelele de date, la legaturile între tabele , etc.
reguli de integritate care impun anumite restricti, în scopul de a permite numai valori corecte în relatii .
operatori de gestiune a bazei de date folositi pentru prelucrarea datelor .
Modelul relational se bazeaza pe notiunea matematica de relatie , asa cum este definita în teoria multimilor, si anume ca o submultime a produsului cartezian a unei liste finite de multimi numite domenii
Modelul relational al bazei de date consta dintr-o colectie de relatii ce variaza în timp (relatiile se pot schimba prin operatii de adaugare, stergere si actualizare ) . De obicei relatiile sunt reprezentate sub forma unor tabele în care fiecare rând reprezinta un tuplu (liniile se vor numi înregistrari ) si fiecare coloana reprezinta valorile tuplurilor dintr-un domeniu dat al produsului cartezian ( sunt numite câmpuri, atribute ) . Din acest motiv , în modelele relationale , bazele de date sunt de fapt tabele cu date , sau altfel zis sunt fisiere fizice ce au datele organizate logic sub forma de tabele.
Exemplu: Sa consideram datele despre studenti, date pe care dorim sa le stocam în computer .
O baza de date relationala este de fapt un tabel de felul urmator :
STUDENT [NRMATRICOL, NUME, ANNASTERE, ANSTUDIU
nume
coloana = caracteristica sau atributul entitatii
STUDENT - numele tabelului sau numele bazei de date sau nume de entitate sau nume
de relatie
NRMATRICOL |
Nume |
Annastere |
Anstudiu |
||
linia=realizare
de entitate=înregistrare |
POPESCU ION | ||||
|
GEORGESCU MIHAI | ||||
|
IONESCU GEORGE |
Cheie domeniul
caracteristicii anstudiu
Se observa ca fiecare atribut ( coloana ) are nu nume . Atributele pot sa apara în orice ordine în relatie . Elementele unei relatii sunt liniile din tabel .
În reprezentarea sub forma de tabel a unei relatii, coloanele si , respectiv domeniile corespunzatoare lor li se asociaza nume intitulate atribute . Multimea numelor atributelor unei relatii se mai numeste si schema relationala ( sau familie de caracteristici). De fapt , în S.G.B.D. , schema relationala reprezinta asa numita structura logica a bazei de date, structura care se decide de proiectatul bazei de date.
O coloana pentru care valorile corespunzatoare din oricare doua tupluri nu coincid se numeste cheie . Pot exista mai multe chei . Dintre acestea de obicei se alege o cheie primara, celelalete chei ramânând chei secundare . Pentru exemplul de mai sus , coloana (câmpul) nrmatricol este o cheie.
Multimea tuturor schemelor relationale correspunzatoare unei aplicatii se numeste schema bazei de date relationale, iar continutul curent al relatiilor la un moment dat se numeste de fapt baza de date relationala . De fapt, când vorbim de o baza de date concreta , va trebui sa definim structura bazei de date (adica capul de tabel) si sa depunem date în baza de date ( adica liniile din tabel sa le completam).
O alta problema importanta este cea a asocierilor între tabelele cu date . Aceste asocieri între entitati (dupa cum s-a vazut sunt trei tipuri 1-1, 1-n, m-n) sunt de fapt relatii ( toate perechile de realizari de entitati cu valori din cele doua entitati apartin de fapt produsului cartezian) . Mai mult toate asocierile dintre doua entitati pot fi stocate în forma tabelara .
Exemplu : Entitatile Grupe studenti si Studenti sunt în relatia unu-la-mai-multi
n
X - Grupe studenti Studenti - Y Relatia Grupe- Studenti
CodG |
Nr.studenti |
Nume |
Medie |
CodG |
Nume |
||
EM101 |
Moriu |
EM101 |
Moriu |
||||
UT201 |
Ionescu |
EM101 |
Mihai |
||||
IE605 |
Mihai |
UT201 |
Ionescu |
Se observa ca prin asociere se aduce în alta tabela doar cheiele de legatura. SGBD-urile relationale stiu sa creeze legaturi sau asocieri între bazele de date . Mai mult, se pot crea distinct noi tabele cu asocierile create.
Cele mai cunoscute SGBD-uri sunt bazate pe modelul relational : ORACLE, INGRES, DB2, FoxPro, Paradox , Acces, etc.
În concluzie , modelul relational este caraterizat prin unitatea si simplitatea reprezentarilor , totul se reduce la tabele. De asemenea, modelul pastreaza rigoarea fundamentarii sale matematice, fapt ce a permis definirea unor limbaje de nivel foarte înalt ( cum ar fi SQL) care utilizeaza elemente de algebra relationala. Totusi, trebuie precizat faptul ca , daca din punct de vedere fizic, coerenta modelului relational este de nezdruncinat, din punct de vedere logic , coerenta bazei de date trebuie perfect stapânita. Orice modificare , de exemplu , a cheii primare trebuie însotita de actualizari în toate tabelel corelate bazei de date .
Modelul ierarhic sau arborescent
A fost primul model utilizat în exploatarea bazelor de date si el presupune gruparea si ierarizarea entitatilor într-o structura de arbore. Acest lucru presupune ca fiecare nod care nu este radacina are un singur nod superior si unul sau mai multi descendenti.
Datele sunt organizate asemanator unui arbore . Utilizatorii vad datele ca si arbori alcatuiti din tipuri de înregistrari interconectate .
Facultatea
Exemplu : - sistemul informatic cu toate datele tuturor
facultatilor unei universitati poate forma o structura
arborescenta :
Laboratoare
Se observa existenta legaturilor de tipul 1 - N .
Baza de date presupune rezervarea de spatiu pentru fiecare facultate , apoi pentru fiecare facultate de retin informatiile de identificare ( cum ar fi numele , adresa , telefonul ) si în continuare se retine spatiu de stocare pentru grupele de studenti , etc. Se observa faptul ca datele sunt stocate pe mediul extern în ordinea data de parcurgerea în preordine a arborilor, ceea ce usureaza determinarea informatiilor pentru cererile care se refera la descendentii unor noduri printr-un numar mic de accese la mediul extern .
Cu toate ca ofera posibilitatea unei cautari rapide , exista câteva dezavantaje :
anumite structuri nu sunt supuse ierahizarii;
actualizarea este dificila, de exemplu stergerea unui nod implica stergerea tuturor descendentilor sai, iar adaugarea unui nod implica reorganizarea întregii baze de date.
Cel mai cunoscut sistem de gestiune a bazelor de date, de tip ierahic, este IMS (Information Mangement System ), realizat de IBM pentru prelucrarea datelor din industria spatiala . Acest SGBD are si varianta mai recenta, îmbunatatita,numita IMS/VS (Information Mangement System/ Virtual Storage) .
Modelul retea .
Este un model general de organizare a datelor , în care nu exista restrictia de la arbori în care un nod trebuia sa aiba un singur parinte (ca în cazul modelului arborescent)
Modelul retea este cel mai apropiat de forma de reprezentare a bazelor de date sub forma diagramelor entitate - relatie. Baza de date poate fi reprezentata grafic printr-un graf orientat numit de fapt retea. Într-o retea(adica într-un astfel de graf ) nodurile corespund entitatilor si relatiile sunt de fapt arcele grafului,arce simple de la tata la fiu sau arce duble,daca relatia este de forma 1-n .
În acest model se folosesc notiunile de înregistrare logica si legatura . Înregistrarea se aseamana cu notiunea de entitate de la cele relationale si este de fapt un fisier logic care are drept câmpuri atributele entitatii. În plus , apar câmpurile de legatura , o deosebire foarte mare fata de modelul relational. Multimea tuturor înregistrarilor de acelasi tip au la baza un tip numit articol . Legatura este o asociere între doua articole, deci o legatura este de fapt o relatie binara .
Facultati
Exemplu : - acelasi sistem informatic cu toate
datele tuturor facultatilor unei universitati poate fi
reprezentat si sub forma de retea ( de fapt structura
arborescenta este un caz particular al celei retea ) :
Se observa relatiile 1 -n ( cele cu sageata simpla ) si relatiile m-n ( cel cu sageata dubla )
Ca si modelul ierarhic , modelul retea se bazeaza pe folosirea pointerilor pentru pastrarea legaturilor. Dintre SGBD care folosesc modelul retea amintim SGBD DBTG al firmei Data Base Task Group si SGBD Socrate, produs în România de firma ICL.
4. Modelul obiect pe obiect. Acesta este cel mai nou tip de modelare, încercând sa integreze principiile programarii orientate pe obiect (Actor, Smalltalk, C++)si ale bazelor de date. Bazele de date relationale, cele mai populare în ultimul deceniu, ofereau prea putin suport pentru tipurile neconventionale de date. Necesitatea gestiunii obiectelor complexe (texte, grafice, harti, imagini, sunete) si a gestiunii obiectelor dinamice (programe, simulari) care nu pot fi realizate cu ajutorul sistemelor relationale a condus la introducerea conceptului de obiect în cadrul sistemelor de gestiune a bazelor de date
Ca o concluzie generala legata de cele trei modele de baze de date , modelul relational se impune prin simplitate, ceea ce permite folosirea lui si de catre nespecialisti cu un randament bun. Trebuie sa evidentiem avantajele modelului relational fata de celelalte modele : - structuri de date simple, operatori simpli, independenta fizica si logica a datelor , usurinta dezvoltarii aplicatiilor, definirea dinamica a datelor , posibilitatea dezvoltarii bazelor de date distribuite. Mai mult, singura structura folosita la bazele relationale este structura de tip tablou, structura foarte cunoscuta în viata obisnuita spre deosebire de structura de tip arbore sau de tip retea (graf ) . Trebuie sa remarcam ca toate sistemele de baze de date distribuite sunt construite dupa principiul modelului relational .
|