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
Top Related