MODELUL RELAŢIONAL
Sistemele de gestiune ale bazelor de date relationale (notate pe scurt SGBDR) au devenit principalul soft în prelucrarea datelor folosite astazi. Acest soft reprezinta a doua generatie a SGBD-urilor si este bazat pe modelul relational introdus de E.F.Codd în 1970. În modelul relational toate datele Su 848j94i nt logic structurate prin relatii (tabele).
Fiecare relatie are un nume caruia îi corespunde o coloana de tabel (atribut). Fiecare tuplu (linie de tabela) contine o valoare a fiecarui atribut. Un mare avantaj al modelului relational este aceasta structura logica simpla.
2.1. Scurf istoric al modelului relational.
Modelul relational a fost propus pentru prima data de catre E.F.Codd în seminarul "Modelul relational al datelor pentru partajarea marilor date bancare" în 1970. Un alt model asamblist a fost propus de catre Childs, în 1968, care a subliniat faptul ca orice structura de date poate fi prezentata prin una sau mai multe tabele de date, în cadrul carora este necesar sa existe si informatii de legatura, pentru asigurarea legaturilor între tabele. Codd, însa, are meritul de a fi accentuat si dezvoltat ideile cu privire la utilizarea teoriei multimilor sub forma unui model coerent de structurare a datelor, si anume modelul relational.
Sistemele comerciale bazate pe modelul relational au început sa apara în ultimii ani ai perioadei 1970. Acum sunt mai mult de 100 de SGBDR, chiar daca multe nu respecta întocmai definitia modelului relational. Datorita popularitatii modelului relational, multe dintre sistemele non-relationale furnizeaza interfata relationala.
2.2. Modelul relational al datelor.
1. Structura relationala a datelor. În cadrul bazelor de date relationale, datele sunt organizate sub forma unor tablouri bidimensionale (tabele) de date, numite relatii. Asocierile dintre relatii se reprezinta explicit prin atributele de legatura. Aceste atribute figureaza într-una din relatiile implicate în asociere
Selectia este operatia care creeaza dintr-o relatie-operand o relatie-rezultat cu aceeasi schema, dar în care sunt incluse numai tuplele pentru care predicatul de selectie este adevarat.
s Oras=brasov (student) va avea ca rezultat:
![]() |
Proiectia este operatia care creeaza dintr-o relatie-operand o relatie-rezultat care are acelasi numar de tuple dar are numai o parte din atribute. De exemplu
![]() |
va avea tuplele:
Produsul cartezian a doua relatii-operanzi are ca rezultat o relatie-rezultat cu atributele formate din reuniunea celor doua multimi de atribute ale operanzilor si ca tuple, pentru fiecare tuplu din prima relatie toate tuplele din a doua relatie (deci ca numar produsul numerelor tuplelor celor doua relatii-operanzi).
Deci daca avem schema catalog=(nr_mat,materia,note) cu avea tupele:
nr_mat |
Materia |
note |
Matematica | ||
Engleza | ||
Matematica | ||
Engleza | ||
Matematica |
Atunci produsul cartezian student X catalog va avea tuplele:
Student.nr_mat |
nume |
oras |
Catalog.nr_mat |
materia |
note |
Avram Ion |
|
matematica | |||
Avram Ion |
|
engleza | |||
Avram Ion |
|
matematica | |||
Avram Ion |
|
engleza | |||
Avram Ion |
|
|
matematica | ||
Condru Marin |
|
matematica | |||
Condru Marin |
Craiova |
engleza | |||
Condru Marin |
Craiova |
matematica | |||
Condru Marin |
Craiova |
engleza | |||
Condru Marin |
|
matematica | |||
Pop Nelu |
|
matematica | |||
Pop Nelu |
|
engleza | |||
Pop Nelu |
|
matematica | |||
Pop Nelu |
Brasov |
engleza | |||
Pop Nelu |
|
matematica |
Aceasta tabela este greu de înteles la ce ar fi buna. De ce sa-l legam pe un anumit student de toate notele?
Avem însa si alte operatii mai utile. Echijonctiunea face de fapt o selectie dupa un predicat în produsul cartezian. Daca vom lua
Student Jstudent.nr_mat=catalog.nr_mat catalog =
s student.nr_mat=catalog.nr_mat student X catalog
vom obtine tabela:
Student.nr_mat |
nume |
oras |
Catalog.nr_mat |
materia |
note |
Avram Ion |
|
matematica | |||
Avram Ion |
Brasov |
engleza | |||
Condru Marin |
Craiova |
matematica | |||
Condru Marin |
Craiova |
engleza | |||
Pop Nelu |
Brasov |
matematica |
Se observa ca de data aceasta operatia leaga fiecare student de nota lui în mod natural. De ce sa mai avem atunci de doua ori atributul Nr_mat?
Join-ul natural a doua relatii are un efect similar cu echijonctiunea, pe atribute care în cele doua relatii-operanzi au acelasi nume si în relatia rezultat atributele respective apar o singura data. De exemplu:
Student JN catalog
Va avea tuplele:
Reuniunea se poate aplica numai la doua relatii care au aceeasi schema si are ca rezultat relatie cu schema initiala si cu tuplele din ambele relatii operanzi.
Intersectia se poate aplica numai la doua relatii care au aceeasi schema si are ca rezultat o relatie cu schema initiala si cu tuplele - numai tuplele comune celor doua relatii intiale.
Diferenta se poate aplica numai la doua relatii care au aceeasi schema si are ca rezultat o relatie cu schema initiala si cu tuplele care sunt în prima relatie dar nu si în a doua relatie. Exemplele se pot da usor de catre cititor devreme ce notiunile sunt analoage cu binecunoscutele notiuni omonime din teoria multimilor.
Restrictiile de integritate ale modelului relational permit definirea starilor coerente ale bazei de date.
2.3. Structura relationala a datelor.
Modelul relational este bazat pe conceptul matematic de " relatie " care este fizic reprezentata de o tabela. Cunoscutul matematician Codd foloseste termionologia matematica din teoria multimilor si logica predicatelor în definirea modelului relational.
Prezentarea structurii relationale a datelor impune definirea notiunilor de: relatie, atribut, domeniu si schema a unei relatii.
Trebuie adaugat aici ca orice tabela are urmatoarele proprietati:
nu exista rânduri duplicate,
nu exista nume de coloane duplicate
ordinea rândurilor nu este importanta
ordinea coloanelor nu este importanta
valorile atributelor sunt atomice ( nedecompozabile).
o relatie este o tabela cu linii si coloane.
În modelul relational, relatiile sunt folosite pentru a pastra informatii despre obiectele care sunt reprezentate în baza. Relatia este reprezentata printr-un tablou bidimensional, în care liniile reprezinta înregistrarile individuale (tuplele), iar coloanele reprezinta atributele.
Un SGBDR necesita ca baza de date sa fie perceputa de catre utilizatori doar sub forma unei tabele.
Atributul unei relatii este o coloana a relatiei, caracterizata printr-un nume. Numele coloanei exprima semnificatia valorilor din cadrul coloanei respective.
Domeniul este un set de valori permise pentru unul sau mai multe atribute. Acest
concept are o mare greutate în modelul relational. Fiecare atribut are asociat un domeniu. Domeniile pot fi distincte pentru fiecare domeniu în parte, sau pot exista doua sau mai multe atribute definite pe acelasi domeniu. Totodata, acest concept are o mare importanta deoarece permite utilizatorului sa defineasca într-o pozitie centrala semnificatia si sursa valorilor pe care atributul le poate lua.
O importanta aparte în cadrul relatiei o are semnificatia valorilor. Semnificatia
valorilor din cadrul unui tuplu se stabileste atât pe baza domeniilor carora apartin valorile, cât si în functie de pozitia ocupata în cadrul tuplului. Dependenta fata de ordinea valorilor în tuplu ar înseamna o reducere a flexibiliatii organizarii datelor.
Pentru a diferentia coloanele care contin valori ale aceluiasi domeniu si a
elimina astfel dependenta de pozitia din cadrul tabelei se asociaza fiecarei coloane un nume distinct, ceea ce duce la aparitia notiunii de atribut.
Tot din punct de vedere al semnificatiei valorilor, putem spune ca relatia reprezinta un subansamblu al produsului cartezian de mai multe domenii, subansamblu caracterizat printr-un nume si care contine tupluri cu semnificatie.
În cadrul modelului relational nu intereseaza decât relatiile finite, chiar daca la
construirea relatiilor se admit domenii infinite. Numarul valorilor dintr-un tuplu poarta numele de grad al relatiei. Gradul unei relatii este parte a intensiei unei relatii.
Cardinalul unei relatii este numarul tuplurilor continute în respectiva relatie. Prin contrast fata de gradul relatiei, numarul tuplurilor este numit cardinalul relatiei, iar schimbarea cardinalului unei relatii se face prin stergerea sau adaugarea de tupluri.
Cardinalul este o proprietate a extensiei ( intensia si extensia vor fi definite putin mai jos, în cadrul schemei unei relatii). Structura unei relatii, împreuna cu o specificare a domeniilor pentru valori formeaza schema unei relatii. Schema unei relatii este adesea cunoscuta si sub denumirea de intensie a relatiei, ca expresie a proprietatilor comune si invariante ale tuplurilor care compun relatia.
Întrebari si exercitii la capitolul 5.
Exercitiul .
Se dau relatiile cu schema:
Carte=(id_carte,titlu,c_edit,c_domeniu)
Domenii=(c_domeniu,d_domeniu)
Edituri=(c_edit,d_edit,oras, str, nr)
Autor=(c_aut,nume_aut)
Carteaut=(id_carte,c_aut)
Sa se exprime înalgebra relationala cererile:
Titlurile cartilor din domeniul 'stiinta'
Editurile din 'brasov'
Cartile scrise de 'Ion Ion'
Cartile scrise numai de 'Ion Ion' (ca singur autor)
|