Sunteți pe pagina 1din 146

Baze de date relaţionale

1

Universitatea TRANSILVANIA din Brașov Facultatea de Științe Economice și Administrarea Afacerilor

Baze de date relaționale

SUPORT DE CURS

PENTRU

ÎNVĂȚĂMÂNT LA DISTANȚĂ

Prof. Dr. Dorin Lixăndroiu Lector dr. Radu Lixăndroiu

Brașov

2011

Baze de date relaţionale

2

Introducere

Baze de date relaţionale 2 Introducere Obiectivele cursului Principalul obiectiv al cursului este de a înţelege

Obiectivele cursului

Principalul obiectiv al cursului este de a înţelege principalele concepte ale bazelor de date relaționale. Prezentarea principalelor elemente definitorii ale conceptelor bază de date / sistem de gestiune a bazelor de date va permite înţelegerea importanţei activităţilor de culegere, prelucrare, transmitere şi stocare a informaţiei în strcturi de date în procesul decizional.

Un alt obiectiv este familiarizarea cu limbajul SQL, cunoașterea principalelor instrucțiuni de manipulare a bazelor de date și a datelor precum și realizarea unor aplicații economice simple.

Competenţe conferite precum și realizarea unor aplicații economice simple. După parcurgerea concepte: acestui curs studenții vor

După

parcurgerea

concepte:

acestui

curs

studenții

vor

înțelege

următoarele

de bază de date, de sistem de gestiune a bazelor de date, noțiunea de tabelă, noțiuni pșrivind utilizarea și crearea aplicațiilor cu baze de date

Mijloace informatice necesare parcurgerii materialului şi rezolvării testelor: Microsoft Access. ijloace informatice necesare parcurgerii materialului şi rezolvării testelor: Microsoft Access.

Resurse şi mijloace de lucru

testelor: Microsoft Access. Resurse şi mijloace de lucru Structura cursului  numărul de Unităţi de învăţare

Structura cursului

numărul de Unităţi de învăţare (UI) ce compun cursul: 6

numărul temelor de control 5 + o UI ce conține numai aplicații

locul, în cadrul materialului, în care se găsesc formulate temele de control – la sfarșitul unităților de învățare

modul de transmitere al temelor de control către cadrul

Baze de date relaţionale

3

didactic şi, respectiv, a rezultatelor către studenţi -(prin încărcarea pe platforma eLearning, material tipărit, etc.

Discipline deserviteîncărcarea pe platforma eLearning, material tipărit, etc. Analiza și Proiectarea Sistemelor Informatice Pachete de

Analiza și Proiectarea Sistemelor Informatice

Pachete de Programe de Contabilitate

Sistemelor Informatice Pachete de Programe de Contabilitate Tehnologia Informatiei Programarea Calculatoarelor Durata

Tehnologia Informatiei

Programarea Calculatoarelor

Durata medie de studiu individual 16 ore

.

Evaluarea

Se va specifica componenţa notei finale:

ponderea evaluării finale (examen) – 50%

ponderea proiectelor de laborator 50%

Baze de date relaţionale

4

CUPRINS

Unitatea de învăţare 1. BAZE DE DATE

5

Unitatea de învăţare 2. BAZE DE DATE RELAŢIONALE

35

Unitatea de învăţare 3. ALGEBRA RELAŢIONALĂ

44

Unitatea de învăţare 4. LIMBAJUL SQL………………………………….

66

Unitatea de învăţare 5. NORMALIZAREA RELAŢIILOR

84

Unitatea de învăţare 6. APLICAŢII

107

Baze de date relaţionale

5

Unitatea de învăţare 1. BAZE DE DATE

Introducere Organizaţiile gestionează colecţii de date în scopul satisfacerii cerinţelor informaţionale la toate nivelele Organizaţiile gestionează colecţii de date în scopul satisfacerii cerinţelor informaţionale la toate nivelele decizionale (operaţional, tactic, strategic). În absenţa datelor asupra funcţionării interne şi asupra mediului extern, o organizaţie nu ar putea supravieţui. Procesul de organizare şi prelucrare a datelor a parcurs mai multe etape, până s-a ajuns la soluţia dominantă în prezent, care constă în organizarea datelor în baze de date.

care constă în organizarea datelor în baze de date. Competenţele unităţii de învăţare După parcurgerea

Competenţele unităţii de învăţare După parcurgerea acestei părți studenții vor înțelege următoarele concepte:

Evoluţia procesului de organizare a datelor Baze de date concepte generale Sistemul de gestiune al bazei de date (SGBD) Arhitectura funcţională a sistemului de gestiune al bazei de date Arhitectura client - server Modele de baze de date Modelul entitate asociere (E-A) Bază de date – Bancă de date Scurtă istorie a bazelor de date

Durata medie de parcurgere a primei unităţi de învăţare este de 4 ore. ei unităţi de învăţare este de 4 ore.

[CON01], [HER03], [POI96], [POI01], [GBD02], [DAT05], [FLO99], [ION04], [FOT97], [MIR88], [GAR03], [DOL98]

Baze de date relaţionale

6

1.1. EVOLUŢIA PROCESULUI DE ORGANIZARE A DATELOR

O colecţie de date reuneşte date despre o anumită clasă de obiecte (reale sau conceptuale). De exemplu, în domeniul contabilităţii financiare, colecţia de date CONTURI conţine informaţiile referitoare la clasa de obiecte conturi: simbolul contului (SIMB_CONT), denumirea contului (DEN_CONT), tipul contului (TIP_CONT), soldul iniţial debitor (SID) şi respectiv soldul iniţial creditor (SIC). Evident, un cont dat va avea soldul iniţial fie debitor, fie creditor. Pentru exemplificare considerăm colecţia de date CONTURI.

SIMB_CONT

DEN_CONT

TIP_CONT

SID

SIC

121

Profit şi pierderi

B

0

1000

O realizare a colecţiei de date CONTURI

Într-o întreprindere sunt identificate mai multe colecţii de date, de exemplu:

PERSONAL – conţine informaţii despre persoanele angajate în firmă; PRODUSE - conţine informaţii despre produsele realizate; STOCURI - conţine informaţii despre stocurile existente de materii prime, materiale, produse finite, etc. TRANZACŢII - conţine informaţii privind intrările în / ieşirile din stocuri.

Procesul de organizare a datelor presupune:

definirea, structurarea, ordonarea şi gruparea datelor în colecţii de date omogene;

stabilirea relaţiilor între date, între elementele unei colecţii, între colecţii de date;

stocarea datelor pe suport informational.

Organizarea datelor este necesară pentru:

minimizarea timpului de acces la date;

asigurarea unicităţii datelor;

sistemul de organizare a datelor adoptat trebuie să reflecte cât mai fidel toate legăturile dintre obiectele, fenomenele, procesele economice pe care aceste date le reprezintă;

asigurarea flexibilităţii datelor.

Baze de date relaţionale

7

Etapele evoluţiei procesului de organizare a datelor

Procesul de organizare şi prelucrare a datelor a parcurs mai multe etape, până s-a ajuns la soluţia dominantă în prezent, care constă în organizarea datelor în baze de

date. Principalele etape ale evoluţiei tehnicilor de organizare şi prelucrare a datelor sunt:

Prima etapă – se caracterizează prin adaptarea tipurilor de organizare a datelor existente în sistemele de prelucrare manuală la condiţiile tehnice impuse de calculator. În această etapă apare fişierul organizare secvenţială, iar ca suport de memorare externă se utilizează benzile magnetice. Este caracteristică prelucrarea pe loturi (batch processing).

A doua etapă – este marcată de separarea dintre structura logică de date şi structura fizică. Rezultă independenţa fizică a datelor. În această etapă se utilizează fişiere secvenţial-indexate, fişiere directe, fişiere inverse, etc. Ca suport de memorare externă apare discul magnetic. Se asigură independenţa aplicaţiilor de modificările echipamentelor hardware (banda, disc, etc.). Apar primele facilităţi simple de protecţie a datelor. Apare posibilitatea de lucru în mod conversaţional. O facilitate importantă pusă la dispoziţia utilizatorilor este generarea automată de rapoarte. Apare o separare (parţială) între modul în care un fişier este privit de utilizator (nivelul logic) şi modul cum se memorează pe suportul magnetic (nivelul fizic).

O caracteristică comună a primelor două etape: fiecare aplicaţie lucrează cu propriile fişiere, fără a avea nici o legătură cu fişierele utilizate de alte aplicaţii. Aceasta aduce inconveniente majore legate de:

redundanţa datelor - prezenţa aceleiaşi date în mai multe fişiere, crează probleme evidente în operaţiile de actualizare;

inconsistenţa datelor - aceeaşi informaţie este memorată diferit în fişiere diferite (mai ales când informaţia se modifică);

absenţa unor legături logice între datele din grupuri diferite de fişiere, număr mare de fişiere, timp mare de prelucrare;

flexibilitate redusă a sistemului la apariţia unei noi aplicaţii.

A treia etapă – este definită de apariţia fişierelor integrate (sisteme de fişiere). Se reduce redundanţa şi implicit inconsistenţa datelor - aceleaşi date fizice pot fi utilizate în comun de către mai multe aplicaţii. Apar proceduri care gestionează relaţiile dintre fişierele din sistem, rezultând astfel o structură logică unitară. Rămân însă deficienţele comune primelor două etape, legate de gestiunea fişierelor care uneori este realizată cu programe scrise în diferite limbaje de programare. Structura fişierului

Baze de date relaţionale

8

trebuie precizată în programul de gestiune, ceea ce conduce la modificarea programului în cazul modificării structurii fişierului.

Notă. Structura integrată stă la originea noţiunii de model conceptual (modelul ce conţine descrierile tuturor datelor şi a legăturilor dintre ele).

În concluzie, sistemele bazate pe fişiere (file based) au următoarele caracteristici:

fiecare program defineşte şi gestionează propriile date;

datele sunt descrise independent în toate fişierele în care apar;

fiecare fişier de date este descris în toate programele care îl accesează;

nu există control al accesului şi manipulării datelor, în afara celui impus prin programele de aplicaţie.

Din aceste carcateristici decurg următoarele dezavantaje ale organizării datelor după modelul file based:

redundanţa şi inconsistenţa datelor;

dificultatea accesului – în cazul în care o informaţie este exploatată de mai mulţi utilizatori, fişierele tradiţionale nu permit accesarea datelor după mai multe criterii specifice diferiţilor utilizatori sau grupuri de utilizatori;

complexitatea actualizărilor într-un mediu multiutilizator (multiuser) efectuarea unei actualizări (modificare, adăugare sau ştergere) poate conduce la situaţii conflictuale atunci când doi utilizatori vor să modifice simultan aceeaşi dată; acest gen de conflicte poate fi rezolvat printr-un program supervizor al prelucrărilor;

probleme de securitate – crearea unor mecanisme de protecţie a datelor împotriva accesului neautorizat este dificilă;

asigurarea integrităţii datelor presupune crearea unor proceduri de analiză a restricţiilor semantice la care sunt supuse datele; acestea formează mecanismul de integritate;

dificultatea de a obţine răspunsuri rapide la probleme ad-hoc simple presupune realizarea unor programe utilizând limbaje procedurale pentru a obţine răspunsul la o interogare;

inflexibilitatea faţă de schimbările ulterioare din sistemul informaţional;

costul ridicat – datorat gradului de redundanţă a datelor şi efortului necesar interconectării fişierelor de date pentru a realiza un nivel minim de integritate şi securitate a datelor.

A patra etapă este etapa bazelor de date. Sintagma bază de date apare în anul 1964, în titlul conferinţei Development and Management of a Computer Centered Data Base organizată la Santa Monica (California) de System Development Corporation. Momentul consacrării termenului DATA BASE este 1969, când la CODASYL (Conference On DAta SYstems Language) se prezintă într-un raport conceptul de bază de date.

Baze de date relaţionale

9

1.2. BAZE DE DATE - CONCEPTE GENERALE

DATA - înregistrarea unei observaţii, obiect, fenomen, imagine, sunet sau text, într-o formă convenabilă unei prelucrări, interpretări sau transmiteri prin mijloacele informaticii. Datele reprezintă aspecte elementare nesupuse unei prelucrări şi neevaluate din punct de vedere al utilităţii.

INFORMAŢIA - semnificaţia ce poate fi ataşată sau poate fi dedusă dintr-un ansamblu de date pe baza corelaţiilor dintre acestea, având un scop bine determinat, de satisfacere a cerinţelor utilizatorilor.

BAZA DE DATE (Database) un ansamblu structurat de colecţii de date operaţionale înregistrate pe suport adresabil, aflate în interdependenţă logică, împreună cu descrierea datelor şi a relaţiilor dintre ele şi care sunt prelucrate în aplicaţiile informatice ale unei organizaţii. Baza de date permite operaţii de introducere, ştergere, actualizare şi interogare a datelor.

BAZA DE DATE

este un ansamblu de date:

structurate;

coerente, adică există legături (interdependenţe) logice între diferitele colecţii ce alcătuiesc baza de date;

persistente, adică datele rămân memorate pe suport magentic, independent de execuţia programelor de aplicaţii, fiind păstrate pentru o anumită perioadă de timp;

neredundante - condiţia de neredundanţă este în general înlocuită de o condiţie mai slabă: redundanţă minimă şi controlată în scopul de a mări viteza de acces la date;

independente de programul de aplicaţie;

direct accesibile după mai multe criterii;

simultan accesibile de către mai mulţi utilizatori.

În gestiunea bazelor de date există două tipuri de de baze de date:

BAZE DE DATE OPERAŢIONALE – sunt utilizate cu precădere în prelucrarea on-line a tranzacţiilor (on-line transaction processing OLTP), adică în situaţii cînd este necesară colectarea, modificarea şi întreţinerea zilnică a bazelor de date. Datele stocate într-o bază de date operaţională sunt de tip dinamic, ceea ce înseamnă că se modifică în permanenţă şi reflectă întotdeauna informaţii actualizate în timp real.

Baze de date relaţionale

10

BAZE DE DATE ANALITICE - sunt utilizate mai ales în aplicaţiile de prelucrare analitică on-line (on-line analytical processing OLAP), când este necesară stocarea şi urmărirea datelor istorice şi dependente de timp. Sunt importante cînd este necesară urmărirea tendinţelor, vizualizarea datelor statistice pe o perioadă mai lungă de timp, sau efectuarea unor previziuni tactice sau strategice de afaceri. Datele stocate într-o bază de date analitică sunt de tip static, adică nu se modifică niciodată (sau foarte rar). Bazele de date analitice utilizează frecvent bazele de date operaţionale ca sursă principală de date.

Prezenta lucrare abordează din problematica bazelor de date operaţionale numai bazele de date relaţionale.

ARHITECTURA UNUI SISTEM DE BAZE DE DATE (Database System) cuprinde:

baza de date propriu-zisă în care se memorează datele

software-ul format din Sistemul de Gestiune al Bazei de Date (SGBD) şi aplicaţiile de baze de date (Database Application)

metabaza de date - dicţionarul datelor (DD), conţine informaţii despre date, structura acestora, documentaţie

hardware-ul utilizat

utilizatorii bazei de date: administratorul bazei de date, programatorul de aplicaţii (administratorul aplicaţiei) şi utilizatorii finali (nespecialişti)

reglementările legislative ce permit buna funcţionare a sistemului.

Cerinţele minimale care se impun unei baze de date sunt:

furnizarea în timp util a informaţiilor solicitate, se referă la timpul de răspuns la o interogare efectuată;

costuri minime de prelucrare şi întreţinere a informaţiei;

capacitatea de a satisface, cu aceleaşi date necesităţile informaţionale ale unui număr mare de utilizatori;

flexibilitatea - posibilitatea de adaptare la cerinţe noi, de a da răspunsuri la interogări neprevăzute iniţial;

integrarea baza de date poate fi considerată o unificare a mai multor fişiere – altfel diferite – redundanţa acestor fişiere fiind parţial sau total eliminată;

asigurarea unei redundanţe minime şi controlate a datelor – rezultă din cerinţa de integrare; menţinerea a mai multor copii ale aceloraşi date poate fi impusă de motive de ordin tehnic, însă această redundanţă minimă trebuie controlată cu atenţie, ceea ce presupune ca sistemul de gestiune al bazei de date să o cunoască şi să-şi asume responsabilitatea de a propaga actualizările;

Baze de date relaţionale

11

partajarea şi sincronizarea – posibilitatea de partajare şi exploatare simultană a datelor de către mai mulţi utilizatori; se realizează astfel posibilitatea de acces concurent la date;

confidenţialitatea – asigurarea securităţii datelor prin mecanisme de protecţie împotriva accesului neautorizat;

integritatea – presupune existenţa unor proceduri de validare şi recuperare a datelor după accidente; problema integrităţii este de garanta (atât cât este posibil) că datele din baza de date sunt corecte;

compatibilitatea şi expandabilitatea posibilitatea de valorificare a eforturilor anterioare şi anticiparea nevoilor de dezvoltare;

permisivitatea – posibilitatea de ierarhizare a datelor după criteriul frecvenţei acceselor, sau reorganizarea datelor în scopul creşterii performanţelor bazei de date.

Utilizatorii bazei de date:

Administratorul bazei de date (DBA - DataBase Administrator) este responsabil cu menţinerea funcţionalităţii bazei de date, prin efectuarea operaţiilor periodice de salvare a datelor (backup) şi de refacere a datelor în cazul apariţiei unui incident (rollback), prin urmărirea performanţelor sistemului, autorizează drepturile de acces pentru diferitele categorii de utilizatori, ajută la definirea cerinţelor utilizatorilor, etc.

Programatorul de aplicaţii (administratorul aplicaţiei) este cel care dezvoltă aplicaţiile de baze de date folosind limbaje de programare de nivel înalt, generatoare de aplicaţii şi biblioteci care permit încorporarea operaţiilor de acces la baza de date; aplicaţiile care rezultă pot fi cu execuţie independentă (batch-processing) sau pot fi aplicaţii interactive (on-line) destinate utilizatorilor finali.

Utilizatorii finali (nespecialişti) accesează baza de date prin intermediul unui program de aplicaţie care le dă drepturi limitate de acces la date pentru anumite operaţii de prelucrare; utilizatorii finali, în general, efectuează un număr mare de operaţii tranzacţionale asupra bazei de date utilizând interfeţe de comunicare cu baza de date apropiate de limbajul natural, dar nu cunosc structura bazei de date şi nici modul efectiv de lucru cu baza de date.

Arhitectura internă a unui sistem de baze de date (figura 1.1) - conţine trei nive niveluri de abstractizare şi percepţie a datelor, introduse în anul 1975, prin raportul ANSI/SPARC DBMS Report of the Study Group on Data Base Management Systems

Baze de date relaţionale

12

(ANSI/SPARC înseamnă American National Standards Institute / Standards Planning And Requirements Committee):

Nivelul intern (Internal Schema) – specifică modul de stocare a datelor în sistem. Vederea internă este o reprezentare de nivel inferior a întregii baze de date şi este descrisă prin intermediul schemei interne, care defineşte diversele tipuri de înregistrări stocate, specifică indexurile care există, modul în care sunt reprezentate câmpurile stocate, în ce secvenţă fizică se află înregistrările stocate, etc. Schema internă este scrisă folosind un limbaj de definire a datelor - limbajul DDL intern. Administratorul bazei de date este responsabil cu crearea schemei interne, adică proiectarea fizică a bazei de date.

Nivelul extern (External Schema, User’ View) – este nivelul logic al utilizatorului individual, care este cel mai apropiat de utilizator. Acesta poate fi un programator de aplicaţii (administratorul aplicaţiei) sau un utilizator final. Fiecare utilizator are la dispoziţie un limbaj:

- pentru programatorul de aplicaţii (administratorul aplicaţiei) limbajul poate fi Java, C++, PL/I, etc.

- pentru utilizatorul final limbajul va fi ori unul de interogare (SQL), ori unul specializat adaptat cerinţelor utilizatorului.

Un sistem de baze de date acceptă mai multe limbaje gazdă. Un sublimbaj de date (DSL Data SubLanguage) este un subset al limbajului complet, care se referă în mod specific la obiectele şi operaţiile bazei de date. Sublimbajul de date este înglobat în limbajul gazdă corespunzător. Unul dintre sublimbajele de date acceptat de către majoritatea sistemelor curente este SQL. Limbajul SQL, care va fi prezentat în Capitolul 4, poate fi folosit interactiv, ca limbaj de interogare autonom, cât şi înglobat în alte limbaje, cum ar fi Java, C++, PL/I, etc. De exemplu, sistemul de baze de date Oracle are 6 precompilatoare (C, Pascal, Ada, Cobol, Pl/1, Fortran) care permit includerea de instrucţiuni SQL sau blocuri PL/SQL în programele scrise în limbajele gazdă. Orice sublimbaj de date conţine două limbaje subordonate:

- un limbaj de definire a datelor (DDL Description Data Language) pentru definirea obiectelor bazei de date;

- un limbaj de manipulare a datelor (DML Data Manipulation Language) care realizează prelucrarea acestor obiecte.

Observăm că graniţele dintre: a) limbajul gazdă şi sublimbajul de date şi b) limbajele DDL şi DML sunt de natură conceptuală. Important este ca aceste limbaje să fie transparente pentru utilizator.

Baze de date relaţionale

13

Utilizator A1

Utilizator A2

Utilizator B1

Limbaj

Limbaj

gazdă +

gazdă +

DSL

DSL

Limbaj Limbaj gazd ă + gazd ă + DSL DSL Schema externă A - interfaţa cu
Limbaj Limbaj gazd ă + gazd ă + DSL DSL Schema externă A - interfaţa cu

Schema externă A - interfaţa cu utilizatorul

Vedere externă

Limbaj gazdă + DSL Vedere externă Sistemul de gestiune a bazelor de date (SGBD)
Limbaj
gazdă +
DSL
Vedere externă
Sistemul de
gestiune a
bazelor de date
(SGBD)
externă Sistemul de gestiune a bazelor de date (SGBD) Schema externă B - interfaţa cu utilizatorul

Schema externă B - interfaţa cu utilizatorul

(SGBD) Schema externă B - interfaţa cu utilizatorul Corespondenţa extern/conceptual pentru Corespondenţa

Corespondenţa extern/conceptual pentru

Corespondenţa extern/conceptual pentru

Vedere

conceptuală

Schema

conceptual

Corespondenţa conceptual Baza de date stocată (Vedere internă)
Corespondenţa
conceptual
Baza de date stocată
(Vedere internă)

Definiţia

structurii de

stocare

(schema

internă)

Baze de date relaţionale

14

Fig.1.1. Arhitectura unui sistem de baze de date [DAT05]

Nivelul conceptual (Conceptual Schema) corespunde unei reprezentări abstracte a întregului conţinut informaţional al bazei de date. Schema conceptuală este scrisă folosind un limbaj DDL conceptual şi conţine definiţii ale conţinutului informaţional, care includ caracteristici suplimentare, cum ar fi constrângerile de securitate şi de integritate. Proiectarea logică sau conceptuală a bazei de date reprezintă responsabilitatea administratorului de date (DA Data Administrator). Administratorul de date (numit şi administratorul întreprinderii) este persoana care “înţelege” datele şi necesităţile întreprinderii referitoare la ele. Are ca sarcină de a decide ce date trebuie stocate în baza de date şi de a stabili regulile de întreţinere şi de tratare a acestor date, după ce sunt stocate.

1.3. SISTEMUL DE GESTIUNE AL BAZEI DE DATE (SGBD)

Sistemul de gestiune al bazei de date (DBMS - Database Management System) este un ansamblu de programe (produs software) care permite definirea, actualizarea şi consultarea datelor din baza de date.

Sistemul de gestiune al bazei de date tratează accesul la baza de date după următorul algoritm:

Pasul 1. Utilizatorul lansează o cerere de acces, folosind un sublimbaj de date (de regulă SQL) Pasul 2. Sistemul SGBD acceptă cererea şi o analizează Pasul 3. SGBD-ul analizează pe rând schema externă, corespondenţa extern- conceptual, schema conceptuală, corespondenţa conceptual-intern şi definiţia structurii de stocare Pasul 4. SGBD-ul execută operaţiile necesare în baza de date stocată.

Obiectivele unui SGBD:

Independenţa fizică. SGBD-ul are ca obiectiv central asigurarea independenţei dintre structurile de stocare a datelor şi structurile de date din lumea reală, adică dintre schema internă şi schema conceptuală.

Baze de date relaţionale

15

Cele două scheme descriu aceleaşi date, dar la nivele diferite. Independenţa fizică dă posibilitatea modificării schemei interne fără a modifica schema conceptuală, ţinând cont doar de criterii de performanţă şi flexibilitate a accesului.

Independenţa logică – este un obiectiv important şi reprezintă posibilitatea de a modifica schema externă fără a modifica schema conceptuală. Asigură deasemenea independenţa între utilizatori, fiecare având o anumită viziune asupra bazei de date. Avantajele independenţei logice sunt următoarele:

- permite fiecărui grup de utilizatori să vadă datele aşa cum şi le doresc;

- permite evoluţia schemei externe a unui grup de utilizatori fără a modifica schema conceptuală;

- permite evoluţia unei scheme externe, fără a afecta celelalte scheme externe. În rezumat este posibil de a adăuga / şterge atribute, de a adăuga / şterge asociaţii, de a adăuga / şterge entităţi, în schemele externe, dar şi în schema conceptuală, fără a modifica cea mai mare parte a aplicaţiilor.

Partajabilitatea datelor obiectivul este de a permite ca aplicaţiile să partajeze datele din baza de date în timp şi simultan. O aplicaţie poate folosi date ca şi cum ar fi singura care le utilizează, fără a şti că o altă aplicaţie, concurent, le poate modifica.

Integritatea şi coerenţa datelor – obiectivul este ca informaţiile să respecte restricţiile de integritate definite. Conceptul de integritate a datelor este relativ la calitatea informaţiei înregistrate. Constrângerile de integritate sunt specificate în definirea schemei bazei de date. Acestea sunt reguli care precizează valorile permise pentru anumite date, eventual în funcţie de alte date, apartenenţa la un anumit domeniu, la un anumit tip de date, sau pot fi constrângeri referenţiale, etc. Se asigură în acest mod coerenţa bazei de date

Manipularea datelor de utilizatorii finali are ca obiectiv utilizarea de către nespecialişti a unor limbaje cât mai apropiate de limbajul natural (limbaje neprocedurale) care să permită exploatarea cu uşurinţă a bazei de date şi efectuarea interogărilor fără a apreciza algoritmul de acces.

Funcţiile unui SGBD:

Baze de date relaţionale

16

Definirea datelor SGBD-ul acceptă definiţiile datelor (schemele externe, schema conceptuală, schema internă şi toate corespondenţele asociate) în format sursă şi le transformă în format obiect. Pentru aceasta există o componentă procesor sau compilator DDL (Data Definition Language) pentru fiecare dintre limbajele de definire a datelor. Dicţionarul de date (Data Dictionnary) – este o adevărată bază de date pentru sistem şi conţine date despre date (numite şi metadate). Metabaza de date sau dicţionarul de date este organizat sub formă de bază de date şi conţine definiţii ale obiectelor din sistem, diverse scheme şi corespondenţe (externe, conceptuale) precum şi restricţiile de securitate şi integritate.

Optimizarea şi execuţia – cererile DML vor fi prelucrate de optimizator pentru a realiza o implementare eficientă a cererii. Cererile optimizate sunt executate apoi sub controlul unui program numit manager de execuţie.

Gestiunea tranzacţiilor – tranzacţia este o funcţie care realizează trecerea unei baze de date dintr-o stare S1 într-o stare S2. Un sistem de gestiune a bazelor de date trebuie să asigure trei proprietăţi pentru această funcţie:

- atomicitatea tranzacţiei (Transaction Atomicity) este proprietatea ca o tranzacţie să fie executată în totalitate sau deloc;

- corectitudinea tranzacţiilor (Transaction Correctness) este proprietatea de respectare a coerenţei bazei de date la sfârşitul execuţiei tranzacţiei;

- izolarea tranzacţiilor (Transaction Isolation) este proprietatea tranzacţiei de a nu lăsa vizibile modificările produse înainte de sfârşitul tranzacţiei.

Securitatea şi confidenţialitatea datelor – presupune existenţa unor proceduri de identificare şi autorizare a utilizatorilor pentru a proteja datele de un acces neautorizat sau rău intenţionat. Acestea constituie limbajul de control al datelor (DCL Data Control Language). Cererile utilizatorilor sunt monitorizate pentru a depista şi respinge orice încercare de încălcare a constrângerilor de securitate.

Baze de date relaţionale

17

Scheme şi Cereri DML Cereri DML corespondenţe- planificate neplanificate (ad-hoc) Procesoare DDL Procesoare
Scheme şi
Cereri DML
Cereri DML
corespondenţe-
planificate
neplanificate (ad-hoc)
Procesoare DDL
Procesoare
Procesorul
DML
limbajului de
interogare
Cereri
compilate
Impunerea
Scheme şi
Optimizator
constrângerilor de
corespondenţe
securitate şi
integritate
Cereri
optimizate
Manager de
Metadate
execuţie
Baza de date
Date
Metadate (dicţionar de date)

Baze de date relaţionale

18

Fig.1.2. SGBD - Funcţiile şi componentele principale [DAT05]

Manipularea datelor - presupune instrumente şi mecanisme ce permit comunicarea: bază de date - utilizatori. SGBD-ul are o componentă procesor sau compilator DML (DML Data Manipulation Language) care permite specificarea operaţiilor de introducere, actualizare, ştergere şi interogare a datelor din baza de date. Cererile DML pot fi planificate (interogări prevăzute anterior) şi neplanificate (interogări ad-hoc). Interfeţele sunt alte forme de comunicare care permit SGBD-ului să transmită date către alte limbaje de programare (Pascal, Java, C++, Cobol etc.). Aceste interfeţe permit accesul şi manipularea datelor dintr-o bază de date plecând de la un program scris într-un limbaj de programare clasic (procedural).

Refacerea datelor şi concurenţa – presupune existenţa în sistem a unor componente software care să permită controlul refacerii bazei de date după incidente, precum şi controlul accesului concurent la date. Aceste mecanisme sunt bazate pe înregistrarea operaţiunilor realizate asupra bazei de date şi reexecutarea lor automată în caz de incident. Cererile de acces simultane sunt înregistrate într-un fir de aşteptare şi sunt deservite într-o anumită ordine.

Transformarea datelor (Data mapping) – este o funcţie care permite trecerea datelor din formatul corespunzător unui nivel în formatul altui

nivel. Deoarece există trei niveluri (extern, conceptual şi intern) vor exista două niveluri de transformare:

- transformarea conceptual intern permite trecerea datelor din formatul conceptual în formatul intern şi reciproc;

- transformarea extern - conceptual permite trecerea datelor din formatul conceptual în formatul extern şi reciproc;

În sinteză, scopul general al Sistemului de gestiune a bazelor de date este de a furniza interfaţa cu utilizatorul pentru sistemul de baze de date. Interfaţa cu utilizatorul se află la nivel extern şi poate fi definită ca o graniţă a sistemului, dincolo de care totul este invizibil pentru utilizator.

1.4. ARHITECTURA FUNCŢIONALĂ A SISTEMULUI DE GESTIUNE AL BAZEI DE DATE

Baze de date relaţionale

19

Arhitectura funcţională clasică a sistemelor de gestiune a bazelor de date integrează cele trei niveluri:

nivelul intern (baza de date fizică)

nivelul conceptual (schema conceptuală)

nivelul extern (vizualizarea).

Arhitectura este articulată pe dicţionarul datelor şi cuprinde două părţi:

un ansamblu de module (numite procesoare) care permite descrierea datelor şi deci constituirea dicţionarului datelor

o parte care asigură manipularea datelor, adică interogarea şi actualizarea bazei de date.

În fiecare din părţi se regăsesc cele trei niveluri intern, conceptual şi extern.

Georges Gardarin propune în *GAR03+ o arhitectură funcţională de referinţă apropiată de arhitectura sistemelor de gestiune a bazelor de date actuale, bazată pe două niveluri: schema şi vizualizările. Schema corespunde integrării schemelor internă şi conceptuală, iar vizualizarea este o schemă externă.

Din punct de vedere al descrierii datelor, un SGBD gestionează un dicţionar de date, numit şi metabaza de date, care este organizat ca o bază de date care descrie alte baze. Dicţionarul de date este alimentat prin comenzi de definire a schemei (CREATE ENTITY, CREATE RELATIONSHIP, CREATE INDEX) şi prin comenzi de definire a vizualizărilor (DEFINE VIEW). Aceste comenzi sunt analizate şi tratate de un procesor numit analizor, mai exact de partea procesorului ce tratează limbajul de descriere a datelor.

Din punct de vedere al manipulării datelor, cererile (de exemplu: APPEND, MODIFY, DELETE ) sunt tratate de analizorul de cereri, care realizează analiza sintactică (conform gramaticii) şi analiza semantică (conform vizualizării referite sau schemei) şi le traduce în format intern. O cerere în format intern care se referă la o vizualizare este tradusă în una sau mai multe cereri care fac referinţă la obiecte ce există în baza de date. Această funcţie este realizată de către un procesor- translator numit controlor de cereri, care modifică cererile şi în plus asigură controlul drepturilor de acces (autorizează citirea / scrierea unui obiect) şi controlul integrităţii în cazul actualizărilor. Controlul integrităţii constă în verificarea că baza de date nu a fost “poluată” în timpul actualizării, adică regulile de coerenţă a datelor se verifică şi după actualizare.

Baze de date relaţionale

20

Analizor Controlor Dicţionarul Optimizor datelor (metabaza) Executor BD
Analizor
Controlor
Dicţionarul
Optimizor
datelor
(metabaza)
Executor
BD

Analiza sintactică

Analiza semnatică

Modificarea cererilor

Controlul integrităţii

Optimizare

Elaborarea planului

Execuţia planului

Metode de acces

Controlul concurenţei

Fig.1.3. Arhitectura unui SGBD [GAR03]

Optimizatorul de cereri este un procesor cheie al sistemului de gestiune al bazei de date. Are ca rol esenţial elaborarea unui plan de acces optimizat pentru tratarea cererilor. Acest procesor descompune cererea în operaţii de acces elementare (de

şi stabileşte o ordine de execuţie

optimă sau aproape de optim pentru aceste operaţii. Procesorul alege şi metodele de acces care vor fi utilizate. Pentru a efectua cea mai bună alegere, optimizatorul

se bazează pe modele de cost care permit evaluarea costului unui plan de acces înainte de execuţia sa. Rezultatul optimizării (planul de acces optimizat) poate fi salvat în memorie pentru execuţii multiple ulterioare sau executat direct şi apoi distrus.

exemplu: selectare de index, citire articol,

)

Executorul este un procesor care are rolul de a executa planul de acces ales şi elaborat de optimizator. El se bazează pe metodele de acces care permit accesul la fişiere prin intermediul indecşilor şi / sau legăturilor. La acest nivel este gestionat controlul accesului concurent şi atomicitatea tranzacţiilor.

Baze de date relaţionale

21

1.5. ARHITECTURA CLIENT - SERVER

Scopul general al unui sistem de gestiune de baze de date este de a asigura dezvoltarea şi execuţia aplicaţiilor pentru baze de date. După apariţia sistemelor distribuite (Distributed Database System), arhitecturile operaţionale care s-au impus au fost arhitecturile client server.

Arhitectura client server a fost proiectată de o echipă din cadrul ANSI/X3/SPARC, numită DAFTG (Datbase Arhitecture Framework Task Group). Această arhitectură, utilizată la sfârşitul anilor 80 de mai mulţi constructori de sisteme de gestiune de baze de date, poate fi privită ca având două părţi: un server (numit şi back-end) şi un set de clienţi (numiţi şi front-end) [DAT05].

Arhitectura client server (Fig.1.4.) include nucleul unui sistem de gestiune de baze de date numit DMCS (Description Manipulation snd Control Sub-system), care funcţionează în mod server [GAR03]. Limbajul DL (Data Language) este limbajul standard de acces la SGBD.

(Data Language) este limbajul standard de acces la SGBD. Utilizatori finali Clienţi Server Baza de date

Utilizatori finali

Clienţi

Server

Baza de date

Fig.1.4. Arhitectura client - server

Serverul este sistemul de gestiune al bazei de date, care asigură funcţiile prezentate în paragraful 1.3. În acest context noţiunea de server reprezintă doar o altă denumire a sistemului de gestiune al bazei de date.

Baze de date relaţionale

22

Clienţii – sunt diverse programe de aplicaţii, furnizate de realizatorul SGBD-ului sau dezvoltate de utilizatori. Din punct de vedere al serverului, nu există nicio diferenţă între aplicaţiile scrise de utilizator şi cele încorporate – toate folosesc aceeaşi interfaţă cu serverul (interfaţa la nivel extern).

Aplicaţie Aplicaţie Aplicaţie client client client Reţea de comunicaţii Server SGBD BD
Aplicaţie
Aplicaţie
Aplicaţie
client
client
client
Reţea de comunicaţii
Server
SGBD
BD

Fig.1.5. Un calculator server şi mai multe calculatoare client Sistem de baze de date centralizat multiutilizator (Centralized Database System - Multiuser)

Baze de date relaţionale

23

Aplicaţiile client pot fi executate pe staţii diferite, conectate printr-o reţea de comunicaţie cu staţia pe care rulează serverul (Fig.1.5.). Această arhitectură permite o prelucrare distribuită a datelor şi astfel, o configurare a sistemului adaptată cerinţelor de calcul particulare. Serverul bazei de date poate fi un sistem puternic, iar fiecare client este o staţie personală cu o putere de calcul adecvată aplicaţiei executate *ION04+.

Un sistem de baze de date distribuit (Distributed Database System) poate avea atât datele cât şi sistemul de gestiune al bazei de date, distribuite pe mai multe staţii interconectate printr-o reţea de comunicaţie. Un astfel de sistem poate fi reprezentat asemănător prin prisma structurării client-server (Fig.1.6.).

Aplicaţie Aplicaţie Aplicaţie Reţea de comunicaţii
Aplicaţie
Aplicaţie
Aplicaţie
Reţea de comunicaţii
SGBD SGBD BD BD
SGBD
SGBD
BD
BD

Server

Server

Fig.1.6. Sistem de baze de date distribuit [ION04]

Baze de date relaţionale

24

Sistemul software care gestionează o astfel de bază de date se numeşte sistem de gestiune al bazei de date distribuite SGBDD (Distributed Database Management System DDBMS). Aplicaţiile client rulează pe alte staţii din reţea şi solicită servicii de la sistemul de gestiune distribuit.

Dintre avantajele sistemelor de baze de date distribuite amintim.

creşterea capacităţii de stocare şi prelucrare a datelor

creşterea disponibilităţii şi a partajării datelor.

Sistemele de baze de date distribuite sunt sisteme cu o complexitate crescută, care trebuie să asigure o cerinţă importantă - administrarea transparentă a datelor. Transparenţa se referă la capacitatea unui sistem distribuit de a ascunde detaliile de implementare, astfel încât utilizatorii să poată accesa datele fără a cunoaşte exact modul de amplasare, replicare sau comunicare a datelor [ION04].

1.6. MODELE DE BAZE DE DATE

Un model de date reprezintă o colecţie integrată de concepte, utilizate în descrierea datelor, relaţiilor dintre date şi constrângerilor asupra datelor.

Tipologia SGBD-urilor este în general funcţie de tipurile de structuri ale datelor pe care le suportă. Dintre modelele cele mai des întâlnite amintim *ION04+:

modelul ierarhic

modelul reţea

modelul relaţional

modelul orientat-obiect

modelul obiect relaţional

Modelul ierarhic (Hierarchical Model) a fost primul model folosit pentru dezvoltarea bazelor de date. Cea mai cunoscută realizare de SGBD ierarhic este sistemul IMS (Information Management System) dezvoltat de firma IBM în anii 60, în cadrul programului Apollo. Modelul permite reprezentarea claselor sau ansamblelor de obiecte printr-o structură ierarhică de înregistrări. Relaţiile de tip "tată-fiu" între clase sunt de tip 1:N. Ansamblul claselor se constituie într-un arbore direcţionat în care nodurile sunt tipurile de înregistrări, iar arcele sunt tipurile de legături.

Modelul reţea (Network Model) – utilizează o structură de graf pentru definirea schemei conceptuale a bazei de date. A apărut după modelul ierarhic şi a fost standardizat în 1971 de o comisie DBTG (Database Task Group). Nodurile grafului

Baze de date relaţionale

25

sunt tipurile de entităţi, iar muchiile reprezintă legăturile dintre tipurile de entităţi. Relaţiile sunt de tipul M:N şi se reprezintă fără duplicarea înregistrărilor, fiecare înregistrare putând fi referită de mai multe înregistrări. Acest model este în prezent rar folosit pentru baze de date generale care implică operaţii de interogare. Aplicarea modelului reţea se întâlneşte în bazele de date grafice utilizate în modelarea realităţii virtuale.

Modelul relaţional (Relational Model) premite vizualizarea unei baze de date ca un ansamblu de tabele bidimensionale. Modelul se bazează pe noţiunea de relaţie din matematică, care corespunde unei mulţimi de entităţi de acelaşi tip. Limbajele relaţionale de manipulare a datelor sunt limbaje neprocedurale – utilizatorul, de exemplu, formulează interogarea fără să indice procedura (algoritmul) de rezolvare. SGBD-urile relaţionale oferă un limbaj de programare unanim recunoscut şi acceptat, limbajul SQL, bazat pe algebra relaţională. Pentru limbajul SQL au fost emise mai multe standarde de către International Standardization Office (ISO).

Modelul orientat-obiect (Object Model) – este un concept unificator în informatică, fiind aplicabil în programare, în proiectare hardware-ului, a bazelor de date, etc. Sistemele de baze de date orientate obiect se bazează pe limbajele de programare orientate obiect. Au o utilizare limitată, mult mai redusă decât cea a sistemelor de baze de date relaţionale. Pentru bazele de date orientate obiect există un limbaj standard standard de interogare OQL (Object Query Language) propus de ODMG (Object Database Management Group).

Modelul obiect-relaţional (Object-Relational Model) este considerat următorul mare val în dezvoltarea şi întreţinerea bazelor de date. Construcţia se poate realiza dezvoltând sistemul relaţional prin adăugarea caracteristicilor obiectuale necesare sau pornind de la un sistem orientat obiect şi adăugând caracteristicile relaţionale. În general, dezvoltarea sistemelor de gestiune a bazelor de date obiect-relaţionale (SGBDOR) se realizează prin extinderea sistemelor relaţionale, gradat, prin adăugare de caracteristici ale modelului obiect. Aceasta asigură continuarea aplicaţiilor relaţionale existente în noile versiuni de sisteme SGBDOR, ceea ce permite producătorilor să-şi păstreze clienţii şi domeniile de utilizare. Mari producători de sisteme de gestiune (Oracle, Informix, IBM) au extins în acest mod sistemele lor relaţionale pentru a deveni sisteme obiect-relaţionale. Standardele în domeniul sistemelor de gestiune a bazelor de date obiect-relaţionale sunt extensii ale standardului SQL. Versiunea din anul 1999, denumită SQL3, conţine extensii de orientare spre obiecte a limbajului SQL.

Baze de date relaţionale

26

1.7. MODELUL ENTITATE ASOCIERE (E-A)

În literatura de specialitate se întâlneşte şi denumirea “entitate-relaţie”, dar datorită confuziilor ce pot apare cu conceptul de relaţie vom folosi denumirea entitate asociere. Modelul Entitate Asociere (Entity-Relationship Model), introdus în 1976 de Peter Chen, este un model conceptual care defineşte mulţimile de entităţi şi asocierile (legăturile) dintre ele.

Entitatea este “ceva ce poate fi identificat ca distinct”. O entitate se referă la un aspect al realităţii obiective şi poate reprezenta un obiect fizic, o activitate, un concept, etc.

Atribut - o proprietate care descrie un anumit aspect al unei entităţi. O entitate se diferenţiază de alte entităţi printr-un ansamblu de atribute care permit descrierea precisă a acesteia. Atributele prin care este descrisă o entitate se aleg astfel încât să fie relevante relativ la domeniul de interes pentru care se defineşte modelul respectiv.

Tip de entitate - toate entităţile similare, care pot fi descrise prin aceleaşi atribute, aparţin unui tip de entitate.

Mulţime de entităţi – colecţia tuturor entităţilor de acelaşi tip

În proiectarea bazelor de date există două tipuri de entităţi: entităţi tari (puternice, normale) şi entităţi slabe (dependente). Entitatea tare are o existenţă proprie în cadrul modelului, în timp ce entitatea slabă nu poate exista decât dacă există o entitate tare cu care să fie asociată.

Asocierea este o corespondenţă (corelaţie, legătură) între entităţi din două sau mai multe mulţimi de entităţi.

Gradul unei asocieri este dat de numărul de mulţimi de entităţi asociate. Vom

presupune în continuare, pentru simplitate, că asocierile au gradul 2. Considerăm două mulţimi de entităţi E1 şi E2. Asocierile de gradul 2 pot fi de trei categorii:

asociere 1:1 (one-to-one) – unei entităţi din E1 îi corespunde o singură entitate din E2 şi reciproc (relaţie de tip soţ – soţie, mai exact căsătoria monogamă)

asociere 1:N (one-to-many) – unei entităţi din E1 îi corespund una sau mai multe entităţi din E2, dar fiecărei entităţi din E2 îi corespunde o singură entitate din E1 (relaţie de tip tată – fiu)

Baze de date relaţionale

27

asociere M:N (many-to-many) – unei entităţi din E1 îi corespund una sau mai multe entităţi din E2 şi reciproc (relaţie de tip client – produs, adică un client poate cumpăra mai multe produse şi un produs poate fi cumpărat de mai mulţi clienţi)

Diagrama entitate-asociere prezintă modelul entitate-asociere prin mulţimile de entităţi şi asocierile dintre acestea. În literatura de specialitate se propun mai multe variante de notaţii pentru diagrama entitate-asociere (Chen, Ross, LBMS, etc.). Una dintre cele mai folosite este redată în Fig.1.7.

entitate tare

entitate slabăcele mai folosite este redată în Fig.1.7. entitate tare atribut E1 1 E2 A N asociere

atribut E1 1 E2 A N
atribut
E1
1
E2
A N

asociere 1:N

între 2 tipuri de entităţi

Fig.1.7. Reprezentarea diagramei entitate-asociere

Exemplificăm construcţia diagramei entitate-asociere pentru modelarea activităţii didactice şi de cercetare pe bază de proiecte dintr-o facultate (Fig.1.8.). Este un model simplificat în care se consideră patru tipuri de entităţi: Facultate, Cadru didactic, Proiect, Curs.

Baze de date relaţionale

28

Asocierea Facultate-Cadru didactic este de tipul 1:N, deoarece într-o facultate sunt mai multe cadre didactice, iar un cadru didactic aparţine unei singure facultăţi. Asocierea Cadru didactic-Proiect este de tipul M:N, deoarece la un proiect de cercetare pe bază de contract lucrează mai multe cadre didactice şi fiecare cadru didactic poate lucra la mai multe proiecte. Asocierea Cadru didactic-Curs este de tipul 1:N, deoarece un cadru didactic are în norma didactică mai multe cursuri şi fiecare curs are un singur cadru didactic titular. În modelul prezentat asocierile sunt reprezentate prin verbele: cuprinde, predă, lucrează:

- facultatea cuprinde mai multe cadre didactice - un cadru didactic predă mai multe cursuri - un cadru didactic lucrează la mai multe proiecte de cercetare

nume buget
nume
buget
Facultate 1

Facultate

1

Facultate 1
nume salariu
nume
salariu

N

N Cadru didactic
N Cadru didactic

Cadru didactic

cuprinde

Facultate 1 nume salariu N Cadru didactic cuprinde M 1 predă lucrează N N Curs Proiect
M 1 predă lucrează N N Curs Proiect denumir nume buget program studiu
M
1
predă
lucrează
N
N
Curs
Proiect
denumir
nume
buget
program
studiu

Fig.1.8. Exemplu de diagramă E-A

1.8. BAZĂ DE DATE – BANCĂ DE DATE

Există în literatura de specialitate mai multe abordări ale celor două concepte.

Modul lor de tratare este departe de a fi unitar. În unele lucrări se consideră că banca de date este formată din:

Baza de date

Baze de date relaţionale

29

Sistemul de gestiune al bazei de date (SGBD)

Alţi autori extind noţiunea de bancă de date şi consideră banca de date formată din :

Baza de date

Sistemul de gestiune al bazei de date (SGBD)

Hardware – ul necesar funcţionării sistemului

Programele de aplicaţii

Utilizatorii

În cartea L’art des bases de données, autorii S.M. Miranda, J.M. Busta fac o distincţie clară între cele două concepte *MIR88+:

Baza de date conţine date primare care sunt exploatate cu ajutorul unui SGBD. În cazul unei interogări, sistemul de gestiune al bazei de date furnizează direct răspunsul.

Banca de date date conţine date referenţiale şi accesul este asigurat cu ajutorul unui sistem documentar (SD). Sistemul documentar permite o direcţionare către un

şi după consultare se obţine răspunsul la

text (carte, articol, referinţă web, interogarea formulată.

)

Exemplul prezentat în lucrarea mai sus citată clarifică cele două abordări:

Considerăm o colecţie de date care conţine informaţii despre preşedinţii statelor

lumii. Printre atributele care caracterizează tipul de entitate preşedinte avem atributul “stare de sănătate” , care poate lua mai multe valori, printre care { ,

nebun,

}.

Dacă formulăm interogarea:

“Care a fost starea de sănătate a preşedintelui Wilson (SUA) între 1914-1918 ?”

Răspunsul dat de banca de date va fi de genul: Istoria contemporană a SUA, pag. 152, ed. 1980, iar răspunsul efectiv se obţine în urma consultării lucrării indicate. În cazul unei baze de date răspunsul va fi obţinut direct pe baza unei interogări (formulată într-un limbaj neprocedural) care va da valoarea atributului “stare de sănătate” = nebun.

Baze de date relaţionale

30

1.9. SCURTĂ ISTORIE A BAZELOR DE DATE

1961 - apariţia sistemului IDS (Integrated Data Storage) al firmei General Electric.

Terminologia utilizată (tipul record şi tipul set) va sta la baza modelului reţea

dezvoltat la "Conference On DAta SYstems and Languages Data Base Task Group" (CODASYL DBTG).

1965-1970 - dezvoltarea sistemelor de gestiune a fişierelor generalizate. IBM dezvoltă modelul ierarhic şi sistemul IMS (Information Management System). În acceasşi perioadă apare IMS DB/DC (DataBase/DataCom) care suportă modelul reţea. În anii 70, domeniul bazelor de date şi sistemelor de gestiune a bazelor de date se dezvoltă foarte mult, ajungând să fie disciplină universitară şi de cercetare. Apar numeroase produse comerciale care implementează propunerile raportului CODASYL DBTG: ISD II (HoneyWell), DMS1100 (UNIVAC), DMS II (Burroughs), etc.

1970 - apare modelul relaţional de date, anunţat de E.F.Codd în articolul A Relational Model of Data for Large Shared Databanks, publict în CACM, vol. 13, no.6, 1970.

1972 – prima conferinţă internaţională organizată de ACM SIGMOD (Association of

Computing Machinery, Special Interest Group on Management Of Data).

1975 - prima conferinţă internaţională VLDB (Very Large Data Base); publicarea

raportului ANSI-SPARC.

1976 - publicarea modelului Entitate Asociere de P.P.Chen în articolul The Entity-

Relationship Data Model: Toward a Unified View of Data, apărut în ACM-TODS, vol.1, no.1, 1976.

1975 - 1980 - dezvoltarea sistemelor relaţionale experimentale: SYSTEM-R (IBM) şi

INGRES (Berkeley, University of California).

- înlocuit SGBD-urile ierarhice şi reţea. SGBD-urile pot fi utilizate pe microcalculatoare şi se realizează sisteme din generaţia a patra cu instrumente şi interfeţe multiple.

apariţia şi comercializarea a numeroase SGBD-uri relaţionale ce au

1980

- tot mai scăzut: PowerBuilder (SYSBASE), Oracle Developer, VB (Microsoft), etc. Se dezvoltă modelul client-server, ce se foloseşte în tot mai multe aplicaţii economice. Se dezvoltă şi produse sotftware ca Exce/, Access (Microsoft) pentru scop personal de o complexitate mai scăzută.

1990

se dezvoltă numeroase produse a căror complexitate creşte, la un preţ

Baze de date relaţionale

31

1990-1995 - apar baze de date pentru Internet. Sunt utilizate conceptele client- server şi astfel complexitatea Internet-ului creşte exponenţial.

2000 - pentru aplicaţiile pe Internet apar o serie de instrumente cum ar fi Active Server Pages, Java Servlets, JDBC, Enterprise Java Beans, ColdFusion, Dream Weaver, Oracle Developer 2000, Apache, MySQL. Se dezvoltă procesarea tranzacţiilor online (OLTP) precum şi procesarea analitică de tip OLAP.

După 2000 - se dezvoltă aplicaţii pe arhitectura client-server pentru PDA-uri, tranzacţii cu POS-uri, telefoane mobile. Companiile cele mai reprezentative din domeniu rămân: IBM, Microsoft şi Oracle.

din domeniu rămân: IBM, Microsoft şi Oracle . Să ne reamintim DATA - înregistrarea unei observaţii,

Să ne reamintim DATA - înregistrarea unei observaţii, obiect, fenomen, imagine, sunet sau text, într-o formă convenabilă unei prelucrări, interpretări sau transmiteri prin mijloacele informaticii. Datele reprezintă aspecte elementare nesupuse unei prelucrări şi neevaluate din punct de vedere al utilităţii.

INFORMAŢIA - semnificaţia ce poate fi ataşată sau poate fi dedusă dintr-un ansamblu de date pe baza corelaţiilor dintre acestea, având un scop bine determinat, de satisfacere a cerinţelor utilizatorilor.

BAZA DE DATE (Database) un ansamblu structurat de colecţii de date operaţionale înregistrate pe suport adresabil, aflate în interdependenţă logică, împreună cu descrierea datelor şi a relaţiilor dintre ele şi care sunt prelucrate în aplicaţiile informatice ale unei organizaţii. Baza de date permite operaţii de introducere, ştergere, actualizare şi interogare a datelor.

BAZA DE DATE

este un ansamblu de date:

structurate;

coerente, adică există legături (interdependenţe) logice între diferitele colecţii ce alcătuiesc baza de date;

persistente, adică datele rămân memorate pe suport magentic, independent de execuţia programelor de aplicaţii, fiind păstrate pentru o anumită perioadă de timp;

neredundante - condiţia de neredundanţă este în general înlocuită de o condiţie mai slabă: redundanţă minimă şi controlată în scopul de a mări viteza de acces la date;

independente de programul de aplicaţie;

Baze de date relaţionale

32

direct accesibile după mai multe criterii;

simultan accesibile de către mai mulţi utilizatori.

 simultan accesibile de către mai mulţi utilizatori. Rezumat Procesul de organizare şi prelucrare a datelor

Rezumat Procesul de organizare şi prelucrare a datelor a parcurs mai multe etape, până s-a ajuns la soluţia dominantă în prezent, care constă în organizarea datelor în baze de date. ARHITECTURA UNUI SISTEM DE BAZE DE DATE (Database System) cuprinde:

baza de date propriu-zisă în care se memorează datele

software-ul format din Sistemul de Gestiune al Bazei de Date (SGBD) şi aplicaţiile de baze de date (Database Application)

metabaza de date - dicţionarul datelor (DD), conţine informaţii despre date, structura acestora, documentaţie

hardware-ul utilizat

utilizatorii bazei de date: administratorul bazei de date, programatorul de aplicaţii (administratorul aplicaţiei) şi utilizatorii finali (nespecialişti)

reglementările legislative ce permit buna funcţionare a sistemului.

Cerinţele minimale care se impun unei baze de date sunt:

furnizarea în timp util a informaţiilor solicitate, se referă la timpul de răspuns la o interogare efectuată;

costuri minime de prelucrare şi întreţinere a informaţiei;

capacitatea de a satisface, cu aceleaşi date necesităţile informaţionale ale unui număr mare de utilizatori;

flexibilitatea - posibilitatea de adaptare la cerinţe noi, de a da răspunsuri la interogări neprevăzute iniţial;

integrarea baza de date poate fi considerată o unificare a mai multor fişiere – altfel diferite – redundanţa acestor fişiere fiind parţial sau total eliminată;

asigurarea unei redundanţe minime şi controlate a datelor – rezultă din cerinţa de integrare; menţinerea a mai multor copii ale aceloraşi date poate fi impusă de motive de ordin tehnic, însă această redundanţă minimă trebuie controlată cu atenţie, ceea ce presupune ca sistemul de gestiune al bazei de date să o cunoască şi să-şi asume responsabilitatea de a propaga actualizările;

Baze de date relaţionale

33

partajarea şi sincronizarea – posibilitatea de partajare şi exploatare simultană a datelor de către mai mulţi utilizatori; se realizează astfel posibilitatea de acces concurent la date;

confidenţialitatea – asigurarea securităţii datelor prin mecanisme de protecţie împotriva accesului neautorizat;

integritatea – presupune existenţa unor proceduri de validare şi recuperare a datelor după accidente; problema integrităţii este de garanta (atât cât este posibil) că datele din baza de date sunt corecte;

compatibilitatea şi expandabilitatea posibilitatea de valorificare a eforturilor anterioare şi anticiparea nevoilor de dezvoltare;

permisivitatea – posibilitatea de ierarhizare a datelor după criteriul frecvenţei acceselor, sau reorganizarea datelor în scopul creşterii performanţelor bazei de date.

Sistemul de gestiune al bazei de date (DBMS - Database Management System) este un ansamblu de programe (produs software) care permite definirea, actualizarea şi consultarea datelor din baza de date.

Arhitectura este articulată pe dicţionarul datelor şi cuprinde două părţi:

un ansamblu de module (numite procesoare) care permite descrierea datelor şi deci constituirea dicţionarului datelor

o parte care asigură manipularea datelor, adică interogarea şi actualizarea bazei de date.

Scopul general al unui sistem de gestiune de baze de date este de a asigura dezvoltarea şi execuţia aplicaţiilor pentru baze de date. După apariţia sistemelor distribuite (Distributed Database System), arhitecturile operaţionale care s-au impus au fost arhitecturile client server.

Un sistem de baze de date distribuit (Distributed Database System) poate avea atât datele cât şi sistemul de gestiune al bazei de date, distribuite pe mai multe staţii interconectate printr-o reţea de comunicaţie. Un astfel de sistem poate fi reprezentat asemănător prin prisma structurării client-server.

Baze de date relaţionale

34

Modelul relaţional (Relational Model) premite vizualizarea unei baze de date ca un ansamblu de tabele bidimensionale. Modelul se bazează pe noţiunea de relaţie din matematică, care corespunde unei mulţimi de entităţi de acelaşi tip. Limbajele relaţionale de manipulare a datelor sunt limbaje neprocedurale – utilizatorul, de exemplu, formulează interogarea fără să indice procedura (algoritmul) de rezolvare.

Modelul Entitate Asociere (Entity-Relationship Model), introdus în 1976 de Peter Chen, este un model conceptual care defineşte mulţimile de entităţi şi asocierile (legăturile) dintre ele.

de entităţi şi asocierile (legăturile) dintre ele. Test de evaluare a cunoştinţelor Ce reprezintă o baze

Test de evaluare a cunoştinţelor Ce reprezintă o baze de date? Ce reprezintă informația? Care sunt principalele trasături ale bazelor de date?

Baze de date relaţionale

35

Unitatea de învăţare 2. BAZE DE DATE RELAŢIONALE

Introducere Modelul relaţional al datelor propus de E.F. Codd, a fost perfecţionat în anii următori printr Modelul relaţional al datelor propus de E.F. Codd, a fost perfecţionat în anii următori printr-un număr mare de rezultate teoretice şi practice de C.J. Date, R. Boyce, R. Fagin, W.W. Armstrong şi alţii. Modelul are ca obiectiv esenţial creşterea independenţei programelor în raport cu reprezentarea datelor.

programelor în raport cu reprezentarea datelor. Competenţele unităţii de învăţare După parcurgerea

Competenţele unităţii de învăţare După parcurgerea acestei părți studenții vor înțelege următoarele concepte:

CONCEPTE GENERALE ALE BDR RESTRICŢIILE DE INTEGRITATE ŞI SECURITATEA DATELOR

Durata medie de parcurgere a primei unităţi de învăţare este de 2 ore. ore.

[CON01], [DAT05], [DOL98], [FOT97], [GAR03], [GBD02], [ION04], [LUN95], *MEI06+, *MIR88+, *POI96+, *ŢÎM92+, *VEL03+

2.1. CONCEPTE GENERALE

Modelul relaţional al datelor propus de E.F. Codd, a fost perfecţionat în anii următori printr-un număr mare de rezultate teoretice şi practice de C.J. Date, R. Boyce, R. Fagin, W.W. Armstrong şi alţii. Modelul are ca obiectiv esenţial creşterea independenţei programelor în raport cu reprezentarea datelor.

Caracteristicile modelului relaţional:

datele sunt percepute de utilizatori ca tabele

simplitate şi precizie în definirea elementelor de bază (relaţii, atribute, domenii)

operatorii relaţionali generează un tabel rezultat din tabelele operanzi

Baze de date relaţionale

36

restricţiile de integritate, normalizarea relaţiilor, controlul concurenţei permit crearea structurii datelor şi a prelucrării lor într-un mod consistent şi asigură integritatea şi protecţia acestora.

În Tabelul 2.1. sunt prezentate elementele ce caracterizează modelul relaţional şi corespondenţa lor în conceptele de bază ale ingineriei software.

Tabelul 2.1.

Modelul relaţional

Inginerie software

structura relaţională a datelor

informaţie

operatorii modelului relaţional

proces

restricţiile de integritate

integritate

Pentru claritatea expunerii prezentăm în Tabelul 2.2. corespondenţele formal - uzual - fizic dintre diferitele concepte utilizate pentru a descrie elementele de bază ale organizării datelor în modelul relaţional.

Tabelul 2.2

Formal

Uzual

Fizic

relaţie

tabel linie coloană tip de dată

fişier articol câmp tip de dată

tuplu

atribut

domeniu

BAZA DE DATE RELAŢIONALĂ este un ansamblu organizat de tabele (relaţii), variabile în timp, împreună cu legăturile dintre ele. Fiecare tabel (relaţie) reprezintă un tip de entitate sau o asociere dintre două sau mai multe tipuri de entităţi.

E.F.Codd formulează 13 reguli pentru evaluarea performanţelor unui sistem de gestiune a bazelor de date relaţionale (SGBDR). Aceste reguli exprimă cerinţele maximale ca un SGBDR să fie relaţional.

Condiţiile minimale impuse ca un SGBD să fie relaţional sunt:

să implementeze modelul de date relaţional prin DDL (Data Definition Language) şi DML (Data Manipulation Language)

să implementeze un limbaj de interogare relaţional.

Sistemul de gestiune a bazelor de date relaţionale a devenit elementul software dominant utilizat azi în prelucrarea datelor, cu o cifră a vânzărilor (estimată la începutul anilor 2000), aproximativ între 8 şi 10 miliarde de dolari şi cu o previziune a ratei de creştere de 25% pe an *CON01+.

Baze de date relaţionale

37

În Fig. 2.1. se prezintă arhitectura funcţională a unui sistem de gestiune a bazelor de date relaţional.

Domeniul este un ansamblu de valori care poate fi definit explicit prin enumerarea tuturor valorilor sau implicit prin precizarea proprietăţilor pe care le au valorile domeniului respectiv.

Exemplu:

D 1 = {“MK”, “ECTS”, “FB”, “CIG”, “IE”, “MN” }

D2 x| xN,x0,100

D 3 = {0, 9, 19}

domeniul D 1 este definit explicit prin enumerarea programelor de studii care au în plan disciplina Baze de date;

domeniul D 2 este definit implicit prin specificarea proprietăţilor care pot fi luate de valorile domeniului;

domeniul D 3 este definit explicit prin enumerarea valorilor posibile (în procente) ale cotelor de TVA.

D1 D2

Dn V1,V2 ,

,Vn

Fiecărui domeniu i se asociază un atribut :

, f : undeV1 Ai Di , D1, f Ai ,Vn Di Dn

Baze de date relaţionale

38

R

E

Z

U

L

T

A

T

Interfaţa utilizatorului Gestiunea vederilor Gestiune buffer Mecanisme de acces
Interfaţa utilizatorului Gestiunea vederilor Gestiune buffer Mecanisme de acces
Interfaţa utilizatorului Gestiunea vederilor Gestiune buffer Mecanisme de acces
Interfaţa utilizatorului Gestiunea vederilor Gestiune buffer Mecanisme de acces
Interfaţa utilizatorului Gestiunea vederilor Gestiune buffer Mecanisme de acces
Interfaţa utilizatorului Gestiunea vederilor Gestiune buffer Mecanisme de acces
Interfaţa utilizatorului Gestiunea vederilor Gestiune buffer Mecanisme de acces
Interfaţa utilizatorului Gestiunea vederilor Gestiune buffer Mecanisme de acces

Interfaţa utilizatorului

Gestiunea vederilor

Gestiune buffer

Gestiune buffer Mecanisme de acces

Mecanisme de acces

Integritatea semantică

Autorizarea accesului

Optimizarea cererilor

Gestiunea planurilor de

execuţie

Controlul execuţiei

Executarea operatorilor algebrici

Gestiunea accesului concurent

Jurnalizarea

Control

Tratarea cererilor Gestiunea
Tratarea
cererilor
Gestiunea

accesului

Securitate

Fig. 2.1. Arhitectura funcţională a unui SGBD relaţional

Baze de date relaţionale

39

Relaţia poate fi definită ca o mulţime de tupluri ce aparţine produsului cartezian

D1 D2

Dn , astfel spus

R D1 D2

Dn .

Relaţia se poate memora într-un tabel bidimensional:

R

 

A 1

A 2

A n

t

1

a

11

a

12

a

1n

t

2

a

21

a

22

a

2n

t

m

a m1

a m2

a mn

Liniile tabelului formează elementele relaţiei numite şi tupluri.

Notăm: tuplul i prin ti  ai1,ai2 ,

,ain .

În modelul relaţional, relaţiile sunt utilizate pentru a păstra informaţii despre obiectele care vor fi reprezentate în baza de date. Liniile tabelului corespund înregistrărilor individuale, iar coloanele corespund atributelor. Atributele pot apărea în orice ordine, relaţia rămânând neschimbată, adică păstrând acelaşi înţeles.

Schema relaţiei (schema relaţională) este un element invariant în timp şi este dată de mulţimea numelor atributelor corespunzătoare unei relaţii. Pentru fiecare atribut se precizează domeniul asociat.

Notăm schema unei relaţii cu:

sau pe scurt: RA1,A2 ,

,An

.

RA1 : D1,A2 : D2 ,

,An : Dn

Schema bazei de date relaţionale este dată de mulţimea tuturor schemelor relaţionale corespunzătoare unei aplicaţii, iar conţinutul curent al relaţiilor la un moment dat se numeşte bază de date relaţională.

Cardinalul unei relaţii este dat de numărul de tupluri din relaţie.

Gradul unei relaţii (aritatea relaţiei) este dat de numărul de atribute din relaţie.

Relaţia virtuală (relaţie derivată, viziune) este definită implicit pe baza altor relaţii, prin intermediul unei expresii relaţionale. Stabilirea efectivă a tuplurilor care compun relaţia virtuală se realizează prin evaluarea expresiei relaţionale în momentul în care utilizatorul apelează la această relaţie.

Domenii compatibile cu reuniunea domeniile au acelaşi grad (aritate) şi atributele corespondente iau valori în aceleaşi domenii.

Baze de date relaţionale

40

Relaţia se prezintă ca o mulţime de tupluri. Logic, această mulţime nu poate conţine elemente identice, cu alte cuvinte, relaţia nu poate avea tupluri duplicate. Necesitatea identificării unui tuplu a condus la noţiunea de cheie.

Cheia unei relaţii reprezintă ansamblul minimal de atribute cu rol de identificare unică a tuplurilor dintr-o relaţie. Într-o relaţie pot exista mai multe atribute / combinaţii de atribute cu rol de identificare unică a tuplurilor, există deci mai multe chei candidate. Dintre aceste chei candidate se alege cheia primară, celelalte devin chei secundare sau alternante. Orice relaţie are cel puţin o cheie.

Orice cheie candidat K, pentru relaţie R are două proprietăţi:

unicitate – în fiecare tuplu al relaţiei R, valorile cheii K identifică în mod unic acel tuplu

ireductibilitate – nicio submulţime a cheii K nu are proprietatea de unicitate.

Identificarea unei chei candidat necesită cunoaşterea înţelesului din lumea reală a atributului sau atributelor implicate, astfel încât să se poată stabili dacă sunt posibile dubluri. Numai prin utilizarea acestor informaţii semantice, putem fi siguri că o combinaţie de atribute constituie o cheie candidat.

Cheia simplă este cheia formată dintr-un singur atribut, iar cheia compusă este formată din mai multe atribute.

Domeniul primar este domeniul pe care este definită cheia primară.

Cheia externă este un atribut /grup de atribute dintr-o relaţie, ale cărui valori sunt definite pe domeniul primar al altei relaţii.

Relaţia primară. O relaţie RP este primară, dacă există o altă relaţie R, legată semantic de ea, care are drept cheie externă, cheia primară a relaţiei considerate (RP).

Exemple.

1. Fie relaţia STUDENT [nr_matricol, nume, facultate, grupa, sectia, CNP, adresa]

Atributele nr_matricol şi CNP au rol de identificare unică a tuplurilor din relaţie; reprezintă chei candidate. Alegem drept cheie primară atributul nr_matricol, care are domeniul format din 4 caractere numerice şi este mai uşor de operat. Atributul CNP, format din 13 caractere numerice devine cheie secundară (alternantă).

Baze de date relaţionale

41

PRODUSE [cod_produs, denumire, um] CONTRACTE [nr_contract, cod_produs, cod_client, data, cantitate, pret_unitar] CLIENTI [cod_client, nume, CIF, adresa, cont, tel, email]

relaţia PRODUSE are cheia primară - cod_produs;

relaţia CONTRACTE are cheia primară - nr_contract, iar atributele cod_produs şi cod_client sunt chei externe ;

relaţia CLIENTI are cheia primară - cod_client, iar atributul CIF (cod de înregistrare fiscală) este cheie secundară;

PRODUSE şi CLIENTI sunt relaţii primare.

2.2. RESTRICŢIILE DE INTEGRITATE ŞI SECURITATEA DATELOR

A. Integritatea domeniului – constă din controlul sintactic şi semantic al unei date oarecare şi se referă la definiţia tipului domeniului. De exemplu, în cazul unui domeniu definit explicit prin enumerarea valorilor, trebuie să ne asigurăm că valorile atributului respectiv fac parte din mulţimea enumerată. Sau, în cazul unui domeniu definit implicit, se poate verifica, de exemplu, dacă numărul unei facturi aparţine unui interval dat.

B. Integritatea entităţii – se referă la restricţii asupra cheii primare. Aceasta

trebuie să fie unică şi nenulă (atributele cheii primare trebuie să fie diferite de valoarea null) . Comentariu [CON01] . Null reprezintă valoarea unui atribut, care este necunoscută. Poate însemna că o valoare nu este aplicabilă unui anumit tuplu, sau că deocamdată nu s-a atribuit nicio valoare. Null nu este acelaşi lucru cu o valoare numerică egală cu zero sau cu un şir de text completat cu spaţii, deoarece zero şi spaţiile sunt valori, pe când un null semnifică absenţa unei valori. Null-urile crează probleme de implementare, deoarece modelul relaţional se bazează pe calculul predicatelor de ordinul întâi, care reprezintă o logică bivalentă, unde singurele valori admise sunt adevăr sau fals. Introducerea null-urilor înseamnă că ar trebui să lucrăm cu o logică polivalentă. Codd tratează null-urile ca parte integrantă a modelului relaţional, în timp ce Date consideră că această abordare este greşită şi problema informaţiilor lipsă nu este complet înţeleasă. De remarcat, că nu toate sistemele relaţionale acceptă null-urile.

C. Integritatea referirii impune ca valorile cheii externe să figureze printre valorile cheii primare din relaţia referită (relaţia primară).

Problema securităţii datelor presupune [GBD02]:

Baze de date relaţionale

42

Asigurarea integrităţii semantice care a fost parţial abordată în cadrul restricţiei de integritate a domeniului.

Asigurarea sincronizării accesului concurent la baza de date, presupune că acţiunile concurente ale utilizatorilor nu aduc prejudicii altor utilizatori.

Asigurarea siguranţei în funcţionare, adică în urma unei defecţiuni fizice

(cădere de curent,

) baza de date rămâne în stare coerentă.

Asigurarea securităţii în utilizare presupune că baza de date este

manipulată de utilizatori care au drepturi de acces.

Starea de coerenţă a bazei de date relaţionale poate fi asigurată prin utilizarea tranzacţiilor. Proprietatea de atomicitate a tranzacţiei, prezentată în paragraful 1.3., presupune ca setul de operaţii pe care îl reprezintă tranzacţia să fie executat în întregime sau deloc. Operaţiile cuprinse într-o tranzacţie nu pot fi executate parţial – dacă una din ele eşuează celelalte sunt anulate.

Astfel, o tranzacţie poate fi:

salvată (commited) – toate operaţiile tranzacţiei au fost încheiate cu succes, iar baza de date este actualizată cu noile modificări;

derulată înapoi (rollback) – toate operaţiile din respectiva tranzacţie sunt anulate, iar baza de date este restaurată la starea dinaintea tranzacţiei.

Acest mod de lucru asigură starea de coerenţă a bazei de date.

Să ne reamintim Cheia unei relaţii reprezintă ansamblul minimal de atribute cu rol de identificare unică a tuplurilor dintr-o relaţie. Într-o relaţie pot exista mai multe atribute / combinaţii de atribute cu rol de identificare unică a tuplurilor, există deci mai multe identificare unică a tuplurilor dintr - o relaţie. Într - chei candidate. Dintre aceste chei candidate chei candidate. Dintre aceste chei candidate se alege cheia primară, celelalte devin chei secundare sau alternante. Orice relaţie are cel puţin o cheie.

sau alternante. Orice relaţie are cel puţin o cheie. Rezumat Caracteristicile modelului relaţional:  datele

Rezumat

Caracteristicile modelului relaţional:

datele sunt percepute de utilizatori ca tabele

simplitate şi precizie în definirea elementelor de bază (relaţii, atribute, domenii)

operatorii relaţionali generează un tabel rezultat din tabelele operanzi

restricţiile de integritate, normalizarea relaţiilor, controlul concurenţei permit crearea structurii datelor şi a prelucrării lor

Baze de date relaţionale

43

într-un mod consistent şi asigură integritatea şi protecţia acestora.

BAZA DE DATE RELAŢIONALĂ este un ansamblu organizat de tabele (relaţii), variabile în timp, împreună cu legăturile dintre ele. Fiecare tabel (relaţie) reprezintă un tip de entitate sau o asociere dintre două sau mai multe tipuri de entităţi.

E.F.Codd formulează 13 reguli pentru evaluarea performanţelor unui sistem de gestiune a bazelor de date relaţionale (SGBDR). Aceste reguli exprimă cerinţele maximale ca un SGBDR să fie relaţional.

Condiţiile minimale impuse ca un SGBD să fie relaţional sunt:

să implementeze modelul de date relaţional prin DDL (Data Definition Language) şi DML (Data Manipulation Language)

să implementeze un limbaj de interogare relaţional.

În modelul relaţional, relaţiile sunt utilizate pentru a păstra informaţii despre obiectele care vor fi reprezentate în baza de date. Liniile tabelului corespund înregistrărilor individuale, iar coloanele corespund atributelor. Atributele pot apărea în orice ordine, relaţia rămânând neschimbată, adică păstrând acelaşi înţeles.

Schema relaţiei (schema relaţională) este un element invariant în timp şi este dată de mulţimea numelor atributelor corespunzătoare unei relaţii. Pentru fiecare atribut se precizează domeniul asociat. Relaţia se prezintă ca o mulţime de tupluri. Logic, această mulţime nu poate conţine elemente identice, cu alte cuvinte, relaţia nu poate avea tupluri duplicate. Necesitatea identificării unui tuplu a condus la noţiunea de cheie.

Cheia unei relaţii reprezintă ansamblul minimal de atribute cu rol de identificare unică a tuplurilor dintr-o relaţie. Într-o relaţie pot exista mai multe atribute / combinaţii de atribute cu rol de identificare unică a tuplurilor, există deci mai multe chei candidate. Dintre aceste chei candidate se alege cheia primară, celelalte devin chei secundare sau alternante. Orice relaţie are cel puţin o cheie.

Informaţiile stocate în baza de date trebuie să fie coerente, adică să corespundă realităţii. Restricţiile de integritate minimale sunt reguli pe care trebuie să le satisfacă datele din baza de date.

Baze de date relaţionale

44

Unitatea de învăţare 3. ALGEBRA RELAŢIONALĂ

Introducere Algebra relaţională (relational algebra), introdusă de Codd în 1970, defineşte cadrul formal al limbajelor Algebra relaţională (relational algebra), introdusă de Codd în 1970, defineşte cadrul formal al limbajelor relaţionale pentru baze de date. Algebra relaţională introduce o colecţie de operatori algebrici care se aplică relaţiilor (tabelelor). Fiecare operaţie din algebra relaţională are drept operanzi una sau mai multe relaţii, iar rezultatul este tot o relaţie. Această uniformitate (proprietatea algebrică de închidere) permite aplicarea de combinaţii de operatori relaţiilor.

permite aplicarea de combinaţii de operatori relaţiilor. Competenţele unităţii de învăţare După parcurgerea

Competenţele unităţii de învăţare După parcurgerea acestei părți studenții vor înțelege următoarele concepte:

OPERATORII ALGEBREI RELAŢIONALE OPERAŢII DE CALCUL

Durata medie de parcurgere a primei unităţi de învăţare este de 2 ore. ore.

[DAT05], [DOL98], [FOT97], [FOT01], *ION04+, *MEI06+, *POI96+, *ŢÎM92+

Interogarea (query) este operaţia prin care se obţin datele dorite dintr-o bază de date, selectate conform unor criterii. Deoarece această operaţie este cea mai importantă operaţie, limbajele de manipulare a datelor sunt denumite şi limbaje de interogare.

Pentru formularea conceptuală a interogărilor în bazele de date relaţionale s-au dezvoltat două limbaje abstracte de interogare: algebra relaţională şi calculul relaţional.

Baze de date relaţionale

45

Algebra relaţională (relational algebra), introdusă de Codd în 1970, defineşte cadrul formal al limbajelor relaţionale pentru baze de date. Algebra relaţională introduce o colecţie de operatori algebrici care se aplică relaţiilor (tabelelor). Fiecare operaţie din algebra relaţională are drept operanzi una sau mai multe relaţii, iar rezultatul este tot o relaţie. Această uniformitate (proprietatea algebrică de închidere) permite aplicarea de combinaţii de operatori relaţiilor.

Prin analogie cu un compilator care, plecând de la un program sursă produce un program executabil, rezultatul compilării unei interogări (cereri) de către un SGBD relaţional este o expresie algebrică care va fi evaluată. În cadrul modelului relaţional se consideră limbaje relaţionale complete numai acele limbaje de interogare care permit implementarea tuturor operaţiilor prevăzute de unul din limbajele abstracte de interogare. Limbajele de interogare reale implementate în sistemele de baze de date relaţionale sunt limbaje definite pe baza limbajelor abstracte de interogare.

Cunoaşterea limbajului abstract de interogare bazat pe algebra relaţională este obligatorie pentru înţelegerea aprofundată a modului de execuţie a interogărilor.

Algebra relaţională conţine două tipuri de operaţii:

operaţii pe mulţimi: reuniunea, intersecţia, diferenţa şi produsul

cartezian. Pentru a determina reuniunea, intersecţia şi diferenţa a două relaţii, acestea trebuie să fie compatibile cu reuniunea (trebuie să aibă acelaşi număr de atribute şi atributele corespondente să fie definite pe domenii compatibile, adică să aibă formatul datelor identic). operaţii relaţionale: selecţia, proiecţia, joncţiunea şi diviziunea.

Operaţii de bază - reprezintă un ansamblu minimal de operaţii, în sensul că niciuna din operaţii nu poate fi exprimată ca o combinaţie a celorlalte operaţii. Pentru algebra relaţională există mai multe ansambluri minimale. În continuare prezentarea va considera ca operaţii de bază: trei operaţii pe mulţimi: reuniunea, diferenţa, produsul cartezian şi două operaţii relaţionale unare: selecţia şi proiecţia. Operatorii de intersecţie, joncţiune şi diviziune pot fi obţinuţi din cei cinci operatori de bază.

Notă. În definirea operatorilor algebrei relaţionale vom nota cu:

t un tuplu din relaţia R t(A) subtuplu din R relativ la atributul A.

Fiecare operator al algebrei relaţionale va fi descris prin signatură. Signatura indică numărul şi tipul operanzilor, precum şi tipul rezultatului.

Baze de date relaţionale

46

3.1. OPERATORII ALGEBREI RELAŢIONALE

1. UNION reuniunea a două relaţii R 1 şi R 2 , compatibile cu reuniunea, este dată de mulţimea tuplurilor care aparţin fie relaţiei R 1 , fie relaţiei R 2 , fie ambelor relaţii. Tuplurile care aparţin ambelor relaţii se introduc în reuniune o singură dată, adică nu se duplică.

Signatura:

Relaţie x Relaţie → Relaţie

R3 R1 R2 t |t R1 sau t R2

R3  R1 R2
R3
R1
R2

Exemplu.

R 1

A

B

a

c

x

b

d

y

Sintaxa:

UNION (R 1 , R 2 )

R

2

A

B

 

d

f

x

y

h

r

c

d

R

3

A

B

 

a

b

c

d

x

y

d

f

h

r

- rezultatul este o relaţie.

2. DIFFERENCE diferenţa a două relaţii R 1 şi R 2 , compatibile cu reuniunea, este dată de mulţimea tuplurilor care aparţin relaţiei R 1 şi nu aparţin relaţiei R 2 .

Baze de date relaţionale

47

Signatura:

Relaţie x Relaţie → Relaţie

R3 R1 R2 t |t R1 si t R2

R3 _ R1 R2
R3
_
R1
R2

Exemplu.

R 1

A

B

a

c

x

b

d

y

Sintaxa:

R

2

A

B

 

d

f

x

y

h

r

c

d

R

3

A

B

 

a

b

DIFFERENCE (R 1 , R 2 )

- rezultatul este o relaţie.

3. INTERSECT intersecţia a două relaţii R 1 şi R 2 , compatibile cu reuniunea, este dată de mulţimea tuplurilor care aparţin atât relaţiei R 1 , cât şi relaţiei R 2 .

Signatura:

Relaţie x Relaţie → Relaţie

R3 R1 R2 t |t R1 si t R2

Baze de date relaţionale

48

R3  R1 R2
R3
R1
R2

Exemplu.

R 1

A

B

a

c

x

b

d

y

Sintaxa:

INTERSECT (R 1 , R 2 )

R

2

A

B

 

d

f

x

y

h

r

c

d

R

3

A

B

 

c

d

x

y

- rezultatul este o relaţie.

Observaţie. Intersecţia poate fi exprimată cu ajutorul operaţiei de diferenţă (operaţie de bază):

R S R R SS S R

4. PRODUCT produsul cartezian a două relaţii R 1 şi R 2 , produce o nouă relaţie care are ca atribute, reuniunea atributelor din cele două relaţii (atributele comune vor fi luate separat, calificările fiind făcute cu numele relaţiei), iar fiecare element din R 1 se combină (concatenează) cu fiecare element din R 2 .

Signatura:

Relaţie x Relaţie → Relaţie

R3 R1 R2 t1,t2 |t1 R1 si t2 R2

Baze de date relaţionale

49

Exemplu.

R 1

A

B

a

c

x

b

d

y

Sintaxa:

PRODUCT (R 1 , R 2 )

R 1
R
1

R3 1 A B a c x b d y Sintaxa: PRODUCT (R 1 , R 2 1 A B a c x b d y Sintaxa: PRODUCT (R 1 , R 2

R 2
R
2
R 2 A a d
R 2
A
a
d

R

3

R 1 . A

B

R

2 .A

 

a

b

 

a

c

d

a

x

y

a

a

b

d

c

d

d

x

y

d

- rezultatul este o relaţie.

5. SELECT – este o operaţie unară de restricţie care selectează din tuplurile relaţiei R, acele tupluri care satisfac o condiţie specificată. Condiţia este o expresie logică (predicat) specificată asupra atributelor relaţiei R. Condiţia poate cuprinde nume de atribute, constante, operatori logici (and, or, not), operatori aritmetici de comparare (<, >, =, ≤, ≥, ≠).

Signatura:

Relaţie x Expresie logică → Relaţie

S conditieRt |t R si tA

unde: t(A) θ α

comparare, iar α un tuplu care poate fi înlocuit de un atribut sau valoarea unui

atribut).

defineşte condiţia de selecţie (θ este un operator aritmetic de

Baze de date relaţionale

50

Exemplu.

S B' x' R

condiţie

 

R

A

B

C

S

A

B

C