Sunteți pe pagina 1din 12

Capitolul III Structura i funciile bazei de date. Conceptul unui SGBD 3.

1 Structura informaiei ntr-o BD tipic Sistemele informaionale sunt orientate, spre pstrarea, accesarea i modificarea informaiilor existente, memorizate n BD. Structura informaiilor este adesea foarte complicat, dei structurile datelor difer de la un sistem la altul, ele au foarte multe momente comune. La etapa iniial de folosire a tehnicii de calcul n gestiunea informaiei problemele structurrii datelor erau rezolvate n mod individual pentru fiecare sistem informaional. Erau elaborate aplicaii speciale pentru sistemele de gestiune a fiierelor (biblioteci de programe), la fel cum se procedeaz n cazul compilatoarelor, editoarelor, etc. Din aceste considerente, fiindc sistemele informaionale necesit structuri de date complicate, aceste resurse suplimentare de gestiune a datelor formau partea principal a sistemelor, repetndu-se de la un sistem la altul. Tendina de generalizare a sistemelor informaionale, responsabile de gestiunea datelor structurate, a fost prima cauz de creare a sistemelor de gestiune a bazelor de date (SGBD). Foarte repede a devenit clar imposibilitatea rezolvrii problemei doar cu ajutorul unei biblioteci de programe, care ar realiza metode mai complicate de manipulare a datelor prin intermediul SGF (Sistemul de Gestiune a Fiierelor). Presupunem c dorim s realizm un sistem informaional simplu, care ar duce evidena colaboratorilor unei organizaii. Sistemul va ndeplini urmtoarele funcii: s formeze lista colaboratorilor unei secii, s permit transferul unui colaborator dintr-o secie n alta, s asigure primirea la lucru a colaboratorilor i eliberarea acestora. Pentru fiecare secie trebuie susinut posibilitatea aflrii numelui efului acestei secii, numrului total de colaboratori din secie, valoarea ultimului salariu total, etc. Pentru fiecare colaborator trebuie s existe posibilitatea aflrii numrului legitimaiei de serviciu folosind numele i prenumele colaboratorului i invers, s se obin informaii despre faptul dac colaboratorul dat corespunde postului ocupat, nivelul salariului, etc. Presupunem c am hotrt s bazm acest sistem informaional pe Sistemul de Gestiune a Fiierelor (SGF) i s utilzm pentru aceasta un singur fiier, extinznd posibilitile de baz ale SGF, crend o bibliotec special de funcii. Unitatea informaional minimal n acest
1

caz este colaboratorul din care cauz vom cere ca n acest fiier s existe o nregistrare pentru fiecare colaborator: a) Numele complet al colaboratorului (COL_NUME), b) numrul legitimaiei (COL_NR_LEGIT), c) informaia despre corespunderea postului ocupat ((COL_STARE), pentru simplitate, da sau nu), d) mrimea salariului (COL_SAL), e) numrul seciei (COL_NR_SEC). Deoarece dorim s avem un singur fiier, aceeai nregistrare trebuie s conin i numele efului seciei (COL_SEF_SEC). Reieind din funciile sistemului nostru informaional, trebuie s fie asigurat accesul multicriterial la acest fiier utiliznd cheile unice (care nu sunt repetate n diferite nregistrri) COL_NUME i COL_NR_LEGIT. n afar de aceasta mai este necesar s putem selecta toate nregistrrile, care conin aceeai valoare COL_NR_SEC (colaboratorii unei secii), adic s existe acces conform unei chei multiple. Mai mult, pentru a obine numrul de colaboratori dintr-o secie sau salariul total, sistemul informaional va trebui de fiecare dat s acceseze fiecare colaborator al seciei i s calculeze valorile respective. Observm, c chiar pentru un astfel de sistem simplu, realizarea n baza SGF va cere: 1) - crearea unei infrastructuri complicate pentru accesul multicriterial, 2) - genereaz o metod de pstrare evident redundant (repetarea numelui efului seciei pentru fiecare colaborator) i executarea selectrii i calculelor masive pentru obinerea informaiilor sumare despre secii. n afar de aceasta, dac dorim, de exemplu, s tiprim lista colaboratorilor, care au un salariu dat, va trebui s cercetm tot fiierul sau s-l restructurm n aa mod nct cmpul COL_SAL s devin cheie. Prima propunere ar fi s crem dou fiiere cu chei multiple: COLABORATORI i SECII. Primul fiier va conine cmpurile COL_NUME, COL_NR_LEGIT, COL_STARE, COL_SAL i COL_NR_SEC, iar al doilea SEC_NR, SEC_SEF, SEC_SAL (slariul total) i SEC_NR_COL (numrul de colaboratori dintr-o secie). Fiecare fiier va conine doar informaii nedublate, nu sunt necesare calcule suplimentare pentru a

afla informaii de tipul salariului total. Dar n acest caz sistemul nostru capt proprieti noi, care l apropie de un Sistem de Gestiune a Bazelor de Date (SGBD). Mai nti de toate, sistemul trebuie n acest caz s tie c lucreaz cu dou fiiere legate (este primul pas n direcia schemei bazelor de date), s cunoasc structura i sensul fiecrui cmp (de exemplu, c COL_NR_SEC n fiierul COLABORATORI i SEC_NR n fiierul SECII nseamn acelai lucru), i s neleag c n unele cazuri modificarea informaiei ntr-un fiier trebuie s genereze modificarea automat n cellalt fiier, pentru ca s fie coordonat (nu sunt sigur c este corect spus romnete, am fcut facultatea n limba rus) coninutul lor. Noiunea de coordonare a datelor este o noiune cheie a bazelor de date. De fapt, dac un sistem informaional (chiar la fel de simplu ca i n exemplul nostru) susine modul coordonat de pstrare a informaiilor n cteva fiiere, putem afirma c sistemul susine o baz de date. Iar dac un sistem auxiliar de gestiune a datelor permite lucrul cu mai multe fiiere, asigurnd coordonarea lor, acesta poate fi numit sistem de gestiune a bazelor de date. Un SGBD posed incomoditi la ndeplinirea unor cereri avansate (cererea de a afia lista de colaboratori din secia n care lucreaz un salariat anumit), deci ar fi cazul de a formula unele cerine ntr-un limbaj apropiat de cel natural. Astfel de limbaje se numesc limbaje de interpelare a bazelor de date . De exemplu, n limbajul SQL interpelarea noastr poate fi exprimat astfel: SELECT SEC_NR_COL FROM COLABORATORI, SECII WHERE COL_NUME = "Mihai Ion Popa" AND COL_NR_SEC = SEC_NR Avantajul esenial const n faptul c formularea unei interpelri(cereri) n SQL permite s nu ne deranjeze modul cum va fi ndeplinit aceast interpelare. Printre metadatele acesteia va fi prezent informaia conform creia cmpul COL_NUME este cmp cheie pentru fiierul COLABORATORI, iar SEC_NR pentru fiierul SECII i sistemul se va folosi de aceasta. Dac va fi necesar s obinem lista colaboratorilor, care nu corespund postului ocupat vom proceda astfel:
3

SELECT COL_NUME, COL_NR_LEGIT FROM COLABORATORI WHERE COL_STARE = "nu", i sistemul va ndeplini cutarea necesar n fiierul COLABORATORI, deoarece cmpul COL_STARE nu este cmp cheie. Pentru operaia de nregistrare a unui nou colaborator, conform proprietii de modificare coordonat, sistemul a introdus o nou nregistrare n fiierul COLABORATORI i apoi s modifice nregistrrea n fiierul SECII ceea ce ne permite ca sistemele de gestiune a bazelor de date s rezolve o serie de probleme, care nu pot fi n principiu rezolvate cu ajutorul sistemelor de gestiune a fiierelor (sau accesarea paralel a informaiilor). Ca i concluzie: posibilitile tradiionale ale sistemelor de gestiune a fiierelor sunt insuficiente pentru construirea unor sisteme informaionale, chiar foarte simple. Aceasta este cauza principal a apariiei SGBD. 3.2 Funciile principale ale unui SGBD Funciile principale ale unui SGBD sunt caracterizate de urmtoarele administrri: 1 administrarea explicit (direct) a datelor n memoria extern Aceast funcie presupune susinerea structurilor necesare n memoria extern att pentru pstrarea datelor, care sunt o parte component a BD, ct i pentru scopuri de service(servicii) n unele realizri ale SGBD pentru aceasta sunt utilizate posibilitile SGF, altele pot lucra chiar i cu dispozitivele de memorie extern. Utilizatorii nu sunt obligai s cunoasc dac un SGBD utilizeaz SGF i cum sunt organizate fiierele. SGBD susine un sistem propriu de desemnare a obiectelor BD. 2 administrarea tampoanelor (buferelor) din memoria operativ Un SGBD lucreaz cu BD de dimensiuni semnificative, de obicei cel puin aceste dimensiuni sunt mult mai mari dect volumul memoriei operative prezente. Evident, dac la accesarea fiecrui element de date va fi nevoie de schimb de informaii cu memoria extern, tot sistemul va lucra cu viteza suportului extern de memorie. Unica posibilitate de sporire a acestei viteze este buferizarea datelor n memoria operativ. Chiar dac SO execut
4

buferizarea de sistem (cum este n cazul SO UNIX), aceasta nu este suficient pentru scopurile SGBD. Din aceast cauz SGBD concurente susin un set propriu de bufere n memoria operativ cu propriul algoritm de dispecerizare. 3 administrarea tranzaciilor Tranzaciile sunt o succesiune de operaii asupra BD, considerate de SGBD un tot ntreg. Dac tranzacia este executat n totalitate SGBD fixeaz (COMMIT) modificrile n BD, n caz contrar nu are loc nici o modificare. Noiunea de tranzacie este necesar pentru asigurarea integritii logice a BD. n exemplul precedent atunci cnd este ndeplinit operaia de primire la lucru a unui colaborator nou, aceast operaie este uniunea operaiilor elementare asupra fiierelor COLABORATORI i SECII ntr-o tranzacie. Noiunea dat este i mai important pentru SGBD multiuser, deoarece fiecare tranzacie ncepe atunci cnd starea BD este consistent i stopeaz aceast stare dup terminarea sa. Dac tranzaciile sunt gestionate corect de ctre SGBD, fiecare utilizator are impresia c este singurul care folosete baza de date. 4 administrarea jurnalizrii datelor Una din proprietile de baz ale SGBD este fiabilitatea pstrrii datelor n memoria extern, prin aceasta nelegndu-se c, dac a avut loc orice cdere hardware sau software, SGBD-ul trebuie s fie n stare s restabileasc ultima stare coordonat a BD. Evident, pentru a restabili BD trebuie s existe nite informaii suplimentare. Cea mai rspndit metod de susinere a unei astfel de redundane este ntreinerea unui jurnal de bord n care s fie fixate schimbrile BD. Jurnalul este o parte special a BD, inaccesibil utilizatorilor BD i ntreinut n mod foarte incomod (adesea exist dou c opii ale jurnalului, care se afl pe discuri fizice diferite), n care vin informaiile despre toate nscrierile n BD (partea principal, fr Jurnal). n dependen de SGBD i nscrierile n jurnal se fac n mod diferit: n unele cazuri nscrierea n jurnal corespunde unei operaii logice oarecare (eliminarea unei linii), n alte cazuri unei operaii interne minime de modificare a unei pagini de memorie extern, sau combinaia acestora.

3.3 Organizarea tipic a unui SGBD concurent Organizarea unui SGBD tip i setul de componente ale acestuia corespunde funciilor stabilite mai sus. Noi am stabilit urmtoarele funcii de baz: administrarea datelor n memoria extern, administrarea buferelor n memoria extern, administrarea tranzaciilor, jurnalizarea i restabilirea BD dup cderi, susinerea limbajelor BD.

La nivel logic n cadrul unui SGBD concurent putem evidenia nivelul cel mai intern nucleul SGBD (numit adesea Data Base Engine), compilatorul SGBD (de obicei SQL), subsistemul Run-Time i un set de utilitare. Nucleul SGBD este responsabil de administrarea datelor n memoria extern, gestiunea buferelor memoriei operative, administrarea tranzaciilor i jurnalizare. Respectiv, pot fi evideniate astfel de componente ale nucleului cum ar fi managerul datelor, managerul buferelor, managerul tranzaciilor i managerul jurnalului. Funciile acestor componente sunt interdependente din care cauz ele trebuie s funcioneze i s interacioneze conform unor protocoale bine gndite i strict validate. Nucleul SGBD posed o interfa proprie, dar care este utilizat doar de programele SQL i utilitarele BD. Nucleul SGBD este partea rezident principal a sistemului de gestiune a BD. n arhitectura client-server nucleul este componenta principal a prii server a sistemului. Destinaia principal a compilatorului este translatarea instruciunilor scrise n limbajul BD n cod executabil. Problema principal const n faptul c aceste limbaje (de obicei SQL) sunt neprocedurale, adic n operatorul unui atare limbaj sunt specificate nite aciuni asupra BD, dar aceast specificare nu este procedur, ci doar descrie ntr-o form oarecare condiiile de ndeplinire a aciunii dorite. Compilatorul trebuie s hotrasc cum s execute operatorul limbajului naintea generrii codului executabil. Din categoria utilitarelor BD fac parte unele proceduri, ndeplinirea crora nu este binevenit utiliznd limbajul BD.

Pentru lucrul cu bazele de date sunt utilizate limbaje speciale, numite limbaje ale bazelor de date, cel mai frecvent utilizate anterior erau dou limbaje limbajul de definire a schemei BD (SDL - Schema Definition Language) i limbajul de manipulare a datelor (DML - Data Manipulation Language). Primul era utilizat pentru determinarea structurii logice a BD (cum i nchipuie utilizatorul baza de date), iar DML coninea instruciuni de manipulare a datelor (introducerea datelor n BD, eliminarea, modificarea sau selecatarea datelor existente). n SGBD contemporane este susinut un limbaj integrat unic. Cel mai rspndit este limbajul SQL (Structured Query Language). Acest limbaj combin posibilitile SDL i DML. Desemnarea obiectelor BD (desemnarea tabelelor i coloanelor lor, n cazul unor BD de tip relaional) este susinut la nivelul limbajului n sens c compilatorul SQL transform numele externe ale obiectelor n identificatori interni n baza unor tabele-catalog de serviciu. Nucleul SGBD n genere nu conlucreaz cu numele tabelelor i coloanelor acestora. Limbajul SQL conine resurse speciale pentru determinarea restriciilor de consisten a BD. Aceste restricii sunt pstrate n tabele-catalog speciale. Autorizarea accesului la BD la fel se realizeaz cu ajutorul unui set de instruciuni SQL, fiind posibil accesul difereniat n dependen de statutul utilizatorului.

3.3.1 Calculul relaional Presupunem c lucrm cu BD care are schema COLABORATORI(NR_COL, NUME_COL, SAL_COL, NR_SEC_COL) (aici NR_COL este numrul legitimaiei colaboratorului, NUME_COL numele colaboratorului, SAL_COL - salariul, iar NR_SEC_COL numrul seciei n care colaboratorul concret lucreaz) i SECII(NUMRUL_SEC, NR_COL_IN_SECIE, SEF_SECIE). Dorim s aflm numele i numerele colaboratorilor, care sunt efii seciilor cu numrul total de colaboratori mai mare ca 50. n sensul algebrei relaionale am fi obinut expresia, care ar fi citit aproximativ astfel: S se uneasc relaiile COLABORATORI i SECII cu condiia NR_COL= SEF_SECIE; Relaia obinut s fie restricionat cu condiia NR_COL_IN_SECIE > 50; Rezultatul s fie proiectat pe atributul NR_COL, NUME_COL.
7

Fiecare pas corespunde unei operaii relaionale. Dac vom formula aceeai interpelare cu ajutorul calculului relaional, vom obine o structur, care ar putea fi citit astfel: s se determine NR_COL, NUME_COL pentru colaboratorii pentru care exist secie cu aceeai valoare SEF_SECIE (ca i NUME_COL (sau NR_COL)) i cu valoarea NR_COL_IN_SECIE mai mare dect 50. Aici am artat numai caracteristicile relaiei rezultante, nu am spus nimic despre modalitatea de formare a acesteia. Sistemul va trebui singur s decid, care operaii i n care ordine s fie ndeplinite peste relaiile COLABORATORI i SECII(cu ajutorul cuvintelor_chee). Spunem c formularea algebric este procedural(relaii de calcul), adic definete regulile de ndeplinire a interpelrii, iar formularea logic (a doua) este descriptiv sau declarativ, deoarece ea doar descrie proprietile rezultatului dorit. Aceste dou mecanisme sunt echivalente i exist reguli, relativ simple, care permit transformarea unei forme anumite n alta. Exemplu de relaie i proprietile ei Se numete relaie n-ar(unar, binar,..) pe M submulimea R Mn, pentru cazul c a1,..., an, sunt n relaia R, dac (a1,...,an)R. O relaie unar este o parte a mulimii M i determin o proprietate a elementelor unei submulimi a mulimii M din care cauz pentru n = 1 denumirea de relaie practic nu se utilizeaz. Un interes mai mare prezint cazul cnd n = 2 - relaiile binare. Dac a i b se afl n relaia R, aceasta se va scrie aRb. 3.3.2 Proiectarea bazelor de date relaionale Proiectarea bazelor de date rezolv dou probleme: s fie reprezentate obiectele domeniului obiectiv n obiecte abstracte ale modelului datelor astfel ca aceast reprezentare s nu contrazic semantica domeniului obiectiv i s fie, n msura posibilitilor, cea mai bun (eficient, comod. Adesea aceast problem este numit proiectarea logic a BD. s se asigure executarea eficient a interpelrilor BD, altfel c lund n consideraie specificul unui SGBD concret i cum vor fi plasate datele n memoria extern (care structuri vor fi create suplimentar), vom utiliza proiectarea fizic a BD.

Este dificil s fie propuse nite exemple de ordin general pentru rezolvarea problemei proiectrii fizice, fiindc prea multe depind de SGBD utilizat. De exemplu, cu ajutorul SGBD Ingres poate fi aleas una dintre metodele de organizare fizic a relaiilor, iar lucrnd cu System R ar trebui s ne gndim n primul rnd la amplasarea relaiilor i la setul necesar de indici ntrebuinai. Din aceast cauz vom cerceta doar momentele, legate de proiectarea logic a BDR, care au importan mare atunci cnd utilizm orice SGBDR unde nu exist determinarea cererilor de consisten (cu excepia restriciei cheii primare). Deci, cnd se utilizeaz un SGBD cu mecanisme de asigurare (de ex., sistemele SQL orientate) este foarte dificil s fie propus o abordare general de determinare a cererilor. Aceste cereri (restricii) pot fi de ordin foarte general, iar formularea lor depinde nu de baza de date ci de utilizatorul acestea. n literatur n aceast direcie este propus controlul automat al setului de restricii al cererii. 3.4 Proiectarea logic Vom face cunotin mai nti cu abordarea clasic, cnd ntreg procesul de proiectare are loc n termeni din domeniul modelului relaional de date, folosind metoda determinrii consecvente a setului de relaii utilizat la proiectare. Iniial se analizeaz reprezentarea domeniului obiectiv (sub forma uneia sau mai multor relaii) i pentru fiecare pas al procesului de proiectare se va produce un set oarecare de scheme ale relaiilor. Procesul de proiectare se transform ntr-un proces de normalizare a schemelor relaiilor, unde formele ce urmeaz posed proprieti mai bune dect forma precedent. Fiecrei forme normale i corespunde un set anumit de cerine, iar relaia se afl ntr-o form de execuie, dac satisface setul de cerine caracteristic ei. Deoarece restricia primei forme normale este o cerin fundamental a modelului de date relaional clasic, vom considera c setul iniial de relaii deja corespunde acestei cerine. n teoria bazelor de date relaionale este evideniat urmtorul ir de forme normale: Prima form normal (1FN); A doua form normal (2FN); A treia form normal (3FN); Forma normal Boyce-Codde (BCNF); A patra form normal (4FN);
9

A cincea form normal sau forma normal proiecie-reuniune (5FN sau PJ/NF). Proprietile principale ale formelor normale sunt:

Fiecare urmtoare form normal este ntr-un anumit sens mai bun dect precedenta; Trecerea la urmtoarea form normal pstreaz proprietile formelor normale

precedente. La baza procesului de proiectare se afl metoda normalizrii decompoziia relaiei, care se afl n forma normal precedent n dou sau mai multe relaii, care vor respecta cerinele urmtoarei forme normale. Conform celor menionate considerm c trecerea de la o form la alta se efectueaz n dependen de cererile analizate i cerinele de proiectare a urmtoarei forme. Ca exemplu considerm formele: a) Prima form normal (1FN); COLABORATORI(NR_COL, NUME_COL, SAL_COL, NR_SEC_COL) nregistrarea colaboratorilor b) A doua form normal (2FN); COLABORATORI(NR_COL, NUME_COL, SAL_COL, NR_SEC_COL) SECII(NUMRUL_SEC, NR_COL_IN_SECIE, SEF_SECIE) nregistrarea colaboratorilor pe secii c) A treia form normal (3FN); NR_COL, NUME_COL SEF_SECIE, echivalent cu NUME_COL sau NR_COL NR_COL_IN_SECIE d) Forma normal Boyce-Codde (BCNF); COLABORATORI-PROIECTE SARCINA_COL) Chei posibile: Nr_COL, Nr_PROIECT Nume_COL, Nr_PROIECT Dependene funcionale i posibiliti de cereri:
10

(Nr_COL,

Nume_COL,

Nr_PROIECT,

Nr_COL Nume_COL Nr_COL Nr_PROIECT Nume_COL Nr_COL Nume_COL Nr_PROIECT Nr_COL, Nr_PROIECT SARCINA_COL Nume_COL, Nr_PROIECT SARCINA_PROIECT NOT: Forma normal Boyce-Codde. Relaia R se afl n forma normal Boyce-Codde atunci i numai atunci cnd determinantul ei este o cheie posibil. e) A patra form normal (4FN); COLABORATORI_PROIECTE(Nr_COL, Nr_PROIECT, SARCINA_COL) Cheie posibil: Nr_COL, Nr_COL Dependene funcionale: Nr_COL, Nr_PROIECT Sarcina_COL f) A cincea form normal sau forma normal proiecie-reuniune (5FN sau PJ/NF). Destinat pentru proiecte sub form de reuniune a mai multor forme: COLABORATORI i COLABORATORI-PROIECTE se afl n BCNF cu diverse modificri evideniate. Toat informaia BD este reprezentat pe ecranul PC cu ajutorul programului SQL prin intermediul cererii (SELECT * FROM <nume tabel>). Lipsa informaiei poate fi cauzat de o eroare anumit n program sau cererea a fost format incorect, aceast confruntare poate fi omis cu ajutorul procedurii SP_MAKE_BOOK, care are menirea de a forma date de test de ntreinere a BD. Ultima este verificat de ctre programul standardizat SQL Query, localizat n serverul SQL Server, ce reprezint interfaa destinat controlului i accesului interactiv a BD. La fel, pentru control suplimentar al BD, este pe larg utilizat i controlul sau testarea de reea, care ajut la detectarea erorilor cauzate de utilizare simultan sau individual a BD (schimbul de informaie, nscriere de date sau tergerea acestora). Prevenirea unor astfel de erori este prevenit de serverul SQL Server, care la orice eroare nscrie
11

informaia corespunztoare n memorie pentru ca n continuare s poat preveni astfel de erori. Dezvoltarea sistemului de paginare WWW n reeaua Internet au permis utilizarea mai multor forme de BD (exemplu: sistemul OLTP, intranet). O alt metod reprezint formarea noilor BD pe paginile serverilor-Web n Internet, care permit accesul interactiv la diverse SI precum i sporirea performanelor de cutare a informaiei n diverse reele (locale sau regionale) i chiar (globale) Internet. Pentru astfel de servere-sisteme este posibil memorizarea BD statice(simple sau fizice) ct i cele dinamice(relaionale). Utilizarea reelei Internet a permis de a utiliza noi sisteme ca: DB2, suportul JDB, proceduri UDF, limbajul Java i sisteme suplimentare de conlucrare cu diverse servere Internet, de exemplu DB2 WWW Connection ce corespunde unei forme performante Net Data.

12