CONCEPTE ALE MODELULUI RELA IONAL
2.1. Introducere
Modelul relational a fost conceput si dezvoltat de E.F.Codd. Este un model formal de organizare conceptuala a datelor si de reprezentare a legaturilor dintre ele. Modelul relational este simplu, riguros din punct de vedere matematic si nu depinde de sistemul de calcul. Modelul relational reprezinta datele dintr-o baza de date ca o c 949c22j olectie de relatii. Intuitiv o relatie este un tabel sau într-o anumita masura un fisier. Totusi exista o deosebire importanta între relatie si fisier cum se va vedea în continuare. Când o relatie este asimilata cu un tabel de valori, fiecare linie din tabel este o multime de date asociate care pot fi interpretate ca fapte ce descriu o entitate sau o instanta a unei legaturi. Numele tabelului si numele coloanelor ne sunt de ajutor în interpretarea semnificatiilor valorilor în fiecare linie a tabelului. De exemplu, în tabelul din figura 2.1, numit "student" fiecare linie reprezinta fapte despre entitatea "student". Nume de coloane ca "NUME_sI_PRENUME", "NUM R_DE_LEGITIMA IE", "GRUPA", "FACULTATE", specifica cum se interpreteaza datele în fiecare linie, bazându-ne pe coloana fiecarei valori. Toate valorile dintr-o coloana sunt date de acelasi tip. În terminologia bazelor relationale de date, tabelul se numeste relatie, linia se numeste tuplu si numele coloanei se numeste atribut. Continutul informational al unui tabel nu depinde de ordinea coloanelor care pot fi interschimbate. Numele coloanelor formeaza schema tabloului :
student
NUME PRENUME |
FAC. |
AN |
GRUPA |
NR. LEG. |
VARSTA |
ADRESA | |
Costin T. |
Inf. |
I |
Jiului 22 |
|
|||
Albu D. |
Inf. Mat. |
IV I |
Dunari1 Jiltului 5 |
|
|||
Radu A. |
Mat. |
II |
Mures 40 | ||||
Costea M. |
Inf. |
III |
Oltului 8 |
Figura 2.1. Relatia student
2.2. Domenii. Tupluri. Atribute. Scheme si relatii
Atributul (constituantul) este o caracteristica a unei entitati fizice sau conceptuale. Domeniul unui atribut este o multime finita de valori atomice. Prin atomic vom întelege ca fiecare valoare este indivizibila. Fiecarui atribut (coloana) îi corespunde un domeniu de baza numit si domeniu activ (multimea de valori care sunt pe coloana respectiva). Integritatea unui domeniu defineste corectitudinea valorilor care-l compun. O metoda comuna de a specifica domeniul este de a indica tipul (formatul) datelor care compun domeniul. Specificarea atributului si a tipului ne ajuta la interpretarea valorilor lui. De exemplu, domeniile atributelor urmatoare:
-NUM R_DE_TELEFON : este o multime de 6 cifre zecimale;
-VARSTA_SALARIAT : este un numar întreg cuprins între 16 si 70 de ani;
-NUM R_DE_BULETIN : este o multime de 6 cifre;
-FACULTATE: domeniul este format din multimea facultatilor care compun o Universitate.
Tipul datelor (formatul) pentru domeniul atributului "NUM R_DE_TELEFON" este (ddd)dddddd unde d este o cifra zecimala, primele trei formeaza codul judetului.
Un domeniu mai poate cuprinde pe lânga nume si format si o serie de informatii aditionale, ca de exemplu, greutatea unui material trebuie sa fie caracerizata si de o unitate de masura ca: gramul, kilogramul, tona, etc.
Definitia 2.1. O multime finita de nume de atribute se numeste schema de relatie si se noteaza cu R. Numarul de atribute n se numeste grad al schemei de relatie.
Conceptul de schema de relatie descrie structura unei relatii. Un exemplu de schema de relatie de gradul 7 care descrie studentii unei universitati este :
Student(NUME, PRENUME, FACULTATE, AN_STUDIU, NR_LEGIT, ADRES , VÎRSTA).
Domeniul unui atribut oarecare Ai se noteaza cu Di=dom(Ai) iar cu D=D1 D2 Dn.
Definitia 2.2. O multime finita de transformari r= din R în D care satisface urmatoarea proprietate: pentru orice tuplu t r, avem t(Ai) Di , 1 i n, se numeste relatie de schema R notata r(R).
Aceste transformari se numesc tupluri (ocurente). Prin urmare o relatie r(R) este o multime de tupluri (n-upluri) în care, fiecare tuplu este o lista ordonata de n-valori, unde fiecare valoare vi este un element din dom(Ai) sau o valoare speciala null. Fiecare tuplu din tabelul din figura 2.1 reprezinta un student. Vom scrie o relatie sub forma unui tabel, unde linia este un tuplu si coloana este un atribut. Valoarea null a unui atribut arata ca, o anumita valoare fie ca nu se cunoaste, fie ca nu exista pentru un anumit student.
O instantiere a unei relatii reflecta numai tuplurile valide care reprezinta o stare particulara a universului real. În figura 2 se da un alt exemplu de relatie numita cursa.
Deoarece relatia trebuie sa reprezinte faptele la un nivel logic sau abstract ordinea tuplurilor nu este o parte specificata a definitiei relatiei. De exemplu în relatia student tuplurile pot fi ordonate dupa nume în ordine alfabetica sau dupa numarul legitimatiei, dupa vârsta sau alte atribute. Primul tuplu din relatia data în figura 1 arata faptul ca exista un student al carui nume este Costin T. în anul I la Facultatea de Informatica în vârsta de 19 ani în grupa 212 etc. Reamintim ca unele relatii pot reprezenta fapte despre entitati în timp ce altele reprezinta fapte despre asocieri. De exemplu, schema relatiei de specializare (NUME_STUDENT, SPECIALIZARE) arata ce studenti urmeaza o specializare.
O interpretare alternativa a unei scheme de relatie este ca predicat, în acest caz valorile din fiecare tuplu sunt interpretate ca valori care satisfac predicatul. Aceasta interpretare este obisnuita în contestul programarii logice, prin urmare modelul relational poate fi utilizat în aceste limbaje.
Totusi, într-un fisier înregistrarile sunt memorate fizic astfel încât sa existe întotdeauna o anumita ordine între ele.
cursa
NR CURS PUNCT_DE_ PUNCT_DE_ ORA ORA DECOLARE ATERIZARE DECOL RII ATERIZ RII |
70 Bucuresti |
75 |
80 Bucuresti |
90 Bucuresti |
85 |
Figura 2.2. Relatia cursa
2.3. Chei
Intr-relatie nu pot exista doua tupluri identice care sa aiba celeasi valori pentru toate atributele.
Fie K o submultime a multimii R. K se numeste cheie a relatiei r de schema R, daca pentru orice pereche de tupluri distincte t1,t2 r, exista B K astfel încât t1(B)≠t2(B). Cu alte cuvinte nu exista doua tupluri diferite care sa aiba aceeasi valoare pentru toate atributele din K. Aceasta conditie se mai poate scrie:
t1(K) ≠t2(K).
În tabelul "cursa" si sunt chei. Convenim sa notam cu litere mari atributele schemei.
Schema de relatie se noteaza cu R=[A1,...,An] sau A1A2...An. Relatia r de schema R se noteaza cu r(R) sau r(A1A2...An). Pentru notarea cheii relatiei r de schema R se subliniaza atributele care intra în structura cheii.
Exemplu 2.1. Relatia r de schema [ABCD] are cheie pe BD.
Exemplu 2.2. Relatia r(R) din tabloul "cursa" are o cheie formata din atributul NR. Daca trebuie sa punem în evidenta mai mult de o cheie pentru o schema de relatie, nu mai putem utiliza procedeul de subliniere. Cheile care sunt enumerate împreuna cu schema de relatie se numesc d-chei sau chei designate. Pot exista si alte chei diferite de cheile designate, numite chei implicite. Una din cheile designate se numeste cheie de baza (initiala, primara).
Definitia cheii data mai sus este prea larga, deoarece daca K' este cheie pentru relatia r(R) si K' K R atunci K este de asemenea o cheie pentru R, deoarece pentru t1,t2 r cu t1(K') ≠t2(K') rezulta t1(K) ≠t2(K).
Definitia 2.3. Se numeste cheie a relatiei r(R) o submultime K R care pentru orice pereche de tupluri distincte t1,t2 r avem t1(K) ≠t2(K) si nici o alta submultime proprie a lui K nu poseda aceasta proprietate. Orice multime care contine o cheie se numeste supercheie.
Prin urmare, cheia este un atribut sau un grup minimal de atribute care identifica fiecare tuplu al unei relatii si ale caror valori nu pot fi null.
De exemplu, în relatia "cursa" este o cheie, iar se numeste supercheie dar nu este o cheie.
Deoarece relatiile au un caracter dinamic atunci pentru orice instanta se poate defini o cheie sau o supercheie. Deoarece schemele de relatie sunt invariante, rezulta ca, cheile nu trebuie sa se schimbe. Cheile sa ramâna neschimbate pentru orice instanta a relatiei.
Exemplu 2.3.Fie relatia persoana(NUM R_BULETIN, SERIE, NUME, RENUME, ADRESA, SALARIU) care are o cheie formata din atributele K=(NUM R_BULETIN, SERIE) si alta fomata din . Relatia material( COD, DENUMIRE, UNITATE_DE_M SURA, PRE ) are cheia formata din atributul COD. Definiti o relatie de legatura între cele doua.
2.4. Operatii
2.4.1. Operatia de adaugare
Presupunem ca trebuie sa adaugam informatii suplimentare la o relatie data. Pentru aceaste trebuie sa introducem o operatie de adaugare care pentru relatia r(A1,...,An) are forma:
ADD(r;A1=d1,...,An=dn).
De exemplu, pentru relatia "cursa" aceasta devine:
ARE =Bucuresti , ORA_DECOL RII=20,ORA_ATERIZ RII=22).
Când ordinea atributelor este fixata aceasta poate fi scrisa mai scurt astfel:
ADD(cursa;99,
ADD(r;d1,d2,...,dn).
Scopul operatiei de adaugare este de a adauga un tuplu la relatia definita de r. Rezultatul operatiei nu poate fi conform cu scopul operatiei în urmatoarele cazuri:
a) tuplul de adaugat nu corespunde schemei relatiei;
b) câteva din valorile tuplului nu apartin domeniului respectiv;
c) tuplul descris coincide dupa cheie cu un tuplu din relatie.
Exemplu 2.4
ADD(cursa;NR_CURS :90,PUNCT_DECOLARE:
ORA_ATERIZ RII:12) nu este admisa din cauza caracteristicii 1.
2.4.2. Operatia de stergere
Operatia de stergere se introduce pentru a elimina anumite tupluri din relatie. Pentru relatia r operatia de stergere are forma:
În cazul când se considera ca numele atributelor sunt ordonate se poate scrie mai simplu:
Exemplul 2.5.
În continuare vom arata ca nu e nevoie sa dam toate informatiile ca sa definim tuplul pe care dorim sa-l stergem. Este suficient sa definim numai valoarea cheii. Daca K= este o cheie atunci se poate folosi urmatoarea forma directa:
De exemplu, varianta scurta a operatiei de stergere pentru relatia "cursa" este:
Daca se urmareste eliminarea tuplului dintr-o relatie r pe care aceasta nu-l contine, atunci relatia ramâne neschimbata si se genereaza o eroare.
În loc sa stergem sau sa adaugam un tuplu întreg din relatie, se poate schimba doar o parte din relatie.
2.4.3. Operatia de modificare
Modificarea se realizeaza cu ajutorul operatiei CH. Pentru relatia r introdusa anterior si pentru [C1,...,Cp].[A1,...,An] operatia de schimbare are forma:
CH(r;A1=d1,A2=d2,....,An=dn;C1=c1,C2=c2,....Cp=cp)
Daca K=B1,B2,...Bm este o cheie atunci operatia de modificare poate fi scurtata la:
CH(r;B1=d1,B2=d2,...,Bm=dm;C1=c1,C2=c2,...,Cp=cp)
Exemplu 2.6. Pentru relatia data în relatia "cursa", descrisa anterior, operatia de modificare are forma:
CH(cursa;NR=70,OD=18,OA=19)
Exemplu 2.7.
1.
ADD(cursa:110,Cluj,
2.
3. CH(cursa:NC=80;OD=21,OA=23)
4. CH(cursa:NC=75;OD=7,OA=8)
În urma acestor modificari, relatia "cursa" va arata astfel:
CURSA PUNCT_DE_ PUNCT_DE_ ORA- ORA- DECOLARE ATERIZARE DECOLARII ATERIZ{RII |
70 Bucuresti |
75 |
80 Bucuresti |
90 |
85 |
110
Figura 3. Relatia cursa modificata .
Exercitii:
3. Aratati ca relatia de grad n mai poate fi definita ca o submultime a produsului cartezian a n domenii D1xD2x..xDn nu în mod necesar distincte. Valorile care apar în coloana i a relatiei trebuie sa fie din Di,, 1 i n.
|