Baze de Date on Line

Embed Size (px)

Citation preview

  • 7/31/2019 Baze de Date on Line

    1/96

    PREFA

    Istoria bazelor de date relaionale ncepe n 1970 o dat cu publicareaarticolului lui Edgar Frank Codd A Relational Model of Data for Large Shared

    Data Banks care descrie modelarea datelor sub form de relaii (termenmatematic, reprezentarea intuitiv a unei relaii fiind o tabel) i operaiile de bazcu acestea.

    A durat aproape 10 ani pn la apariia primelor sisteme de gestiune a bazelorde date (SGBD) bazate pe acest model, timp n care s-au dezvoltat algoritmi imetode de a realiza n timp util operaiile cu tabele.

    O serie de firme prestigioase au investit n cercetri privind modelul relaionalal datelor, printre acestea numrndu-se i IBM care a lansat n anii 70 dezvoltareaunui prototip de cercetare numit System R. n cadrul acestui sistem care nu a fostniciodat comercializat ca atare, fiind folosit doar ca instrument de cercetare afost dezvoltat i un limbaj de cereri prin care utilizatorul interaciona cu datele din

    baza de date numit SEQUEL (de la Structured English-like Query Language)

    redenumit apoi din motive comerciale SQL. System R a fost tatl sistemului DB2pe care IBM l comercializeaz i n momentul actual.

    Lucrarea de fa i propune s prezinte att fundamentele teoretice alemodelului relaional (capitolele 1-4 i 6) ct i limbajul de cereri SQL care adevenit n timp limbajul standard de comunicare cu un sistem de gestiune (capitolul5).

    n exemplele din capitolul dedicat SQL s-au folosit urmtoarele convenii cares asigure o mai mare claritate i lizibilitate:

    S-a preferat scrierea cu litere mari a cuvintelor cheie i identificatorilor. Fiecare nou clauz a unei cereri a fost scris ncepnd cu o nou linie. S-a folosit indentarea n cazul expresiilor lungi i a subcererilor.

    2011 Autorii

  • 7/31/2019 Baze de Date on Line

    2/96

    6 BAZE DE DATE ON-LINE

  • 7/31/2019 Baze de Date on Line

    3/96

    CUPRINS

    1. Concepte i problematic ..................................................................91.1. Baz de date i Sistem de gestiune a bazelor de date ...............91.2. Funciile unui SGBD ...............................................................111.3. Categorii de utilizatori .............................................................131.4. Nivele de descriere a unei baze de date ..................................13

    2. Modelarea datelor ...........................................................................152.1. Etapele dezvoltarii unei aplicatii ............................................152.2. Modelul entitate-asociere clasic .............................................182.3. Modelul entitate-asociere utilizat n instrumente CASE ........25

    3. Modelul relaional ...........................................................................273.1. Modele de date: ierarhic, reea, relaional ..............................273.2. Elementele de baza ale modelului relational ..........................283.3. Transformarea diagramelor EA in modelul relational ............303.4. Algebra relaional ..................................................................31

    3.5. Calcul relational ......................................................................36

    4. Proiectarea bazelor de date .............................................................374.1. Anomalii care apar n cazul proiectrii incorecte ...................374.2. Dependene funcionale ..........................................................384.3. Forme normale ........................................................................454.4. Descompunerea schemelor de relaie .....................................474.5. Dependene multivalorice. Forma normal 4 .........................52

    5. Limbajul SQL .................................................................................555.1. Interogarea datelor ..................................................................565.2. Cereri simple ...........................................................................575.3. Cereri cu clauza WHERE .......................................................585.4. Metode de join ........................................................................615.5. Equi-join si non equi-join .......................................................625.6. Joinul unei tabele cu ea insi .................................................635.7. Join extern ...............................................................................635.8. Join vertical .............................................................................645.9. Funcii n SQL .........................................................................65

  • 7/31/2019 Baze de Date on Line

    4/96

    8 BAZE DE DATE ON-LINE

    5.10. Subcereri SQL ........................................................................745.11. Crearea i definirea structurilor tabelare ................................775.12. Constrngeri de integritate .....................................................805.13. Comanda ALTER TABLE ....................................................835.14. Comanda INSERT .................................................................855.15. Comanda DELETE ................................................................865.16. Comanda UPDATE ...............................................................86

    6. Tranzacii i acces concurent ..........................................................88

    6.1. Prezentarea problematicii. Terminologie ................................886.2. Gestiunea tranzaciilor ............................................................896.3. Serializabilitate .......................................................................916.4. Asigurarea consistentei la citire ..............................................936.5. Protocolul de blocare in doua faze .........................................94

  • 7/31/2019 Baze de Date on Line

    5/96

    Concepte i problematic 9

  • 7/31/2019 Baze de Date on Line

    6/96

    1. CONCEPTE I PROBLEMATIC

    n acest moment termenul de baz de date a intrat n limbajul curent fiindfolosit uneori i n alte accepiuni dect cea de provenien. n acest capitol suntdefinite conceptele de baz de date (BD) i sistem de gestiune a bazelor de date(SGBD) i se face o trecere n revist a elementelor coninute n aceste definiii.

    Sunt prezentate apoi funciile pe care trebuie s le asigure un SGBD i categoriilede utilizatori ale unui astfel de sistem. Capitolul se incheie cu prezentarea celor treinivele de descriere ale unei baze de date i a conceptului de independen date-

    program.

    1.1. Baz de date i Sistem de gestiune a bazelor dedateLiteratura de specialitate conine mai multe definiii pentru conceptele de baz

    de date i sistem de gestiune a bazelor de date. n continuare sunt prezentate doudefiniii apreciate pentru valoarea lor descriptiv.

    Definiie: O baz de date este un ansamblu structurat de date nregistrat pesuporturi accesibile calculatorului pentru a satisface simultan cerinele mai multorutilizatori ntr-un mod selectiv i n timp util.

    Definiie: Un sistem de gestiune a bazelor de date este ansamblul de programecare permit utilizatorului s interacioneze cu o baz de date.

    Aceste definiii conin majoritatea elementelor importante ale problematiciibazelor de date prezentate n capitolele urmatoare:

    un ansamblu structurat de date

    Nu orice colecie de date este o baz de date. O cerin primordial este aceea

    a organizrii acestora dup anumite reguli. Regulile i conceptele care permitdescrierea structurii unei BD formeaz modelul datelor. n acest momentmajoritatea sistemelor de gestiune sunt bazate pe modelul relaional al datelor ncare, intuitiv, datele sunt organizate sub form de tabele.

    Popularitatea acestui model este datorat simplitii sale (din punct de vedereal utilizatorului) i a posibilitii de definire a unor limbaje neprocedurale dedescriere i manipulare a datelor.

    Termenul de relaie (care d denumirea modelului) provine din matematic iarreprezentarea intuitiv a unei relaii este o tabel. n cazul modelului relaional

  • 7/31/2019 Baze de Date on Line

    7/96

    Concepte i problematic 11

    descrierea structurii unei baze de date const n principal din descrierea tabelelorcomponente: denumire, list de coloane i tipul datelor din acestea.

    ...nregistrat pe suporturi accesibile calculatorului ...

    Dac ansamblul de date nu este nregistrat pe suporturi accesibilecalculatorului acesta nu se poate numi baz de date n accepiunea lucrrii de fa.

    n limbajul curent se ntalnesc expresii ca: "avem aceast informaie n bazanoastr de date" i n cazurile n care datele respective sunt de exemplu stocate subforma unor fie (pe hrtie) sortate alfabetic sau dup alte criterii. n acest caz estevorba despre o extensie a termenului de baz de date.

    n cazul sistemelor de gestiune a bazelor de date suporturile pe care suntstocate datele sunt n principal magnetice i optice.

    ... pentru a satisface simultan cerinele mai multor utilizatori

    Funciile unui SGBD relative la accesul utilizatorilor la baza de date sunturmatoarele:

    1. Gestiunea utilizatorilor. Un SGBD trebuie s permit crearea, modificareai stergerea utilizatorilor. Operaia este efectuat de obicei de administratorul bazeide date.

    2. Concurena la date. n cazul accesului simultan al mai multor utilizatori laaceleai date un SGBD trebuie s aiba mecanisme pentru a prentmpina

    inconsistena datelor.Capitolul 6 prezinta problemele legate de blocarea (acapararea) unor poriuni

    ale BD de catre o execuie a unui program, rezolvarea problemelor pe care le poateridica ateptarea circular pentru deblocarea acestor poriuni (deadlock), execuia

    pailor programelor de actualizare echivalent cu o execuie secvenial aprogramelor (serializabilitate) i reguli de scriere a programelor de aplicaie pentrurezolvarea problemelor de acces concurent.

    ... ntr-un mod selectiv ...

    Orice SGBD are mecanisme prin care diverilor utilizatori sau categorii deutilizatori li se asociaz drepturi de acces specifice la obiectele bazei de date. n

    acest mod fiecrui utilizator i se d dreptul de a efectua doar operaiile specificeactivitii sale i doar pe acea portiune a bazei de date care este necesar pentruacestea.

    Mecanismul de drepturi de acces are ca obiective principale: Blocarea accesului unor categorii de utilizatori la date pe care nu trebuie s le

    acceseze. n acest fel este asigurata una dintre funciunile de baza ale unuiSGBD i anume confidenialitatea datelor.

    Blocarea accesului unor categorii de utilizatori la date de care nu au nevoie nactivitatea lor, minimizndu-se astfel riscul distrugerii accidentale a datelor

    prin operaii necorespunzatoare.

  • 7/31/2019 Baze de Date on Line

    8/96

    12 BAZE DE DATE ON-LINE

    ... i n timp util ...

    n cazul bazelor de date de dimensiuni mari este evident ca orice cautare cares-ar baza pe o parcurgere secvenial a nregistrarilor din tabele ar duce la timpi derspuns inadecvat de mari. De asemenea, operaii mai complicate prin care seregsesc date stocate n mai multe tabele legate ntre ele prin coloane comune potduce n lipsa unor algoritmi specifici la timpi de execuie inacceptabili.

    De aceea orice SGBD are mecanisme prin care minimizeaz timpul derspuns, mecanisme bazate n special pe indeci i modaliti specifice deorganizare fizic a datelor.

    1.2. Funciile unui SGBDO definiie alternativ a conceptului de baz de date este urmtoarea: o baz

    de date este o colecie de date interconectate. Deci ea reprezint depozitul de dateal oricrei aplicaii de gestiune, partea sa static. Operaiile asupra datelor suntefectuate de sistemul de gestiune a bazelor de date. El este cel care asigurstructurarea datelor, accesul concurent al utilizatorilor, selectivitatea accesului itimpi de execuie normali pentru cereri. Dar acestea sunt doar o parte din operaiile

    pe care acesta trebuie s le asigure. Funciile unui sistem de gestiune a bazelor dedate sunt urmatoarele:

    Descrierea datelor

    Un SGBD trebuie s includ posibilitatea descrierii stucturii obiectelor careformeaz baza de date. n cazul bazelor de date relaionale aceasta const n

    principal n posibilitatea crerii i modificrii structurii tabelelor i constrngerilorde integritate asociate acestora.

    Limbajul prin care se realizeaz aceste operaii se numeste Limbaj deDescriere a Datelor (LDD) i n cazul primelor sisteme de gestiune el eraimplementat sub forma unor module separate. n sistemele relaionale bazate peSQL aceste operaii au fost incluse n limbaj sub forma comenzilor de tip CREATE(pentru creare) sau ALTER (modificare).

    Utilizarea datelor

    Aceast funcie include operaiile de lucru cu datele nregistrate ntr-o baz dedate. Cele patru categorii de operaii principale sunt urmtoarele:

    Inserarea de noi date. Aceasta se concretizeaz prin adugarea de noi linii ntabelele care formeaz baza de date.

    tergerea de linii din tabele. Actualizarea datelor, nsemnnd modificarea coninutului unor linii existente n

    tabele. Regsirea datelor dup anumite criterii de cutare

  • 7/31/2019 Baze de Date on Line

    9/96

    Concepte i problematic 13

    Pentru implementarea acestei funcii fiecare SGBD are un Limbaj deManipulare a Datelor (LMD) care poate fi un modul separat sau inclus n limbajulsistemului cum este n cazul SQL.

    Integritatea datelor

    Majoritatea sistemelor de gestiune permit definirea unor reguli pe care datelestocate trebuie s verifice numite constrngeri de integritate. n cazul n care ooperaie are ca rezultat violarea acestor restricii aceasta este automat rejectat i nuare efect n baza de date. n felul acesta este asigurat o mai mare siguran n ceeace privete corectitudinea datelor.

    Definirea de constrngeri de integritate nu previne ns total erorileaccidentale de operare: de exemplu introducerea din greeal a unei note de 4 n locde 5 nu va fi semnalat, ambele valori fiind n intervalul admisibil.

    Confidenialitatea datelor

    n cazul unui SGBD accesul la date este permis doar utilizatorilor nregistraii doar n msura drepturilor de acces alocate. Un utilizator este identificat uzual

    printr-un nume-utilizator i o parol. Fiecrui utilizator i se permite accesul doar lao poriune a bazei de date i doar pentru a efectua anumite tipuri de operaii. ncazul bazelor de date accesate n reea se pot defini de asemenea locaiile de la care

    utilizatorul poate interaciona cu baza de date.O alt posibilitate de asigurare a confidenialitii este aceea a accesului la

    datele din baza de date doar prin intermediul unor programe de aplicaie.Utilizatorii acestor programe nu sunt n acelasi timp i utilizatori nregistrai aiSGBD-ului care gestioneaz datele iar poriunea din baza de date la care au acceseste cablat n program.

    Accesul concurent la date

    Exist trei tipuri de probleme pe care un SGBD trebuie s le rezolve pentru aasigura accesul concurent corect al mai multor utilizatori la aceeai baz de date:1. Faciliti de blocare a unor poriuni ale bazei de date. Aceasta nseamn c o

    execuie a unui program poate cpta un acces exclusiv la o poriune a bazei dedate.

    2. Modaliti de evitare sau de eliminare a interblocarii.3. Execuia serializabil. n cazul mai multor execuii simultane care acceseaz

    baza de date se consider c efectul lor este corect dac rezultatul final esteidentic cu execuia lor succesiv.

    Sigurana n funcionare

    Desi nu este legat direct de cele prezentate pn acum, sigurana nfuncionare este o caracteristica esenial pentru un SGBD i conine acele

  • 7/31/2019 Baze de Date on Line

    10/96

    14 BAZE DE DATE ON-LINE

    elemente care exclud sau minimizeaz posibilitatea de pierdere a datelor datoratincidentelor software sau hardware. Prncipalele faciliti pe care un sistem degestiune a bazelor de date trebuie s le asigure din acest punct de vedere sunturmtoarele: Salvarea datelor. n cazul sistemelor mai vechi aceste faciliti erau suplinite de

    opiunile de copiere sau arhivare a fiierelor bazei de date oferite de sistemulde operare pe care rula SGBD-ul. Actualmente implementarea operaiilor desalvare este mult mai sofisticat avnd n vedere dificultatea teoretic i

    practic a efecturii de copii de siguran consistente ale bazei de date ncondiiile n care aplicaia ruleaz non-stop i operarea nu poate fi oprit pentru

    efectuarea salvrii. Restaurarea dup incident. n cazul apariiei de incidente hardware sau

    software care au ca efect distrugerea bazei de date este necesar efectuareaoperaiei de restaurare care s minimizeze volumul de operaii al caror efect se

    pierde.

    1.3. Categorii de utilizatorin paragrafele precedente a fost folosit frecvent termenul de utilizator. n cele

    ce urmeaz sunt prezentate categoriile de utilizatori care interacioneaz cu o bazde date.

    Din punct de vedere al drepturilor de acces, ca i n cazul sistemelor de

    operare, un SGBD are dou tipuri principale de utilizatori:

    Utilizatori privilegiai

    Acetia sunt utilizatori care au dreptul de a afectua toate tipurile de operaiipuse la dispoziie de sistem. Termenul generic pentru acest tip de utilizatori este celde administratori ai bazei de date i n general este vorba de una sau mai multe

    persoane care rspund de buna funcionare a SGBD-ului.

    Utilizatori neprivilegiai

    Acetia sunt utilizatorii obinuiti ai SGBD-ului i dispun de drepturile deacces care le-au fost alocate de administratorul bazei de date.

    Majoritatea sistemelor de gestiune permit definirea de categorii generice deutilizatori (numite roluri) iar fiecare utilizator individual are asociat unul sau maimulte roluri, motenind drepturile de acces ale acestora. Este uurat astfel operaiade creare a unui nou utilizator.

    1.4. Nivele de descriere pentru o baz de dateO aceeasi baz de date poate fi privit din diverse perspective rezultnd

    descrieri diferite. Termenul consacrat pentru descrierea structurii unei baze de date

  • 7/31/2019 Baze de Date on Line

    11/96

    Concepte i problematic 15

    este acela de schema. n literatura de specialitate exist o clasificare pe trei nivele aacestor descrieri: fizic, conceptual i extern.

    Nivelul fizic

    Schema fizic este descrierea bazei de date din perspectiva stocrii sale pedispozitivele fizice: identificarea discurilor i a cilor unde este stocat, numelefiierelor care formeaz baza de date, structura fizic a acestora, etc.

    Nivelul conceptual

    Descrierea bazei de date la acest nivel poart numele de schema conceptual(numita uneori i schema logic) a bazei de date. Ea const ntr-o descriereabstract dar exact a structurii acesteia, lasnd la o parte detaliile fizice deimplementare.

    Nivelul extern

    Diferitele categorii de utilizatori ai unei baze de date au nevoie n activitatealor doar de poriuni specifice ale acesteia. Descrierea acestor poriuni poartnumele de scheme externe. O baz de date are deci asociate o singur schemfizic i o singur schem conceptual dar mai multe scheme externe.

    Independena datelorExistena celor trei nivele de descriere permite definirea conceptului de

    independen ntre datele stocate n baza de date i aplicaiile care utilizeaz acestedate.

    Conceptul de independen a datelor a aprut o dat cu dezvoltarea sistemelorcomplexe de aplicaii pentru care cablarea informaiilor structurale n programconstituie o bariera n calea dezvoltrii i modificrii acestora. n lumea reala oriceoperaie de modificare a bazei de date a unei aplicaii se msoar i prin prismacosturilor materiale necesare modificrii programelor care o folosesc. Exist doutipuri de independen:

    Independena logic reprezint posibilitatea de schimbare a schemeiconceptuale a bazei de date fr modificarea schemelor externe. Condiia este camodificarea s nu elimine nici unul dintre elementele necesare translaiei de laschema extern la schema conceptual.

    Independena fizic reprezint posibilitatea de schimbare a schemeifizice a bazei de date fr modificarea schemei conceptuale i implicit aschemelor externe. Aceasta d posibilitatea reorganizrii fizice a bazei de datefr afectarea aplicaiilor care o folosesc.

  • 7/31/2019 Baze de Date on Line

    12/96

    2. MODELAREA DATELOR

    Proiectarea corect a structurii unei baze de date relaionale este o premisfundamental n scrierea programelor de aplicaie i n funcionarea lor franomaliile care pot apare n cazul unei structuri defectuoase. Acest capitol prezintun model de date folosit n proiectarea conceptual de nivel nalt numit modelulentitate asociere (EA) n varianta clasic (cu unele extensii). n capitolul urmtorvor fi prezentate regulile de transformare din modelul entitate-asociere n modelulrelaional.

    2.1. Etapele dezvoltrii unei aplicaiiProiectarea structurii bazelor de date relaionale este un domeniu n care

    cercetrile au evoluat spre elaborarea unor metodologii teoretice i a unorinstrumente software care asigur un grad ridicat de normalizare a schemelor derelaie, pstrarea integritii, evitarea anomaliilor datorate unei proiectrinesistematice i eliminarea subiectivismului proiectantului prin nlocuirea lui cuexactitatea metodei.

    Pan la apariia unor astfel de metodologii se pornea de la o colecie de tabelei de la dependenele funcionale i multivalorice asociate i se ajungea, prinaplicarea unor algoritmi sau metode de normalizare la schema dorit a bazei dedate. Aceast abordare de tip bottom-up creeaz ns dificulti n cazul bazelor dedate complexe n care numrul de tabele i de dependene este mare. Probabilitateaca unele interdependene ntre date s nu fie sesizate n procesul de proiectare esten aceste cazuri ridicat rezultnd n exploatare anomalii care duc la reluri aleciclului analiza cerinelor schema bazei de date programe de aplicaie.

    Cercetrile n domeniul proiectrii schemei conceptuale s-au concentrat pegsirea unor metodologii top-down pentru obinerea unei structuri optime a BD.Ele au fost influenate de rezultatele obinute n domenii care folosesc bazele dedate: inteligena artificial, proiectarea asistat de calculator, abordarea orientat pe

    obiecte.Impactul conceptelor de abstractizare i generalizare precum i elaborareaunui model de descriere informal a datelor, i anume modelul entitate-asociere(EA), au dus la gsirea unor ci algoritmizabile de proiectare optim a bazelor dedate. Modelul entitate-asociere este n acest moment cel mai popular model decomunicare a structurii bazelor de date datorit intuitivitii i simplitiielementelor sale. mbuntirile sale ulterioare prin folosirea abstractizrilor igeneralizrilor au dus la crearea de variante ale modelului, dou dintre acestea fiinddescrise n acest capitol.

    Extensiile modelului EA au aprut i pentru alte necesiti:

  • 7/31/2019 Baze de Date on Line

    13/96

    Modelarea datelor 17

    modelarea cerinelor de secretizare a datelor, documentarea programelor de aplicaie i uurarea comunicrii ntre

    proiectantul de sistem i utilizatorul obinuit, proiectarea bazelor de date complexe pe poriuni i integrarea ulterioar a

    acestora (aa numita integrare a vederilor).Avantajul principal al modelului EA este acela al simplitii sale i al

    caracterului su intuitiv. Rezultatul proiectrii const ntr-o diagram entitate-asociere care poate fi apoi translatat n modelul de date folosit de sistemul degestiune a bazelor de date ales pentru dezvoltarea aplicaiei.

    Analiza de sistemn aceast etap se realizeaz analiza segmentului din lumea real care va fi

    gestionat de aplicaia respectiv. Rezult o specificaie neformalizat a cerinelorconstnd din dou componente:

    1. Cerine privind coninutul bazei de date: categoriile de date care vor fistocate i interdependenele dintre acestea.

    2. Cerine privind prelucrrile efectuate de aplicaie: prelucrrile efectuateasupra datelor, arborele de meniuri al aplicaiei, machetele formatelor deintroducere i prezentare a datelor i ale rapoartelor tiprite de aceasta.

    n general aceast etap nu poate fi asistat prin programe de tip CASE darexist reguli care ajut proiectantul n realizarea sa. Activitile desfurate includ: Analiza activitii desfurate la momentul respectiv de beneficiarul aplicaiei

    sau de o mulime reprezentativ de beneficiari n cazul aplicaiilor de uzgeneral.

    Analiza coninutului de date i a funcionalitii aplicaiilor software - dacexist - care vor fi nlocuite de noua aplicaie incluznd meniuri, machete ecrani machete de rapoarte.

    Analiza formularelor tipizate i a altor documente utilizate de beneficiar pentrurealizarea activitii respective.

    Identificarea tuturor interdependenelor dintre datele care vor fi stocate n baza

    de date i a restriciilor privind valorile pe care le pot lua anumite categorii dedate. Identificarea - dac este cazul - a prelucrrilor care se declaneaz automat att

    n cazul modificrii bazei de date cat i la momente prestabilite de timp (deexemplu sfrit de lun, de an, etc.)

    Identificarea operaiilor care sunt necesare beneficiarului n activitatea curentdar care n acest moment nu sunt realizate prin intermediul aplicaiilor softwarefolosite precum i a operaiilor care pot fi incluse n mod natural n nouaaplicaie.

  • 7/31/2019 Baze de Date on Line

    14/96

    18 BAZE DE DATE ON-LINE

    Identificarea bazelor de date existente care pot fi folosite de noua aplicaie -direct sau printr-un import iniial de date - evitndu-se n acest felreintroducerea manual a acestora.

    Identificarea modalitilor de transfer de date ntre noua aplicaie i alteaplicaii care ruleaz deja la beneficiar i care vor fi folosite i n viitor de ctreacesta.

    Identificarea necesitilor privind datele i prelucrrile care pot fi n viitornecesare beneficiarului, deci a posibilelor dezvoltri n timp ale aplicaiei.

    Aceast etap este efectuat de personal calificat avnd n vedere c

    rezultatele sale sunt baza de la care se pleac n etapele urmtoare, eventualeleerori putnd fi corectate ulterior cu costuri semnificative.

    Proiectarea conceptual a bazei de date

    n aceast etap, pornind de la rezultatele analizei de sistem, se realizeazmodelarea cerinelor privind datele folosind un model de nivel nalt. Cel mai

    popular model folosit este modelul entitate-asociere (EA). Actualmente exist pepia numeroase instrumente CASE care folosesc diverse variante ale modelului.Motivele pentru care a fost ales sunt urmtoarele: Nu este legat direct de nici unul dintre modelele folosite de sistemele de

    gestiune a bazelor de date (relaional sau orientat obiect) dar exist algoritmi

    bine pui la punct de transformare din model EA n celelalte modele de date. Este intuitiv, rezultatul modelrii fiind o diagram care definete att datele

    stocate n baza de date ct i interdependenele dintre acestea. Poate fi uor de neles de nespecialiti. Aceast caracteristic este foarte

    important n momentul n care se face punerea de acord cu beneficiarul asuprastructurii bazei de date a aplicaiei, evitndu-se n acest fel o proiectareneconform cu realitatea sau cu cerinele exprimate de acesta.

    Proiectarea se poate face pe poriuni, diagramele pariale rezultate putnd fiapoi integrate pe baza unor algoritmi i metode bine puse la punct.

    Transformare n model relaional

    n aceast etap entitile i asocierile care formeaz diagrama EA setransform pe baza unor reguli clare n structura relaional a bazei de date. Rezultschema preliminar a acesteia format din tabele (relaii n terminologiarelaional), coloanele acestora (atribute ale relaiilor) i constrngerile deintegritate care pot fi deduse automat din diagrama incluznd uneleinterdependene ntre date numite i dependene funcionale. n capitolul 3 estedescris o metod de transformare din modelul EA clasic n modelul relaional. ncazul variantei specifice uneltelor CASE transformarea se face automat de ctreacestea.

  • 7/31/2019 Baze de Date on Line

    15/96

    Modelarea datelor 19

    Normalizare

    Exist o serie de reguli care descriu ce nseamn o structur corect a uneitabele i care definesc aa numitele forme normale. Pe baza structurii bazei de datei a dependenelor rezultate att din transformarea n model relaional ct i a altordependene identificate de proiectant n analiza de sistem se poate face o operaienumit normalizare modificnd structura bazei de date astfel nct toate tabeleledin aceasta s fie n forma normal dorit. Capitolul 3 conine definiia formelornormale uzuale i descrierea unor algoritmi de normalizare care sunt folosii deuneltele CASE pentru efectuarea automat a operaiei.

    Implementarea specific sistemului de gestiune folositn aceast etap se realizeaz crearea structurii bazei de date obinut n etapa

    precedent pe baza facilitilor oferite de sistemul de gestiune a bazelor de dateales. Rezultatul ei este programul de creare scris n limbajul de definiie a dateloracceptat de SGBD-ul utilizat. Iat un exemplu:

    Schema conceptual:Student(CodStud:Numeric, Nume:ir, DataN:Dat)

    Program de creare (SQL-Oracle):Create table Student(

    CodStud Number(5) Primary Key,

    Nume Varchar(40),

    DataN Date);Programul conine att definirea tabelelor ct i definirea celorlalte obiecte ale

    bazei de date i a interdependenelor dintre acestea (de exemplu constrngerile deintegritate intra-tabel i inter-tabele). De asemenea aici se fac i toate operaiile

    privind proiectarea la nivel fizic a bazei de date. n cazul folosirii unor unelteCASE programul de creare poate fi generat i executat automat.

    Prezentm n continuare elementele care definesc modelul entitate asociere nvarianta clasic i cteva elemente despre modelul utilizat n cazul instrumentelorCASE.

    2.2. Modelul entitate-asociere clasic

    Acest model a fost introdus de P. P. Chen n 1976 ([Ch 76]). El se constituientr-o abordare de tip grafic a proiectrii bazelor de date i a fost adoptat decomunitatea tiinific precum i de productorii de software n domeniu datoritsimplitii i expresivitii sale.

    Elementele modelului

    Modelul entitate-asociere permite reprezentarea informaiilor despre structurabazelor de date folosind trei elemente de construcie: entiti, atribute ale entitilori asocieri ntre entiti. Definiia lor informal este urmtoarea:

  • 7/31/2019 Baze de Date on Line

    16/96

    20 BAZE DE DATE ON-LINE

    Entitile modeleaz clase de obiecte concrete sau abstracte despre care secolecteaz informaii, au existen independent i pot fi identificate n mod unic.Exemple de entiti: Studeni, Orae, Angajai, etc. Ele definesc de obicei persoane,amplasamente, obiecte sau evenimente cu importan informaional. Membrii uneiclase care formeaz o astfel de entitate poart numele de instane ale acelei entiti.De remarcat c ntreaga literatur de specialitate definete nti conceptul demulime de entiti (sau tip de entiti) pentru ca apoi s adopte pentru uurinaexprimrii prescurtarea de entitate pentru acest concept. Deci entitatea este unobiect generic care reprezint mulimea tuturor instanelor sale.

    Entitile sunt de dou categorii:

    Entiti independente (sau tari) sunt cele care au existen independent de alteentiti, Entiti dependente (sau slabe) sunt formate din instane care i justific

    ncadrarea n clasa respectiv doar atta timp ct ntr-o alt entitate (tat) existo anumit instan de care sunt dependente. De exemplu n cazul unei baze dedate de personal, fiecare instan a entitii COPII rmne n clasa respectiv(copiii angajailor) att timp ct n entitatea ANGAJAI exist instanareprezentnd pe tatl/mama acelui copil.

    Elemental modelului

    Tip Reprezentare

    Entitate Tare

    Slab

    Atribut De identificare

    DeDescriere

    Asociere Asociaz 1-2entiti

    Nume asociere

    Nume

    Nume

    Numeatribut

    Nume

    atribut

  • 7/31/2019 Baze de Date on Line

    17/96

    Modelarea datelor 21

    Asociaz maimult de 2 entiti(exemplu: 3entiti)

    3: 6:

    . . . .

    Fig. 2.1. Convenia de reprezentare a elementelor modelului EA

    Atributele modeleaz proprieti atomice distincte ale entitilor. De exempluentitatea STUDENI poate avea ca atribute Matricola, Nume, Prenume, Vrsta,Anul, Grupa, etc. n procesul de modelare vor fi luate n considerare doar acele

    proprieti ale entitilor care sunt semnificative pentru aplicaia respectiv. Dinacest motiv, la entitatea STUDENI nu vom lua n considerare caracteristici caTalia sau Culoarea_prului acestea nefiind necesare pentru baza de date auniversitii (astfel de atribute ar putea exista de exemplu ntr-o baz de date

    privind personalul militar).Atributele unei entiti sunt de dou feluri:

    1. atributele de identificare (formnd mpreun identificatorul entitii) reprezintacea mulime de atribute care permit distincia ntre instanele aceleiai entiti

    2. atributele de descriere (sau descriptori) sunt folosii pentru memorareacaracteristicilor suplimentare ale instanelor.

    n exemplul de mai sus Matricola este atribut de identificare (deoarece nu potexista doi studeni cu aceeai matricol ntr-o facultate) pe cnd celelalte atributesunt descriptori.

    Asocierile modeleaz interdependenele dintre clasele de obiecte reprezentateprin entiti. De exemplu ntre entitile STUDENI i FACULTI se poatefigura o asociere NSCRIS_LA care descrie mprirea studenilor pe faculti.

    n crearea diagramei nu vor fi luate n consideraie dect interdependenelecare sunt necesare aplicaiei respective, n lumea real putnd exista ntre entitilediagramei i alte asocieri care nu sunt semnificative n contextul dat.

    Figura 2.1. prezint convenia de reprezentare grafic a celor trei tipuri deconstrucii care particip la formarea unei diagrame EA. Se observ c:

    Extensii ale modeluluiModelul entitate-asociere clasic are unele lipsuri n ceea ce privete

    posibilitatea modelrii caracteristicilor asociate unor subclase de obiecte modelateprin simple entiti. Pentru aceasta, la modelul original au fost adugate dou noiconcepte: ierarhia de generalizare i ierarhia de incluziune.

    Definiie (ierarhia de incluziune): O entitate E1 este o submulime a entitiiE (sau este inclus n entitatea E) dac fiecare instan a lui E1 este de asemenea oinstan a lui E.

  • 7/31/2019 Baze de Date on Line

    18/96

    22 BAZE DE DATE ON-LINE

    Un exemplu de incluziune este definirea n cadrul entitii ANGAJAI a unorsubclase modelate prin entitile INGINERI, ECONOMITI iCOLABORATORI.

    n cazul ierarhiei de incluziune entitile fiu pot s nu fie disjuncte dou ctedou. De asemenea reuniunea lor poate s nu acopere n ntregime entitatea tat:exist angajai care nu sunt nici ingineri, nici economiti i nici colaboratori.

    Definiie (ierarhia de generalizare): O entitate E este generalizareaentitilor E1, E2, ..., En dac orice instan a lui E este de asemenea instan n unai numai una din entitile E1, E2, ..., En.

    Un exemplu de generalizare este clasarea instanelor entitii ANGAJAI n

    subclasele BARBAI i FEMEI.Caracteristica ierarhiei de generalizare este c din punct de vedere matematicentitile fiu reprezint o partiie a entitii tat:

    a. E1 E2 ... En = E ib. Ei Ej = pentru orice i j din intervalul 1..nIerarhiile de incluziune i generalizare se folosesc doar n cazul n care pentru

    subclasele unor clase modelate prin entiti este nevoie de stocarea unor informaiisuplimentare specifice.

    Convenia grafic de reprezentare a celor dou tipuri de ierarhii se gsete nfig. 2.2.

    Element ReprezentareIerarhie de incluziune

    E

    E1 E2 E3

  • 7/31/2019 Baze de Date on Line

    19/96

    Modelarea datelor 23

    Ierarhie de generalizare

    Fig. 2.2. Convenia grafic de reprezentare grafic a ierarhiilor

    Caracteristici ale elementelor modelului

    Aa cum entitile au atribute care specific diversele proprieti ale clasei deobiecte modelate, i asocierile au caracteristici care aduc informaii suplimentare.Acestea sunt urmtoarele:

    Gradul asocieriiEste o valoare numeric ntreag i este dat de numrul de entiti care

    particip la acea asociere. Asocierile de grad 1, 2 i 3 se mai numesc i asocieriunare, binare i respectiv ternare.

    Tutor nscris_la

    Alocare

    Fig. 2.3. Exemple de asocieri de grad 1, 2 i 3

    PROIECT

    FACULTATE

    STUDENT

    CALCULATOR

    E

    E1 E2

    Criteriu

  • 7/31/2019 Baze de Date on Line

    20/96

    24 BAZE DE DATE ON-LINE

    Conectivitatea asocierii

    Este specific fiecrei ramuri a unei asocieri i poate avea una din urmtoareledou valori: unu sau multi. Determinarea ei pentru ramura spre o entitate E se faceastfel: fixnd arbitrar cte o instan pentru celelalte entiti care particip laasociere se pune ntrebarea: cte instane ale lui E pot fi conectate cu acestea?

    Dac poate fi cel mult una, conectivitatea ramurii este unu, altfelconectivitatea este multi.

    Pentru exemplul din figura 2.3. putem avea: asocierea TUTOR de tip unu-unusau multi-uni, asocierea NSCRIS_LA de tip multi-unu (multi spre STUDENT) saumulti-multi, iar pentru asocierea ternar ALOCARE multi (STUDENT)-unu-unu.

    Convenia de reprezentare grafica: ramurile 'unu' vor fi reprezentate sub formade sgeat.

    Obligativitatea asocierii

    Ca i conectivitatea, aceasta se determin pentru fiecare ramur i poate aveadoar una din urmtoarele valori: obligatorie sau opional. Determinarea ei pentruramura spre o entitate E se face astfel: fixnd arbitrar cte o instan pentrucelelalte entiti care particip la asociere se pune ntrebarea: este obligatoriu sexiste o instan a lui E asociat cu acestea? Dac rspunsul este 'Da' ramura esteobligatorie altfel este opional.

    Convenia de reprezentare grafic a clasei de apartenen folosit n continuare

    este urmtoarea: ramurile obligatorii vor fi reprezentate prin linie continu iar celeopionale prin linie ntrerupt. n figura 2.4 este prezentat diagrama anterioaravnd figurat i obligativitatea.

    Atributele asocierilor

    n unele cazuri o anumit informaie descriptiv nu este asociat cu o clas deobiecte ci cu un ansamblu de clase diferite modelate fiecare prin entiti. n acestcaz aceasta va fi modelat ca un atribut al asocierii dintre entitile respective.

    Rolul

    n cazul n care de la o asociere pornesc mai multe ramuri ctre aceeaientitate, fiecreia dintre acestea i se poate asocia un rol. Acesta arat semnificaiilediferite pe care le are aceeai entitate n cadrul asocierii respective.

    tutorTutor nscris_la

    discipol

    FACULTATESTUDENT

  • 7/31/2019 Baze de Date on Line

    21/96

    Modelarea datelor 25

    Alocare

    Fig. 2.4. Reprezentarea obligativitii. Roluri

    Criterii de modelare

    a. Clasificarea n entiti i atributeDei definiia noiunilor de entitate, atribut, asociere este destul de simpl, n

    practica modelrii apar dificulti n clasificarea diverselor informaii ntr-una dinaceste categorii. Pentru a putea clasifica corect informaiile, exist cteva regulicare trebuie respectate i pe care le prezentm n continuare.

    Regula 1. Entitile au informaii descriptive, pe cnd atributele nu posedastfel de informaii.

    De exemplu dac despre un ORA este necesar stocarea n baza de date aunor informaii ca JUDE, POPULAIE, etc. atunci ORA va fi o entitate. Dacsingura informaie necesar este numele su atunci NUME_ORA va fi un atributal altei entiti.

    Regula 2. Atributele multivalorice vor fi reclasificate ca entiti.Exemplu:

    Are_Sediu_n

    Regula 3. Atributele unei entiti care au o asociere multi-unu cu o altentitate vor fi reclasificate ca entiti.

    Exemplu:

    Regula 4. Atributele vor fi ataate la entitile pe care le descriu n modnemijlocit.

    Regula 5. Folosirea identificatorilor compui va fi evitat. n model relaionalpentru atributele de acest fel se construiesc de regul structuri de cutare rapid(indeci) care funcioneaz cu att mai lent cu ct complexitatea indecsului crete.

    PROIECT CALCULATOR

    LOCALITATEBANCANum

    e

    JUDEBANCA LOCALITATE

    Num

    e

  • 7/31/2019 Baze de Date on Line

    22/96

    26 BAZE DE DATE ON-LINE

    b. Identificarea ierarhiilor de generalizare i incluziune.

    n cazul n care despre anumite subclase ale unei clase de obiecte existinformaii specifice, clasa i subclasele (care la pasul anterior au fost catalogate caentiti) sunt interconectate ntr-o ierarhie de incluziune sau generalizare, dup cumeste cazul. La acest pas se face i o reataare a atributelor pentru evitarearedundanei, astfel:1. Tatl i fii unei ierarhii au acelai identificator.2. Descriptorii care apar i la tat i la fii se elimin de la fii.3. Descriptorii care apar la toi fii unei ierarhii de generalizare i nu apar la tat se

    mut la tat.

    c. Identificarea asocierilor

    n aceasta etap se trateaz informaiile care nu au fost clasificate ca entitisau atribute ci reprezint interdependene ntre clase de obiecte. Ele sunt modelateca asocieri ntre entiti. Pentru fiecare asociere se specific gradul, conectivitatea,obligativitatea i dac este cazul i atributele asocierii precum i rolurile ramurilorsale. Se elimin de asemenea asocierile redundante.

    d. Integrarea vederilor.

    n cazul proiectrii bazelor de date complexe, activitatea se desfoar uneoride ctre mai multe colective simultan, diagramele rezultate sunt apoi integrateeliminndu-se redundanele i inconsistenele.

    2.3. Modelul entitate-asociere clasicModelul clasic are o serie de dezavantaje, mai ales n ceea ce privete

    lizibilitatea diagramelor complexe. Pentru uneltele CASE care utilizeaz EA s-aales o variant modificat:

    Atributele unei entiti sunt nscrise n caseta acesteia. Este marcat tupullor:

    # Identificare* NOT NULLo Poate fi NULL

    Asocierile: Nu exist dect asocieri de grad 1 sau 2 cu conectivitate 1-1 sau1-M. Toate asocierile de grad mai mare ca 2 sau cele de grad 1 sau 2 cuconectivitate M-M sunt modelate ca entiti intersecie. Etichetarea nueste per asociere ci per capt de asociere (deci 2 etichete pentru fiecareasociere)

    Entitile: Identificatorul unei entiti poate fi format din atribute i/saucapete de asocieri. Pot exista entiti (de exemplu entiti intersecie) careau identificatorul format numai din capete de asociere. Marcajul este

    bararea captului respectiv de asociere.

  • 7/31/2019 Baze de Date on Line

    23/96

    Modelarea datelor 27

    Ierarhiile: Ierarhiile se numesc aici Subtipuri-Supertipuri. Entitile fiu suntfigurate ca incluse n caseta entitii tat. Exist n anumite variante doarierarhiile de generalizare (fr cele de incluziune).

    Exemplu de diagram:

    PentruUn Soie PentruUn PeUnAre

    Are Are

    So

    nscrisLaAre

    ALOCAREo NrOre

    CALCU-LATOR

    #* NrInvo Tip

    PROIECT

    #* IdP* NumeP

    STUDENT#* Matr* Nume* Grupa

    FACULT#* CodF* NumeF

  • 7/31/2019 Baze de Date on Line

    24/96

    28 BAZE DE DATE ON-LINE

  • 7/31/2019 Baze de Date on Line

    25/96

    3. MODELUL RELAIONAL

    O problem fundamental a unui SGBD este modul n care datele suntorganizate n vederea stocrii i exploatrii lor de ctre aplicaii.

    3.1. Modele de date: ierarhic, reea, relaional

    Din punct de vedere istoric, n anii 60 au existat dou modele de organizare adatelor care au fost apoi abandonate din cauza problemelor pe care le generau: Modelul ierarhic, folosit de IBM n sistemul IMS (care nc este unul dintre

    produsele furnizate de aceast firm), n care organizarea este sub formaarborescent: nodurile conin date i legturi (pointeri) ctre nodurile fiu(vezi http://www-306.ibm.com/software/data/ims/

    Modelul reea. n cadrul acestuia nregistrrile sunt structurate sub forma unuigraf orientat, fiecare nod putnd avea mai multe nregistrri tat i mai mulifii. Au existat mai multe sisteme de gestiune i limbaje de programaredezvoltate pe baza acestui model (de exemplu limbajul COBOL).Dezavantajul principal al acestor dou modele este c accesul la o nregistrare

    necesit navigarea prin arbore sau graf pentru a o localiza. Din acest motiv apar oserie de probleme mai ales legate de timpul necesar scrierii de noi programe i adetectrii anomaliilor care pot s apar n proiectarea bazei de date.

    Modelul relaional al datelor, folosit n acest moment de majoritateacovritoare a sistemelor de gestiune aflate pe pia a fost introdus n anul 1970

    prin articolul lui Edgar Frank Codd A Relational Model for Large SharedDatabanks. Acest model, n care datele sunt stocate sub form tabelar are o seriede avantaje care au dus la nlturarea celorlalte modele:

    Datele sunt stocate doar ca valori; nu exist pointeri sau navigare prindate;

    Face posibil dezvoltarea de limbaje de cereri de nivel nalt n care

    utilizatorul specific ce date dorete i nu cum se ajunge la rezultat, modul ncare este calculat acesta fiind n sarcina sistemului de gestiune (exemplu deastfel de limbaj: SQL)

    Furnizeaz o baz solid pentru problemele de corectitudine a datelor(redundan, anomalii, etc).

    Permite tratarea problemelor de independen a datelor (discutate ncapitolul 1).

    Este extensibil, putnd fi utilizat i pentru modelarea i manipulareade date complexe.

  • 7/31/2019 Baze de Date on Line

    26/96

    30 BAZE DE DATE ON-LINE

    3.2. Elementele de baz ale modelului relaional

    Domeniu

    Definiie: Domeniu (eng. Domain) = o mulime de valori avnd asociat unnume.

    Un domeniu se poate defini fie prin enumerarea elementelor sale fie prinspecificarea unor caracteristici definitorii ale acestora. Exemple: Nota = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} sau Nota = {n N* | n 1 i n 10} ir40 = {Mulimea irurilor de maxim 40 de caractere}

    Numr = {Mulimea numerelor ntregi pozitive din intervalul [0, 100000]}Din teoria mulimilor se cunoate noiunea de produs cartezian al unor

    mulimi: fiind date n domenii D1, D2, , Dn produsul lor cartezian este:D1 D2 Dn = { (v1, v2, , vn) | vi Di , i = 1, , n}n irul de domenii care particip la un produs cartezian unele se pot gsi n

    mod repetat:PC = Numr ir40 Numr Numr ir40 ir40

    Relaie

    Definiie: Relaie (eng. Relation) = o submulime a unui produs cartezianavnd asociat un nume.

    Termenul de relaie provine de asemenea din matematic. Un exemplu derelaie aparinnd produsului cartezian PC din paragraful urmtor este:

    Produse = { (101, Produs1, 30, 20, Firma1, Adresa1) , (105, Produs2,20, 23, Firma1, Adresa2), (124, Produs3, 10, 20, Firma1, Adresa1) }

    Elementele unei relaii sunt denumite n literatura de specialitate tupluri(engl. tuple). Relaia de mai sus conine doar 3 dintre elementele produsuluicartezian din care provine (3 tupluri).

    O reprezentare intuitiv pentru o relaie este o tabel n care fiecare element alrelaiei devine o linie i fiecare coloan corespunde unui domeniu:

    101

    Produs1 30

    20 Firma1 Adresa1

    105

    Produs2 20 23 Firma2 Adresa2

    124

    Produs3 10

    20 Firma1 Adresa1

    n fapt deci o relaie se reprezint printr-o tabel care conine date, fiecarecoloan avnd asociat un anumit tip de date, dat de domeniul din care provine.

    Atribut

    Deoarece o relaie are o reprezentare tabelar putem vorbi de coloan a uneirelaii. n mod obinuit, ntr-o tabel coloanele au un nume.

  • 7/31/2019 Baze de Date on Line

    27/96

    Modelul relaional 31

    Definiie: Atribut (eng. Attribute) = coloan a unei relaii avnd asociat unnume.

    Pentru relaia Produse putem fixa de exemplu urmtoarele nume de atribute:IdP Codul produsului (nu exist dou produse avnd acelai cod)

    NumeP numele produsuluiQty CantitateIdF Codul furnizorului (nu exist doi furnizori avnd acelai cod)

    NumeF Numele furnizoruluiAdresaF Adresa furnizoruluiProduse

    IdP NumeP Qty IdF NumeF AdresaF

    101 Produs1 30 20 Firma1 Adresa1105 Produs2 20 23 Firma2 Adresa2124 Produs3 10 20 Firma1 Adresa1

    Schema unei relaii

    n terminologia relaional structura unei relaiei este denumit i schemarelaiei.

    Definiie: Schema unei relaii (eng. Relation scheme) = numele relaieiurmat de lista atributelor sale i (eventual) de domeniul din care acestea provin.

    Exist mai multe modaliti prin care se poate specifica schema unei relaii.n exemplele urmtoare prezentm cteva dintre acestea cu referire la relaiaProduse:

    Produse(IdP, NumeP, Qty, IdF, NumeF, AdresaF)

    Produse(IdP: Numr, NumeP: ir40, Qty: Numr,IdF: Numr, NumeF: ir40, AdresaF:

    ir40)Produse = IdP, NumeP, Qty, IdF, NumeF, AdresaF

    n cazul prezentrii unora dintre elementele de teorie a bazelor de daterelaionale se folosesc i notaii de forma: R = ABCDE, cu semnificaia: schemarelaiei R conine 5 atribute notate cu A, B, C, D i respectiv E.

    Cheia unei relaii

    O relaie fiind o mulime (de tupluri) nu poate conine elemente duplicat spre deosebire de exemplu de un tabel Excel unde putem avea dubluri. Rezult ctuplurile pot fi deosebite ntre ele prin valorile aflate pe una sau mai multe coloanedin relaie.

    Definiie: Cheia unei relaii (eng. Relation key) este o mulime minimal deatribute ale cror valori identific n mod unic un tuplu al relaiei respective.

    Cheia unei relaii este o caracteristic a schemei acesteia i nu este determinatprin inspectarea valorilor aflate la un moment dat n relaie.

  • 7/31/2019 Baze de Date on Line

    28/96

    32 BAZE DE DATE ON-LINE

    n tabela Produse cele trei linii existente pot fi identificate unic de valorile depe 3 atribute (IdP, NumeP i Qty) dar numai IdP este cheie:

    O relaie poate avea mai multe chei. S ne imaginm o relaie Studeniconinnd date despre studenii romni ai unei faculti:

    Studeni (IdStud, NrMatricol, Nume, CNP, SerieCI,NumrCI)

    n acest caz avem mai multe chei: { IdStud }, { NrMatricol }, { CNP } i{SerieCI, NumrCI}.

    Observaie: Orice relaie are cel puin o cheie: deoarece ntr-o relaie nu potexista dou elemente identice, rezult c mulimea tuturor atributelor relaiei este

    cheie sau conine cel puin o cheie.

    Valori nule

    Uneori, unele elemente ale unei relaii (celule ale tabelei) nu au nici o valoareconcret. Se spune c n acel loc exist o valoare nul.

    Definiie: Valoare nul (eng. Null value) = o valoare diferit de oricare alta icare modeleaz o informaie necunoscut sau o informaie inaplicabil(=n poziiarespectiv nu trebuie s existe o valoare nenul).

    3.3. Transformarea diagramelor EA n modelulrelaionalProcesul de transformare are un algoritm foarte precis i este din aceast

    cauz pasul care se preteaz cel mai bine pentru crearea de instrumente softwarecare s-l asiste.

    Transformarea entitilor

    Fiecare entitate a diagramei se transform ntr-o schem de relaie avnd:Numele relaiei = Numele entitiiAtributele relaiei = Atributele entitiiCheia relaiei = Identificatorul entitii

    Transformarea asocierilor unare i binare 1-1 i 1-MFiecare asociere din aceast categorie va avea ca rezultat mbogireamulimii de atribute descriptive ale uneia dintre cele dou scheme rezultate la

    pasul anterior din entitile asociate, cu cheia celeilalte scheme. Aceste atributecare se adaug sunt chei strine (externe) deoarece ele sunt cheie dar n altschem de relaie. n cazul asocierilor multi-unu, se adaug identificatorul entitii unu n

    schema rezultat din entitatea multi n cazul asocierilor unu-unu, se adaug identificatorul unei entiti n schema

    rezultat din transformarea celeilalte.

  • 7/31/2019 Baze de Date on Line

    29/96

    Modelul relaional 33

    Transformarea asocierilor unare i binare M-M i a celor cugrad mai mare ca doi

    Fiecare asociere binar multi-multi i fiecare asociere cu grad mai mare cadoi se transform ntr-o schem de relaie astfel:

    Nume relaie = Nume asociereAtribute relaie = Reuniunea identificatorilor entitilor

    asociate la care se adaug atributele proprii ale asocieriiCheia relaiei = Conform tabelului urmtor

    Grad Conectivitate Cheia relaiei provenitedin asociereUnare multi (E) - multi (E) Cheie(E) +

    Redenumire(Cheie(E))Binare multi (E1) - multi (E2) Cheie(E1) + Cheie(E2)Ternare unu (E1) - unu (E2) - unu (E3) Cheie(E1)+Cheie(E2) sau

    Cheie(E1)+Cheie(E3) sauCheie(E2)+Cheie(E3) sau

    unu (E1) - unu (E2) - multi (E3) Cheie(E1)+Cheie(E3) sauCheie(E2)+Cheie(E3) sau

    unu (E1) - multi (E2) - multi (E3) Cheie(E2)+Cheie(E3)multi (E1) - multi (E2) - multi (E3) Cheie(E2)+Cheie(E3)+

    Cheie(E1)Pentru asocierile de grad mai mare ca 3 se procedeaz analog.

    3.4. Algebra relaional

    nc din primul su articol n care introduce modelul relaional, E.F. Coddpropune i un set de operatori pentru lucrul cu relaii. Cum o relaie este o mulimede tupluri o parte dintre aceti operatori provin direct din teoria mulimilor. Ceilalioperatori, introdui n aceast algebr pentru relaii (numit n literatura despecialitate algebra relaional) sunt specifici acesteia i au la baz operaii uzualecu tabele acestea fiind reprezentri intuitive pentru relaii.

    Dup apariia primelor sisteme de gestiune a bazelor de date relaionale s-aconstatat ns c aceast algebr nu nglobeaz o serie de situaii care apar n

    practic: n cazul execuiei unei cereri SQL pot s apar tabele rezultat n careexist linii duplicat. n plus, n cazul n care pe o tabel din baza de date nu a fostdefinit o cheie primar, putem s avem n aceasta mai multe linii identice.Problema liniilor duplicat intr n contradicie cu definiia unei relaii n care nu

    putem avea dou tupluri identice. Din acest motiv n acest subcapitol prezentmurmtoarele variante de operatori: Operatori ai algebrei relaionale clasice n care pornind de la una sau mai multe

    relaii obinem o relaie.

  • 7/31/2019 Baze de Date on Line

    30/96

    34 BAZE DE DATE ON-LINE

    Operatori ai algebrei pe multiseturi care lucreaz pe aa numitele multiseturi(n englez bags) care sunt asemntoare relaiilor dar n care putem aveaelemente duplicat.

    Operatori care lucreaz att pe relaii ct i pe multiseturi. Ei sunt o extensie aalgebrei relaionale i pe multiseturi i provin din necesitatea de a putea rescrieorice cerere SQL n termeni ai algebrei extinse.

    Algebra relaional clasic

    Exist mai muli operatori n cadrul acestei algebre, unii dintre ei fiind derivai(se pot rescrie n funcie de ali operatori). Putem mpari aceti operatori n doucategorii: Operatori derivai din teoria mulimilor. Operatori specifici algebrei relaionale

    Operatori derivai din teoria mulimilor

    Reuniunea: Fiind date dou relaii R i S, reuniunea lor, notata R S este orelaie care conine tuplurile care sunt fie n R, fie n S fie n ambele relaii. nrezultatul reuniunii nu apar tupluri duplicat.

    Pentru ca aceast operaie s poat fi executat cele dou relaii care sereunesc trebuie s aib scheme compatibile. Exemplu:A B C

    1 1 22 1 31 3 2

    Relaia R

    A B C

    4 1 22 1 31 3 25 1 7

    Relaia S

    A B C

    1 1 22 1 31 3 24 1 25 1 7

    Relaia R S

    Diferena: Fiind date dou relaii R i S, diferena lor, notat R - S este orelaie care conine tuplurile care sunt n R i nu sunt n S.

    i n cazul diferenei cele dou relaii care se reunesc trebuie s aib scheme

    compatibile. Exemplu:A B C1 1 22 1 31 3 2

    Relaia R

    A B C4 1 22 1 31 3 25 1 7

    Relaia S

    A B C1 1 2

    Relaia R - S

  • 7/31/2019 Baze de Date on Line

    31/96

    Modelul relaional 35

    Intersecia: Fiind date dou relaii R i S, intersecia lor, notat R S este orelaie care conine tuplurile care sunt i n R i n S. De asemenea cele dou relaiicare se reunesc trebuie s aib scheme compatibile.A B C1 1 22 1 31 3 2

    Relaia R

    A B C4 1 22 1 31 3 25 1 7

    Relaia S

    A B C2 1 31 3 2

    Relaia R S

    Produsul cartezian: Fiind date dou relaii R i S, produsul lor cartezian,notat R S este o relaie ale crei tupluri sunt formate prin concatenarea fiecreilinii a relaiei R cu fiecare linie a relaiei S. Rezult de aici urmtoarele: Numrul de atribute (coloane) ale lui R S este egal cu suma numerelor de

    atribute ale lui R i S Numrul de tupluri (linii) ale lui R S este egal cu produsul numerelor de

    tupluri ale lui R i S Dac n R i S avem atribute (coloane) cu acelai nume, n produsul cartezian

    R S vom avea atribute care au acelai nume. Pentru a le deosebi seprefixeaz numele atributului cu cel al relaiei din care provine (ex.: R.A iS.A, ca n exemplul urmtor)

    Operatori specifici algebrei relaionaleProiecia: Fiind dat o relaie R i o mulime de atribute ale acesteia X=A1,

    A2, An, proiecia lui R pe mulimea de atribute X este o relaie care se obinedin R lund doar coloanele din X (n aceasta ordine) i eliminnd eventualeletupluri duplicat.

    Notaia pentru selecie este urmtoarea:

    X(R) sau A1, A2, An (R)

    Exemplu: din relaia R de mai jos dorim s calculmB, C, E (R)

    A B C D E

    1 1 2 1 32 1 2 1 32 7 4 4 12 3 9 2 11 3 7 4 11 3 9 2 1

    Relaia R

    B C E

    1 2 37 4 13 9 13 7 1

    Rezultatul proieciei B, C, E (R)Observm c s-au eliminat dou liniiduplicat din rezultat (cele provenite dinliniile 2 i 6).

  • 7/31/2019 Baze de Date on Line

    32/96

    36 BAZE DE DATE ON-LINE

    Selecia (numita uneori restricia): Fiind dat o relaie R i o expresie logic F(o condiie), selecia lui R n raport cu F este o relaie care se obine din R lunddoar liniile care verific expresia logic F.

    Notaia pentru selecie este urmtoarea:F(R)Exemplu: din relaia R de mai sus dorim s calculm B+1 > A+C(R)

    obinem :A B C D E2 7 4 4 1

    Joinul general (numit i theta-join sau -join): fiind date dou relaii R i S,joinul lor (notat RFS) se obine din produsul cartezian al relaiilor R i S urmatde o selecie dup condiia F (numit i condiie de join). Denumirea de theta-joineste folosit din motive istorice, simbolul fiind folosit iniial pentru a desemna ocondiie.

    Rezult c:

    RFS = F(R S)

    Join natural: Joinul natural pentru dou relaii R i S (notat RS )se obinefcnd joinul celor dou relaii dup condiia coloanele cu aceeai semnificaie auvalori egale i eliminnd prin proiecie coloanele duplicat (cele dup care s-a fcut

    joinul). Exemplu:

    A B C1 1 22 1 31 3 2

    Relaia R

    A D E4 1 22 1 31 3 25 1 7

    Relaia S

    A B C D E1 1 2 3 21 3 2 3 22 1 3 1 3

    Relaia R S

    Join extern: n cazul n care o linie a unei tabele, oricare ar fi concatenarea eicu o alt linie din cealalt tabel, nu ndeplinete condiia de join, linia respectiv

    nu are corespondent n rezultat. n unele cazuri se dorete ns ca aceste linii sapar n rezultat, cu valori nule pe coloanele din cealalt tabel. Aceast operaiepoart numele de join extern (n englez outer join). Cum la un join particip doutabele, pot exista trei tipuri de join extern:

    Join extern stnga (left outer join), n care n rezultatapar toate liniile tabelei din stnga operatorului. Joinextern dreapta (right outer join), n care n rezultat apartoate liniile tabelei din dreapta operatorului.

  • 7/31/2019 Baze de Date on Line

    33/96

    Modelul relaional 37

    Join extern complet (full outer join), n care n rezultatapar toate liniile tabelei din stnga i din dreaptaoperatorului.

    Operatori folosii pentru multiseturi

    Aa cum am spus anterior, n practica bazelor de date ntr-o tabel sau unrezultat al unei cereri de regsire de date pot s apar linii duplicat. n acest caz numai putem vorbi de relaii (care nu permit tupluri duplicat) ci de multiseturi (eng.

    bags). Prezentm pe scurt efectul unora dintre operatorii de mai sus aplicai

    multiseturilor:Reuniunea: Efectul este asemntor cu al reuniunii din algebra relaional dardin rezultatul final nu se elimin duplicatele.

    Intersecia, diferena, produsul cartezian, selecia, joinul, joinul natural,joinul extern: acelai mod de calcul ca i n cazul relaiilor dar: Multiseturile opernd pot s conin linii duplicat Din rezultat nu se elimin liniile duplicat

    Observaie: n cazul acestor operaii nu pot aprea linii duplicat dect dacoperanzii conin linii duplicat.

    Proiecia: Acelai mod de calcul ca i n cazul relaiilor dar la final nueliminm liniile duplicat.

    Operatori pentru relaii i multiseturiRedenumirea: Exist constructorul care permite redenumirea atributelor n

    rezultatul unei expresii relaionale sau pe multiseturi:Putem redenumi ntr-un rezultat un atribut prin construcia:

    Nume_vechi Nume_nouExemplu:

    BNume, CPrenume, EDataN (R)

    Eliminare duplicate: Acest operator se poate aplica doar pe multiseturi: fiinddat un multiset R, (R) este un multiset fr duplicate (deci o relaie)

    Grupare: Acest operator se poate aplica att relaiilor cat i multiseturilor.Forma operatorului de grupare este urmtoarea:

    Lista_atribute_i_funcii_statistice(R) Atributele din list sunt criterii de grupare. Ele apar n rezultatul returnat de

    operator Funciile statistice din list (ex.: MIN, MAX, SUM, AVG, COUNT) se

    calculeaz la nivelul fiecrui grup i de asemenea apar n rezultatuloperatoruluiSortare: Efectul este sortarea relaiei sau multisetului R n funcie de

    atributele din list. Forma operatorului de sortare este urmtoarea:

  • 7/31/2019 Baze de Date on Line

    34/96

    38 BAZE DE DATE ON-LINE

    Lista_atribute(R)Proiecie extins: Acest operator este analog proieciei obinuite dar permite

    atribute (coloane) calculate pentru rezultatul unei expresii pe relaii sau multiseturi.Forma sa este urmtoarea:

    Expresie-1, Expresie-2, Expresie-n (R)Exemplu:

    Nume, Medie*2Dublu (STUD)

    3.5. Calcul relaionalPe lng algebra relaional, cererile de regsire a informaiei ntr-o baz de

    date relaional pot fi exprimate i prin calcul relaional pe tupluri (CRT) sau calculrelaional pe domenii (CRD). n acest paragraf sunt prezentate pe scurt aceste doumodaliti de exprimare a cererilor.

    Calcul relaional pe tupluri

    n calculul relaional pe tupluri o cerere se exprim printr-o expresie de forma:{ t | (t) }

    unde t este o variabil tuplu iar o formul. Semnificaia expresiei estemulimea tuturor tuplurilor t care verific formula .

    Exemple: Expresia {t | R(t) S(t) } este echivalent reuniunii a dou relaii din

    algebra relaional. Analog {t | R(t) S(t) } reprezint intersecia a dou relaii. Expresia pentru proiecia lui R pe atributele i1, i2, , ik se poate scrie

    astfel:{ t(k) | (u)(R(u) t[1] = u[i1] t[2] = u[i2] t[k] = u[ik]) }

    Formula (s)(R(s)) spune c relaia R este nevidDin pcate unele din expresiile scrise n calculul relaional pe tupluri duc la

    rezultate infinite. De exemplu: dac R este o relaie finit expresia {t | R(t) } estede asemenea finit dar expresia {t | R(t) } este infinit (exist o infinitate detupluri care nu aparin lui R).

    Pentru a evita astfel de rezultate s-au introdus aa numitele expresii sigure.Acestea dau garania unui rezultat finit. Exemple de expresii care nu sunt sigure:

    {t | R(t) } sau {t | R(t) S(t) }

    Calcul relaional pe domenii

    n calculul relaional pe domenii nu avem variabile tuplu ci variabile dedomeniu, ele constituind elementele care formeaz tuplurile. Exemplele de mai susse pot rescrie astfel:

  • 7/31/2019 Baze de Date on Line

    35/96

    Modelul relaional 39

    Reuniunea a dou relaii R i S: {x1x2xn | R(x1x2xn) S(x1x2xn) }

    Intersecia a dou relaii R i S: {x1x2xn | R(x1x2xn) S(x1x2xn) }

    Selecia dup condiia valoarea pe prima coloan este mai mare dect100:

    {x1x2xn | R(x1x2xn) x1 > 100 }Toate expresiile de mai sus sunt sigure. Analog cu CRT, expresiile:{x1x2xn | R(x1x2xn) } i{x1x2xn | R(x1x2xn) S(x1x2xn) } nu sunt sigure.

    n literatura de specialitate exist demonstraia faptului c expresiile sigure dinCRT i CRD sunt echivalente cu expresii din algebra relaional i reciproc.

  • 7/31/2019 Baze de Date on Line

    36/96

    4. PROIECTAREA BAZELOR DE DATE

    O categorie de probleme care pot s apar n dezvoltarea unei aplicaiiconinnd o baz de date este cea a proiectrii incorecte a schemelor de relaie. nacest caz pot s apar o serie de anomalii care pot complica procesul de

    programare. Testarea corectitudinii unei scheme de relaie poate fi fcut cu

    ajutorul dependenelor funcionale (sau de alt tip) ataate acelei scheme.Acestea modeleaz corelaii care exist ntre datele din lumea real stocate n

    baza de date i, aa cum am menionat anterior, n cadrul teoriei bazelor de daterelaionale, ele reprezint criterii de corectitudine ale datelor ncrcate n baza dedate.

    n cazul n care o relaie nu are o schem corespunztoare ea trebuie nlocuitcu dou sau mai multe relaii (operaia este numit i descompunerea unei schemede relaie), fiecare relaie rezultat avnd o schem corect aflat n formanormal dorit.

    n cadrul acestui capitol vom prezenta elementele de proiectare a structuriiunei baze de date subliniate mai sus.

    4.1. Anomalii care apar n cazul proiectrii incorecteExemplificarea anomaliilor rezultate din proiectarea defectuoas a schemei

    unei relaii va fi fcut folosind tabela Produse din paragraful 3.1:

    ProduseIdP NumeP Qty IdF NumeF AdresaF101 Produs1 30 20 Firma1 Adresa1105 Produs2 20 23 Firma2 Adresa2124 Produs3 10 20 Firma1 Adresa1

    1. Redundana: Redundana reprezint stocarea n mod nejustificat aunei aceleiai informaii de mai multe ori n baza de date. Observm deexemplu c pentru fiecare produs este stocat numele i adresa furnizorului, deiele sunt unic determinate de codul acestuia.

    2. Anomalia de actualizare: n cazul actualizrii unei informaiiredundante, se poate ntmpla ca operaia s modifice unele apariii ale acesteiaiar altele s rmn cu vechea valoare.

  • 7/31/2019 Baze de Date on Line

    37/96

    Proiectarea bazelor de date 41

    3. Anomalia de inserare: Nu putem insera date despre un furnizor(numele i adresa sa) dect dac exist n stoc un produs furnizat de acesta.

    4. Anomalia de tergere: La tergerea din relaie a ultimului produs alunui furnizor se pierd automat i datele despre acesta.

    Aceste anomalii apar deoarece ntr-o aceeai tabel au fost stocate date despredou clase diferite de obiecte. n cazul proiectrii cu ajutorul modelului entitate-asociere diagrama corect este urmtoarea:

    furnizeaz

    Prin transformarea acestei diagrame se obin urmtoarele scheme de relaie:

    Furnizor(IdF, NumeF, AdresaF)

    Produse(IdP, NumeP, Qty, IdF)

    Rezult c informaia din relaia Produse trebuie stocat de fapt n dou relaii.Procesul de spargere a unei tabele care are o structur incorect n dou sau

    mai multe tabele se numeste descompunerea schemei de relaie. Pentru detectarearelaiilor care trebuiesc descompuse exist o serie de reguli de corectitudine,numite iforme normale. Definirea acestor forme normale se bazeaz pe noiuneade dependen (funcional sau multivaloric) prezentat n continuare.

    4.2. Dependene funcionale

    Notaii

    n paragrafele urmtoare vom folosi urmtoarea convenie de notare, ntalnitn multe lucrri din literatura de specialitate a domeniului:

    R, S, T, : scheme de relaii, r, s, : insante ale relaiilor R respectiv S, A, B, C, D, (litere mari de la nceputul alfabetului): atribute ale unei relaii, X, Y, Z, W, U, (litere mari de la sfritul alfabetului): mulimi de atribute

    dintr-o schema de relaie,

    PRODUSEFURNIZOR

    R

    IdF

    NumeF

    AdresaF

    IdP

    NumeP

    Qty

  • 7/31/2019 Baze de Date on Line

    38/96

    42 BAZE DE DATE ON-LINE

    X R: Mulimea de atribute X este inclus n mulimea atributelor relaiei R. Y X: Mulimea de atribute Y este inclus n mulimea de atribute X A X: Atributul A aparine mulimii de atribute X t, t1, t2, tupluri ale unei relaii, t[X]: valorile atributelor din X aflate n tuplul t, F, G, : mulimi de dependene funcionale ataate unei scheme de relaie

    n paragrafele urmtoare termenul generic de relaie semnific att schemarelaiei (descrierea structurii acesteia) ct i o instan a acesteia (coninutul de

    date de la un moment dat al relaiei).Definiia dependenelor funcionale

    Definiie: Fie: R o schema de relaie X, Y R doua mulimi de atribute ale acesteia.Spunem c X determina funcional pe Y(sau Y este determinat funcional de

    X) dac i numai dac oricare ar fi dou tupluri t1 i t2 din orice instan a lui Ratunci:

    t1[X] = t2[X] t1[Y] = t2[Y].sau, n cuvinte, dac dou tupluri au aceleai valori pe atributele X atunci ele au

    aceleai valori i pe atributele Y.Notaia pentru dependene funcionale este o sgeat de la stanga spre dreapta:X Y

    Exemplu: n relaia Produse din paragraful anterior putem scrie urmtoareledependene funcionale:

    IdP NumeP, Qty, IdF, NumeF, AdresaF,IdF NumeF, AdresaFAceste dependene arat c: dac dou produse au acelai IdP, este vorba de fapt de acelai produs dac dou produse au acelai IdF (Id furnizor) atunci i valorile pentru

    numele i adresa acestuia trebuie s fie aceleai.Observaie: Dependenele funcionale nu se determina din inspectarea

    coninutului de la un moment dat al relaiei ci din semnificaia atributelor acesteia.n exemplul prezentat, a doua dependen funcional arat c dac la dou produseapare acelai Id furnizor atunci numele i adresa furnizorului sunt de asemeneaaceleai (deoarece nu pot s existe doi furnizori diferii cu acelai Id).

    Axiome i reguli

    Pornind de la o mulime de dependene funcionale ataate unei scheme derelaie se pot deduce alte dependene funcionale valide. Exist o multitudine dereguli de inferen. Pentru a se putea face o prezentare formal a acestora, trei

  • 7/31/2019 Baze de Date on Line

    39/96

    Proiectarea bazelor de date 43

    dintre ele au fost alese ca axiome iar restul se pot deduce pornind de la ele. Celetrei axiome (numite n literatur iAxiomele lui Armstrong) sunt urmtoarele:

    A1. Reflexivitate: Fie R o schem de relaie i X R. Dac Y X atunci:X Y

    Toate dependenele funcionale care rezult din aceast axiom sunt numite idependene triviale. Ele nu spun nimic n plus fa de setul de dependene iniialdar sunt dependene funcionale valide.

    A2. Augmentare: Fie R o schem de relaie i X, Y, Z R. Dac X Yatunci i XZ YZ

    A3. Tranzitivitate: Fie R o schem de relaie i X, Y, Z R. Dac X Y iY Z atunci i X Z

    Pe baza acestor axiome se pot demonstra o serie de reguli de inferen pentrudependene funcionale dintre care cele mai importante sunt urmtoarele:

    R1. Descompunere: Fie R o schem de relaie i X, Y, Z R. Dac X Y iZ Y atunci i X Z

    Regula descompunerii ne permite s rescriem un set de dependenefuncionale astfel nct s obinem doar dependene care au n partea dreapt doarun singur atribut. Sa presupunem c avem o dependen funcional de forma:

    X A1A2A3An

    Atunci ea poate fi nlocuit cu urmtoarele n dependene funcionale:X A1, X A2,X A3,. . ., X AnR2. Reuniune: Fie R o schem de relaie i X, Y, Z R. Daca X Y iX Z atunci i X YZRezult i faptul c din cele n reguli obinute prin descompunere se poate

    obine dependena iniial, deci nlocuirea acesteia nu duce la pierderea vreuneicorelaii existente.

    R3. Pseudotranzitivitate: Fie R o schem de relaie i X, Y, Z, W R. DacX Y i YZ W atunci i XZ W

    nchiderea unei mulimi de DF

    Pornind de la un set de dependene funcionale F i utiliznd axiomele iregulile obinem o multitudine de alte dependene, triviale sau nu. Mulimea tuturordependenelor funcionale care se pot deduce din F se numete nchiderea mulimiide dependene F, notat cu F+. Definiia formal a acestei nchideri esteurmtoarea:

    F+ = {X Y | F X Y }Unde prin am notat faptul c dependena respectiv se poate deduce din F

    folosind axiomele i regulile.Mulimea F+ conine foarte multe dependene, inclusiv dependene triviale ca:

  • 7/31/2019 Baze de Date on Line

    40/96

    44 BAZE DE DATE ON-LINE

    ABC A, ABC B, ABC C, ABC AB, ABC AC, ABC BC sauABC ABC

    Ea nu se calculeaz, algoritmii care au nevoie de ea ocolind ntr-un fel saualtul calculul acesteia. Introducerea acestei noiuni s-a fcut pentru a explica, ncazul descompunerii unei scheme de relaie, care sunt dependenele motenite deelementele descompunerii de la relaia iniial (paragraful 4.3) i pentru a puteadefini formal alte noiuni:

    Acoperirea unei mulimi de DF: Fie R o schem de relaie i F, G doumulimi de dependene pentru R. Se spune c F acoper pe G dac i numai dac G F+.

    Echivalena a dou mulimi de dependene: Fie R o schem de relaie i F,G dou mulimi de dependene pentru R. Se spune c F e echivalent cu G dac inumai dac F acoper pe G i G acoper pe F (deci G F+ i F G+ , deci F+ =G+)

    Forma canonic a unei mulimi de DF: Din definiiile de mai sus rezult co mulime de dependene poate fi nlocuit cu alt echivalen coninnd altedependene. n cazul n care aceast mulime ndeplinete condiiile urmtoare sespune c este nform canonic:

    Orice dependen are n partea dreapt un singur atribut. Acest lucru sepoate obine aplicnd regula descompunerii prezentat anterior.

    Mulimea de dependene este minimal, nici una dintre dependene

    neputnd s fie dedus din celelalte (altfel spus nu exist dependene redundante).Exemplu: Fie R = ABCDE o schem de relaie i F mulimea de dependene

    funcionale asociat, cu F = { AB CDE, C DE }:Aplicm regula de descompunere. Obinem:F = { AB C, AB D, AB E, C D, C E }Mulimea nu este ns minimal deoarece AB D i AB E se pot deduce

    prin tranzitivitate din AB C mpreun cu C D, C E. Rezult c formacanonic a lui F este:

    F = { AB C, C D, C E }

    Chei i superchei

    n acest moment putem s dm o definiie echivalent a cheii pe bazadependenelor funcionale:

    Definiie: Fie R o schem de relaie, F mulimea de dependene funcionaleasociat i X R. Atunci X este cheie pentru R dac i numai dac:F X R (deci X R se poate deduce din F) i X este minimal (oricare ar fi Y X, Y X atunci (F Y R) - deci orice submulime strict a lui X nu maindeplinete condiia anterioar).

  • 7/31/2019 Baze de Date on Line

    41/96

    Proiectarea bazelor de date 45

    Deci o cheie determin funcional toate atributele relaiei i este minimal:nici o submulime strict a sa nu determina funcional pe R. Se observ faptul caceasta definiie este echivalent cu cea din capitolul 3.

    n cazul n care doar prima condiie este ndeplinit mulimea X se numetesupercheie.

    Observaie: Faptul c o supercheie nu este constrns de minimalitate nunseamn ns c ea nu poate fi minimal. Rezult c orice cheie este n acelaitimp i supercheie, reciproca nefiind ns adevrat.

    Exemplu: Fie R = ABCDE i F = { AB C, C D, C E }. Atunci AB

    este cheie pentru R: Din AB C, C D i C E obinem prin tranzitivitate AB D i AB

    E Din AB C, AB D i AB E obinem prin reuniune AB CDE Din AB CDE obinem (augmentare cu AB) AB ABCDE, deci AB

    RRezult c AB este supercheie pentru R. n paragrafele urmtoare vom vedea

    cum se poate demonstra i faptul c AB este minimal, deci este nu numaisupercheie ci chiar cheie pentru R.

    Proiecia unei mulimi de DF

    Aa cum s-a menionat n paragraful 4.2.4. nchiderea unei mulimi dedependene funcionale F+ a fost introdus i pentru a putea defini setul dedependene funcionale motenite de o schem de relaie obinut prindescompunerea unei scheme incorect proiectat. S lum cazul relaiei anterioareconinnd produsele dintr-un depozit:

    Produse = IdP, NumeP, Qty, IdF, NumeF, AdresaFavnd asociat mulimea de dependene:F = { IdPNumeP, IdPQty, IdPIdF, IdFNumeF, IdFAdresaF }Prin spargerea acestei relaii n dou obinem relaiile:Produse = IdP, NumeP, Qty, IdFFurnizori= IdF, NumeF, AdresaFAtributele relaiei iniiale se regsesc fie doar ntr-una dintre schemele

    rezultate fie n amndou. Se pune ns i problema: ce dependene motenesc celedou relaii de la relaia iniiala? Soluia este de a defini proiecia unei mulimi dedependene pe o mulime de atribute.

    Definiie. Fie o relaie R, o mulime asociat de dependene funcionale F i osubmulime de atribute S R .Proiecia mulimii de dependene F pe S, notat cuS(F) este mulimea dependenelor din F+ care au i partea stng i pe cea dreaptincluse n S. Formal putem scrie:

    S(F) = {X Y F+ | X, Y S }Pentru exemplul de mai sus proieciile sunt urmtoarele:

  • 7/31/2019 Baze de Date on Line

    42/96

    46 BAZE DE DATE ON-LINE

    FPRODUSE = PRODUSE(F) = { IdPNumeP, IdPQty, IdPIdF}FFURNIZORI = FURNIZORI (F) = { IdFNumeF, IdFAdresaF }

    Observaie: Atunci cnd descompunem o schem se poate ntmpla ca uneledintre dependenele schemei iniiale s se piard.

    Exemplu: Fie R = ABCD i F = { AB, BC, CD, DA }. n cazul n caredescompunem R n R1 = AB i R2 = CD atunci:

    FR1 = R2(F) ={ AB, BA }FR2 = R1(F) = { CD, DC }

    A doua dependen din fiecare mulime nu este n F dar este n F + (obinutprin tranzitivitate).

    Observm ns c dependenele BC i DA nu mai pot fi obinute nici dinFR1 nici din FR2 nici din reuniunea lor. n subcapitolul 4.4. va fi prezentat o metod

    prin care se poate testa dac prin descompunere dependenele iniiale sunt pstratesau nu.

    nchiderea unei mulimi de atribute

    Fie R o schem de relaie, F mulimea de dependene asociat i X R. Sepoate defini nchiderea mulimii de atribute X n raport cu F(notat X+ ) astfel:

    X+ = { A | X A F+ }

    X+ conine deci toate atributele care apar n partea dreapt a unei dependenedin F sau care se poate deduce din F folosind regulile i axiomele.

    Algoritm de calcul pentru X+

    Intrare: R o schem de relaie, F mulimea de dependene asociat i X RIeire: X+

    Metoda: se procedeaz iterativ astfel: Se pornete cu X( 0 ) = X Pentru i 1, X( i ) = X( i 1) { A | () Y A F cu Y X( i 1) } Oprirea se face atunci cnd X( i ) = X( i 1)

    Exemplu: Fie R = ABCDE i F = { A B, A C, D E }. Pentru a calcula

    (AD)+ procedm astfel: X( 0 ) = {A, D} Din A B, A C i D E rezult c X( 1 ) = X( 0 ) { B, C, E } = { A,

    D } { B, C , E} = ABCDE Oprire deoarece X( 1 ) = R deci oricte iteraii am face nu mai pot s apar

    noi atribute.Rezult c (AD)+ = ABCDE

    Scopul introducerii acestei noiuni este i cel de a putea ocoli n ali algoritmii definiii calculul lui F+ . Avem urmtorul rezultat teoretic:

  • 7/31/2019 Baze de Date on Line

    43/96

    Proiectarea bazelor de date 47

    Propoziie: Fie R o schem de relaie, F mulimea de dependene asociat iX, Y R. Atunci X Y se poare deduce din F dac i numai dac Y X+

    O alt definiie a cheii

    Pe baza propoziiei anterioare se poate da o alt definiie pentru cheia sausupercheia unei relaii, bazat nu pe F+ ca n paragraful 4.2.5 ci pe nchiderea uneimulimi de atribute.

    Definiie: Fie R o schem de relaie, F mulimea de dependene funcionaleasociat i X R. Atunci X este cheie pentru R dac i numai dac X + = R i X

    este minimal (oricare ar fi Y X, Y X atunci Y

    +

    R - deci orice submulimestrict a lui X nu mai ndeplinete condiia anterioar).Dac numai prima condiie este ndeplinit atunci X este supercheie pentru REchivalena acestei definiii cu cea anterioar este evident: X+ = R nseamn cf. propoziiei c X R minimalitatea este de asemenea definit echivalent: (F Y R) este

    echivalent cu ( Y+ = R) adic Y+ RFolosind aceast definiie se poate defini o euristic de gsire a cheilor unei

    relaii:

    Euristica de gsire a cheilor unei relaii

    Pentru gsirea cheilor unei relaii pornim de la observaia c atributele care nusunt n partea dreapt a nici unei dependene nu pot s apar n procesul denchidere a unei mulimi de atribute i deci ele aparin oricrei chei a relaiei.

    Intrare: R o schem de relaie i F mulimea de dependene funcionaleasociat (F n form canonic).

    Ieire: Cheia unic sau cheile alternative ale lui RMetoda:1. Se pornete de la mulimea de atribute X R care nu apar n partea

    dreapt a nici unei dependene2. Se calculeaz X+. Daca X+ = R atunci X este cheia unic minimal a

    relaiei R i calculul se oprete aici. Paii urmtori se efectueaz doar dac X+ R3. Se adaug la X cte un atribut din R - X+ obinndu-se o mulime de chei

    candidat.4. Se calculeaz X+ pentru fiecare dintre candidate. Daca se obin toate

    atributele lui R atunci acel X este o cheie a lui R.5. Se repet paii 3 i 4 pornind de la acele mulimi candidat X care nu sunt

    gsite ca i chei la pasul anterior. ntre mulimile candidat nu lum niciodat nconsiderare pe cele care conin o cheie gsit anterior.

    6. Procesul se oprete cnd nu se mai pot face augmentari.Exemplu: Fie R = ABCDE i F = { A B, B A , A C, D E }. Mulimea atributelor care nu apar n partea dreapt a nici unei dependene

    este X = D.

  • 7/31/2019 Baze de Date on Line

    44/96

    48 BAZE DE DATE ON-LINE

    Calculm (D)+. Obinem (D)+ = DE. Rezult c D nu este cheie unicpentru R

    Calculm mulimea de candidate: augmentm D cu atribute din R D + =ABCDE DE = ABC. Obinem AD, BD i CD

    Calculm nchiderile lor. Obinem (AD)+ = R, (BD)+ = R i (CD)+ = CDE R. Rezult c AD i BD sunt chei ale lui R dar CD nu e cheie.

    Calculam o nou mulime de candidate pornind de la CD. Putem augmentaCD cu atribute din R (CD)+ = ABCDE CDE = AB. Nici una dintre augmentrinu este ns posibil pentru c att ACD cat i BCD conin o cheie gsit anterior

    (AD respectiv BD). Procesul se oprete. Singurele chei ale lui R rmn AD i BD.

    4.3. Forme normale

    Exist cteva seturi de condiii care ne arat c o schem de relaie este corectproiectat n sensul c ea nu permite apariia anomaliilor prezentate la nceputulcapitolului.

    Dac schema ndeplinete cerinele unui anumit set de condiii se spune ceste n form normal asociat acelui set. n continuare sunt prezentate formelenormale Boyce-Codd i forma normal3. n finalul acestui capitol va fi prezentat

    i forma normal 4 care se definete n funcie de alt tip de dependene, i anumedependenele multivalorice.

    Forma normal Boyce-Codd (FNBC)

    Definiie: R o schem de relaie i F mulimea de dependene funcionaleasociat. Se spune c R este n forma normal Boyce-Codd dac i numai dacoricare ar fi o dependen netrivial X Y din F atunci X este supercheie pentru R

    Rezult c o schem de relaie este n FNBC dac i numai dac fiecaredependen din F are n partea stng o supercheie. Nu este necesar ca F s fie nforma canonic dar nu trebuie s conin dependene triviale (obinute din primaaxiom - de reflexivitate, de tipul AB A sau AB AB)

    Exemple:1. Relaia R = ABCDE avnd F = { A B, B A , A C, D E } nu esten forma normal Boyce-Codd deoarece are cheile AD i BD dar nici o dependennu are n partea stng o supercheie a lui R

    2. Relaia Produse = IdP, NumeP, Qty, IdF avnd asociat mulimea dedependene funcionale FPRODUSE = PRODUSE(F) = { IdPNumeP, IdPQty, IdPIdF} este n forma normal Boyce-Codd: cheia unica a relaiei este IdP i toatedependenele au n partea stng o supercheie (aa cum s-a menionat orice cheieeste n acelai timp i supercheie)

    3. Relaia Produse = IdP, NumeP, Qty, IdF, NumeF, AdresaF avnddependenele:

  • 7/31/2019 Baze de Date on Line

    45/96

    Proiectarea bazelor de date 49

    F = { IdPNumeP, IdPQty, IdPIdF, IdFNumeF, IdFAdresaF }nu este n forma normal Boyce-Codd: cheia unica este IdP dar exist

    dependene care nu au n partea stng o supercheie: IdFNumeF, IdFAdresaF

    Forma normal 3 (FN3)

    Pentru definiia formei normale 3 este necesar definirea noiunii de atributprim:

    Definiie. R o schem de relaie i F mulimea de dependene funcionaleasociat. Un atribut A R se numete atribut prim dac el aparine unei chei a lui

    R. Exemplu: R = ABCDE avnd F = { A B, B A , A C, D E }. Cumcheile relaiei sunt AD i BD rezult c n R sunt trei atribute prime: A, B i D.

    Definiie. R o schem de relaie i F mulimea de dependene funcionaleasociat. Se spune c R este n forma normal 3 dac i numai dac oricare ar fi odependen netrivial X A din F atunci X este supercheie pentru R sau A esteatribut prim.

    De remarcat c dac n F avem dependene care conin mai multe atribute npartea dreapt putem aplica regula de descompunere pentru a obine dependenecare n partea dreapt au cate un singur atribut.

    Observaie: Condiia de FNBC este inclus n definiia FN3. Din acest motiv

    orice relaie care este n FNBC este implicit i n FN3. Reciproca nu este adevrat.

    Rezult de asemenea c dac o schem de relaie nu este n FN3 ea nu poate finici n FNBC.

    Exemple:1. Relaia R = ABCD avnd F = { AB C, AB D, D A } are cheia unic

    AB. Relaia este n FN3 deoarece primele dou dependene au n partea stng

    o supercheie (AB) iar a treia dependen are n partea dreapta atributul prim A. Relaia nu este n FNBC deoarece a treia dependen violeaz definiia

    pentru aceast form normal (nu are n partea stng o supercheie.

    FN3FNBC

  • 7/31/2019 Baze de Date on Line

    46/96

    50 BAZE DE DATE ON-LINE

    2. Relaia R = ABCDE avnd F = { A B, B A , A C, D E } arecheile AD i BD. Rezult c:

    R nu este n FN3 deoarece dependenele 3 i 4 nu au nici supercheie npartea stng nici atribut prim n partea dreapt

    R nu e n FNBC deoarece nu e n FN33. Relaia R = ABCD avnd F = { A B, B C, C D, D A } are cheile

    A, B, C i D. Rezult c: R este n FNBC deoarece n partea stng a dependenelor sunt numai

    superchei R este n FN3 deoarece este n FNBC

    4.4. Descompunerea schemelor de relaiiAa cum s-a menionat anterior, n cazul n care o relaie din baza de date nu

    este ntr-o form normal bun (FNBC, FN3) pot s apar diverse anomalii. Soluiaeste nlocuirea relaiei respective cu dou sau mai multe relaii care s coninaceleai informaii dar care, fiecare n parte, este n forma normal dorit de

    proiectant.

    Definiia descompunerii unei scheme de relaie

    Procesul prin care se sparge o relaie n mai multe relaii se numete

    descompunerea unei scheme de relaie.Formal putem defini acest concept astfel:Definiie: Fie R o schem de relaie, R = A1 A2 Am .Se spune c = (R1, R2, , Rn) este o descompunere a lui R dac i numai

    dac R = R1 R2 RnSchemele R1, R2, , Rn conin deci atribute din R, fiecare atribut A i al schemei

    iniiale trebuind s se regseasc n cel puin una dintre ele. Nu este necesar caschemele s fie disjuncte (n practic ele au aproape ntotdeauna atribute comune).

    n exemplele de mai jos sunt prezentate cteva descompuneri valide ale unorscheme de relaii (unele ns incorecte din punct de vedere al pstrrii datelor i/saudependenelor iniiale):

    Exemplul 1: Fie relaia R = ABCDE avnd F = { A B, B A , A C, DE }.

    Putem avea descompuneri ca:1 = (ABC, DE), 2 = (ABCD, DE), 3 = (AB, CD, DE)Exemplul 2. Fie relaia Produse = IdP, NumeP, Qty, IdF, NumeF, AdresaF

    avnd dependenele funcionale:F = { IdPNumeP, IdPQty, IdPIdF, IdFNumeF, IdFAdresaF }Putem avea o multitudine de descompuneri printre care:1 = ( (IdP, NumeP, Qty, IdF); (NumeF, AdresaF) )2 = ( (IdP, NumeP, Qty, IdF); (IdF, NumeF, AdresaF) )3 = ( (IdP, NumeP); (Qty, IdF); (NumeF, AdresaF) )

  • 7/31/2019 Baze de Date on Line

    47/96

    Proiectarea bazelor de date 51

    Descompunerea acioneaz deci la nivelul schemei relaiei. Ce se ntmplns cu coninutulacesteia n cazul unei descompuneri?

    Fiecare relaie rezultat va moteni o parte dintre datele relaiei descompuse ianume proiecia acesteia pe mulimea de atribute a relaiei rezultat dindescompunere.

    S considerm o instan r a relaiei de schema R (instana unei relaii este oncrcare cu date corecte a acesteia). Atunci instanele pentru relaiile dindescompunerea sunt:

    ri = Ri (r)

    Descompuneri cu join fr pierderi

    Condiia pentru a nu se pierde date prin descompunere este ca relaia iniials poat fi reconstruit exact prin joinul natural al relaiilor rezultate, fr tupluri nminus sau n plus.

    Formal, definiia este urmtoarea:Definiie: Fie R o schem de relaie, F mulimea de dependene funcionale

    asociat i o descompunere = (R1, R2, , Rn) a lui R. Se spune c este odescompunere cu join fr pierderi n raport cu F(prescurtat j.f.p.) dac i numaidac pentru orice instan r a lui R care satisface dependenele F avem c:

    r1 r2 rn = r unde ri = Ri (r)Faptul c o descompunere are sau nu aceast proprietate se poate testa pornind

    doar de la lista atributelor relaiei iniiale, lista atributelor relaiilor dindescompunere i a mulimii de dependene funcionale asociat folosind urmtorulalgoritm

    Algoritm de testare a proprietii de j.f.p. pentru o descompunere

    Intrare: Schema de relaie R = A1 A2 Am , mulimea de dependenefuncionale F i o descompunere = (R1, R2, , Rn)

    Ieire: Verdictul dac are sau nu proprietatea j.f.p.Metoda:Se construiete o tabel avnd n linii i m coloane. Liniile sunt etichetate cu

    elementele descompunerii iar coloanele cu atributele relaiei R. Elementul (i,j) altabelei va fi egal cu aj dac Aj Ri sau bij altfel.

    Se parcurg dependenele X Y din F. Daca dou (sau mai multe) linii dintabel au aceiai simboli pe coloanele X aceste linii se egaleaz i pe coloanele dinY astfel:

    Dac pe o coloan din Y apare un aj atunci toate elementele de pe aceacoloan din liniile respective devin aj

  • 7/31/2019 Baze de Date on Line

    48/96

    52 BAZE DE DATE ON-LINE

    Dac pe o coloan din Y nu apare nici un aj atunci se alege unul dintreelementele de tip bij i toate elementele de pe acea coloan din liniile respectivedevin egale cu acel bij

    Procesul se oprete: Fie cnd s-a obinut o linie n tabela care conine doar a-uri, caz n care

    descompunerea are proprietatea j.f.p. Fie cnd la o parcurgere a dependenelor nu mai apar schimbri n tabel i

    nu s-a obinut o linie doar cu a-uri. n acest caz descompun