Proiectarea Si Implementarea Unei Baze de Date Pentru Administrarea Stocurilor Unui Magazin

Lucrare de licența

Proiectarea și implementarea unei baze de date pentru administrarea stocurilor unui magazin

CAPITOLUL 1 . INTRODUCERE ÎN BAZA DE DATE

Ce este o bază de date ?

La început calculatoarele au fost utilizate numai pentru calcule aritmetice. Prin

creșterea vitezei de calcul, prin creșterea capacității de memorare a datelor, prin adăugarea unor noi componente de intrare-ieșire, prin dezvoltarea unor limbaje de programe s-a ajuns acum la prelucrarea într-un timp scurt a unei mari cantități de informații. Organizarea și gestionarea acestor informații se face la nivelul bazelor de date.

Prin bază de date înțelegem o colecție de date centralizată, creată și menținută

computerizat, în scopul prelucrării datelor în contextul de introducere, ștergere, actualizare și interogare a datelor.

Datele sunt organizate în fișiere (care mai pot fi numite și tabele) interconectate.

Un fișier este un ansamblu de înregistrări fizice, omogene din punct de vedere al conținutului si al prelucrării.

Baza de date conține nu numai datele operaționale ale organizației, ci și o descriere

a acestora. De aceea ea este definită și ca o colecție autodescrisă de înregistrări integrate. Această descriere a datelor este cunoscută sub denumirea de catalog de sistem sau dicționar de date sau meta-date (date despre date). Natura autodescriptivă a bazelor de date este cea care determină independența program-date.

Accesul utilizatorului la informațiile despre structura unei baze de date se realizează

prin intermediul dicționarului de date.

O bază de date este formată dintr-o mulțime structurată de date, accesibile prin

calculator, care pot satisface în timp minim și într-o manieră selectivă mai mulți utilizatori

și un software care să controleze accesul la acestea, cunoscut sub numele de sistem de gestiune al bazelor de date (SGBD). Un SGBD este un sistem de programare care este responsabil cu crearea, manipularea și întreținerea unei baze de date. Funcția centrală a acestuia este de a permite utilizatorilor (prin intermediul programelor lor) să acceseze date dintr-o bază de date. Pe langă această funcție, sistemul mai indeplinește si alte funcții importante precum:

stocarea, regăsirea și actualizarea datelor, astfel un SGBD permite utilizato-

lor să creeze și să manipuleze date într-un mod facil, fără a fi necesar să cunoască structura

internă a datelor;

crearea și întreținerea dicționarului de date (catalogul de sistem);

gestionarea facilităților legate de accesarea simultană a unor înregistrări ale

bazei de date de către mai mulți utilizatori;

păstrarea unei copii de siguranță (“back-up”) și posibilitatea de a recupera

datele în cazul “căderii” sistemului;

probleme de securitate a datelor (parole de acces ale utilizatorilor, verificări,

vizualizări ale datelor;

Gestionarea informației sub forma unor baze de date prezintă o serie de avantaje ce

sunt prezentate în cele ce urmează.

Independența datelor. Într-o bază de date, datele sunt păstrate astfel încât schim-

barea structurii acesteia să nu afecteze nici unul din programele de aplicație ce utilizează

datele din baza de date respectivă, spre deosebire de o abordare orientată spre fișiere, unde o modificare chiar nesemnificativă în structura fișierului poate necesita un efort considerabil din partea programatorului.

Consistența datelor. Modificarea articolelor din baza de date este percepută de

fiecare dintre utilizatorii sistemului de baze de date.

Controlul redundanței. În sistemele de gestiune neorientate spre baze de date,

aceeași informație poate fi păstrată în mai multe fișiere diferite și în consecință crește nejustificat spațiul fizic ocupat pe disc, dar și timpul consumat cu actualizarea datelor redundante

Integritatea datelor. Un SGBD furnizează utilizatorilor posibilitatea specificării

anumitor restricții. Spre exemplu când se face înregistrarea unui nou produs în baza de date, impunem să fie adăugat și prețul acestuia, astfel că elementul „preț” nu va putea fi niciodată omis.

O mai mare securitate a datelor. Astfel, un SGBD va asigura faptul că doar utili-

zatorii autorizați vor avea acces la date.

Un control centralizat al datelor, prin intermediul unui administrator al bazelor

de date.

O mai mare cantitate de informație disponibilă utilizatorilor. Cu un sistem de

baze de date, utilizatorii accesează informația ce a fost anterior păstrată în fișiere aflate pe sisteme de calcul diferite, chiar incompatibile intre ele.

Orice SGBD modern furnizează un limbaj de interogare a datelor, de obicei tip

SQL (”Structured Data Language”) sau cel puțin câteva instrucțiuni SQL, ce permit utiliza-

torilor să obțină mult mai rapid și mai simplu informațiile dorite, decât dacă ar utiliza un program scris într-un limbaj procedural pentru care efortul de programare nu ar fi fost deloc neglijabil.

Limbajele de interogare pot fi clasificate în două categorii:

Limbaje algebrice, în care interogările asupra relațiilor sunt exprimate prin

intermediul unor operatori aplicați asupra lor. În această categorie se încadreză limbajul SQL.

Limbaje bazate pe calcul relațional, în care interogările asupra relațiilor sunt

exprimate prin intermediul unor condiții (predicate) pe care tuplele relațiilor trebuie să le satisfacă. Această categorie de limbaje se clasifică la randul ei în două categorii, în funcție de obiectul asupra căruia se aplică operația și anume :

b1) Limbaje bazate pe calcul relațional orientat pe tuple, în care predicatele se

aplică asupra tuplelor relațiilor, reprezentativ fiind aici QUEL, limbajul de interogare Ingres.

b2) Limbaje bazate pe calcul relațional orientat pe domenii. Reprezentativ pentru această categorie este QBE, limbajul de interogare dezvoltat de IBM.

În limbajele de programare uzuale, declarațiile și instrucțiunile executabile aparțin

aceluiași limbaj. În lumea bazelor de date, funcțiile de declarare și de manipulare a datelor sunt realizate cu ajutorul unor limbaje diferite.

Limbaje pentru definirea datelor (LDD)

Descrierea concretă a unui LDD este specifică fiecărui sistem de gestiune, dar

funcțiile principale sunt aceleași. La nivel conceptual, LDD realizează definirea entităților

și a atributelor acestora prin nume, formă de memorare, lungime. Sunt precizate relațiile dintre date și strategiile de acces la el, sunt stabilite criterii diferențiate de confidențialitate,

sunt definite criterii de validare automată a datelor utilizate.

Limbaje pentru manipularea datelor (LMD)

Operațiile pe baze de date solicită un limbaj specializat, în care comenzile se

exprimă prin fraze ce descriu acțiuni asupra bazei.

În general, o comandă are următoarea structură:

operația, care poate fi calcul numeric sau logic, editare, extragere, deschidere-

inchidere, manipulare (introducere, adăugare, ștergere etc. );

criterii de selecție (for, while, where etc.);

mod de acces (secvențial, indexat etc.);

forma de editare.

Limbaje pentru controlul datelor (LCD)

Controlul unei baze de date se referă la asigurarea confidențialității și integrității

datelor, la salvarea informației în cazul unor defecțiuni, la obținerea unor performanțe, la rezolvarea unor probleme de concurență. De exemplu, realizarea unei interfețe tranzacționale, într-un context client-server, pentru un sistem de baze de date distribuite.

Limbaje universale

Un limbaj universal se utilizează rar pentru gestionarea unei baze de date.

Utilizatorii unei baze de date pot fi:

Utilizatori nespecialiști (conversaționali) care au la dispoziție o formă de comu-

nicare cu baza de date apropiată de vorbirea curentă. Ei nu cunosc structura bazei și nici modul efectiv de lucru cu baza de date.

Utilizatori specialiști care cunosc structura bazei, au cunoștințe de programare,

cunosc problemele sistemului de operare și toate acestea le permit să folosească rațional baza de date, obținând avantaje maxime.

Administratorul bazei de date este un utilizator special care definește obiectivele

exploatării bazei, împarte drepturile de acces ale utilizatorilor, elaborează concepția de proiecție a bazei de date, raspunde de toate activitățile și operațiile referitoare la baza de date, ajută la definirea cerințelor utilizatorilor.

Clasificarea sistemelor de baze de date

Pentru reprezentarea structurii logice a datelor dintr-o bază de date s-au impus

de-a lungul ultimelor decenii trei modele si anume, modelul ierarhizat, care presupune crearea unei structuri arborescente de reprezentare a datelor, modelul rețea, în care elementele ce reprezintă datele sunt legate între ele prin pointeri, formându-se astfel o rețea, și modelul relațional, acesta impunându-se net în fața celorlalte doua, fiind la ora actuală la baza realizării majorității produselor software din lumea bazelor de date.

Există mai multe criterii de clasificare ale sistemelor de baze de date.

Clasificarea după modelul de date

Majoritatea sistemelor de baze de date sunt realizate in modelul de date relațional

sau model de date orientat obiect.

Modelul relațional a fost conceput de Codd. El este un model formal de organizare

conceptuală a datelor, destinat reprezentării legăturilor dintre date, bazat pe teoria matematică a relațiilor. Este modelul cel mai accesibil pentru utilizatorul bazei de date deoarece are aceeași structură fizică cu datele care trebuie prelucrate. In general, datele se prezintă sub forma unor tabele (relații) în care liniile constituie entități, iar coloanele sunt atribute ce caracterizează aceste entități.

Spre deosebire de modelul ierarhic si rețea unde apar două elemente, și anume tipul

entității si relațiile dintre două entități, modelul relațional este alcătuit numai din relații și prin urmare, orice interogare asupra bazei de date este tot o relație. Modelul relațional a fost definit cu o deosebită rigoare matematică, furnizând un mijloc performant de studiu al proprietăților logice ale unui sistem de baze de date.

Referitor la partea de manipulare a datelor, modelul relațional este orientat spre

spre mulțimi, în timp ce modelele ierarhic si rețea sunt orientate spre fișiere. Pentru modelele ierarhic și rețea, programatorul trebuie să proiecteze programe care să acceseze baza de date, înregistrare cu înregistrare, utilizând legături fizice între înregistrări. Modelul relațional a permis introducerea unor limbaje neprocedurale de manipulare a datelor.

Modelul relațional nu este orientat spre sistemul de calcul, deci modelul nu include

regulile, structurile și operațiile referitoare la implementarea fizică a unui sistem de baze de

date. De fapt, unul dintre obiectivele modelului este acela de a face o distincție clară între aspectele fizice și logice ale unei baze de date (independența datelor).

Modelul relațional, deși are unele imperfețiuni, a fost adoptat în ultimul deceniu de

majoritatea programatorilor din domeniu, tocmai datorită acestor trei calități: este simplu,

este riguros din punct de vedere matematic si nu este orientat spre sistemul de calcul.

În modelul ierarhic o bază de date se reprezintă printr-o structură ierarhică de

înregistrări de date conectate prin legături. Modelul ierarhic a fost primul model folosit pentru dezvoltarea bazelor de date.

Schema conceptuală a unei baze de date în modelul ierarhic se reprezintă printr-un

un număr oarecare de scheme. O schemă ierarhică este un arbore direcționat, reprezentat

pe mai multe niveluri, în care nodurile sunt tipurile de înregistrări, iar arcele sunt tipurile

de legături. Fiecare nod, cu excepția nodului rădăcină, are o singură legătură către un nod de pe un nivel superior (nodul părinte) și fiecare nod, cu excepția nodurilor frunză, are una sau mai multe legături către nodurile de pe nivelul inferior (noduri fii).

Modelul da date rețea folosește o structură de graf pentru definirea schemei concep-

tuale a bazei de date; nodurile grafului sunt tipuri de entități, iar muchiile grafului reprezintă în mod explicit asocierile dintre tipurile de entități.

La fel ca si modelul ierarhic, dezavantajul principal al modelului rețea este acela că

fiecare interogare trebuie sa fie prevăzută încă din faza de proiectare, prin memorarea explicată a legăturilor între tipurile de entități. În plus, complexitatea reprezentării datelor

în modelul rețea este deosebit de ridicată, iar programatorii trebuie să o cunoască pentru

a putea realiza aplicațiile necesare.

Clasificarea după numărul de utilizatori

Majoritatea sistemelor de baze de date sunt sisteme multiutilizator, adică

permit accesul concurent mai multor utilizatori la aceeași bază de date. Există și un număr redus de sisteme monoutilizator, adică suportă accesul doar al unui utilizator .

Clasificarea după numărul de stații pe care este stocată baza de date

O altă clasificare este cea după numărul de stații pe care este stocată baza de

date.

Există două categorii de sisteme de baze de date: centralizate și distribuite.

Un sistem de baze de date centralizat este un sistem de baze de date în care datele

și sistemul de gestiune sunt stocate pe un singur calculator.

Un sistem de baze de date distribuit poate avea atât datele, cât și sistemul de gesti-

une, distribuite pe mai multe calculatoare interconectate printr-o rețea de comunicație.

1.3 Securitatea datelor

Asigurarea securității unei baze de date presupune interzicerea accesului la date,

interzicerea modificării și distrugerii datelor de catre utilizatori neautorizați. Referitor la protecția și securitatea datelor, se definesc urmatoarele concepte de bază:

Securitatea datelor. Prin securitatea bazelor de date se înțelege protejarea

bazei de date împotriva amenințărilor intenționate sau neintenționate, prin utilizarea unor

elemente de control bazate sau nu pe calculatoare.

Confidențialitatea. Pentru asigurarea confidențialității datelor pot fi consi-

derate două tipuri de controale: controlul accesului direct și controlul accesului indirect.

Datorită structurii funcționle pe nivele a unui SGBD, accesul direct poate fi făcut la nivel intern sau la nivel extern. Controlul accesului intern solicită ca sistemul de gestiune să utilizeze un mecanism de codificare a datelor și să existe un sistem de securitate fiabil sistemului de operare. Controlul accesului extern depinde de numele atributelor, de numele relațiilor , de context, de valoarea afectivă a unui atribut, de tipul de acces.

Integritatea datelor. Se referă la restricția ca sensul datelor să nu difere față

de cel înscris pe documentul sursă, impunând totodata ca datele să nu fie alterate accidental

sau voit. Informația stocată în baza de date trebuie să fie coerentă, să corespundă realității. Corespunzător situațiilor care pot genera apariția unor date incorecte în baza de date, se disting trei aspecte ale asigurării integrității datelor: asigurarea integrității semantice a datelor, controlul accesului concurent la date și salvarea și restaurarea bazei de date.

Problema securității datelor poate fi abordată in două moduri:

Abordarea centralizată permite un control mai restrictiv și mai sigur decât

abordarea descentralizată. Această posibilitate este logică, deoarece există o singură persoană (administratorul bazei) care poate să definească relații partajabile și care poate acorda privilegii de acces asupra acestor relații. Dacă doi utilizatori doresc să partajeze relații, ei trebuie să se adreseze administratorului.

Abordarea descentralizată este flexibilă și utilă pentru sisteme distribuite.

Parola, criptarea (codificarea) și matricele de acces reprezintă mecanisme clasice ale

sistemului de operare care asigură securitatea datelor.

Majoritatea sistemelor folosesc parole pentru identificarea utilizatorilor. Parolele

permit accesul la resursele sistemului și sunt asociate cu anumite drepturi de acces la date. Pentru fiecare utilizator, identificat prin parolă, sistemul întreține o listă a privilegiilor acestuia, iar aceste privilegii depind de clasa căreia îi aparține utilizatorul.

Gestionarea privilegiilor se face cu ajutorul matricei de acces. Coloanele acestei

matrici corespund elementelor care definesc un privilegiu: subiectul, obiectul, acțiunea și

restricția. Subiectul poate fi un utilizator, un grup de utilizatori, o aplicație sau un terminal.

Obiectul este reprezentat de datele care trebuie protejate (înregistrare, relație, baza de date etc.). Restricția reprezintă condiții suplimentare care trebuie respectate cand un subiect execută o acțiune asupra unui obiect.

Criptarea este operația de codificare a datelor pe timpul stocării sau al transportului,

astfel încât descifrarea lor să poată fi făcută numai de posesorii de cod. Problema securității

datelor se rezumă la asigurarea securității cheii de criptare, iar mecanismul gestiunii cheilor de criptare este complex.

Deci, prin securitatea bazei de date se înțelege o multitudine de măsuri destinate

protecției informațiilor conținute în baza de date împotriva unor alterări, distrugeri sau divulgări neautorizate.

Arhitectura sistemelor de programe

Pentru a simplifica viziunea utilizatorilor, SGBD trebuie să asigure abstractizarea

datelor stocate pe diferite suporturi. Grupul ANSI/X3/SPARC a considerat pentru descrie- rea datelor o arhitectură pe trei nivele (conceptual, intern, extern).

Nivelul conceptual corespunde structurii canonice a datelor ce caracterizează

procesul de modelat, adică structura semantică a datelor fără implementarea pe calculator.

Schema conceptuală permite definirea tipurilor de date care caracterizează proprietățile elementare ale entităților, definirea tiputilor de date compuse care permit regruparea atributelor pentru a descrie entitățile modelului și legături între aceste entități, definirea regulilor pe care trebuie sa le respecte datele etc.

Nivelul intern corespunde structurii interne de stocare a datelor. Schema internă

permite descrierea datelor unei baze sub forma în care sunt stocate în memoria calculato-

rului. Sunt definite fișierele care conțin aceste date, articolele din fișiere, drumurile de acces la aceste articole etc.

La nivelul extern, schemele descriu doar o parte din date care prezintă interes

pentru un utilizator sau un grup de utilizatori. Schema externă reprezintă o descriere a unei

părți a bazei de date ce corespunde viziunii unui program sau utilizator. Modelul extern folosit este dependent de utilizat pentru manipularea bazei de date. Schema externă permite asigurarea unei securități a datelor. Un grup de lucru va accesa doar datele descrise în schema sa externă, iar restul datelor sunt protejate împotriva accesului neautorizat sau rău intenționat. Pentru o bază de date particulară există o singură schemă internă, o singură schemă conceptuală, dar există mai multe scheme externe.

Introducere în proiectarea bazelor de date

Proiectarea bazelor de date reprezintă procesul de realizare a unui proiect pentru o

bază de date, care va trata toate operațiile și obiectivele întreprinderii.

Proiectarea corespunzătoare a bazei de date este vitală pentru buna funcționare a

bazei de date și a oricărei aplicații care utilizează baza de date. În lipsa unei proiectări corecte a bazei de date, aceasta poate prezenta următoarele deficiențe:

Integritatea datelor este compromisă deoarece restricțiile de integritate nu pot fi

proiectate sau implementate corect.

Datele devin redundante, iar aplicațiile individuale se aglomerează în încercarea

de a asigura sincronizarea datelor.

Performanțele sunt afectate deoarece este posibil ca pentru finalizarea unei

instrucțiuni select să fie necesare interogari suplimentare.

Principalele scopuri ale proiectării bazelor de date sunt:

Reprezentarea datelor și a relațiilor dintre ele, necesare tuturor domeniilor de

aplicație și grupurilor de utilizatori principale.

Furnizarea unui model de date care să accepte efectuarea oricarei tranzacții

necesare asupra datelor.

Specificarea unui proiect minimal, structurat în mod adecvat pentru realizarea

cerințelor stabilite privind performanțele sistemului, cum ar fi timpul de răspuns.

Din păcate, aceste scopuri nu sunt întotdeauna ușor de atins și necesită uneori

compromisuri, mai ales pentru a obține performanțe acceptabile ale sistemului. Cele două abordări principale în proiectarea unui sistem de baze de date sunt cunoscute sub denumirile de proiectare „de sus în jos”, respectiv „de jos în sus”. Tratarea proiectării „de jos în sus” începe de la nivelul fundamental al atributelor (adică proprietățile entităților) care, prin analiza asociațiilor dintre atribute, sunt grupate în relațiile care reprezintă tipurile de entități și asociațiile dintre acestea.

Tratarea „de jos în sus” este indicată în proiectarea unor baze de date simple, cu un număr relativ mic de atribute. Această abordare devine dificilă atunci când este aplicată în proiectarea unor baze de date mai complexe, cu un număr mai mare de atribute, în care este dificilă stabilirea tuturor dependențelor funcționale dintre acestea. Întrucât modelele de date logice și conceptuale corespunzătoare bazelor de date complexe pot conține sute de mii de atribute, este esențială gasirea unui mod de abordare care va simplifica procedura de proiectare. De asemenea, în stadiile inițiale de stabilire a cerințelor privind datele pentru o bază de date complexă, ar putea fi dificilă identificarea tuturor atributelor care trebuie incluse în modelul de date.

O strategie mai adecvată de proiectare a bazelor de date complexe constă în utiliza-

rea tratării de „sus în jos”. Aceasta începe cu realizarea unor modele de date, care conțin câteva entități și relații de nivel înalt, după care se aplică rafinări succesive de sus în jos, pentru a identifica entitățile, relațiile și atributele asociate de nivel înalt. Abordarea de sus în jos este ilustrată prin utilizarea conceptelor modelului Entitate-Relație (ER). Aceasta începe prin identificarea entităților și relațiilor dintre ele care prezintă interes pentru organizație.

În proiectarea bazelor de date există și alte abordări, cum ar fi cea „din interior spre

exterior” și cea „compusă”. Tratarea „din interior spre exterior” este legată de cea „de jos în sus”, dar diferă de aceasta prin faptul că mai întâi se identifică un set de entități principale, care este ulterior extins pentru a cuprinde și alte entități, relații și atribute asociate celor găsite inițial.

În strategia compusă se utilizează atât abordarea „de sus în jos”, cât și cea „de jos în

sus” pentru diverse părți ale modelului, pentru ca, în final, să se combine toate componentele.

În capitolul următor va fi descrisă structura bazelor de date și in cea mai mare

parte se va urmarii activitățile specifice privind proiectarea bazelor de date legate de toate noțiunile prezentate.

CAPITOLUL 2. NOTIUNI DE BAZE DE DATE ȘI SGBD

Sistemele de gestiune a bazelor de date sunt sisteme informatice specializate în

stocarea și prelucrarea unui volum mare de date, numărul prelucrărilor fiind relativ mic.

Termenul de bază de date se va referi la datele de prelucrat, la modul de organizare

a acestora pe suportul fizic de memorare, iar termenul de gestiune va semnifica totalitatea operațiilor ce se aplică asupra datelor din baza de date.

În arhitectura unui sistem de baze de date SGBD ocupă locul central.

Un SGBD este un ansamblu software interpus între utilizatori și baza de date și este

un interpretor de cereri de acces sau regăsire de date în baza de date, executa cererea și returnează rezultatul. SGBD este un sistem de programare care facilitează procesul definirii, construcției, organizării și manipulării datelor pentru diverse aplicații. Utilizatorul are acces la SGBD prin intermediul unei interfețe (aplicație) cu ajutorul careia stabilesc parametrii interogării și se primește răspuns.

Organizarea pe trei niveluri a sistemelor de baze de date este strâns legată de

conceptul de independență a datelor, în sensul că sistemul bazei de date poate fi modificat

la orice nivel fără a afecta nivelurile superioare. Independența datelor poate fi privită în două moduri, corespunzătoare nivelurilor conceptual (logic) și intern (fizic).

Independența logică a datelor reprezintă capacitatea modificării schemei

conceptuale fără a provoca modificări în schema externă sau în programele de aplicație. Schema conceptuală se poate modifica prin mărirea bazei de date datorită adăugării de noi tipuri de înregistrări (o nouă coloană într-o tabelă) sau date (înregistrări) sau micșorarea bazei de date în cazul ștergerii unor înregistrări.

Independența fizică a bazelor de date este dată de capacitatea de schimbare a

schemei interne fără modificarea schemei conceptuale sau externe.

Funcționarea unui SGBD se realizează prin comenzi specifice limbajului SQL.

Nivelele conceptual și intern nefiind distinct delimitatea sunt adresate printr-un limbaj comun numit DDL (Data Definition Language) utilizat pentru administrarea și proiectarea bazei de date în definirea ambelor scheme. Dacă SGBD are o delimitarea clară între nivelul conceptual și cel intern, atunci DDL se foloseste pentru comenzile la nivel conceptual, iar pentru specificarea schemei interne se folosește limbajul SDL (Storage Definition Language). Pentru cel de-al treilea nivel, extern, se folosește limbajul VDL (View Definition Language), destinat utilizatorilor și pentru interfața acestora cu nivelul conceptual. Pentru operațiile tipice legate de căutare, inserare, ștergere și modificarea datelor, SGBD dispune de un limbaj de manipulare numit DML (Data Manipulation Language).

Interfețe SGBD

Un SGBD este un ansamblu complex de programe care asigură interfața între o bază

de date și utilizatorii acesteia. SGBD este componenta software a unui sistem de baze de date care interacționează cu toate celelalte componente ale acestuia asigurând legătura și interdependența între ele.

Un SGBD oferă interfețele corespunyătoare tuturor categoriilor de utilizatori pentru

a facilita legătura acestora cu baza de date. Principalele tipuri de interfețe sunt:

Interfețe pe bază de meniuri. Acestea ofera utilizatorilor o lista de opțiuni

(meniuri) pentru formularea interogărilor.

Interfețe grafice. Acestea afișează utilizatorului un set de diagrame, cererile sunt

formulate prin manipularea acestor diagrame. De cele mai multe ori interfețele grafice sunt asociate cu meniurile.

Interfețe bazate pe videoformate. Se utilizează pentru introducerea de noi date,

actualizarea bazei de date și căutare.

Interfețe în limbaj natural. Acceptă comenzi scrise în limba engleză sau alte

limbi de circulație internațională. Interpretarea cererilor se face pe baza unui set de cuvinte cheie ce sunt interpretate pe baza schemei interne.

Interfețe specializate pe cereri repetate (limbaj de comandă). Sunt destinate

unei anumite categorii de utilizatori.

Interfețe pentru administrarea bazei de date. Se utilizează pentru comenzile

privilegiate, utilizate de administratorii bazei de date și se referă la crearea de conturi, parole, setarea parametrilor sistemului, autorizarea intrării pe un anumit cont, reorganizarea structurii de stocare a datelor din baza de date.

Obiectivele sistemelor de gestiune a bazelor de date

Independența fizică. Un obiectiv esențial este de a permite realizarea

independenței structurilor de stocare în raport cu structurile de date din lumea reală. Se definește mulțimea de date indiferent de forma acesteia din lumea reală, ținând seama doar de a realiza un acces simplu la date și a obține anumite performanțe.

Independența logică. Fiecare grup de lucru care exploatează baza de date poate

să utilizeze diferite informații de bază, pentru a-și construi entități și relații. Fiecare grup de lucru poate să cunoască doar o parte a semanticii datelor, să vadă doar o submulțime a datelor și numai sub forma care le dorește. Independența logică a datelor se referă la posibilitatea adăugării de noi articole sau extinderea structurii conceptuale, fără ca aceasta să impună rescrierea programelor existente.

Manipularea datelor de catre neinformaticieni. Neinformaticienii vad datele

Independente de implementarea lor și pot manipula aceste date cu ajutorul limbajelor neprocedurale. Utilizarea unui limbaj cât mai apropia de limbajul natural permite exploatarea cu ușurință a bazei de date de către utilizatorii neinformaticieni.

Eficacitatea accesului la date. Acest obiectiv are două aspecte. Dacă accesul la

Date este efectuat de specialisti informaticieni care sunt programatori de sistem și cunosc modul de stocare a informației, atunci sistemul trebuie să furnizeze limbaje de manipulare a datelor care să permită atingerea cu ușurință a acestui obiectiv. Dacă accesul la date este efectuat de neinformaticieni sau de către informaticieni care ignoră modul de stocare a datelor, atunci sistemul trebuie să furnizeze un limbaj neprocedural care să permită utilizatorului să descrie ceea ce vrea să obțină fără a da modul în care poată să obțină.

Administrarea centralizată a datelor. Administrarea datelor presupune definirea

structurii datelor și a modului de stocare a acestora. Administrare este în general centralizată și permite o organizare coerentă și eficace a informației.

Neredundanța datelor. Fiecare aplicație posedă datele sale proprii și asta

conduce la numeroase dubluri. De asemenea, organizarea nejudicioasă a relațiilor poate să genereze redundanță în date. Administrarea coerentă a datelor trebuie să asigure neduplicarea fizică a datelor. Totuși, nu sunt excluse nici cazurile în care, pentru a realiza performanțe referitoare la timpul de acces la date și răspuns la solicitările utilizatorilor, să se accepte o anumită redundanță a datelor.

Coerența datelor. Informația trebuie să satisfacă constrângeri statice sau

dinamice, locale sau generale. De exemplu, pot fi considerate drept constrângeri: aprtenența la un anumit domeniu, un anumit tip de date, de o anumită lungime, o anumită cardinalitate a relațiilor, constrângeri referențiale etc.

Partajabilitatea datelor. Obiectivul permite ca aplicațiile să partajeze datele din

bază în timp și simultan. O aplicație poate folosi date ca și cum ar fi singura care le utilizează, fără a sti că o altă aplicație, concurent, le poate modifica.

O tranzacție este o unitate logică de tratament, care, aplicată la o stare coerentă a

bazei, generează o nouă stare coerentă (modifică baza). SGBD trebuie să asigure gestiunea tranzacțiilor și a acceselor concurente. De exemplu, pentru a asigura paralelismul execuției tranzacțiilor, este necesară o gestiune a acceselor concurente și trebuie asigurat ca execuția paralelă a tranzacțiilor să dea același rezultat ca și execuția secvențială a acestora. SGBD trebuie să detecteze și să rezole cazurile de interblocare, în care una sau mai multe tranzacții așteaptă eliberarea datelor ținute de celelalte tranzacții.

Securitatea și confidențialitatea datelor. Datele trebuie protejate de un acces

neautorizat sau rău intenționat. Există mecanisme care permit indentificarea și autentificarea utilizatorilor și există proceduri de acces autorizat care depind de date și de utilizator.

SGBD trebuie să asigure securitatea fizică și logică a informației și să garanteze ca

doar utilizatorii autorizați pot efectua operații corecte asupra bazei de date. Acestă funcție complexă presupune trei elemente fundamentale:

Gestiunea autorizațiilor, adică posibilitatea de a controla (crea, suprima,

modifica) accesul utilizatorilor la informațiile din baza de date și tipurile de operații

pe care aceștia le pot efectua asupra bazei;

Controlul validității operațiilor;

Protecția datelor împotriva accesului neautorizat (parola, criptare etc.) și în

cazul defecțiunilor. Aceste defecțiuni pot să apară datorită unor manipulări incorecte, unor incidente fizice sau logice. Trebuie asigurat un mecanism ce permite menținerea și repunerea bazei într-o stare coerentă în cazul apariției unei avarii. De exemplu, operațiile de modificare efectuate asupra datelor sunt salvate în jurnalul tranzacțiilor. Dacă există o pană (fizică), utilizând baza de date în forma actuală și jurnalul tranzacțiilor, baza poate sa fie reconstituită așa cum era înaintea avariei.

CAPITOLUL 3. LIMBAJUL SQL

Introducere în limbajul SQL

SQL (limbaj structurat de interogare) este limbajul standard pentru sistemele de

gestionare a bazelor de date relaționale, definit de ANSI (American National Standards Institute) în octombrie 1986.

SQL este un limbaj neprocedural foarte simplu, dar performant, pentru comunicarea

cu serverul Oracle. Toate operațiile executate în baza de date Oracle sunt efectuate folosind instrucțiuni SQL.

Importanța limbajului SQL

SQL este primul, și deocamdata singurul, limbaj de baze de date standardizat care

se bucură de o acceptare largă. Singurul limbaj de baze de date stadardizat care mai există –

limbajul de baze de date în rețea (NDL – Network Database Language), bazat pe modelul în rețea CODASYL – are puțini adepți. Aproape fiecare comerciant important din zilele noastre furnizează produse de baze de date bazate pe limbajul SQL sau cu o interfață SQL, iar majoritatea au reprezentanți în cel puțin unul din organismele principale de standardizare. Există o investiție uriașă în limbajul SQL atât din partea comercianților cât si din partea utilizatorilor. Acesta a devenit o parte componentă a arhitecturilor de aplicație, cum ar fi arhitectura de aplicație pentru sisteme SSA (Szstem Application Arhitecture) a companiei IBM, și reprezintă alegerea strategică a multor organizații largi și influente, cum ar fi consorțiul X/OPEN pentru standardele UNIX. De asemenea, limbajul SQL a devenit un standar federal de prelucrare a informațiilor FIPS (Federal Information Processing Standard), la care trebuie să se conformeze toate sistemele SGBD vândute guvernului SUA. Grupul de acces SQL (SQL Acces Group), un consorțiu de comercianți, încearcă să definească un set de îmbunătățiri ale limbajului SQL, astfel încât acesta sa accepte interoperabilitatea cu sisteme disparate.

Limbajul SQL este utilizat în alte standarde și ca intrument de definire. Dezvoltarea

limbajului este susținută de un interes academic considerabil care pune la dispoziție atât o bază teoretică a limbajului, cât și tehnicile necesare pentru a-l implementa cu succes. Acest fapt este adevărat mai ales optimizarea interogărilor, distribuirea datelor și securitate. suportul hardware se dezvoltă o dată cu disponibilitatea calculatoarelor pentru baze de date. Au început să apară implementări specializate ale limbajului SQL, orientate spre piețe noi, cum ar fi OnLine Transaction Processing (OLTP) și OnLine Analytical Processing (OLAP).

Obiectivele limbajului SQL

Ideal ar fi ca un limbaj de baze de date să permită utilizatorului:

Să creeze baza de date și structurile relațiilor.

Să efectueze operații elementare de gestionare a datelor, cum ar fi inserarea,

modificarea și stergerea acestora din cadrul relațiilor.

Să efectueze atât interogări simple, cât și complexe, pentru a transforma datele

brute în informații.

În plus, un limbaj de baze de date trebuie sa efectueze aceste operații cu un efort

minim din partea utilizatorului, iar structura comenzilor și sintaxei sale trebuie să fie relativ ușor de învățat. În final, trebuie să fie portabil, adică trebuie să se conformeze unui standard recunoscut, astfel încât să se poată utiliza aceeași strctură a comenzilor și sintaxă, atunci când se trece de la un sistem SGBD la altul. Limbajul SQL este proiectat să satisfacă aceste cerințe.

Limbajul SQL constituie un exemplu de limbaj orientat spre transformări, sau

limbaj proiectat să utilizeze relațiile, pentru a transforma intrările în ieșirile cerute. Limbajul SQL nu conține comenzi de flux de control. Cu alte cuvinte, nu există instrucțiuni IF…THEN…ELSE, GO TO, DO…WHILE sau alte comenzi care sa ofere un flux de control. Acestea trebuie implementate prin utilizarea unui limbaj de programare sau de control al lucrărilor, sau interativ, prin decizii ale utilizatorului. Datorită acestei lipse de deplinătate de calcul, limbajul SQL poate fi utilizat în două moduri. Prima modalitate este de a folosi limbajul SQL interativ, prin introducerea instrucțiunilor de la un terminal. A doua modalitatea este de a integra instrucțiunile SQL într-un limbaj procedural.

SQL este un limbaj relativ ușor de învățat:

Este un limbaj neprocedural – se specifică ce informații sunt cerute, mai degrabă

decât cum să fie obținute. Cu alte cuvinte, limbajul SQL nu necesită specificarea metodelor de acces la date.

Ca majoritatea limbajelor moderne, SQL este în esență cu format liber, ceea ce

înseamnă că nu este necesar ca fragmentele de instrcțiuni să fie scrise în anumite locuri de pe ecran.

Structura comenzilor constă în cuvinte standard din limba engleză, cum ar fi

CREATE, TABLE, INSERT, SELECT.

Limbajul SQL poate fi folosit de o gamă largă de utilizatori.

În general, există patru tipuri de utilizatori a unei baze de date SQL:

Utilizatorul final, care vede datele sub formă de tabele, care nu trebuie să

cunoască modelul relațional a lui Codd, care poate pune întrebări ad-hoc asupra bazei de date.

Administratorul aplicațiilor, care definește tabelele și care trebuie să cunoască

modelul relațional al lui Codd.

Administratorul sistemului, care este responsabil cu optimizarea stocării

tabelelor și cu optimizarea accesului.

Creatorul de aplicații, care trebuie să exploateze concurența și facilitățile

controlului concurenței pentru a evita conflictele între utilizatori și a sigura astfel integritatea și securitatea datelor.

Pentru utilizatorul final, un tabel este o relație, iar pentru ultimii trei utilizatori, un

tabel este o reprezentare a unei relații la un moment dat.

Standardul SQL include un limbaj de definire a datelor/a schemei unei baze de date

relaționale (LDD), un limbaj de manipulare a datelor/a bazei de date (LMD), un limbaj de interogare a datelor/a bazei de date (LID), un limbaj de control al datelor/al bazei de date (LCD).

Administratorul folosește LDD pentru a crea tabele, utilizatorul final folosește LMD

și LID pentru a manipula baza de date, iar creatorul de aplicații folosește LCD pentru a controla baza de date.

SQL este un limbaj care permite definirea și modificarea schemei unei baze de date

Relaționale, interogarea și modificarea (neprocedurală) unei baze de date relaționale, conrolul securității și integrității bazei.

Definirea schemei unei baze de date relaționale

Limbajul de definire a datelor include instrucțiuni ce permit crearea schemei bazei

date, adăugarea relațiilor la schema bazei, ștergerea unor relații existente, adăugarea de noi atribute relațiilor existente, optimizarea bazei (index, grup, declanșator), definirea structurii fizice și logice a unei baze de date, restricții cu privire la utilizarea structurilor de mai sus.

Specificarea bazelor de date nu a fost descrisă de către standardul ANSI și de aceea

conceptul de bază de date este implementat diferit în diverse dialecte SQL. Majoritatea implementărilor SQL conțin instrucțiuni pentru crearea unei baze de date, fie sub forma unor comenzi ale versiunii respective, fie sub forma unor programe utilitare.

O schemă de baze de date descrie relațiile, atributele relațiilor, domeniul în care

aceste atribute iau valori, restricții de integritate, depturi de utilizare a relațiilor și vizualizarilor, detalii cu privire la implementarea fizică a relașiilor. Definirea unei scheme cuprinde clauza CREATE SCHEMA, o clauză AUTHORIZATION ce permite identificarea creatorului schemei, atâtea clauze CREATE TABLE câte tabele sunt conținute în schemă, clauze CREATE VIEW corespunzatoare vizualizărilor conținute în schemă și operații de acordare a privilegiilor (GRANT). Un utilizator poate avea o singură schemă.

Obiectivele ce pot fi manipulate într-o schemă depind de dialectul SQL. Tabelele,

vizualizările, indecșii, grupurile, sinonimele, procedurile, funcțiile, clișeele și declanșatorii reprezintă câteva din obiectele importante manipulate de SQL*PLUS.

Utilizând LDD, vom comenta succint câteva obiecte ce pot fi definite într-o schemă

de baze de date. Procesul de definire a unui obiect presupune crearea, modificarea și suprimarea acestuia.

Definirea tabelului

Există două tipuri de tabele: tabele de bază, care sunt stocate fizic în memorie și

tabele view (vizualizare), care sunt virtuale și pentru care doar definiția este memorată. Pentru utilizator nu există diferență între cele două tipuri de tabele.

Crearea structurii unui tabel de bază se face prin comanda CREATE TABLE în

patru moduri diferite: fără a indica cheile, indicând cheile la nivel tabel, indicând cheile la nivel coloană, copiind din alt tabel.

În SQL*PLUS cele mai frecvente tipuri de date sunt: CHAR pentru șir de caractere

de lungime fixă, VARCHAR2 pentru șir de caractere de lungime variabilă, NUMBER pentru numere întregi sau reale de lungime variabilă, DATE pentru date calendaristice, LONG pentru text de lungime variabilă, RAW pentru informație binară de lungime variabilă etc.

Crearea structurii unui tabel fără a indica cheile:

CREATE TABLE Intrări_Produse

(Nr_Intrare_Produse NUMBER(18),

Nr_Factură NUMBER(18),

Cod_Produs CHAR(10),

Cantitate NUMBER(18),

Preț_Unitar NUMBER(8, 2),

Adaos NUMBER(18) );

Crearea structurii unui tabel indicând cheile la nivel de coloană

CREATE TABLE Intrări_Produse

(Nr_Intrare_Produse NUMBER(18) PRIMARY KEY,

Nr_Factură NUMBER(18), NOT NULL

REFERENCES Factură_Fiscală_Intrare(Nr_Factura),

Cod_Produs CHAR(10), NOT NULL

REFERENCES Produs(Cod_Produs),

Cantitate NUMBER(18),

Preț_Unitar NUMBER(8, 2)

Adaos NUMBER(18) );

Crearea structurii unui tabel indicând cheile la nivel de tabel:

CREATE TABLE Intrări_Produse

(Nr_Intrare_Produse NUMBER(18),

Nr_Factură NUMBER(18), NOT NULL

Cod_Produs CHAR(10), NOT NULL

Cantitate NUMBER(18),

Preț_Unitar NUMBER(8, 2)

Adaos NUMBER(18) );

PRIMARY KEY (Nr_Intrare_Produse),

FOREIGN KEY (Nr_Factură)

REFERENCES Factură_Fiscală_Intrare(Nr_Factura),

FOREIGN KEY (Cod_Produs)

REFERENCES Produs(Cod_Produs);

Crearea structurii unui tabel prin copiere:

CREATE TABLE Intrări_ProduseCosmetice

AS SELECT Nr_Intrare_Produse,Nr_Factură, Cod_Produs

FROM Intrari_Produse

WHERE Cod_Produs = ‘100’;

Prin comanda CREATE TABLE se pot specifica anumite constrângeri declarative

prin care se exprimă o condiție care trebuie respectată de toate tuplurile uneia sau mai multor relații. Constrângerile pot fi definite și cu ajutorul comenzilor ALTER TABLE, CREATE ASSERTION, CREATE DOMAIN. Contrângerilor le pot fi asociate nume unice. Liniile unui tabel care nu respectă constrângerea suntdepuse într-un tabel special. Există și constrângeri sofisticate, numite constrângeri algoritmice, nesuportate de stardardul SQL, dar promise pentru SQL3.

Constrângerile declarative pot fi:

Constrângeri de domeniu, care definesc valorile luate de un atribut (DEFAULT,

NOT NULL, UNIQUE, CHECK).

Constrângeri de integritate a entității, care precizează cheia primară (PRIMARY

KEY).

Contrângeri de integritate referențială, care asigură coerența între cheile primare

și cheile externe corespunzătoare (FOREIGN KEY).

Aserțiuni, care specifică anumite constrângeri generale referitoare la atribute

(ASSERTION).

În următoarea secvență sunt create trei constrângeri care specifică constrângerea de

cheie primară (aaa), constrângerea de cheie externă (ccc) și contrângerea (NOT NULL) de domeniu (bbb):

CREATE TABLE Intrări_Produse

(Nr_Intrare_Produse NUMBER(18)

CONSTRAINT aaa PRIMARY KEY,

Nr_Factură NUMBER(18)

CONSTRAINT bbb NOT NULL

CONSTRAINT ccc REFERENCES Factură_Fiscală_Intrare(Nr_Factura),

…)

Modificarea structurii unui tabel se realizează cu ajutorul comenzii ALTER TABLE

Care permite adăugarea sau modificarea unei coloane, activarea, dezactivarea sau suprimarea unor constrângeri.

Adăugarea unei coloane sau unei constrângeri la nivel tabel cu ajutorul opțiunii

ADD. De exemplu, adăugarea unui nou câmp în tabelul „Intrări_ProduseCosmetice” se realizează prin:

ALTER TABLE Intrări_ProduseCosmetice

ADD (Cantitate NUMBER);

Modificarea unei coloane sau a unei constrângeri la nivel coloană cu ajutorul

opțiunii MODIFY. De exemplu, modificarea formei prețului unui produs se realizează prin secvența:

ALTER TABLE Intrări_Produse

MODIFY (Preț_Unitar NUMBER(10, 2));

Activarea sau dezactivarea unei constrângeri cu ajutorul opțiunilor ENABLE

sau DISABLE. Definirea și dezactivarea unei constrângeri este exemplificată prin secvența:

ALTER TABLE Client

ADD ( CONSTRAINT cp_client

PRIMARY KEY (Cod_Client)

DISABLE);

Activarea constrângerii „cp_client” se realizează prin:

ALTER TABLE Client

ENABLE CONSTRAINT cp_client;

Suprimarea unor constrângeri se realizează cu ajutorul opțiunii DROP.

ALTER TABLE Client

DROP PRIMARY KEY;

Suprimarea unui tabel se realizează cu ajutorul comenzii DROP TABLE,

Schimbarea numelui unui tabel se realizează prin comanda RENAME, iar afișarea structurii unui tabel prin DESCRIBE.

Definirea grupului

Un grup (cluster) este o regrupare fizică a două sau mai multe tabele, relativ la una

sau mai multe coloane, realizată în scopul măririi performanțelor. Această metodă de stocare este eficientă când apar operații de compunere între tabele. Se poate crea un grup pentru a regrupa tupluri aparținând chiar aceluiași tabel. Un grup este un obiect al bazei (specific SQL*PLUS) care necesită un nume unic la nivelul schemei și o specificare a coloanelor care îl compun (cheia grupului). Grupul beneficiază de procesul de definire a unui obiect (CREATE CLUSTER, ALTER CLUSTER, DROP CLUSTER).

Grupul poate fi specificat la crearea structurii unui tabel:

CREATE TABLE nume tabel

CLUSTER nume grup (col 1 [, col2 …]);

Grupul poate fi asociat unui tabel existent, iat în acest caz tabelul trebuie duplicat și

apoi șters. Aceasta este realizată conform secvenței:

CREATE TABLE tabel 2;

CLUSTER nume grup (coloane grup);

AS SELECT * FROM tabel 1;

DROP TABLE tabel 1;

RENAME tabel 2 TO tabel 1;

Pentru a elimina tabelele dintr-un grup, pentru fiecare tabel se procedează astfel:

CREATE TABLE tabel 2;

AS SELECT * FROM tabel 1;

DROP TABLE tabel 1;

RENAME tabel 2 TO tabel 1;

În final se suprimă grupul prin comanda DROP CLUSTER nume cluster.

Similar Posts