BD-Curs2

10
Baze de date. SGBD-uri. Complexitatea informaţiilor cu care oamenii au interacţionat şi interacţionează permanent, a făcut necesară gestionarea eficientă a acestora. Bibliotecile care au existat încă din antichitate, agendele personale, registrele de evidenţă, cataloagele de produse, mersul trenurilor nu sunt altceva decât mijloace de gestionare eficientă a informaţiilor. Prin acestea se încearcă de fapt, într-o manieră neautomatizată, să se rezolve problemele legate de organizarea, stocarea şi regăsirea performantă a informaţiilor. Rezolvarea eficientă a acestor probleme în condiţiile unui volum foarte mare de informaţii, nu poate fi concepută decât prin utilizarea calculatoarelor electronice şi anume a bazelor de date. Scopul principal urmărit, atunci când se alege ca soluţie de rezolvare a problemei gestiunii informaţiilor utilizarea bazelor de date, este acela de a regăsi într-un timp cât mai scurt informaţia căutată după anumite criterii, de a asigura securitatea acestora, de a minimiza spaţiul necesar de memorare, de a asigura unicitatea şi flexibilitatea datelor gestionate. La modul cel mai general o bază de date poate fi definită ca fiind o colecţie de date înrudite care se referă la un anumit obiect sau obiectiv, împreună cu instrumentele folosite pentru manipularea acestor date. Orice bază de date trebuie să conţină descrierea datelor şi înregistrările de date. Sistemul complex de programe care permite descrierea, organizarea, memorarea, regăsirea, administrarea şi securizarea informaţiilor dintr-o bază de date se numeşte sistemul de gestiune a bazelor de date (SGBD). Memorarea datelor conţinute de bazele de date se face pe suporturile de memorie internă sau externă folosite de calculatoare (unităţi de hard-disc, benzi şi casete magnetice, compact discuri etc). SGBD este un software special asociat bazelor de date care asigură interfaţa între o bază de date şi utilizatorii ei, rezolvând toate cererile de acces la datele memorate. Bazele de date înglobează patru componente: datele, hardware-ul, software-ul şi utilizatorii. Datele reprezintă „materia primă” a oricărei baze de date. Ele descriu 1

description

Baze de date

Transcript of BD-Curs2

Page 1: BD-Curs2

Baze de date. SGBD-uri.

Complexitatea informaţiilor cu care oamenii au interacţionat şi interacţionează permanent, a făcut necesară gestionarea eficientă a acestora. Bibliotecile care au existat încă din antichitate, agendele personale, registrele de evidenţă, cataloagele de produse, mersul trenurilor nu sunt altceva decât mijloace de gestionare eficientă a informaţiilor. Prin acestea se încearcă de fapt, într-o manieră neautomatizată, să se rezolve problemele legate de organizarea, stocarea şi regăsirea performantă a informaţiilor. Rezolvarea eficientă a acestor probleme în condiţiile unui volum foarte mare de informaţii, nu poate fi concepută decât prin utilizarea calculatoarelor electronice şi anume a bazelor de date.

Scopul principal urmărit, atunci când se alege ca soluţie de rezolvare a problemei gestiunii informaţiilor utilizarea bazelor de date, este acela de a regăsi într-un timp cât mai scurt informaţia căutată după anumite criterii, de a asigura securitatea acestora, de a minimiza spaţiul necesar de memorare, de a asigura unicitatea şi flexibilitatea datelor gestionate.

La modul cel mai general o bază de date poate fi definită ca fiind o colecţie de date înrudite care se referă la un anumit obiect sau obiectiv, împreună cu instrumentele folosite pentrumanipularea acestor date. Orice bază de date trebuie să conţină descrierea datelor şi înregistrărilede date.

Sistemul complex de programe care permite descrierea, organizarea, memorarea, regăsirea, administrarea şi securizarea informaţiilor dintr-o bază de date se numeşte sistemul de gestiune a bazelor de date (SGBD). Memorarea datelor conţinute de bazele de date se face pe suporturile de memorie internă sau externă folosite de calculatoare (unităţi de hard-disc, benzi şi casete magnetice, compact discuri etc). SGBD este un software special asociat bazelor de date care asigură interfaţa între o bază de date şi utilizatorii ei, rezolvând toate cererile de acces la datele memorate.

Bazele de date înglobează patru componente: datele, hardware-ul, software-ul şi utilizatorii. Datele reprezintă „materia primă” a oricărei baze de date. Ele descriu caracteristicile anumitor obiecte, sunt organizate în structuri şi se pot afla în anumite relaţii şi interdependenţe.

Hardware-ul se constituie din tehnica de calcul utilizată pentru crearea, întreţinerea şi exploatarea bazelor de date. Software-ul cuprinde SGBD-ul şi programele de aplicaţie aferente.

Din punctul de vedere al utilizatorilor se deosebesc trei categorii: utilizatorii finali care interacţionează cu baza de date prin intermediul

unui limbaj de interogare sau prin intermediul unor programe numite programe de aplicaţie, scrise de programatorii de aplicaţii;

programatorii de aplicaţii care realizează programele de aplicaţie ale bazei de date, utilizând anumite limbaje de programare (Visual Basic for Applications, C,C++, Java, PHP, PERL etc) Aceste aplicaţii numite şi software front-end asigură utilizatorilor, într-o manieră cât mai

1

Page 2: BD-Curs2

prietenoasă, accesul la date pentru introducerea, actualizarea, regăsirea, consultarea şi listarea acestora;

administratorul bazei de date care este o persoană (sau un grup de persoane) responsabilă cu asigurarea funcţionării software-ului şi hardware-ului, securitatea, integritatea şi siguranţa bazei de date.

TERMINOLOGIE

În orice bază de date principala sursă de informaţii o reprezintă un obiect din lumea reală care se constituie ca o entitate.

Entitatea este o reprezentare unică a unui obiect. Cea mai folosită denumire pentru entitate este înregistrarea (record) sau rândul dintr-un tabel (row).

Atributul unui obiect este o caracteristică ce permite descrierea entităţii. Atributul se materializează sub forma unei celule de date care reprezintă valoarea unui câmp (field) dintr-o înregistrare sau a unei coloane dintr-un tabel (column).

Tipurile de date ale atributelor pot fi: numerice, şiruri de caractere alfanumerice, date calendaristice, şiruri de octeţi (care pot reprezenta imagini sau sunete), pointeri către alte date etc.

Domeniul atributului este un interval de valori permise pentru un atribut. De exemplu el poate reprezenta un interval de timp sau un interval de preţuri (între cel minim şi maxim admis).

Identificatorii entităţilor (înregistrărilor), se mai numesc şi câmpurile cheie primară, folosite pentru crearea indexului principal al tabelului.

Tabelul (table) conţine setul tuturor entităţilor dintr-un singur tip de obiect. Tabelul mai este numit şi clasă de entităţi sau tip de entităţi. El este constituit din rânduri (înregistrări) şi coloane (câmpuri).

Baza de date (database) reprezintă o colecţie de tabele în care sunt stocate entităţi care descriu un anumit domeniu de activitate, împreună cu instrumentele folosite pentru manipularea datelor.

2.1. MODELE DE DATE

De-a lungul timpului, utilizarea bazelor de date a devenit o necesitate pentru o mare varietate de domenii de activitate. Specificul diferit al acestor domenii a făcut necesară dezvoltarea de către specialişti a unor modele de organizare a datelor care să răspundă cerinţelor acestora. În acest sens, s-au dezvoltat baze de date având la bază modele de date de diferite tipuri, cum sunt: modelul ierarhic, modelul reţea, modelul relaţional, modelul obiectual, modele semantice, modele funcţionale, modele deductive sau modele distribuite. Primele trei tipuri de modele (ierarhic, reţea şi relaţional) reprezintă modelele cele mai cunoscute şi cele mai frecvent utilizate în reprezentarea datelor.

2

Page 3: BD-Curs2

Alegerea unui anumit SGBD (bazat pe unul din modelele de date anterior prezentate) pentru informatizarea unei activităţi presupune o etapă de analiză în cadrul căreia se identifică componentele de date, legăturile dintre acestea, evenimentele care determină modificări ale datelor şi necesarul de informaţii primare şi sintetizate care trebuie furnizate.

Voi descrie în continuare modelul relaţional de organizare a datelor, cel mai răspândit în prezent, care răspunde cerinţelor unei arii largi de domenii de activitate şi pe baza căruia s-au dezvoltat un număr mare de sisteme de gestiune a bazelor de date (SGBD). Bazele de date de tipAccess, care vor fi tratate în acest curs, sunt de asemenea baze de date relaţionale.

2.1.1. Modelul relaţional

Modelul relaţional a fost dezvoltat avându-se în vedere în primul rând utilizatorii finali. Acest model are la bază teoria matematică a relaţiilor, ceea ce a făcut posibilă tratarea algoritmică a proiectării bazelor de date şi rezolvând astfel problema normalizării datelor.

Algebra relaţională se bazează pe un set de reguli şi simboluri utilizate pentru definirea bazelor de date relaţionale şi oferă un set de operaţii (intersecţie, produs cartezian, diferenţă, proiecţie) care au ca operanzi şi ca rezultat tabele.

Normalizarea este o procedură standard prin care atributele datelor sunt grupate în tabele iar tabelele sunt grupate în baze de date. Normalizarea datelor asigură baza de date împotriva inconsistenţei care ar putea apărea în urma unor actualizări greşite. Prin normalizare pot fi create tabele care să respecte modelul relaţional de bază de date. Normalizarea este procesul de eliminare a dublurilor de informaţii din tabele. Prin normalizare se urmăreşte de fapt eliminarea sau minimizarea redundanţei (dublurilor) din tabelele bazei de date.

Modelul relaţional este un model simplu, bazat pe algebra relaţională, care a făcut posibilă dezvoltarea limbajelor relaţionale sub forma unui software specializat ce asistă procesul de proiectare a bazelor de date. Astfel de limbaje sunt SQL (Structured Query Language) şi QBE (Query By Example). Celelalte modele nu au beneficiat de un astfel de software. Modelul relaţional al bazei de date se fundamentează pe două elemente principale: tabelele bazei de date şi regulile de integritate ale acesteia.

În prezent există mai multe sisteme performante de gestiune a bazelor de date relaţionaleprintre care pot fi enumerate: MS-SQL Server, Oracle, Informix, DB2, Access, Visual Fox, MySQL. Toate aceste SGBD-uri au la bază limbajul SQL. Unele dintre ele beneficiază de anumite extensii care oferă facilităţi suplimentare: sisteme client-server, sisteme multimedia, analiza multidimensională şi orientarea obiect.

Menţinerea integrităţii bazei de date este unul din obiectivele prioritare ale oricărui SGBD relaţional. Majoritatea bazelor de date client-server au

3

Page 4: BD-Curs2

prevăzute declanşatoare pentru menţinerea integrităţii bazei de date, astfel încât aceasta să conţină numai informaţii valide, confirmate şi verificate.

3. BAZE DE DATE RELAŢIONALE3.1. SCURT ISTORIC

Evoluţia bazelor de date relaţionale a fost surprinzător de rapidă. Teoria privind bazele de date relaţionale a fost publicată de dr. Codd în anul 1970 iar în anul 1972, dr.Codd a prezentat teoria legată de normalizarea acestora.

În 1984 firma Ashton-Tate cumpărată ulterior de Borland a creat limbajul dBASE care a făcut posibilă utilizarea bazelor de date relaţionale pe calculatoarele personale. Versiunile dBASE III, III++, IV s-au bucurat de un mare succes şi au determinat multe firme şi mulţi programatori să opteze pentru bazele de date relaţionale. De asemenea, după 1990 bazele de date relaţionale FoxPro au ţinut multă vreme capul de afiş al bazelor de date utilizate pe calculatoarele personale (PC).

La sfârşitul anilor 1980 bazele de date relaţionale au devenit suficient de puternice şi au început din ce în ce mai mult să înlocuiască bazele de date ierarhice şi pe cele de tip reţea care până atunci dominaseră lumea bazelor de date.

În prezent, primul loc ca răspândire este deţinut de bazele de date relaţionale. Pe calculatoarele de tip PC bazele de date dBASE şi FoxPro au fost înlocuite într-o mare măsură de bazele de date Access ale firmei Microsoft. Acestea au cucerit foarte mulţi utilizatori finali şi dezvoltatori de aplicaţii, în primul rând prin performanţă şi apoi prin felul în care Microsoft a reuşit integrarea lor în bine-cunoscutul pachet de programe MS-Office.

În lumea bazelor de date relaţionale profesionale de dimensiuni mari şi foarte mari, implementate pe calculatoare foarte puternice, s-au impus SGBD-uri cum sunt MS-SQL Server, Oracle, DB2 şi Informix. Acestea funcţionează pe filosofia client-server. Ele pot fi legate fără probleme cu alte baze de date şi pot utiliza cu uşurinţă obiecte realizate sub Access sau Visual Fox.

Printre caracteristicile acestor SGBD-uri moderne se numără: puternica conectivitate pe care o asigură, posibilitatea de a funcţiona distribuit în reţele de tip intranet sau extranet (neomogene din punctul de vedere al hardware-ului), pe sisteme de tip multiutilizator, faptul că s-au dezvoltat extensii care le permit modul de lucru cu obiecte printre care şi obiectele multimedia.

3.2. TIPURILE DE RELAŢII

Aşa cum am arătat mai sus, bazele de date relaţionale presupun stocarea datelor în tabele între care se stabilesc anumite relaţii. Exemple de tabele pot fi: tabela Date personale angajaţi, tabela Clienţi, tabela Funcţii, tabela Produse, etc. Fiecare din acestea poate fi imaginată ca un

4

Page 5: BD-Curs2

tabel desenat pe hârtie care cuprinde un cap de tabel cu caracteristicile (coloanele) pe care dorim să le memorăm şi atâtea rânduri câte entităţi distincte scriem în tabel. Între aceste tabele există anumite relaţii ca de exemplu: „fiecare persoană angajată ocupă o funcţie”, „fiecare client poate cumpăra unul sau mai multe produse”, „o carte dintr-o bibliotecă poate fi citită succesiv de mai mulţi cititori şi un cititor împrumută mai multe cărţi”. Această mare varietate de relaţii a fost analizată şi s-a stabilit că între tabelele bazelor de date pot exista patru tipuri de relaţii: „unu la unu”, „unu la mulţi”, „mulţi la unu ” şi „mulţi la mulţi”. Aceste tipuri de relaţii acoperă întreaga gamă de situaţii care se pot ivi în proiectarea bazelor de date relaţionale şi există instrumente software care să le implementeze.

3.2.1. Relaţiile „unu la unu”

Reprezintă cel mai simplu tip de relaţie dintre înregistrările (rândurile) unor tabele corespondente. Astfel, unei înregistrări dintr-o tabelă îi va corespunde doar o singură înregistrare din tabela corespondentă. Pentru exemplificare să presupunem că există în cadrul unei baze de date relaţionale următoarele tabele:

Un conţinut fictiv al acestor tabele ar putea fi:

Se observă că pentru materializarea relaţiei „unu la unu” s-a ales câmpul Cod persoană ca fiind câmp unic de identificare şi de legătură între informaţiile conţinute în cele două tabele. Aceasta determină ca unei singure înregistrări din tabela Date personale angajaţi să-i corespundă doar înregistrarea din tabela Salarii curente în care câmpul Cod persoană identifică acelaşi angajat. Deci, pentru fiecare persoană (angajat) există doar o singură înregistrare atât în tabela Date personale angajaţi cât şi în tabela Salarii curente. Altfel spus, în acest exemplu tabelele Date

5

Page 6: BD-Curs2

personale angajaţi şi Salarii curente au fiecare atâtea înregistrări câţi angajaţi există.

3.2.2. Relaţiile „unu la mulţi”

Acest tip de relaţii leagă o înregistrare dintr-un tabel de bază cu mai multe înregistrări intr-un alt tabel corespondent prin intermediul unui câmp cheie. Câmpul cheie din tabelul de bază se mai numeşte şi cheia primară iar câmpul cheie corespondent din cealaltă tabelă reprezintă cheia străină (externă). Relaţiile „unu la mulţi” sunt cel mai întâlnit tip de relaţii.

Un alt exemplu din lumea reală a bazelor de date va fi elocvent pentru înţelegerea acestui tip de relaţii. Pornind de la aceeaşi tabelă de bază numită Date personale angajaţi şi presupunând că ne interesează o interogare din care să aflăm informaţii despre deplasările acestora, vom avea ca tabelă corespondentă tabela numită Deplasări angajaţi. Este evident că fiecărui angajat unic determinat prin câmpul Cod persoană îi pot corespunde una, mai multe sau nici o deplasare. Pentru a rezolva această interogare vom stabili o relaţie de tipul „unu la mulţi” între cele două tabele.

Dacă în tabela Date personale angajaţi există doar o singură înregistrare (rând) pentru un angajat, în tabela Deplasări angajaţi pot exista atâtea înregistrări (rânduri) pentru fiecare angajat câte deplasări a făcut.

Un conţinut fictiv al acestor tabele precum şi legăturile dintre ele ar putea fi:

3.2.3. Relaţiile „mulţi la unu”

6

Page 7: BD-Curs2

Reprezintă inversul relaţiilor „unu la mulţi”. Dacă în exemplul anterior considerăm tabela de bază Deplasări angajaţi având ca tabelă corespondentă Date personale angajaţi, atunci avem de-a face cu un tip de relaţie „mulţi la unul”. Mai multor deplasări executate şi înregistrate în tabela Deplasări angajaţi le poate corespunde doar un singur angajat (Cod persoană).Câmpul de legătură rămâne acelaşi Cod persoană.

3.2.4. Relaţiile „mulţi la mulţi”

Acesta este un tip de relaţii complexe care nu sunt implementate în mod direct în sistemele de gestiune a bazelor de date relaţionale.

În etapa de analiză a unei activităţi putem desprinde şi cazuri în care unei înregistrări (rând) dintr-o tabelă îi pot corespunde mai multe înregistrări (rânduri) dintr-o altă tabelă, în acelaşi timp însă, unei înregistrări (rând) din cea de-a doua tabelă îi pot corespunde mai multe înregistrări (rânduri) din prima tabelă. De exemplu, dacă identificăm două tabele: Tabela Date personale angajaţi şi Tabela Documentaţie tehnică şi analizăm relaţiile dintre ele vom observa că un angajat poate deţine mai multe documentaţii tehnice iar o documentaţie tehnică este posibil să fi fost consultată de mai mulţi angajaţi ai firmei. Spunem în acest caz că între cele două tabele există o relaţie „mulţi la mulţi”.

Un conţinut fictiv al acestor tabele precum şi legăturile dintre ele ar putea fi:

7

Page 8: BD-Curs2

Acest tip de relaţie între tabele nu este implementat în mod direct ci se rezolvă prin introducerea unei tabele suplimentare. Această nouă tabelă se află în relaţie de „mulţi la unu” cu fiecare din tabelele iniţiale.

Pentru exemplul nostru tabela intermediară (de intersecţie) poate fi Tabela Documentaţie consultată având următorul conţinut şi relaţii cu tabelele iniţiale:

Se spune că relaţia „mulţi la mulţi” se „sparge” în două relaţii „unu la mulţi” pentru aceasta folosindu-se o tabelă intermediară (de intersecţie). Această tabelă este astfel aleasă încât să conţină o cheie primară formată din cheile primare ale tabelelor iniţiale şi alte informaţii specifice intersecţiei lor.

8