CURSUL 2(Modelul Relaţional

)
Istoric: modelul ierarhic, modelul retea Fundamentele teoretice ale modelului relaţional Modelul relaţional a fost introdus de E. F. Codd în 1970 şi are la bază conceptul de relaţie definit în teoria matematică a mulţimilor ca fiind o submulţime a produsului cartezian al mai multor mulţimi: R ⊆ M1 × M2 × … × Mn. Relaţia poate fi definită şi în termenii logicii matematice. Fie m = (m1, m2, … , mn) ∈ M1 × M2 × … × Mn şi un predicat P(m1, m2, … , mn), atunci: [M1, M2 , … , Mn] R = ⎨(m1, m2, … , mn) / P (m1, m2, … , mn) = adevărat⎬. Familia de mulţimi pe care este definită relaţia se numeşte domeniu, iar dacă M1 = M2 = … = Mn, relaţia este omogenă. Numărul n se numeşte gradul relaţiei (aritatea relaţiei), un element al relaţiei t = (m1, m2, … , mn) este numit tuplu, iar numărul de tupluri indică cardinalul relaţiei. Schema unei relaţii este formată din numele relaţiei, atributele acesteia şi restricţiile de integritate. Domeniul este o noţiune mai cuprinzătoare decât atributul, reprezentând mulţimea tuturor valorilor posibile care definesc o anumită proprietate a unui obiect, spre deosebire de atribut, care reprezintă mulţimea valorilor existente la un moment dat în coloana pe care o desemnează în cadrul relaţiei. Într-o relaţie pot exista mai multe atribute care iau valori în aceleaşi domenii. Relaţiile se reprezintă într-o formă simplă prin tabele, supuse următoarelor restricţii: ‰ în fiecare coloană toate valorile sunt de acelaşi fel; ‰ fiecare valoare este un număr sau un şir de caractere (nu trebuie să fie grup sau ansamblu); ‰ ordinea liniilor în tabel nu este predefinită şi nu sunt admise duplicate; ‰ coloanele sunt identificate prin nume distincte care reprezintă atributele relaţiei. Privită prin prisma modelului relaţional, baza de date apare ca o colecţie de relaţii (tabele), în care fiecare coloană reprezintă un atribut distinct, iar fiecare rând, un tuplu distinct; de unde şi apelativul tabelă bidimensională. Tuplurile unei relaţii se pot identifica în mod unic prin intermediul valorilor unuia sau mai multor atribute (eventual toate atributele), care joacă rol de cheie primară a relaţiei respective. Se numeşte domeniu primar un domeniu pe care este definit un singur atribut drept cheie primară. Dându-se două relaţii R1 şi R2 cu atributele A1 şi A2 chei primare definite pe acelaşi domeniu primar D, spunem că A1 este cheie externă, dacă, utilizând o parte din valorile ei sau toate, putem regăsi tuplurile relaţiei R2. Altfel spus, un atribut al unei relaţii este cheie externă, dacă se regăseşte pe post de cheie primară într-o altă relaţie. Deoarece relaţiile reflectă un anumit aspect din realitate, acestea se supun unor restricţii care sunt de două tipuri: ‰ restricţii de integritate care depind de semantica valorilor domeniilor şi care cer ca relaţiile să se supună următoarelor reguli: 9 integritatea entităţii, prin care valorile cheii primare trebuie să fie diferite de zero; altfel cheia nu va mai fi identificator; 9 integritatea referirii, potrivit căreia valorile unei chei externe trebuie să refere tuplurile unei alte relaţii sau să fie nedefinite. ‰ alte restricţii care se aplică asupra domeniilor, reflectând anumite corelaţii de ordin valoric (egalitate, inegalitate). __________________________________________________________________________
Curs 2 BD NP 1/9

Operatorii de asamblare sunt operatori binari. 9 gradul tabelei LOC_ACTIVITATE este 2. Rica Marius Cheia externă … Cod loc activitate 11 11 … 12 Tabela LOC_ACTIVITATE referă Cheia primară Cod loc activitate 11 12 … Denumire Departament GMP Financiar …. ‰ coloanele tabelei sunt identificate prin nume distincte. 188 Unde: Nume şi prenume Ion Andrei Dan Marius ………. unde R este formată din n tupluri şi S este formată din m tupluri. care prelucrează relaţii în scopul obţinerii altor relaţii. care au aceeaşi semnificaţie ca şi în teoria mulţimilor. ‰ toate realizările unui atribut (aparţinând unei coloane) prezintă acelaşi tip şi formează un domeniu. 9 {115. având aceeaşi structură cu a relaţilor sursă şi conţinând m+n tupluri.188} domeniu de definiţie al atributului Nr Matricol. care pot genera toată clasa operatorilor relaţionali. diferenţa şi produsul cartezian. 118. Operatorii relaţionali se pot grupa în: • operatori de bază. __________________________________________________________________________ Curs 2 BD NP 2/9 . operatori unari şi operatori de extensie. are ca rezultat o a treia relaţie T. cu aceeaşi structură. Aceştia sunt: reuniunea. care primesc la intrare două relaţii şi generează la ieşire o singură relaţie. Reuniunea a două relaţii R şi S (RUS).. ‰ ordinea stocării tuplurilor în tabelă poate fi modificată fără restricţii. Algebra relaţională Algebra relaţională poate fi definită ca un set de operatori. Operatorii relaţionali de bază se împart în operatori de asamblare. ….Exemplu: Tabela SALARIATI Cheia primară Nr matricol 115 118 …. • operatori auxiliari. ‰ toate realizările unui atribut sunt atomice. fiecare coloană fiind rezervată unui atribut definit în schema relaţiei. Tabelele bazei de date respectă următoarele cerinţe: ‰ fiecare tuplu(rând al tabelei) este diferit de celelelte tupluri.

ale cărei tupluri se obţin prin eliminarea valorilor atributelor din R care nu apar în R1 şi prin suprimarea sau nesuprimarea tuplurilor multiple. A2. Din această clasă fac parte proiecţia şi selecţia. conţinând tuplurile identice aparţinând atât lui R cât şi lui S. Relaţia R A B a1 b1 a2 b2 Relaţia S C D E c1 d1 e1 c2 d2 e2 c3 d3 e3 Relaţia T Í RxS A B C D a1 b1 c1 d1 a1 b1 c2 d2 a1 b1 c3 d3 a2 b2 c1 d1 a2 b2 c2 d2 a2 b2 c3 d3 E e1 e2 e3 e1 e2 e3 Operatorii unari se aplică asupra unei relaţii şi generează o altă relaţie. Relaţia A B a1 b1 a2 b2 a4 b4 R C c1 c2 c4 Relaţia A B a3 b3 a4 b4 a5 b5 S C c3 c4 c5 Relaţia TÍ R∩S A B C a4 b4 c4 Relaţia R A B a1 b1 a2 b2 Relaţia S A B a3 b3 a4 b4 a5 b5 Diferenţa a două relaţii R şi S având aceeasi structură (R-S). Proiecţia relaţiei R cu structura R (A1. … . R1 = Π Ai1.Relaţia T Í (RUS) C C A B C c1 c3 a1 b1 c1 c2 c4 a2 b2 c2 c5 a3 b3 c3 a4 b4 c4 a5 b5 c5 Intersecţia a două relaţii R şi S cu aceeaşi structură (R∩S). cuprinzând mulţimea tuplurilor aparţinând lui R dar neaparţinând lui S.R1). An) după atributele Ai1. … . … . … . Intersecţia se poate realiza şi prin două operaţii de diferenţă : R1 ∩ R2 = R1 – (R1 – R2) = R2 – (R2 . Aip (ii ≠ ik şi p < n). Relaţia R A B a1 b1 a2 b2 Relaţia S A B a3 b3 a4 b4 a5 b5 Relaţia T Í R-S A B C a1 b1 c1 a2 b2 c2 C c1 c2 C c3 c4 c5 Produsul cartezian a două relaţii R şi S (RxS) este o relaţie T stocând mulţimea perechilor obţinute prin concatenarea înregistrărilor aparţinând lui R cu cele aparţinând lui S. (cu aceeaşi structură). este o relaţie T. este relaţia R1 cu structura R1 (Ai1. Aip). __________________________________________________________________________ Curs 2 BD NP 3/9 . este o relaţie T. Ai2. Ai2. Ai2. Aip (R).

prin intermediul proiecţiei. vom defini noţiunea de criteriu de selecţie (calificator) multi-atribut. ≤ . Dându-se două relaţii A (A1.A. ≥ .A=a2 A=a3) Relaţia R1 A B a2 b2 a3 b3 OR Altfel spus. Relaţia R1 A B C a1 b1 c1 Relaţia R2 B D b1 d1 b1 d2 Relaţia TÍJOIN(R1. ‰ dacă Q este de forma Ai θ Bj : unde θ = ⎨ < . dintr-un tabel cu un anumit număr de coloane se obţine unul cu un număr mai mic de coloane. Compunerea naturală este o echicompunere pe R1 şi R2 după toate atributele având acelaşi nume în R1 şi R2. concatenate cu fiecare tuplu din __________________________________________________________________________ Curs 2 BD NP 4/9 .Relaţia R A B a1 b1 a2 b2 a3 b3 C c1 c2 c3 D d1 d2 d3 R1ÍΠ (R. se numeşte echicompunere. ≥ . şi poate fi exprimată în funcţie de operatorii de bază. > .R2. În funcţie de calificatorul Q se disting mai multe tipuri de compuneri: ‰ dacă Q este de forma Ai = Bj .Bi = Bj) A B C D a1 b1 c1 d1 a1 b1 c1 d2 Diviziunea relaţiei R1 (A1. dar cu un număr mai mic de rânduri. A2. ale cărei tupluri satisfac criteriul specificat. ‰ dacă Q este de forma Ai = Aj se numeşte autocompunere. Spre exemplu. … . dintr-un tabel cu un anumit număr de coloane se obţine unul cu aceleaşi coloane. egale ca nume. prin operatorul de selecţie. Selecţia relaţiei R faţă de criteriul Q este relaţia R1 cu aceeaşi structură ca şi R. Ap) de grad p. Ci – constante Relaţia R A B a1 b1 a2 b2 a3 b3 R1ÍSELECTIE(R. ≠ ⎬ se numeşte θ compunere. urmată de o proiecţie care permite conservarea unuia dintre aceste atribute. unde θi = ⎨ < . > . Înainte de a descrie aceşti operatori. ceea ce face ca acesta să fie înlocuit cu operatorul de Join. A2 … An) de grad (p+m) prin relaţia R2 (Ap+1. …. A2. realizarea produsului cartezian este foarte costisitoare. Compunerea condiţională (Join) a două relaţii R1 şi R2 după calificatorul multiatribut Q este relaţia E ale cărei tupluri sunt cele ale produsului cartezian R1 x R2 care satisfac calificatorul Q. … . B2. Bn). Q = Ai1 θ1 C1 Λ Ai2 θ2 C2 Λ Aip θp Cp. formată din toate tuplurile care. ≠ ⎬ .B) Relaţia R1 A B a1 b1 a2 b2 a3 b2 Altfel spus. An) şi B (B1. Am) de grad m este relaţia E (A1. …. Q este un calificator multiatribut dacă este de forma: Q = Ai θ1 Bi Λ Ak θ2 An Λ …… Ap θ3 Bj ……etc. Aceştia joacă un rol foarte important în interogarea bazelor de date relaţionale. ≤ . Operatorii de extensie sunt: compunerea (Join) şi împărţirea (diviziunea).

…. în care se specifică doar „ce rezultat trebuie obţinut” şi nu succesiunea de acţiuni necesare pentru obţinerea acestuia. Tabela TRANZACŢII stochează date privitoare la tranzacţiile efectuate în timp de societatea de valori mobiliare la cererea clienţilor săi. Ei permit formalizarea pe un nivel înalt a operaţiilor de prelucrare a datelor. Tabela CLIENŢI stochează date privind clienţii unei societăţi de valori mobiliare. Studiu de caz Fie relaţiile:SOCIETATI CodSoc 101 102 103 111 123 131 CLIENTI CodId 1 2 3 TRANZACŢII NrOrdin 10123 10124 10125 10126 TRANZAZI NrOrdin 10127 10128 Nume IONESCU ALEXANDRU SUCCES SECURYTIES GRUP AS DataOrdin 06/02/01 07/02/01 10/03/01 12/03/01 DataOrdin 02/04/01 02/04/01 CodId 1 3 1 2 CodId 1 3 Localitate BUCURESTI PLOIESTI BUCURESTI CodSoc 101 123 123 111 CodSoc 131 123 TipOper V C C V TipOper C V TipClient F J J NrAct 5000 2050 1500 2000 NrAct 1000 1800 Pret 72790 5720 5791 1600 Pret 21210 5791 Denumire CIMENTUL TURDA DANUBIANA DUCTIL MOBAN NAPOLACT COMCEREAL PretMax 72800 8705 1600 1600 5800 21382 În tabela SOCIETĂŢI se reţin informaţii privitoare la societăţile cotate pe piaţa Rasdaq. Tipul operaţiei (TipOP) poate fi vânzare __________________________________________________________________________ Curs 2 BD NP 5/9 . după cum urmează: R1 ÷ R2 = X – Y . Operaţia de diviziune se poate simula cu operatorii de: diferenţă. care pot fi persoane fizice sau juridice (TipClient).R2. produs cartezian şi proiecţie. formează o bază suficientă pentru a răspunde oricărei solicitări din partea utilizatorilor. dă totdeauna un tuplu din R1 (E = R1 ÷ R2). împreună cu sortarea. Ap⎬ Relaţia RS A B a1 b1 a2 b2 a3 b3 C c1 c2 c3 D d1 d2 d3 E e1 e2 e3 Relaţia S C D c1 d1 c2 d2 c3 d3 E e1 e2 e3 Relaţia R A B a1 b1 a2 b2 a3 b3 Codd. creând astfel premisele definirii unor limbaje neprocedurale. unde: X = R1 ⎨A1. Ap⎬ Y = ((X x R2) – R1) ⎨A1. părintele modelului relaţional. A2. a demonstrat că operatorii relaţionali. …. A2.

se reţine numărul acţiunilor care fac obiectul unei tranzacţii (NrAct) şi preţul unei acţiuni (Pret). Afişarea numelor societăţilor tranzacţionate pe piaţa Rasdaq: R ← PROI (Societăţi. Afişarea numelor societăţilor cotate pe piata Rasdaq pentru care în ziua curentă socitatea de valori mobiliare nu a efectuat tranzacţii: R3 ← DIF (R. R2) Tabela R3: Den CIMENTUL TURDA DANUBIANA DUCTIL 4. Realizaţi actualizarea relaţiei TRANZACTII cu ordinele executate pe piaţă în ziua curentă: R4 ← REUNIUNE (Tranzacţii.CodSoc=Tranzazi. Societăţi. Tranzazi. urmând ca la sfârsitul fiecărei zile acestea să se adauge la înregistrările din tabela TRANZACŢII. Tabela TRANZAZI stochează date privitoare la tranzacţiile efectuate în ziua curentă. să se rezolve următoarele cereri de interogare: 1. Tranzazi) Tabela R4: NrOrdin DataOrdin CodId CodSoc TipOper NrAct Pret 10123 06/02/01 1 101 V 5000 72790 10124 07/02/01 3 123 C 2050 5720 10125 10/03/01 1 123 C 1500 5791 10126 12/03/01 2 111 V 2000 1600 10127 02/04/01 1 131 C 1000 21210 10128 02/04/01 3 123 V 1800 5791 __________________________________________________________________________ Curs 2 BD NP 6/9 . Den) Tabela R: Denumire CIMENTUL TURDA DANUBIANA DUCTIL MOBAN NAPOLACT COMCEREAL 2. Den) Tabela R2: Den NAPOLACT COMCEREAL Pret 5791 21210 3. Afişarea numelor societăţilor pentru care s-au realizat tranzacţii în ziua curentă: R1 ← JOIN (Societăţi.(V) sau cumpărare (C). Utilizând algebra relaţională.CodSoc) Tabela R1: Cod Den Pret Nr Data CodId TipOp NrAct Soc Max Ordin ordin 123 NAPOLACT 5800 10128 02/04/01 3 V 1800 131 COMCEREAL 21382 10127 02/04/01 1 C 1000 R2 ← PROI (R1.

Clienţi.CodId) Tabela R14: CodId CodSoc Nume Localitate TipClient 1 123 GRUP BUCURESTI J AS __________________________________________________________________________ Curs 2 BD NP 7/9 .CodId=Clienţi. CodId) Tabela R8: CodId 3 R9 ← JOIN (R8. Nume) Tabela R10: Nume Grup As 6.CodSoc=R4. Clienţi. Societăţi. CodId. Să se returneze numele clienţilor pentru care SVM-ul a realizat ordine de vânzare pentru acţiuni ale societăţii NAPOLACT: R5 ← SELECTIE(Societăţi. R13.CodSoc) Tabela R6: Cod Den Soc 123 NAPOLACT 123 NAPOLACT 123 NAPOLACT Pret Max 5800 5800 5800 NrOrd 10124 10125 10128 DataOrdin 07/02/01 10/03/01 02/04/01 CodId 3 1 3 TipOP C C V NrAct 2050 1500 1800 Pret 5720 5791 5791 R7 ← SELECTIE (R6. Să se afle numele clienţilor pentru care în ziua curentă s-au realizat tranzacţii privind acţiunile unor societăţi pentru care aceeaşi clienţi mai emiseseră ordine în trecut.CodId) Tabela R9: CodId Nume Localitate TipClient 3 Grup Bucuresti J As R10 ← PROI (R9. Den=”NAPOLACT”) CodSoc 123 Denumire NAPOLACT PretMax 5800 R6 ← JOIN (R5.R4. CodId. CodSoc) Tabela R11: CodId CodSoc 1 101 3 123 1 123 2 111 R12 ← PROI (Tranzazi.5. R8. R11 ← PROI ( Tranzacţii. Nume) Nume GRUP AS R14 ← JOIN(R13. TipOp=”V”) Tabela R7: CodSoc 123 Den PretMax 5800 NrOrdin 10128 DataOrdin 02/04/01 CodId 3 TipOP V NrA ct 1800 Pret 579 1 NAPOLACT R8 ← PROI (R7. CodSoc) Tabela R12: CodId CodSoc 1 131 3 123 R13 ← INTERSECTIE (R12.R11) Tabela R13: CodId CodSoc 3 123 R15 ← PROI (R14.CodId=Clienţi.

CodSoc=Societăţi. ComplAdresa.7. Nr. CodPostal. Să se afle denumirea societăţilor pentru care preţul de cumpărare al unei acţiuni a depăşit în ziua curentă 10000 lei: R16 ← SELECTIE (Tranzazi. DenProd.CodSoc) Tabela R18: CodSoc Denumire PretMax 131 COMCEREAL 72800 NrAct Pret 1000 21210 R19 ← PROI (R18. DataFact. cheia primară Restricţii de integritate inter-tabelele: RIR1: CodCli din FACTURĂ referă CodCli din CLIENT RIR2: CodPostal din CLIENT referă CodPostal din LOCALIZARE RIR3: NrFact din FACTURAT referă NrFact din FACTURA __________________________________________________________________________ Curs 2 BD NP 8/9 . CodSoc) Tabela R17: CodSoc 131 R18 ← JOIN (R17. Int} RI3: Val(Nume) diferit de Null RI4: Val(CodPostal) diferit de Null RI5: Val(Telefon) diferit de Null FACTURA (NrFact. Exemplu practic: Gestiunea facturilor Schemele tabelelor bazei de date: CLIENT (CodCli. Den) Tabela R19: Denumire COMCEREAL Schema relaţională Schema relaţională (sau modelul relaţional) al unei baze de date ce foloseşte modelul realaţional conţine schemele tabelelor (compuse din structura tabelelor şi restricţiile de integritate la nivel atribut din tabel şi respectiv tabel) şi restricţiile de integritate inter-tabele. Societăţi. cheia primară RI2: Val(CantVact)>0 RI3. TipClient) Restricţii de integritatae RI1: CodCli. CodProd. TipOp=”C” AND Pre>10000) Tabela R16: NrOrdin DataOrdin CodId CodSoc TipOP 10127 02/04/01 1 131 C R17 ← PROI(R16. PretFact) Restricţii de integritate RI1: NrFact+CodProd. Nume. R17. cheia primară RI2: Val(DataFact) Între <data min> ŞI <data max> PRODUS (CodProd. cheia primară RI2: pretRef > 0 RI3: Val(DenProd) diferit de Null FACTURAT (NrFact. CodCli) Restricţii de integritate RI1: NrFact. CantFact. constituie cheia primară RI2: Dom(TipClient)={Ext. Telefon. Strada. Fax. PretRef) Restricţii de integritate RI1: CodProd. Localitate) Restricţii de integritate RI1: CodPostal. Val(PretFact)>0 LOCALIZARE (CodPostal.

pentru regăsirea unor date. Avantaje: complexitate redusă si colecţia de date nu se încarcă cu date suplimentare Dezavantajul major îl constituie viteza redusă cu care este efectuată operaţia pe colecţii mari de date.RIR4: CodProd din FACTURAT referă CodProd din PRODUS Metode de accesare a datelor Colecţiile de date înregistrate pe memorii externe sunt accesate din diverse motive: pentru citirea unor înregistrări. • se localizează această valoare în tabelul de index asociat(această operaţie se poate realiza rapid folosind un algoritm de cautare în mulţimi ordonate). __________________________________________________________________________ Curs 2 BD NP 9/9 . Această variantă presupune utilizarea unui tabel de indecşi pentru fiecare câmp ce va fi indexat. Această metodă poate fi folosită numai pentru suporturi de date direct adresabile (hard-disk. pentru ordonarea înregistrărilor după anumite criterii etc. floppydisk. până la înregistrarea căutată (dacă există) sau până la ultima înregistrare (dacă înregistrarea căutată nu există). începând cu prima înregistrare. Metoda indexată permite regăsirea unei inregistrari într-un timp mult mai redus decât metoda precedentă. Dezavantaje: tabelele de indecşi supraîncarcă colecţia de date şi în consecinţă orice actualizare a colecţiei de date presupune o actualizare şi a tabelelor de indecisi. Accesarea datelor organizate în colecţii de date se poate realiza prin două metode: • Metoda secvenţială • Metoda indexată Regăsirea unei înregistrări prin metoda secvenţială presupune parcurgerea în secvenţă a colecţiei de date. atunci se memorează adresa fizică relativă corespunzătoare . Tabelele de indecşi conţin două atribute: • valorile câmpului de indexare ordonate (crescător/descrescător). • dacă valoarea există. CD etc) Avantaje: operaţia de căutare a unei valori se realizează foarte rapid în comparaţie cu metoda secvenţială. • adresele fizice relative ale fiecărei înregistrări. Pentru regăsirea unei înregistrări a cîmpului CodMaterial (indexat) se parcurg următoarele etape: • se specifică valoarea cîmpului CodMaterial pe care dorim să o căutăm. • se localizează înregistrarea logică aflată la adresa memorată anterior.