Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




CONCEPTE ALE MODELULUI RELATIONAL

Informatica




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

Pintea  C.

Albu  D.

Inf.

Mat.

IV

I

Dunari1

Jiltului 5

tupluri

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 Craiova 16:30 17:05

75 Craiova Bucuresti 7:25 8:05

80 Bucuresti Timisoara 7:15 9:15

90 Bucuresti Iasi 10:30 12:30

85 Timisoara Bucuresti 18:30 20:30

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: 

ADD(cursa;NR_CURS =99, PUNCT_DE_DECOLARE=Oradea, PUNCT_DE_ATERIZ

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,Oradea,Bucuresti,20,22), sau īn cazul general,

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:Iasi, ORA_DECOL RII:16,

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:

DEL(r; A1=d1,A2=d2,...,An=dn).

Īn cazul cānd se considera ca numele atributelor sunt ordonate se poate scrie mai simplu:

DEL(r;d1,d2,...,dn).

Exemplul 2.5. DEL(cursa;NR_CURSA=70, PUNCT_DECOLARE=B, PUNCTATERIZARE=C, ORA_DECOL RII=16, ORA_ATERIZ RII=18) sau mai scurt:

DEL(cursa;70,B,C,17,18)

Ī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:

DEL(r;B1=d1,B2=d2,...,Bm=dm)

De exemplu, varianta scurta a operatiei de stergere pentru relatia "cursa" este:

DEL(cursa;70)

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_CURSA=70, PUNCT_DECOLARE=Bucuresti, PUNCT_ATERIZARE=

Craiova, ORA_DECOL RII=14, ORA_ATERIZ RII=17; ORA_DECOL RII=18, ORA_ATERIZ RII=19) sau, mai scurt:

CH(cursa;NR=70,OD=18,OA=19)

Exemplu 2.7.

1. ADD(cursa:110,Cluj,Iasi,13,16)

2. DEL(cursa:90,Timisoara,Craiova)

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 Craiova 16:30 17:05

75 Craiova Bucuresti 7:00 8:00

80 Bucuresti Timisoara 21:00 23:00

90 Timisoara Craiova 10:30 12:30

85 Timisoara Bucuresti 18:30 20:30

110 Cluj-Napoca Iasi 13:00 16:00

Figura 3. Relatia cursa modificata .

Exercitii:

  1. Elaborati algoritmii ce realizeaza fiecare operatie pentru o relatie (fisier) secventiala.
  2. Elaborati algoritmi de modificare si stergere īn cazul cānd relatia este memorata īntr-un fisier īn acces direct.

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.


Document Info


Accesari: 1336
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )