. Baze de Date In Mediul Web

Introducere

MOTO

Programatorul este un creator de universuri

pentru care este în întregime responsabil.

(Joseph Weizenbaum)

Odatǎ cu apariția și dezvoltarea Internetului au început sǎ creascǎ și nevoile noastre de comunicare. Rețeaua Internet nu a cunoscut o mare rǎspândire decât dupǎ 1995 odatǎ cu apariția protocolului HTTP – HyperText Transmission Protocol și a limbajului HTML – HyperText Markup Language.

Creșterea cât mai mare a informațiilor și a datelor ce se doresc a fi transmise a dus, inevitabil, la implicarea sistemelor de gestiune a bazelor de date în dezvoltarea site-urilor și aplicațiilor online.

În dezvoltarea site-urilor cu conținut dinamic a fost nevoie de dezvoltarea de noi limbaje, cum ar fi limbajul PHP din domeniul Open Source și limbajul ASP de la Microsoft. Aceste noi tehnologii permit scrierea de programe care ruleazǎ în contextul serverului Web și faciliteazǎ acestuia extragerea datelor din baza de date și transmiterea acestor date cǎtre clienți sub formǎ de pagini HTML. În același timp limbajul HTML a fost îmbunǎtǎțit prin introducerea stilurilor (CSS și CSS2), introducerea limbajului Java Script, care ruleazǎ în cadrul browserului Web și un nou limbaj a fost creat (XML).

În acest context lucrarea de fațǎ își propune sǎ prezinte aceste tehnologii și modul prin care acestea interacționeazǎ, în cadrul unei aplicații online complexe și „customizabile”.

Primul capitol al lucrǎrii face o prezentare a conceptelor fundamentale întâlnite în sistemele de gestiune a bazelor de date. În continuare, în capitolul doi, este prezentat limbajul SQL folosit în cadrul bazelor de date relationale. Capitolul prezintǎ atât comenziile de creare a bazelor de date și a tabelelor cât și comenzile de manipulare a datelor.

Urmeazǎ capitolul trei cu prezentarea tehnologiilor și conceptelor pe care se bazeazǎ dezvoltarea aplicațiilor online.

În capitolul patru sunt prezentate prin exemple limbajele HTML, XML și CSS (Cascading Style Sheets) și face o scurtǎ istorie a evoluției limbajului HTML.

Capitolul cinci intitulat „Rețeaua Web ca platformă pentru aplicațiile de baze de date” prezintǎ arhitectura client – server ca mod de interacțiune între baza de date și mediul Web.

Limbajul PHP care ruleazǎ în mediul serverului Web, responsabil cu operațiile asupra bazei de date și cu genarea conținutului dinamic al site-lui, este dedscris în capitolul șase.

Ultimul capitol, al șaptelea, prezintă modul de realizare a unei aplicații online care reprezintǎ o bibliotecǎ virtualǎ. Sunt utilizate intens conceptele prezentate în capitolele precedente, linbajul PHP, serverul MySQL și HTML.

Baze de date și SGBD

1.1. Baze de date

Baza de date este un ansamblu structurat de date concrete, fără redondanță inutilă, astfel încât acestea pot fi prelucrate eficient de mai mulți utilizatori într-un mod concurent.

O bază de date conține toate informațiile necesare despre obiectele ce intervin într-o mulțime de aplicații, relațiile logice între aceste informații și tehnicile de prelucrare corespunzătoare. În bazele de date are loc o integrare a datelor, în sensul că mai multe fișiere sunt privite în ansamblu, eliminându-se pe cât posibil informațiile redondante. De asemenea, se permite accesul simultan la aceleași date, situat în același loc sau distribuite spațial, a mai multor persoane de pregătiri diferite, fiecare cu stilul personal de lucru.

Proprietățile unei baze de date:

ușurința implementării la nivel fizic;

ușurința interogării și timpul de răspuns;

integritatea datelor și modul de detectare și corectare a erorilor.

O bază de date este o colecție de date corelate . Cele trei elemente esențiale ale unei baze de date sunt:

tabelele;

coloanele;

liniile (rândurile).

Tabelele, numite și entități, reprezintă elementele de bază ale informațiilor care trebuiesc urmărite.

Coloanele, numite și câmpuri, reprezintă atributele unui tabel.

Liniile (rândurile), numite și înregistrări, reprezintă datele propriu-zise. În timp ce câmpurile descriu ce tip de date sunt stocate, în liniile tabelei sunt stocate datele.

Caracteristica principală a aplicațiilor de baze de date constă în faptul că accentul este pus pe operațiile de memorare și regăsire efectuate asupra unor volume mari de date, și mai puțin asupra operațiilor de prelucrare a acestora. Principala operație care apare în orice aplicație de baze de date este aceea de regăsire a datelor, în scopul obținerii de informații din baza de date. Alături de operațiile de regăsire apar, mai mult sau mai puțin frecvent, operații de memorare pentru introducerea de noi date în baza de date, operții de ștergere pentru datele devenite inutile, operții de actualizare a unor date existente deja în baza de date.

Organizarea datelor în baza de date constitue o formă de centralizare a acestora. Aceasta implică existența unui administator al bazei de date (ABD-Data Base Administrator) care este o persoană sau un grup de persone ce răspund de ansmblul activitățiilor (analiză, proiecte, implementare, exploatare, întreținere) legate de baza de date. Atribuțiile unui administator pot fi grupate în 4 mari categorii:

atribuții de proiectare;

atribuții administrative;

atribuții operative;

atribuții de coordonare.

1.1.1.Arhitectura bazelor de date

Arhitectura bazelor de date evidențiază următoarele componente:

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

sistemul de gestiune a bazei de date, care realizează gestionarea și prelucraea complexă a datelor;

un dicționar al bazei de date (metabaza de date), ce conține informații despre: date, structura acestora, statistici, documentație;

mijloace hardware (comune sau specializate);

reglementări administrative destinate bunei funcționări a sistemului;

personalul implicat (utilizatori finali, administrtor, programatori, operatori).

În cadrul unei baze de date putem vorbi de patru niveluri de abstactizare și de percepție a datelor: intern, conceptual, logic și extern. Datele există doar la nivel fizic, iar celelalte trei niveluri reprezintă vizualizări ale acestora:

nivelul fizic (intern) este descris de schema fizică a datelor (bit, octet, adresă) și reprezintă viziunea programatorilor de sistem asupra datelor;

nivelul conceptual este descris de schema conceptuală a datelor (articol, înregistrare, zonă) și reprezintă vizunea programatorilor de sistem asupra datelor;

nivelul logic este descris de una din sistemele logice posibile ale datelor și rprezintă viziunea progratorului de aplicație asupra datelor;

nivelul virtual (extern) reprezintă vizunea utilizatorului final asupra datelor.

1.2. Sisteme de gestiune a bazelor de date (SGBD)

1.2.1. Arhitectura unui SGBD

SGBD-ul constitue o interfață între utilizatorii de baze de date, care permite în principal, crearea, actualizarea și consultarea acesteia.

Un sistem de gestiune a bazei de date este un produs software care asigură interacțiunea cu o bază de date, permițând definirea, consultarea și actualizarea datelor din baza de date.

1.2.2. Obiectivele unui SGBD

Obiectivul principal al unei baze de date este de a separa descrierea datelor față de programele de aplicații. Pentru atingerea acestui obiectiv este necesară abstractizarea datelor memorate în baza de date. Astfel s-a ajuns că există trei niveluri de reprezentare și percepție a unei baze de date :

extern;

conceptual;

intern.

Schema externă face referire la datele necesare unui utilizator sau unui grup de utilizatori. Ea este o sub-schemă (o imagine) a schemei conceptuale. Schemele externe constitue sursa pentru întocmirea schemei conceptuale.

Schema conceptuală rezultă din analiza schemei externe și din eliminarea redundanțelor. O schemă conceptuală este completă dacă poate furniza date pentru toate schemele externe, adică datele de care au nevoie utilizatorii.

Schema internă inplementează schema conceptuală folosind un SGBD. Pentru o bază de date se pot defini mai multe scheme externe, o singură schemă conceptuală și respectiv o singură schemă internă. Faptul că utilizatorul vede baza de date folosind o schemă externă facilitează determinarea drepturilor de acces la baza de date.

Sistemul de gestiune a bazelor de date trebuie să poată interpreta instrucțiunile exprimate în termen de schemă externă și respectiv schemă conceptuală iar după aceea în termen de operații de intrare/ieșire la nivel fizic și să asigure trecerea de la un nivel la altul.

Plecând de la obiectivul principal putem spune că principalele obiective ale SGBD-ului sunt:

Independența fizică a datelor

Schema internă a bazei de date dscrie modul în care datele sunt organizate pe suportul fizic (fișiere, înregistrări) precum și metodele de acces, criteriile de ordonare și regăsire ale acestora, astfel să se asigure un grad de performanță și suplețe cât mai ridicat.

Indedpendența fizică a datelor constă posibilitatea de a schimba organizarea internă a datelor și structurile de înregistrare, fără a modifica programele care le folosesc (programe utilizator).

Independența logică a datelor

Schema conceptuală a bazei de date se obține printr-o sinteză și integrare a schemelor externe, care reprezintă interese informaționale de grup sau individuale. În aceste condiții, este normal ca fiecare grup de utilizatori să aibă posibilitatea să-și modifice în timp cerințele informaționale fără a efectua schema conceptuală a bazei de date.

Independența logică a datelor constă în posibilitatea de a modifica schemele externe fără a modifica schema conceptuală. Principalele avantaje ale independenței logice a datelor sunt următoarele:

permite orcărui grup de utilizatori să vizualizeze datele așa cum își doresc;

permite evoluția în timp a schemelor externe ale fiecărui grup de utilizatori fără a efectua schema conceptuală;

permite evoluția unei anumite scheme externe fără a efectua celelalte scheme externe.

Manipularea datelor prin limbaje declarative (neprocedurale)

În general există două categorii de utilizatori care manipulează datele dintr-o bază de date: utilizatori interactivi, care au nevoie de limbaje de interogare forte simple, apropiate de limbajul natural, care să le prmită să obțină informațiile de care au nevoie și programatori care folosesc limbaje procedurale.

Administrarea cât mai simplă a datelor

Un SGBD trebuie să furnizeze instrumente adecvate pentru descrierea datelor, atât din punct de vedere al schemei externe cât și al schemei interne.

Operațiile de descriere și de modificare a descrierii datelor sunt cunoscute sub numele de administrarea datelor. Pentru a permite un control eficient asupra datelor și a rezolva diferite conflicte care pot apărea cu ocazia definirii acestora, această operație cade în sarcina unui grup restrâns de persoane numite administratori de date. Administrarea centralizată a datelor, nu conduce totdeauna la realizarea unor baze de date performante, capabile să mulțumescă categorii de utilizatori diferiți. Pentru a nu întâlni această situație, SGBD-urile actuale oferă instumente adecvate care permit o descentralizarea descrierii datelor, asigurând în același timp coerența necesară între diversele descrieri parțiale.

Eficacitatea accesului la date

Fiecare utilizator dorește ca interogările sale asupra bazei de date să furnizeze informațiile necesare acestuia într-un timp cât mai scurt. Există doi parametri care măsoară performanțele accesului la date: numărul de tranzacții pe secundă și timpul de răspuns. Un element foarte important care influențează acești parametri îl constitue operațiile de intrare/ieșire pe disc. Pentru a optimiza aceste operații, majoritatea SGBD-urilor actuale folosesc memorii cache, unde se depozitează datele cele mai frecvent utilizate pe parcursul execuției unei aplicații.

Partajarea datelor

Partajarea datelor se realizează prin controlul accesului curent la baza de date. Mai mulți utilizatori vor să acceseze simultan aceeași înregistrare din baza de date. Fizic, acest lucru nu este posibil deoarece mecanismul de acces la diosibil deoarece mecanismul de acces la disc și la memoria internă este unic. Prin urmare cererile de acces simultane, sunt înregistrate într-un fir de așteptare și sunt deservite într-o anumită ordine.

Coerența datelor

Coerența datelor constă în respectarea unor dependențe care pot exista între datele bazei de date. Regulile explicite sau implicite pe care datele trebuie să le respecte de-a lungul evoluției lor în baza de date, se numesc restricții de integritate. SGBD-ul trebuie să fie capabil să păstreze coerența datelor prin verificarea acestor restricții de integritate.

Redundanța controlată

Redundanța controlată constă în posibilitatea de a înregistra unele date, eliminând astfel situațiile de înregistrare multiple. Cu cât redundanța este mai mică cu atât performanțele bazei de date cresc.

Securitatea datelor

Securitatea datelor se referă la două aspecte:

accesul controlat al utilizatorului la baza de date (confidențialitate);

refacerea bazei de date în urma unor avarii.

Confidențialitatea bazei de date este asigurată prin proceduri de:

identificare a utilizatorilor prin nume sau cod;

autentificarea prin parole;

autorizarea accesului diferențiat prin drepturi de creare, consultare, modificare sau ștergere pentru anumite segmente de date.

Baza de date trebuie să fie protejată împotriva unor distrugeri logice (anomalie de actualizare) sau fizice. Pentru acestea SGBD-ul trebuie să ofere instrumente pentru:

crearea unor puncte de reluare; astfel spus salvarea din timp în timp a unor copii curente ale bazei de date;

gestiunea unui jurnal de tranzacții; lista operațiilor realizate asupra bazei de date după ultimul punct de repriză.

Dacă apre o anomalie, care ar putea distruge baza de date, pe baza copiei de la ultima repriză și a jurnalului de tranzacții, se poate reface baza de date în forma inițială. Protecția împotriva unei distugeri fizice se face prin realizarea unor copii a bazei de date.

1.2.3. Funcțiile unui SGBD

Principalele funcții ale unui SGBD sunt: descrierea datelor,actualizarea și interogarea bazei de date, conversia datelor dintr-un format în altul, asigurarea controlului integrității, concurenței și securității datelor.

Descrierea datelor

SGBD-ul trebuie să fie capabil să definească datele (schemele: externă, conceptuală, internă și legăturile corespondente) prin intermediul unui limbaj specializat DDL (Description Data Language), într-o formă unificată numită schemă sursă și apoi să compileze această schemă într-o formă internă numită schema obiect.

Într-un SGBD care suportă cele trei niveluri de descriere a datelor (extern, conceptual și intern) există trei administratori de date:

administratorul bazei de date, care are rolul de a defini schema internă și regulile de trecere de la schema conceptulă la cea internă;

administratorul întreprinderii, care definește schema conceptuală;

administratorul aplicației, care definește schema externă și regulile de corespondență cu schema conceptuală.

Interogarea bazei de date

În funcția de interogare se include atât căutarea și extragerea datelor cât și actualizarea bazei de date (adăugare, modificare, ștergere).

SGBD-urile implementează funcția de interogare a bazei de date prin intermediul unor limbaje declarative, care permit căutarea datelor după conținut, fără a preciza procedurile de acces. Aceste limbaje trebuie să fie complete, în sensul de a permite definirea oricărei cereri de interogare a bazei de date, formulată de utilizator. Cel mai utilizat limbaj de interogare a bazei de date este în momentul de față SQL. O cerere de interogare se derulează în patru etape: formulare folosind limbajul de manipulare a datelor (DML care este un subset al limbajului SQL), compilare, optimizare și execuție.

SGBD-urile trebuie să posede un compilator (analizator) al cererilor de interogare, care să permită analiza sintactică și evaluarea acestora. Pentru a valida cererile de interogare, compilatorul utilizează dicționarul de date și le descompune în operatori relaționali, pe care-i structurează sub forma unui arbore, în care nodurile reprezintă operatorii iar elementele de pe ultimul nivel reprezintă relațiile. O cerere de interogare compilată este transmisă în etapa următoare de optimizare, care caută strategia cea mai rapidă pentru execuția acesteia.

În urma optimizării, cererile de interogare sunt transformate în tranzacții. O tranzacție este formată din una sau mai multe cereri de interogare, care se vor executa, din punct de vedere logic împreună (ca entitate funcțională).

Execuția unei tranzacții implică două operații principale: gestiunea tranzacțiilor concurente și execuția propriu-zisă.

Conversia

Conversia sau transformarea datelor, constă în posibilitățile pe care SGBD-ul le oferă pentru trecerea datelor în cele trei niveluri: extern, conceptual și intern. Pentru aceasta SGBD-ul trebuie să cunoască corespondențele existente între niveluri.

Controlul integrității datelor

SGBD-ul trebuie să asigure coerența datelor. Toate regulile implicite sau explicite care trebuie să asigure integritatea datelor cunoscute sub numele de restricții de integritate. Sunt prezentate cu titlul de xemplu:

integritatea cheii primare, potrivit căreia, valorile cheii primare nu trebuie să fie nule;

integritatea referirii, potrivit căreia valorile cheii externe trebuie să refere obligatoriu valorile cheii primare corespondente;

integritatea de domeniu, prin care valorile unui atribut trebuie să aparțină domeniului definiit de utilizator;

etc.

Gestiunea tranzacțiilor

Este important ca un SGBD să asigure gestiunea tranzacțiilor. O tranzacție este o funcție care face ca baza de date să treacă dintr-o stare BD1 într-o stare BD2. Totul este ca această trecere să lase baza de date într-o stare coerentă. Se operează cu componentele de:

atomicitatea tranzacțiilor (Transaction Atomicity) – o tranzacție este total executată sau nu este executată deloc;

corecția tranzacțiilor (Transaction Correctness) – semnifică respectarea coerenței bazei de date după executarea tranzacțiilor;

izolarea tranzacțiilor – modificările produse de fiecare tranzacție sunt vizibile la sfârșitul tranzacției.

De fapt atomicitatea, corecția și izolarea sunt proprietăți ale tranzacțiilor.

Securitatea datelor

Un SGBD trebuie să garanteze securitatea datelor. Acest deziderat se realizează prin intermediul unui mecanism de control al drepturilor de acces la date și de restaurare a bazei de date în cazul unor pene sau erori.

Foarte multe SGBD-uri posedă o seerie de funcții, cum sunt:

posibilitatea de a declanșa anumite proceduri atunci când sunt îndeplinite anumite condiții asupra datelor din baza de date;

introducerea unor reguli de inferențe, care permit deducerea unor date noi pe baza celor existente;

posibilitatea de a gestiona obiecte complexe (hărți, grafice, filme), ceea ce a condus la baze de date multimedia.

1.3. Utilizatorii bazelor de date

O bază de date poate avea unul sau mai mulți utilizatori. În funcție de rolul acestora distingem trei clase de utilizatori ai bazelor de date:

Programatorii de aplicații

Programatorii de aplicații sunt cei care scriu programele ce utilizează bazele de date, indiferent de limbajul de programare utilizat. Aceste programe asigură accesul la datele din baza de date, adăugarea de noi date, ștergerea sau modificarea datelor existente.

Utilizatorii finali

Utilizatorii finali, cuprind două categorii de utilizatori:

Utilizatorul expert, informatician, cunoscând limbajele de programare și limbajele bazelor de date.

Utilizatorul neinformatician, care nu este specialist în baze de date.

Utilizatorii finali interacționează cu baza de date de la o stație de lucru sau de la un terminal.

Majoritatea SGBD-urilor furnizează cel puțin un procesor de limbaj de interogare interactiv, care permite utilizatorului să acceseze SGBD-ului comenzi de nivel înalt (ca SELECT, INSERT, etc). Limbajul SQL este un limbaj tipic de interogare. Unele sisteme oferă utilizatorilor săi alte tipuri de interfețe în care nu pot adresa o comandă explicită (ca SELECT), dar pot să aleagă o comandă dintr-un mediu sau să completeze rubrici în structuri predefinite. Aceste meniuri sau interfețe grafice sunt mai ușor de folosit de utilizatorii care nu au cunoștimțe formale în tehnologia informației: IT (Information Technology) și IS (Information System).

Interfețele orientate pe comandă, adică pe limbaje de interogare, necesită un anumit nivel de competență în IT, dar sunt mai flexibile și oferă funcționalități care nu există în interfețele cu meniuri sau interfețe grafice.

Administratorul bazei de date

Administratorul bazei de date, care asigură administrarea unitară a datelor din baza de date. Funcțiile asigurate de către administrator sunt:

definirea schemei conceptuale (în care sunt incluse și regulile care să asigure integritatea datelor);

definirea schemei interne;

definirea schemei externe (sau sprijinirea utilizatorului final în definirea acestora);

definirea procedurilor de salvare și restaurare;

supervizarea performanțelor și asigurarea evoluției bazei de date;

etc.

1.4. Tipologia bazelor de date

Bazele de date s-au impus rapid ca soluție eficace și eficientă de gestiune a colecțiilor de date structurate și voluminoase. Extinderea utilizării tehnologiilor informaționale în procese operaționale, informaționale și de decizie a dus la tipizarea bazelor de date în funcție de rolul lor .

Baze de date operaționale

Bazele de date operaționale, stochează datele cu privire la sistemele operaționale (SO) din anumite sisteme tranzacționale. Ele mai sunt cunoscute și sub numele de baze de date de domeniu întrucât stochează date privind tranzacțiile dintr-un anumit domeniu de activitate. Este cazul bazelor de date de gestiune a producției, a bazelor de date de gestiune a resurselor umane, etc. în aceiași categorie sunt incluse și bazele de date suport pentru sistemele de schimb informatizat de date. Bazele de date operaționale constitue nucleul sitemelor informaționale din anumite întreprinderi.

Baze de date de informare a executivului

Bazele de date de informare a executivului, stochează rezultate ale prelucrării datelor din bazele de date operaționale și din bazele de date externe. Aceste baze de date suportă sistemele informaționale pentru executive.

Baze de date multidimensionale

Bazele de date multidimensionale sunt baze de date integrate, nevolatile și istorizate, organizate pentru a ajuta în procesul de management. Ele regrupează și integrează date:

din surse diferite: interne (baze de date operaționale pe domenii de activitate) sau externe (bazele de date on-line, sau bazele ale unor organisme specializate).

din perioade diferite: timpul reprezintă o dimensiune de bază în analiza datelor.

nevolatile, care este o consecință a istorizării. Datele fac obiectul actualizării. O explorare anume (o interogare) efectuată la momente diferite trebuie să aducă la obținerea aceluiași rezultat la momente diferite.

de detalii sau agregate. Datele de detaliu sunt deduse din sistemele tranzacționale prin procese de extragere și de transformare. Datele agregate se materializează în structuri multidimensionale care permit utilizatorilor să efectueze intersecții de date.

Bazele de date externe pot conține date comerciale sau date statistice și pot fi accesaste on-line liber sau mijlocind un anumit tarif. Astfel de baze de date pot fi puse la dispoziția înterprinderilor fie de către alte întreprinderi fie de organisme funcționale.

După modul de accesare bazele de date pot fi:

colective, accesate de către mai mulți utilizatori (eventual simultan). Majoritatea bazelor de date din întreprinderi sunt colective.

individuale, accesate exclusiv de către cel care le gestionează. Ele se întâlnesc mai rar în întreprinderi și țin mai mult de practica unor cadre de conducere de a-și dezvolta baza de date cu informații personale.

După modul de localizare (stocare) al datelor, bazele de date pot fi:

locale, stocate de regulă pe Server-ul unei rețele locale de calculatoare și utilizate pe mai multe calculatoare Client (posturi de lucru în rețeaua locală);

distribuite, stocate parțial sau total în diferite puncte ale unei rețele distribuite de calculatoare.

Gestiunea bazelor de date distribuite ridică probleme specifice referitoare la soluția de stocare a datelor (prin replicare sau fragmentare) și la interogarea acestora (făcând abstracție sau ținând cont de localizare).

După tipul datelor gestionate și specificitatea lor, bazele de date pot fi:

convenționale, ce conțin date alfanumerice clasice;

multimedia, ce conțin date multimedia (imagini, sunete, etc.);

textuale, ce conțin documente.

Sistemele de gestiune a bazelor de date convențiionale dispun de însemnate facilități pentru gestionarea datelor multimedia.

Limbajul SQL

2.1. Carcteristici generale ale limbajului SQL

Limbajul SQL (Structured Query Language) a fost implementat în produse comerciale începând cu anii 70 când s-a lansat prima versiune Oracle și SQL/DS de la IBM.

SQL esta un limbaj declarativ; utilizatorul descrie informațiile pe care vrea să le obțină în urma interogării, fără a preciza algoritmii necesari pentru obținerea rezultatelor dorite. În același timp, SQL nu este un limbaj de programare sau de sistem, ci mai curând face parte din categoria limbajelor de aplicație pentru baze de date relaționale. Faptul că este un limbaj standard a condus la recunoașterea principalelor sale instrucțiuni de către mai multe sisteme de gestiune a bazelor de date (S.G.B.D. Oracle, Acces, Dbase, INFORMIX, DB2.).

În ultimii ani, comitetele ANSI și ISO pentru standardizarea limbajului SQL au adăugat noi facilități pentru gestiunea bazelor de date orientate pe obiect și obiect-relațional. S-a ajuns astfel la o versiune SQL3, pe cale de a deveni un standard în domeniu. Aceste facilități se pot structura:

facilități orientate obiect ce propun definirea la nivel de utilizator a tipurilor de date abstracte;

structuri de control specifice: IF, FOR, WHILE ce permit transformarea SQL-ului într-un limbaj de sine stătător;

facilități de comunicare în rețea;

facilități de prelucrare distribuită;

facilități multi-media, înglobate în modulul Multi-Media SQL.

Limbajul SQL permite o comunicare complexă și rapidă a utilizatorului cu bazele de date, în funcție de cerințele și restricțiile acestuia. Pe lângă manipularea și regăsirea datelor, se efectuează și operații complexe privind actualizarea și administrarea bazei de date.

În funcție de rolul lor în manipularea datelor și tranzacțiilor, instrucțiunile SQL, pot fi grupate astfel:

instrucțiuni de definire a datelor care permit descrierea structurii bazei de date;

instrucțiuni de manipulare a datelor în sensul adăugării, modificării și ștergerii înregistrărilor;

instrucțiuni de selecție a datelor care permit consultarea bazei de date;

instrucțiuni de procesare a datelor care permit consultarea bazei de date;

instrucțiuni de procesare a tranzacțiilor care privesc unitățile logice de prelucrare și constitue în fapt, operații multiple de manipulare a datelor;

instrucțiuni de control al cursorului;

instrucțiuni privind controlul accesului la date.

2.2. Limbaj de definire a datelor: SQL-LDD

2.2.1. Gestiunea schemei bazei de date

Schema unei baze de date descrie tabelele și atributele aferente lor, domeniile în care aceste atribute iau valori, restricțiile de integritate, drepturile de utilizare a relațiilor, view-urile și detaliile relative la implementarea fizică a datelor. Limbajul de definire a datelor LDD (Language Data Definition), parte componentă a limbajului SQL, include instrucțiuni care permit realizarea acțiunilor specifice descrierii schemei bazei de date.

Comanda de creare a unei baze de date este:

CREATE DATABASE <nume baza de date>;

Crearea tabelelor

Definirea unei tabele se face cu ajutorul instrucțiunii CREATE TABLE, a cărei sintaxă generală este:

CREATE TABLE nume_tabela (nume-atribut tip_data(marime) [NOT NULL] [,nume-atribut2 tip_data(marime) [NOT NULL]..][CONSTRAINT nume-atribut CHECK (nume-atribut <conditie>…)] [CONSTRAINT nume_index] {PRIMARY KEY|UNIQUE|NOT NULL}]);

Comanda precizează numele tabelei care se creează precum și descrierile atributelor. Este necesar ca fiecărui atribut să-i fie specificate numele, tipul și dimensiunea. Opțiunea NOT NULL, corespunzătoare unui atribut, asigură integritatea relației specificându-se astfel necesitatea introducerii unei valori. Se precizează atributul cu rol de cheie primară pentru care clauza NOT NULL este obligatorie.

SGBDR verifică integritatea datelor prin declararea restricțiilor pe domenii sau programarea de funcții sau proceduri. Se asigură astfel coerența datelor în procesul actualizării prin comenzi INSERT, UPDATE, DELETE.

Modificarea structurii unei tabele

Comanda ALTER TABLE permite modificarea structurii unei tabele prin adăugarea/ștergerea de atribute și prezintă următoarea sintaxă:

alter TABLE nume_tabel {ADD COLUMN nume-atribut1

tip_data [(marime)] [NOT NULL] [CONSTRAINT INDEX] | DROP COLUMN

nume_atribut2 CONSTRAINT indexname}

Ștergerea relațiilor dintr-o bază de date

Ștergerea unei tabele se realizează cu ajutorul comenzii DROP TABLE, odată cu aceasta ștergându-se și indecșii, view-urile definite pentru respectiva tabelă, neexistând nici o posibilitate de recuperare a informației șterse.

Sintaxa comenzii:

DROP TABLE nume_tabel;

Ștergerea unei baze de date

Ștergerea unei baze de date determină ștergerea tuturor obiectelor conținute de aceasta, a copiei cataloagelor SQL din directorul bazei de date.

Sintaxa generală a comenzii este:

DROP DATABASE <nume baza de date>;

Numeroase versiuni SQL nu includ această instrucțiune, ștergerea făcându-se mai ușor printr-o simplă apăsare pe butonul mouse-lui. În utilizarea acestei comenzi este necesar a se preciza că:

într-o rețea de calculatoare nu va putea fi ștearsă o bază de date activată de către un alt utilizator;

comanda de ștergere nu poate acționa asupra unei baze de date active.

2.2.2. Gestiunea indecșilor

Schema unei baze de date definește structurile obiectelor și regulile cărora li se conformează. În SQL singura structură de date este tabela.

Comanda DROP CONSTRAINT. Permite ștergerea unei restricții de unicitate sau de referință.

Sintaxa generală este:

DROP CONSTRAINT nume_index;

Gestiunea derpturilor de utilizare

Utilizatorii bazei e date sunt repertorizați de SGBD prin:

identificatorul sistem;

parolă;

nume de utilizare destinat altor utilizatori.

Utilizatorul care crează o tabelă este proprietarul acesteia, de aceea el poate acorda altor utilizatori ai bazei drepturi asupra tabelelor sale.

Acordare drepturilor de acces

Proprietarul unei tabele poate acorda altor utilizatori dreptul de a manipula tabela. Acordarea acestor drepturi se realizează prin comanda GRANT.

Sintaxa generală este:

GRANT [ALL /Listă de privilegii]

ON TABLE1, . . . , TABLE n

TO [PUBLIC/ Listă utilizatori]

[WHIT GRANT OPTION]

Unde:

Listă privilegii: alter, delete, insert, update, select;

ALL: toate comenzile;

Public: toți utilizatorii;

WHIT GRANT OPTION: dreptul utilizatorilor de a acorda la rândul lor dreptul de acces altor utilizatori.

Retragerea drepturilor de acces

Retragerea (anularea) drepturilor de acces se realizează prin comanda REVOKE.

Sintaxa generală este:

REVOKE [ALL/Listă de privilegii]

ON TABELE1, . . . , TABELE n

FROM [PUBLIC/ Listă utilizatori];

2.3. Limbajul de manipulare a bazei de date (SQL-LMD)

2.3.1. Construirea blocului de cerere

O cerință a utilizatorului de selectare a datelor din baza de date relațională se exprimă prin ceea ce numim un bloc de cerere.

Sintaxa generală este:

SELECT [ALL/DISTINCT/DISTINCTROW] listă atribute

FROM listă-tabele

[WHERE criteriu-de- căutare]

[GROUP BY criteriu-degrupare]

[HAVING criteriu-de-grupare]

[ORDER BY criteriu-de-ordonare [ASC|DESC] ];

Unde:

lista-atribute – specifică atributele a căror valori vor fi returnate;

FROM listă-tabele – specifică tabelele din care se vor extrage datele;

WHERE – permite prin precizarea unei expresii exprimarea criteriului de selecție;

ORDER BY – precitează atributul după care se face ordonarea;

GROUP BY – folosit pentru a partiționa o tabelă în grupuri acordând acestora valori pe un atribut sau listă de atribute;

HAVING – specifică criterii de selecție pe grupuri de tupluri.

2.3.2.Utilizarea predicatelor ALL, ANY, EXIST

Domeniul de obținere a rezltatelor unei subinterogări poate fi influențat prin precizarea unuia din cuvintele cheie: ALL, ANY, EXIST.

ALL

Se preiau rezultatele subinterogării și, dacă acestea îndeplinesc condiția cerută, se returnează valoarea logică True.

ANY

Are în vedere compararea valorii de ieșire a subinterogării cu fiecare înregistrare din interogarea externă. Dacă pentru fiecare înregistrare din interogare există un rezultat al subinterogării, se va returna valoarea logică True.

EXISTS

Folosește subinterogarea ca pe o condiție, analizând setul de rezultate al acesteia și returnând valoarea False dacă nu există nici o ieșire. Se poate astfel verifica existența anumitor înregistrări și controla ansamblul răspunsurilor date de interogare.

2.3.3. Insrucțiuni pentru actualizarea bazei de date

Pentru inserarea unui tuplu într-o tabelă se utilizează comanda INSERT .

Sintaxa generală este:

INSERT INTO nume-tabelă [(nume-atribut, . . .)]

{VALUES(valoare, . . .) | cerere}

Lista de atribute se specifică în cazul în care realizările din clauza VALUES nu corespund ordinii tuplurilor din tabelă. Dacă tuplul/tuplurile inserate sunt preluate dintr-o altă tabelă se va specifica comanda Select.

Actualizarea datelor dintr-o tabelă se realizează prin comanda UPDATE.

Sintaxa generală este:

UPDATE nume-tabelă

SET {nume-atribut=expresie, . . . | (nume-atribut=subcerere), . . .}

[WHERE condiție];

2.4. Gestiunea view-urilor

Un view este o tabelă virtuală, care nu conține date, dar îi conferă utilizatorului posibilitatea de vizualizare a datelor din baza de date dintr-o anumită perspectivă. Pentru definirea unui view se folosește o cerere SQL.

View-urile pot fi folosite în următoarele scopuri:

limitează accesul unor categorii de utilizatori la anumite date, mai mult sau mai puțin confidențiale;

permite simplificarea viziunii utilizatorilor asupra bazei de date;

asigură securitatea și confidențialitatea datelor. Fiecărui utilizator al bazei de date îi sunt asignate anumite drepturi (GRANT/REVOKE) ceea ce determină o limitare a accesului la baza de date, la obiectele bazei de date și la efectuarea unor operații asupra obiectelor bazei de date.

Asupra unui view se pot efectua ulterior aceleași operații ca și asupra unei tabele, dar cu deosebire că view-ul nu conține date, ci este o reflectare dinamică a unei tabele. Astfel, o modificare a datelor dintr-o tabelă este automat reflectată în view-urile definite pe acea tabelă. Un view se recreează de fiecare dată când este apelat, pe baza definiției sale stocate în dicționarul bazei de date.

Operațiile de aplicare asupra view-urilor sunt:

crearea unui view cu comanda CREATE VIEW;

interogarea view-urilor – prin folosirea unei fraze SELECT;

actualizarea datelor dintr-un view folosind comanda UPDATE;

adăugare de noi date folosind comanda INSERT;

ștergerea datelor dintr-un view cu comanda DELETE.

Crearea unui view – permite definirea unei ”ferestre” prin care se pot consulta datele stocate în tabele.

CREATE VIEW nume-view [<lista atribute>]

AS SELECT secventa-select

[WITH CHECK OPTION]

Datorita acestei comenzi utilizator-ului i se permite:

specificarea denumirii view-ului și opțional a denumirii atributelor din view, în cazul în care se dorește redenumirea atributelor specificate în instrucțiunea SELECT;

specificarea interogării (fraza SELECT);

specificarea opțională a unei condiții suplimentare impuse view-ului astfel încât să poată fi realizată actualizarea sau inserarea datelor în view (prin utilizarea clauzei WITH CHECK OPTION).

Utilizarea opțiunii WITH CHECK OPTION

Această opțiune asigură faptul că în cazul unei operații INSERT sau UPDATE – nu va fi adăugat sau actualizat nici un tuplu care nu se încadrează în condițiile specificate la definirea view-ului.

Asupra view-urilor pot fi efectuate aceleași operații ca asupra tabelelor pe baza cărora au fost definite, cu unele restricții:

interogarea view-urilor;

actualizarea view-urilor;

ștergerea view-urilor.

Internetul,

rețeaua Web și bazele de date on-line

3.1.Internet, Intranet și Extranet

3.1.1. Evoluția internetului

Internetul este o colecție mondială de rețele de calculatoare interconectate. Internet își are originea în rețeaua americană ARPA (Advanced Research Project Agency), inițiată în anul 1969 de Ministerul Apărării al SUA. La început, această rețea avea patru noduri, ca ulterior să se dezvolte foarte rapid prin conectarea unor rețele locale și de arii mai largi. Succesul rețelei ARPA a condus la realizarea unei rețele cu circuit închis numită MILNET, care interconecta principalele centre militare și vehicula informații secrete din domeniu militar. O dată cu apariția sistemului de operare UNIX, protocoalele de comunicație ale acestora sau extins și asupra rețelei ARPANET.

La început, rețeaua Internet a fost rezervată cercetătorilor în informatică, organizațiilor guvernamentale și universităților. În ultimul timp, foarte multe companii particulare au găsit în Internet un suport foarte eficient și profitabil pentru a difuza contra cost diverse informații. Acestea au deturnat scopul inițial al Internet de a asigura documentarea și accesul la resursele acesteia în mod gratuit.

Internet-ul, această rețea de rețele, este constituit dintr-un ansamblu de infrastructuri, servicii, utilizatori și resurse, care asigură un schimb informațional rapid și divers.

Din punct de vedere al utilizatorului final, principalele servicii oferite prin Internet sunt: poșta electronică, transferul de fișiere, conectarea la distanță, difuzarea știrilor, discuții de grup, căutarea de informații, World Wide, Web (www) și, mai nou, comerțul electronic.

Internet-ul nu este un mediu static, din contră, el a acelerat schimbările în domeniul software. Evoluția s-a realizat prin parcurgerea unor etape:

Publicarea statică a informației;

Realizarea interactivității;

Suportul pentru tranzacțiile în timp real;

Integrarea fluxurilor de informații între întreprinderile partenere.

Internet este un nou mediu de comunicare interactiv.

Internet este o entitate globală și are o multitudine de componente dispersate în lumea întreagă al căror ansamblu este dificil de controlat. Cea mai mare parte a traficului pe Internet este dirijată către rețeaua centrală (Backbone) prin intermediul unor puncte de acces (NAP- Network Access Points), administrate de prestatorii de telecomunicații cum ar fi Sprint, MFS și alții. Aceste puncte de acces sunt distribuie în zonele strategice din SUA. Rețelele naționale create independent converg către punctele de acces în rețea.

Secretul bunei funcționări a Internet-ului îl constituie utilizarea protocoalelor de comunicație deschise și publice. Aceste protocoale nu sunt proprietatea unei companii și nu depind de un tip de calculator sau o rețea particulară. Seria completă de protocoale pentru transmisia datelor este cunoscută sub numele TCP/IP (Transmission Control Protocol/Internet Protocol), după denumirea principalelor protocoale.

Intranet este un site Web sau un grup de situri care aparțin unei organizații, accesibili numai pentru membrii acesteia.

3.1.2. De la internet la intranet

Societatea este într-o continuă schimbare. Întreprinderea, una din componentele sale, trebuie să contribuie la această evoluție. Ea trebuie să-și adapteze organizarea sa condițiilor existente și să aibă deschidere către lumea exterioară. Pentru ca o întreprindere să aibă succes, astăzi mai mult ca oricând, trebuie să beneficieze de un sitem de comunicare performant. O soluție din cea mai răspândită o reprezintă Intranet-ul.

Intranet-ul reprezintă, în condițiile evoluției actuale a lumii informaticii și a asimilării ei de către producție, singura alternativă rapidă, sigură și eficientă pentru dezvoltarea întreprinderilor mici și mijlocii. Realizarea unei rețele Intranet oferă posibilitatea de reproiectare a sistemului informatic, deoarece, cu această ocazie, este posibil să se regândască serviciile oferite – atât în interiorul întreprinderii, cât și în exterior. De regulă, o rețea Intranet este conectată la Internet, care are un public mai larg, prin intermediul unui zid de protecție (un sistem proiectat pentru a preveni accesul neautorizat la sau de la o rețea privată), cu restricții impuse asupra tipurilor de informații care pot trece spre și de la rețeaua intranet. Acum, rețelele Intranet sigure reprezintă segmentul cu cea mai rapidă creștere din Internet, deoarece sunt mult mai puțin costisitoare de construit și de administrat decât rețelele private, bazate pe protocoalele patentate.

Serviciile de transport sunt cele care permit: transferul într-o rețea locală, accesul de la distanță la sistemele informatice, accesul la Internet, interconecsiunea LAN/WAN.

Un intranet poate include servicii de administrare și gestiune a rețelei cum ar fi: supervizarea, teleîntreținerea, serverele cache.

Supervizarea unui Intranet permite supravegherea fiecărui element al ansamblului: rețele, rutere, imprimante, calculatoare, software etc., având la bază standardul SNMP (Simple Network Management Protocol) din INTERNET.

Severele cache sau proxy au fost folosite mai întâi în Internet pentru a reduce fluxul informațional prin sistemul de comunicație. Un server proxy reprezintă un mecanism ce permite o selecție a răspunsurilor.

Serviciile de securitate pe Intranet sunt asigurate prin mecanismele Internet-ului. Dintre serviciile de securitate care sunt la baza Intranet-ului amintim:

Autentificarea – se face prin mecanisme simple (cum ar fi parolele) sau mecanisme mai complexe ;

Cifrarea – are ca scop garantarea integrității fluxului de informații din Intranet. Tehnicile de cifrare sunt numeroase. Multe provin din sectorul apărării și nu sunt specificate Internet-ului, exceptând programul de cifrare PGP (Pretti Good Privacy).

Serviciile de partajare a informației din Intranet sunt destinate arhivării și restituirii informațiilor pe care le conține. Într-un Intranet se disting două tipuri de servicii pentru stocare:

serviciile de stocare și acces: servere de fișiere, servere de date (bazele de date), servere de documente;

serviciile pentru producerea și publicarea informațiilor.

Bazele de date din Intranet sunt realizate prin intermediul standardelor existente pe piață, în particular prin SQL. Pentru a putea fi consultate cu un navigator, între baza de date și severul Web este necesară o interfață. În ultimul timp, principalele baze de date relaționale integrează servere Web sau middleware necesar (Oracle WebServer pentru Oracle și Web.SQL pentru Sybase).

Serverul de documente dintr-un Intranet permite utilizatorului să caute și să consulte ansamblul documentelor produse. Aceste servere sunt în general servere Web și sunt cuplate cu motoarele de căutare. Serverele de documente constitue nucleul unui Intranet, devenind placa turnanată a sistemului informatic.

Circulația documentelor (Workflow) este o extensie naturală a poștei electronice. Ea permite circulația unui document după o schemă prestabilită.

Poșta electronică Intranet are la bază mecanismele Internet: SMTP (Simple Mail Transfer Protocol), POP3 (Post Office Protocol) și IMAP (Interative Mail Access Protocol).

Forumurile permit utilizatorului Intranet-ului să schimbe idei. Există două tipuri de forumuri:

Forum interactiv în timp real, când ceea ce se tastează de către un utilizator va apărea imediat pe ecranele celorlalți.

Forum interactiv în timp diferit, când cea ce este scris este difuzat imediat, dar fiecare poate citi când dorește.

Serviciile pentru dezvoltarea aplicațiilor se referă la: limbajele de programare – ce sunt adaptate mediului rețelei (limbajul Java) și atelierele de sofware – ce permit realizarea propriilor aplicații Intranet.

Serviciile pentru accesul la informațiile și aplicațiile Intranet sunt incluse în navigatoare. Dacă există informație partajată de mai multe Intranet-uri se utilizează noțiunea de Extranet.

Rețelele Intranet nu pot fi văzute ca sistemele informatice tradiționale. Ritmurile sale de evoluție, capacitatea sa de extindere, posibilitatea sa de protecție, puterea de adaptare permanentă îl impun ca un sistem dintr-o nouă generație, unde restricțiile tehnice se ascund puțin câte puțin, lăsând cale liberă comunicării între oameni.

3.1.3.Extranet

Extranet este o rețea Intranet care este parțial accesibilă utilizatorilor externi autorizați.

În timp ce rețeaua Intranet se află în spatele unui zid de protecție și este accesibilă numai pentru persoanele care sunt membre ale aceleiași organizații, rețeaua Extranet pune la dispoziția utilizatorilor externi diverse niveluri de accesibilitate. De obicei, o rețea Extranet poate fi accesată numai dacă utilizatorul extern are un nume de utilizator și o parolă valabile, iar această identitate determină ce părți ale rețelei Extranet pot fi vizualizate. Rețelele Extranet devin un mijloc foarte popular de schimbare a informațiilor între partenerii de afaceri.

Implementarea unei rețele Extranet este relativ simplă. Se utilizează componente Internet standard: un server Web, un browser (navigator pe Internet) sau o aplicație bazată pe miniaplicații și Internetul însuși, drept infrastructură de comunicații. În plus, rețeaua Extranet permite organizațiilor să furnizeze informații despre ele însele ca un produs pentru clienți.

Diferența esențială între Internet, Intranet și Extranet se situează la nivelul drepturilor de acces la informații și la partajarea acstora.

3.2.Elemente specifice bazelor de date on-line

O bază de date utilizată într-un mediu Internet/Extranet este considerată o bază de date on-line. Accesarea bazelor de date on-line este posibilă prin intermediul paginilor Web dinamice. Pentru o analiză a principalelor metode de conectare la bazele de date din paginile Web, vom defini mai întâi câteva criterii:

realizarea unor interfețe utilizator cât mai atractive și bogate în informații diverse: text, imagini, sunet;

pagini Web interactive bazate pe controlul evenimentelor;

consistența și integritatea datelor manipulate;

performanțele din punct de vedere al accesului la baza de date;

accesul simultan la baza de date;

deschiderea, în sensul integrării altor instrumente sau baze de date.

Principalele metode de interconectare între bazele de date și paginile Web:

Common Gateway Interface – CGI este un standard re comunicare între paginile Web și alte aplicații care se execută pe server.

Navigând pe Web, se vor întâlni mai multe pagini Web care să permită introducerea de date, selectarea unor opțiuni utilizând una sau mai multe casete de verificare, selectarea unor elemente dintr-o listă etc. În majoritatea cazurilor, aceste pagini Web au fost create utilizând CGI (interfața comună prin poarta de acces). Programatorii scriu programe bazate pe CGI sau scripturi, care permit server-ului Web să interacționeze cu utilizatorul sau cu o bază de date aflată într-un fișier pe disc.

Principalul avantaj al acestei matode constă în faptul că există posibilitatea alegerii unui limbaj de programare pentru a implementa accesul la baza de date (limbajul în care va fi scris CGI-ul).

Dezavantajele acestei metode sunt:

nu asigură un management al tranzacțiilor, nu permite accesul simultan;

nu există o sincronizare între navigatorul care a lansat cererea de interogare și programul de acces la baza de date.

Server Side Include- SSI este un server capabil să realizeze comenzi de acces la baza de date , astfel spus, un server Web care să includă un SGBD minimal.

Această metodă este implementată prin componenta „Netscape liveWire”, care este capabilă să înțeleagă comenzi de acces la baza de date și care se execută pe server. Comenziile sunt introduse în paginile HTML prin tag-uri specializate. În momentul încărcării paginii, navigatorul le tratează drept comentarii, iar serverul le execută furnizând navigatorului rezultatele.

Această metodă nu permite accesul simultan la baza de date. Din punct de vedere al managementului tranzacțiilor, ca și metoda CGI, conecsiunea la baza de date este valabilă atâta timp cât este prelucrat fișierul HTML din care face parte. În plus, această metodă necesită un server dedicat accesului la baza de date.

Baze de date care ”vorbesc” HTTP.

Conform acestei metode, comenziile HTML care se adresează unei baze de date sunt direcționate către o interfață între protocolul HTTP și SGBD-ul aferent.

Principalul avantaj al acestei metode constă în faptul că navigatorul accesează direct baza de date. Dezavantajul constă în faptul că interfața HTTP este dedicată unui anumit SGBD, ceea ce nu permite o interactivitate reală a paginilor Web.

Accesul direct din navigator la o bază de date prin limbajul JAVA .

Această metodă este implementată prin componenta Java Database Conectivity (JDBC) care face parte din Java Development Kit (JDK).

Această metodă prezintă mai multe avantaje:

managementul complet al tranzacțiilor și controlul accesului concurent;

posibilitatea implementării acestei metode pe orice platformă ca urmare a posibilității limbajului JAVA;

asigură o interactivitate de nivel înalt în interiorul paginilor Web;

permite accesul la baze de date relaționale și orientate obiect;

permite comunicarea și schimbul de date între aplet-urile JAVA și programele JavaScript;

permite accesul mai multor pagini HTML la aceiași bază de date printr-o singură conecsiune la aceasta; deoarece aplet-ul rămâne persistent în mediul navigatorului.

Vizualizarea datelor în afara navigatorului (External Viwer).

Această metodă apelează din navigator un program de vizualizare a informațiilor care este dependent de tipul acestora.

Metoda asigură un management complet al tranzacțiilor și controlul accesului concurent.

Extinderea navigatoarelor cu posibilității de Plug-ins.

Plug-ins sunt programe cu funcții speciale care extind capacitățile navigatoarelor. Această metodă este similară celei de utilizare a unui program de vizualizare extern. Deosebirea constă în faptul că afișarea rezultatelor se face tot în fereastra navigatorului.

Proxi server pentru accesarea bazelor de date.

Metoda constă în redirecționarea cererilor de acces la baze de date către un server specializat în acest sens, numit HTTP proxi server. Acest server accesează baza de date și transferă rezultatele către navigator. Prin această metodă nu se poate asigura managementul complet al tranzacțiilor și controlul accesului concurent.

Utilizarea unui server Hyperwave.

Această metodă utilizează o pasarelă (gateway server) între server și baza de date.

SQL Gateway Server reduce numărul de conecsiuni la baza de date și implicit timpul de răspuns.

3.3.Rețeaua Web

Rețeaua World Wide Web este un sistem bazat pe hipermedii, care pune la dispoziție un mijloc simplu, de tip ’’indicare și clic’’ de răsfoire a informațiilor pe Internet, folosind hiperlegăturile.

Rețeaua World Wide Web (pe scurt, Web, WWW sau W3) pune la dispoziție un mijloc simplu, de tip ’’indicare și clic’’ pentru exploatarea imensului volum de pagini de informații aflate pe Internet. Informațiile de pe Web sunt prezentate în pagini Web, care apar ca o colecție de text, grafică, desene, sunete și imagini video. În plus o pagină Web poate conține hiperlegături către alte pagini Web, care permit utilizatorilor să navigheze prin informații în mod nesecvențial.

O mare parte din succesul rețelei Web se datorează simplității cu care permite utilizatorilor să furnizeze, să folosească și să se refere la informații distribuite geografic pe tot globul. În plus, pune la dispoziția utilizatorilor capacitatea de a răsfoi documente multimedia, independent de platforma hardware folosită. De asemenea, este compatibilă cu alte protocoale de comunucație a datelor existente, cum ar gi Gopher (program de căutare pe Internet folosit de sistemul de operare Unix pentru identificare anumitor surse de informații dorite de către utilizator), FTP (File Transfer Protocol), NNTP (Netwok News Transfer Protocol) și Telnet (pentru sesiuni de lucru îndepărtate).

Rețeaua Web este formată dintr-o rețea de calculatoare care pot avea două roluri: de severe – care furnizează informații – și de clienți, caz în care sunt denumite browsere, care cer informații.

Informațiile de pe Web sunt stocate în documente, utilizând un limbaj denumit HTML (Hyper Text Markup Language – limbajul de marcare pentru hipertext), pe care browserele trebuie să-l înțeleagă și să-l interpreteze pentru a afișa aceste documente. Protocolul care reglementează schimbul de informații dintre web și browser este denumit HTTP (Hypertext Transfer Protocol – protocol de trnsfer al hipertextului). Documentele și locațiile din cadrul acestora sunt identificate printr-o adresă, definită ca un localizator de resurse uniform URL (Uniform Resource Locator – adrese numerice sau de tip text ale unor date specifice de pe Internet).

3.4.Adrese URL

Adresa URL este un șir de caractere alfanumerice, care reprezintă locația sau adresa unei resurse pe Internet și modul în care trebuie accesată această resursă.

Pentru regăsirea unui fișier resursă din Internet, browserul Web trebuie să cunoască localizarea fișierului și modul de comunicare cu calculatorul gazdă care deține fișierul. Browserele Web utilizează protocolul HTTP și alte protocoale Internet, cum ar fi FTP (File Transfer Protocol) și Gopher.

Creatorii web-ului au introdus utilizarea adreselor URL cu scopul de a defini o sintaxă generică pentru accesul la o gamă largă de obiecte Internet. Scopul URL este încapsularea informației pe care o poate utiliza un program Web pentru localizarea unui obiect în Internet. După ce programul a localizat obiectul, URL-ul nu mai are nici un rol.

Adresere URL definesc în mod unic locul unde pot fi găsite documentele (resursele). Alți termeni legați de aceasta care pot fi întâlniți sunt cei de URI și URN . Adresele URI reprezintă setul generic al tuturor denumirilor/adreselor care se referă la resursele Internet. Adresele URN desemnează deasemenea o resursă pe Internet, dar fac aceasta utilizând o denumire persistentă, independentă de locație. Adresele URN sunt foarte generale și se bazează pe servicii de căutare a numerelor; sunt dependente de servicii suplimentare, care nu sunt întodeauna general disponibile. Pe de altă parte, localizatorii de resurse uniformi (adresele URL) identifică o resursă pe Internet utilizând o schemă bazată pe locația resursei. Adresele URL reprezintă cea mai des utilizată schemă de identificare și constitue baza pentru protocolul HTTP și rețeaua Web.

Sintaxa este formată din trei părți principale:

protocolul utilizat pentru conectare;

denumirea gazdei;

denumirea căii spre acea gazdă unde poate fi resursa respectivă;

și are următoarea formă:

<protocol>://<gazdă>[:<port>]/calea_absolută[?argumente]

Prin <protocol> se specifică mecanismul care va fi utilizat de către browser pentru a comunica cu resursa. Metodele uzuale de acces sunt HTTP, S-HTTP (HTTP sigur), file (se încarcă fișierul de pe un disc local), FTP, mailto (se expediază un mesaj e-mail la o anumită adresă de e-mail), Gopher, NNTP și Telnet.

Exemplu: /hypertext/WWW/MarkUp/MarkUp.html.

3.5.Protocolul de transfer al hipertextului (HTTP)

HTTP este protocolul utilizat pentru a transfera paginile Web prin intermediul Internetului. Acesta este folosit pentru a accesa pagini HTML prin intermediul browserelor și a altor agenți ai clienților. Http folosește adresele URL în câteva moduri.

Schema de adresă URL pentru HTTP arată astfel:

http://<host>:<port>/<path>?<searchpart>

Prima parte (http://) definește protocolul folosit pentru accesarea gazdei (host).

Protocolul de transfer al hipertextului (HTTP) definește modul în care comunică clienții și serverele. HTTP este un protocol generic, orientat spre obiect, fără stare, de transmitere a informațiilor între servere și clienți.

Protocolul HTTP se bazează pe o paradigmă cerere-răspuns. O tranzacție HTTP se compune din următoarele etape:

Conectare – clientul stabilește o legătură cu serverul Web;

Cerere – clientul expediază un mesaj de cerere către serverul Web;

Răspuns – serverul Web expediază un răspuns (document HTML) clientului;

Închidere – legătura este închisă decătre serverul Web.

Protocolul curent este HTTP/1.0, care reflectă utilizarea obișnuită a protocolului. HTTP/1.0 este un protocol fără stare – fiecare legătură este închisă, o dată ce serverul a dat un răspuns. Astfel, un server Web nu are memoria cererilor anterioare. Pentru majoritatea aplicațiilor, această proprietate de a fi fără stare a protocolului HTTP reprezintă un avantaj care permite o scriere cu o logică simplă a clienților și serverelor și rularea ’’neproductivă’’, fără ca o memorie suplimentară din spațiul de pe disc să fie ocupată de către informațiile din cererile anterioare. Din păcate, această proprietate a protocolului HTTP face dificilă acceptare conceptului de sesiune, care este esențial pentru tranzacțiile de bază din sistemele SGBD. Pentru a compensa natura fără stare a protocolului HTTP, au fost propuse mai multe scheme, cum ar fi returnarea paginilor Web cu câmpuri ascunse – care să conțină identificatori ai tranzacțiilor – și utilizarea formularelor de agini Web, acolo unde toate informațiile sunt introduse local și apoi propuse ca o singură tranzacție. Toate aceste scheme sunt limitate în ceea ce privește tipurile de aplicații pe care le acceptă și necesită extensii speciale ale serverelor Web.

3.6.Pagini Web statice și dinamice

Paginile web statice, sunt pagini care se pot genera prin funcția de export oferită de Access (meniul File Export). Aceste pagini se pot crea din conținutul unui tabel, interogări formular sau raport. Generarea propriu-zisă a paginii Web se poate realiza prin selectarea unui obiect în fereastra bazei de date. Pagina Web este generată exclusiv în limbajul HTML, și nu conține definiții pentru actualizarea conținutului obiectului prin care a fost generată pagina. Practic pagina este generată pentru conținutul obiectului, din momentul operației de generare a paginii, modificarea datelor în obiectul Access nu se reflectă și în conținutul paginii Web. Pentru a se reflecta și pe Web actualizările intervenite în baza de date, trebuie generată pagina Web din nou. O pagină Web generată în acest mod trebuie publicată de utilizator pe orice server Web.

Un document HTML stocat într-un fișier constitue un exemplu de pagină Web statică: conținutul documentului nu se modifică, în afară de cazul în care este modificat fișierul însuși.

Conținutul unei pagini Web dinamice este generat de fiecare dată când acesta este accesat.

Ca rezultat, o pagină Web dinamică poate avea caracteristici care nu se găsesc în paginile Web statice, cum ar fi:

poate răspunde la intrarea utilizatorului de la browser.

Exemplu: returnarea datelor cerute la completarea unui formular sau rezultatelor unei interogări ale bazei de date;

poate fi personificată de către și pentru fiecare utilizator.

Exemplu: o dată ce utilizatorul a specificat o serie de preferințe pentru accesarea unui anumit site sau pagini (cum ar fi domeniul de interes sau nivelul de expertiză) aceste informații pot fi reținute, iar informațiile vor fi returnate conform acestor preferințe.

Atunci când documentele care vor fi publicate sunt dinamice – cum ar fi cele rezultate din interogările bazei de date – este necesar ca hipertextul să fie generat de către servere. Pentru a realiza aceasta, se pot scrie scripturi care efectuează „din mers” conversii din diverse formate de date în limbajul HTML. De asemenea, aceste scripturi necesită înțelegerea interogărilor efectuate de către clienți prin intermediul formularelor HTML și rezultatelor generate de către aplicațiile care dețin datele (de exemplu, sistemul SGBD). Întrucât o bază de date este dinamică, modificarea în momentul în care utilizatorii crează, inserează, reactualizează și șterg datele, urmată de generarea dinamică a paginilor Web reprezintă o tratare mult mai adecvată decât crearea unora statice.

HTML, XML și CSS

4.1. Crearea și structura HTML-ului

HTML este limbajul de formatare a documentelor utilizat în proiectare majorității paginilor Web.

World Wide Web este parte integrantă a Internetului și are o mare putere a dezvoltării globale a interconectării calculatoarelor. Limbajul său este simplu, interfețele sunt atractive și prietenoase și este adptabil la o gamă mare de întrebuințări. Există situri Web pentru prezentarea produselor și a ideilor, menținerea aparențelor, informarea publicului etc., iar conceptul World Wide Web este adaptat comunicării interne prin instalarea intraneturilor în interiorul companiilor.

HTML (Limbajul de Marcare a Hipertextului) este limbajul care dă înfățișarea Web-ului. El constă într-o varietate de elemente numite etichete (tags), care pot fi folosite la orice, de la definirea tipurilor de stil și a anteturilor și până la introducerea conținutuluui specific, cum ar fi imagini, sunete, cuvinte în realitatea virtuală și miniaplicații Java.

Structura minimală a unui document HTML este formată din următoarele TAG-uri:

<HTML> început pagină Web

<HEAD> început antet pagină

<TITLE> început titlu pagină

Definire titlu

</TITLE> sfârșit titlu pagină

</HEAD> sfârșit antet

<BODY> început corp pagină

Conținut propriu-zis pagină

</BODY> sfârșit corp pagină

</HTML> sfârșit pagină

În continuare se va vorbi de HTML 4.0 cu stilul CSS fiind de actualitate și folosindu-se cu precăde în paginile Web. HTML 4.0 reia părțile eliminate din HTML 3.2, care la vremea respectivă nu a fost acceptat, ca standard, deoarece momentul în care s-au făcut unele propuneri nu a fost bine ales.

În HTML 4.0 au apărut noi etichete și caracteristici. Una din primele diferențe notabile este suportul pentru identificarea și capturarea evenimentelor pentru aproape fiecare element din corpul unei pagini Web. Atributul id este suportat pentru tot, de la titluri la tabele, elemente de formular sau citate de bloc. După ce se atribuie un nume unic unui element, se poate face referire la acesta prin ancore și caracteristici Dynamic HTML.

O altă apariție în HTML 4.0 este trecerea de la caracteristicile privind aspectul bazat pe etichete (cum ar fi <B> pentru bold) la foile de stiluri. Prin adăugarea foilor de stil, designerii au acum la dispoziție un nou set de ustensile pentru crearea paginilor lor, incluzând specificații avansate pentru fonturi, culori de fundal pentruu elemente individuale și stiluri globale.

Eticheta <OBJECT> a fost de asemenea extinsă, astfel încât să includă practic orice fișier extern pe care l-ați putea dori într-o pagină Web, inclusiv miniaplicații, controale înglobate, imagini, sunete etc. Cu lista sa extinsă de atribute și cu suportul pentru parametri și text alternativ, eticheta înlocuiește și alte etichete.

4.1.1. Crearea HTML-ului

Limbajul HTML reprezintă o aplicație a limbajului de marcare standardizat generalizat SGML (Standardized Generealized Markup Language) – un sistem de definire a tipurilor structurate de documente și limbajelor de marcare, pentru a reprezenta instanțe ale acestor tipuri de documente ISO, 1986 (Internațional Standards Organization). HTML este un astfel de limbaj de marcare.

În prima sa implementare, HTML-ul a urmat regulile SGML-ului de marcaj al conținutului independent de platformă fără prevederi de reprezentare a documentului în HTML-ul însuși. La Nivelul 0, HTML-ul oferea mijloace independente de platformă pentru marcarea datelor pentru interschimb. Conceptul era acela că serverele aveau să stocheze și să furnizeze date, iar clienții aveau să le recupereze și să le afișeze.

HTML 0.0 era foarte apropiat de SGML. Singurul element solicitat era TITLE, și multe pagini mai vechi încep cu un titlu și apoi intră direct în text. Nu există HTML, nici HEAD, nici BODY. O etichetă <P> era deseori utilizată la sfârșitul fiecărui paragraf pentru a separa paragrafele între ele. Existau șase niveluri de antet, dar se aștepta ca fiecare nivel să fie folosit numai o dată și nivelurile să fie utilizate succesiv.

Nivelul 1 permitea o etichetă <BODY> și autoriii puteau include adrese, ancore, ghilimele, întreruperi de linie, anteturi, imagini, liste, paragrafe și text preformat.

Discuțiile asupra HTML 0 au adus la lumină mai multe deficiențe, așa că s-a început lucrul la HTML 1.0, care a fost lansat pe Internet în același timp. A fost adăugată ideea unui container HTML, cu un element HEAD separat de elementul BODY. Unele elemente aveau nevoie de eticheta de deschidere și închidere.

Nivelul 1 introducea de asemenea formulare, care făceau posibilă pentru autori introducerea câmpurilor pe nodurile lor, care permiteau feedback-ul de la utilizatori și deschideau ușa către o interacțiune considerabilă prinscriptarea Common Gateway Interface (CGI). Nivelul 1 era subiect de discuție, ereau propuse elemente adiționale și capacități pentru versiunea HTML+, care se pregătea să apară.

HTML + încorpora elemente grafice și de afișare în HTML. HTML + a fost un important pas înainate pentru evoluția HTML-ului, extinzându-se dincolo de conceptul unui articol cu hiperlegături aflat pe un calculator.

Pretențiile în creștere asupra HTML-ului au condus consorțiul World Wide Web , nou format , (W3C) la introducerea versiunii HTML 2. Nivelul 2 folosea elementul FROM cu IMPUT, SELECT, OPTION și TEXTAREA, plus elementul BR pentru întreruperi de linie.

HTML 2 adaugă de asemenea elementul META pentru descrierea detailată a documentului și o cale pentru indexarea și catalogarea conținutului. De asemenea schimba descrierile secțiunilor head și body și ale elementelor ancoră, bază, listă, imagine, legătură și titlu.

Acesta nu a descoperit nimic nou în ceea ce privește capacitățile HTML. Era practicabil de către toți agenții utilizatorilor, pentru că urma regulile stabilite de SGML și nu necesita dezbateri extensive pentru că nu exista nici o contrversă dacă elementele propuse erau necesare.

O dată cu reglementările oficiale introduse de W3C, lumea avea acum un standard HTML care să servescă ca etalon față de care puteau fi comparate browserele și marcajul.

HTML 3 a fost propus ca o încercare de a răspunde cerințelor contradictorii pentru un limbaj de marcare să funcționeze pe toate platformele și pentru un limbaj de descriere a paginii care să fie acceptat și de alte companii de software. Teoria era că HTML 3 va fi în totalitate SGML, dar va permite sugestii pentru browsere asupra modului în care să afișeze un text.

Elementele propuse pentru HTML 3 includeau elementul FIG, care suporta curgerea textului în jurul figurilor. A fost de asemenea sugerat suportul pentru ecuațiile matematice și un element TABLE pentru a ajuta la aranjarea datelor în formă de tabel fără șicana provocată de elementul PRE.

Atributul ALIGN a fost adăugat mai multor elemente, inclusiv IMG, P și HR, permițând autorilor să folosească alinierea la stânga, la dreapta sau pe centru. La nivelul caracterelor, HTML 3 propunea de asemenea noi elemente logice, incluzând etichete pentru definiții, citate, limbaj, text inserat și șters. Unele dintre etichetele fizice propuse erau text subliniat, text mai mare sau mai mic, subscript și superscript. Atribute adiționale erau deasemenea propuse pentru imagini de fundal, anexe, note de subsol și manșete.

La urma urmelor, HTML 3 era prea ambițios. Așa că a fost proiectat HTML 3.2 ca o recunoaștere a realității și a încorporat multe dintre etichetele deja aflate în uz pe paginile de Web. A adăugat etichetele SCRIPT și STYLE pentru a crea mai mult loc pentru fundal, text, legături și mărime, aliniere și spațieri pentru imagini.

HTML 3.2 era noul standard, înlocuind HTML 2. acesta oferea elemente și atribute noi, care înveseleau paginile Web cu animație, culori și sunet. A făcut posibilă crearea unor pagini Web atractive și dinamice, care se supuneau unui standard stabilit. Existau neânțelegeri asupra celor care fixau standardele, dar cel puțin un DTD recunoscut oficial era acum disponibil.

4.2. HTML 4

Ultima versiune a HTML-ului folosește unele idei și modificări propuse pentru HTML 3, care au fost abandonate la apariția HTML 3.2. HTML 4 propune separarea stilurilor fizice de marcarea conținutului printr-o folosire mai intensă a foilor de stil. Sa constatat că folosirea foilor de stil este cea mai bună metodă de a sugera aspectul documentului și totuși de a permite utilizarea completă a HTML-ului ca o metodă compatibilă SGML de traversare a prăpastiei dintre utilizatiri și sistemul de operare.

Noul standard pentru HTML utilizează de asemenea și alte propuneri ale W3C pentru Web. În loc să încorporeze toate funcționalitățile unei pagini Web într-un singur standard, HTML 4 lucreză mai degrabă cu interfețe către multe alte standarde. Standardul HTML 4 include elementele STYLE, DIV și SPAN pentru încorporarea foilor de stil, dar foaia reală de stil este o entitate separată, ca în Cascading Style Sheets (Foi de stil în cascadă).

4.2.1. Structura HTML-ului

În limbajul de marcare al hipertextului totul se rezumă la structură iar în esență HTML se referă la definirea structurii unui document.

Un limbaj de marcare este folosit pentru a descrie care este rolul fiecărei părți din document în raport cu celelalte. Poate indica una dintre părți ca fiiind un titlu de nivelul trei, că secțiunea de dedesupt este un paragraf și că ultima parte este o adresă. În cadrul paragrafului, puteți marca citate, acronime și orice altă bucată din text. Rezultatul este un document în cadrul căruia puteți vedea scopul fiecărei părți a textului, în locul înfățișării intenționate.

Atribut: Un atribut furnizează instrucțiuni adiționale browserului despre o etichetă. Informațiile variază de la etichetă la etichetă și pot include subiecte cum ar fi locația fișierelor, mărimea, numele sau stilul lor.

Browser: Un browser de Web este un motor de parcurgere special care evoluează etichetele și conținutul unui fișier HTML, pe care îl afișează în concordanță cu posibilitățile și regulile platformei și capacitățile sale.

DTD (Document Type Definition – definirea tipului de documennt): O colecție de reguli scrise în SGML care definesc sintaxa și structura unui anume tip de document, cum ar fi HTML.

Element: O componentă distinctivă a structurii unui document, cum ar fi titlul, un paragraf sau o listă. Când ne referim la forma sa aplicată în cadrul unui document, un element se mai numește etichetă (tag).

Etichetă: Un cod care identifică un element pentru ca browserul sau alt program de parcurgere să știe în ce mod să afișeze conținutul. Etichetele sunt încadrate de caractere de delimitare (paranteze ascuțite).

4.2.2. Structura unui document

Fiecare document HTML, încă de la creare, are două părți principale: un antet și un corp. Chiar dacă nu sunt special delimitate, HTML presupune existența lor.

Deși fac parte din definirea unui document HTML, două etichete există în afara structurii documentului: <!DOCTYPE> și <HTML>. Prima identifică versiunea de HTML folosită pentru pagina respectivă și regulile pe care aceasta le respectă. A doua etichetă identifică un limbaj global și directia textului pentru documentul respectiv, în plus față de a marca începutul și sfârșitul conținutului HTML. Cu aceste două etichete se poate crea următorul Document:

<!DOCTYPE HTML PUBLIC “-// W3C//DTD HTML 4.0//EN”>

<HTML>

</HTML>

HTML (Limbajul de Marcare a Hipertextului) este limbajul care dă înfățișarea Web-ului. El constă într-o varietate de elemente numite etichete (tags), care pot fi folosite la orice, de la definirea tipurilor de stil și a anteturilor și până la introducerea conținutuluui specific, cum ar fi imagini, sunete, cuvinte în realitatea virtuală și miniaplicații Java.

<!DOCTYPE HTML PUBLIC “-// W3C//DTD HTML 4.0//EN”>

<HTML>

<HEAD>

</HEAD>

<BODY>

</BODY>

</HTML>

Elementul HEAD include o gamă de informații pentru browser, inclusiv un titlu pentru document, cuvinte cheie, informații de legătură și alte informații cu care utilizatorul nu trebuie să lucreze direct.

BODY este ceea ce vede utilizatorul în momentul în care documentul este redat de browser. Include text și obiecte, cum ar fi imagini și miniaplicații, la un loc cu etichetele de marcare pentru a defini structura lor precum și relația dintre ele.

În structura unui document HTML mai apar trei componente operaționale:

foile de stil;

scripturile;

seturile.

Aceste elemente trebuie definite explicit sau browserul nu le va recunoaște existența.

O foaie de stil, creată cu elementul STYLE, este un lucru nou în . Oferă un nou mod de definire a felului în care va arăta documentul, inclusiv familia de caractere și fontul, culorile, chenarele, marginile și alinierea. Prin adăugarea foilor de stil, ca un element de structură al documentului, înfățișarea și conținutul sunt separate pentru a da browserelor posibilitatea unui control mai precis.

Elementul SCRIPT încadrează o secțiune de cod de programe inclusă direct în pagina de Web. Acest element oferă utilizatorului o modalitate de a interacționa direct cu un document, fără a se baza pe ajutorul unui server Web. Un document poate include mai multe scripturi în mai multe limbaje.

Ultimul element opțional este FRAMESET, care dă instrucțiuni browserului cum să subdivizeze fereastra într-un set de ferestre mai mici, fiecare cu propriul său conținut. În esență, fiecare fereastră devine un minibrowser care poate găzdui un nou document HTML. Elementul FRAMESET este strâns legat de elementul BODY. În browserele care suportă cadrele elementul FRAMESET înlocuiește elementul BODY. În browserele care nu suportă cadrele FRAMESET este ignorat și este folosit elementul BODY.

4.2.3. Structura unei secțiuni

Fiecare element major din HTML are propria sa structură și necesități, reflectate în scopul definit pentru elementul respectiv. STYLE și SCRIPT sunt unice prin faptul că structura depinde de conținutul lor.

În cazul elementului STYLE, formatarea, sintaxa și definirea stilului variază în funcție de alegerea autorului: foi de stil în cascadă sau foi de stil JavaScript. Pentru SCRIPT se aplică aceleași excepții, în funcție de ce llimbaj de scriptare este folosit. Un script poate conține o funcție, mai multe funcții sau poate fi o apicație de sine stătătoare.

4.2.4. Structurile HEAD și BODY

Structurile antetului și corpul unui document HTML au o trăsătură comună: nu se specifică o machetă sau o ordine anume. Diferența constă în faptul că elementele antetului există împreună, în timp ce corpul poate crea o ierarhie de părinți și copii. În antet nu se face diferență între elemente, cum ar fi TITLE, care este la fel de impportant ca și LINK sau META.

Pe de altă parte se află elementul BODY, care în mod obișnuit conține o ierarhie de elemente; exemplu de conținut simplu al unui corp:

<BODY>

<H1>În HTML 4.0 au apărut noi etichete și caracteristici.</H1>

<P>Una din primele diferențe notabile este suportul pentru identificarea și capturarea evenimentelor pentru aproape fiecare element din corpul unei pagini Web.<br>Atributul id este suportat pentru tot, de la titluri la tabele, elemente de formular sau citate de bloc. <br>După ce se atribuie un nume unic unui element, se poate face referire la acesta prin ancore și caracteristici Dynamic HTML.</P>

</BODY>

Corpul include doi copii, un element H1 și un element P. Elementul BODY îl putem privi ca pe un arbore, iar celelalte două elemente ar ieși din trunchi în același loc. Se pot imbrica elementele, după următorul exemplu:

<P>Una din primele diferențe notabile este suportul pentru identificarea și capturarea evenimentelor pentru aproape fiecare element din corpul unei pagini Web. Atributul id este suportat pentru tot, de la titluri la <EM>tabele</EM>, elemente de formular sau citate de bloc. După ce se atribuie un nume unic unui element, se poate face referire la acesta prin ancore și caracteristici Dynamic HTML.</P>

Elementul EM este o ramură a elementului P, care este o ramură a elementului BODY. Când elementele sunt imbricate în corpul unui document HTML, între ele se stabilește o ierarhie care va varia pentru fiecare document în funcție de etichetele folosite de autor.

4.2.5. Structura FRAMESET

<FRAMESET> este un tip special de element de corp care poate conține doar cadre și seturi de cadre. Conținutul său este mult mai controlat decât corpul. Totuși ierarhia stabilită de plasarea unui <FRAMESET> se dezvoltă în același mod ca în cazul elementului <BODY>.

În exemplul următor fiecare dintre cele două elemente FRAME sunt frații și copii ai elementului FRAMESET:

<FRAMESET>

<FRAME>

<FRAME>

</FRAMESET>

Dacă se adaugă și alt set de cadre, cu altă configurație a cadrelor se obține ceva similar cu:

<FRAMESET>

<FRAME>

<FRAME>

<FRAMESET>

<FRAME>

</FRAMESET>

<FRAMESET>

În acest caz sunt două elemente FRAME și un FRAMESET care sunt frați și copii ai primului FRAMESET. Fratele FRAMESET are și un FRAME ca un copil al său, fapt care îl transformă pe acesta în nepotul primului FRAMESET. HTML recunoaște aceste tip de ierarhie atunci când este implementat în browsere și permite elementelor configurate așa să funcționeze împreună pe baza relației dintre ele.

4.2.6. Infrastructura altor elemente

În corpul unui document HTML, unele elemente au propria lor structură internă pentru a ajuta la definirea folosirii și înfățișării lor. Un exemplu bun este elementul TABLE.

Un tabel HTML este construit ca având cel puțin un rând și o celulă de date, precum și un document HTML are nevoie de cel puțin un antet și un corp:

<TABLE>

<TR>

<TD>DATA

</TABLE>

Fiecare tabel poate avea o denumire descriptivă, un antet și conținutul unui corp:

<TABLE>

<CAPTION> Caption </CAPTION>

<THEAD>

<TR>

<TD>Data

<TFOOT>

<TR>

<TD>Data

<TBODY>

<TR>

<TD>Data

</TABLE>

Fiecare tabel devine un minidocument cu formă și structură proprie, mai sunt și alte elemente asemănătoare cu TABLE în corp, inclusiv diferitele tipuri de liste (ordonate, neordonate, definiții), formulare și seturi de câmpuri.

4.3. De la HTML la XML

XML nu afost proiectat pentru a înlocui limbajul HTML. Cele două limbaje au fost create în scopuri diferite:

XML a fost proiectat pentru descrierea datelor și se concentrează asupra structurii acestora;

HTML a fost proiectat pentru afișarea datelor și se concentrează asupra aspectului acestora.

În multe cazuri s-a observat o utilizare combinată între XML și HTML. XML stochează și organizează datele, în timp ce HTML le interpretează prin intermediul navigatorului. Ideea de bază este de a stoca datele în format XML și ale translata în format HTML pentru a le afișa.

Conversia se poate realiza în următoarele moduri:

datele XML de pe server sunt transmise la client (navigator), iar navigatorul utilizează informațiile externe – foi de stil – pentru a realiza translatarea în formatul HTML ce asigură afișarea;

datele XML rezidente pe server vor fi convertite în format HTML înainte de a fi transmise către navigator.

Există câteva avantaje prin crearea unui document în format HTML, cum ar fi:

este complet citibil;

informația conținută este afișată de aproape toate navigatoarele, afișarea este independentă de browser;

se pot utiliza foile de stil CSS (Cascading Stile sheet) pentru un control general asupra formatării.

Paginile Web scrise în HTML pot fi ușor interpretate de cititorul uman dar dacă un program va prelucra un document, el solicită definiții clare în tehnica tag-urilor. De exemplu, TAG-ul <TILE> dintr-un document HTML include titlul documentului și nu altceva. Similar, TAG-ul <LI> are o utilizare nesemnificativă dacă programul încearcă să citescă documentul în scopul generării unei liste de autori.

Exemlu:

<HTML>

<HEAD>

<TITLE> BIBLIOGRAFIE </TITLE>

</HEAD>

<BODY>

<H2>BIBLIOGRAFIE </H2>

<UL>

<LI>P. NASTASE, FL. NASTASE,<I> INTERNET – WWW, JAVASCRIPT, HTML,

JAVA<I>, BUCURESTI, ECONOMICA, 1998 </LI>

<LI>ALAIN MICHARD, <I> XML, LANGUAGE ET APPLICATIONS</I>, PARIS,

EYROLLES, 1998 </LI>

</UL>

</BODY>

</HTML>

Prezentarea documentului cu navigatorul Internet Explorer este:

EXEMPLU:

Toate TAG-urile din pagina HTML se referă la prezentarea finală.

Același exemplu, cu lista bibliografică, în putem scrie și în format XML, dar numai că acesta nu mai face o descriere a modului de afișare și face o descriere a structurii informației din lista bibliografică.

Exemplu:

<?xml version=”1.0” encoding=”ISO-8859-2”?>

<BIBLIO>

<TITLUL>BIBLIOGRAFIE</TITLUL>

<CARTEA ISBN=”97 3-590-132-3” LIMBA=”ro” SUBIECT=”Web”>

<AUTOR>Pavel Nastase</AUTOR>

<AUTOR>Floarea Nastase</AUTOR>

<TITLUC>Internet – WWW, JvaScript, HTML, Java</TITLUC>

<EDITURA> Economica, Bucuresti</EDITURA>

<DATEPUB>1998</DATAPUB>

</CARTEA>

<CARTEA ISBN=”9782212090529” LIMBA =”fr” SUBIECT=”XML”>

<AUTOR>Alain Michard</AUTOR>

<TITLUC>XML, Language et Applications</TITLUC>

<EDITURA> Eyrolles, Paris</EDITURA>

<DATAPUB>1998<DATAPUB>

</CATRTEA>

</BIBLIO>

În acest exemplu nici un TAG nu descrie prezentarea finală. Se observă că TAG-urile au un anumit sens și sunt organizate într-o structură ierarhică.

Prezentarea documentului, în absența unei foi de stil, cu Internet Explorer, este o strucură arborescentă.

Ideea centrală a XML este de permite celor trei aspecte fundamentale ale unui document:conținut, structură și prezentare să fie separate. Un document HTML combină prezentarea și conținutul. În ceea ce privește structura, conceptul este dificil de regăsit.

Autorii documentelor Web, care au la bază XML, nu pot face nici o presupunere despre modul în care acestea vor fi utilizate de clienți. În majoritatea cazurilor, documentelor XML li se asociază foi de stil pentru a permite afișarea într-un anumit format pe ecran. Același document poate fi ușor prezentat în mai multe moduri. De exemplu, autorul unui document poate asigura prezentarea informației, după caz, cum ar fi:

afișarea pe ecranul unui PC, cu o anumită aranjare în pagină;

recepționarea sonoră printr-un software specializat (sintetizator vocal), conectarea la Web se face printr-un telefon mobil;

tipărirea pe hârtie, cu o grafică de înaltă calitate;

înregistrarea documentului într-o bază de date. Presupunem că primește o comandă în format XML. O aplicație care înțelege XML poate utiliza datele pentru a determina ce produse și în ce cantități au fost comandate;

afișarea într-un mod simplificat pe mini-ecranul unui calculator de buzunar sau telefon mobil;

afișarea printr-un terminal Brille.

Avantajul acestui concept constă în faptul că niciodată nu vor trebiu schimbate datele documentului XML pentru generarea ieșirilor la diversele dispozitive. Trebuie să se utilizeze numai concepte software diferite, care pot furniza ieșiri într-un format particular.

4.4. XML (eXtensible Marckup Language)

XML face parte din categoria limbajelor de marcare, fiind un subset al SGML (Standard Generalized Marckup Language).

Față de SGML, XML este o variantă simplificată a acestuia, în XML au fost preluate din SGML, nnumai conceptele de referință cele mai utilizate, făcând posibilă acceptarea pe scară largă a acestuia. Este de remarcat faptul că SGML nu a avut o răspândire mare datorită flexibilității acestuia, acesta făcând greoaie dezvoltarea unui software care să gestioneze eficient SGML-ul.

Principala caracteristică ce relizează diferența dintre XML și HTML este extensibilitatea XML. Aceasta se face prin extinderea gramaticii XML, prin adăugarea de noi TAG-uri, în funcție de necesități. Limbajul HTML nu poate fi extins de utilizator, posibilitățile de îmbunătățire a acestuia fiind doar prin includerea de scripturi JavaScript, VBScript, etc.

Structura documentului este o facilitate destul de puternică, o structură XML neavând limită de nivele. Din punct de vedere sintactic, informația dintr-un document XML se descrie asemănător cu cea dintr-un document HTML.

<început_TAG_XML>

domeniu de acțiune TAG

</sfârșit_TAG_XML>

Atributele unui TAG XML se specifică la fel ca în cazul limbajului HTML, singura deosebire fiind că în XML, valoarea unui atribut se specifică obligatoriu între ghilimele, în HTML acest lucru fiind opțional.

Exemplu:

<FACULTATE Denumire="SH">

<GRUPA Numar="345">

<STUDENT NrMatricol="2341" NumePrenume="Popa Anca" >

</STUDENT>

<STUDENT NrMatricol="2342" NumePrenume="Dobre Marius" >

</STUDDENT>

</GRUPA>

<GRUPA Numar="346">

<STUDENT NrMatricol="1256" NumePrenume="Duta Alexandru" >

</STUDDENT>

<STUDENT NrMatricol="1257" NumePrenume="Enciu Florina" >

</STUDDENT>

</GRUPA>

</FACULTATEA>

Un document XML are ostructură logică și una fizică.

Din punct de vedere fizic, un document XML este format din entități. O entitate poate face referire la o altă entitate. Documentul începe cu o structură numită rădăcină (ROOT) sau entitate document, documentul fiind de fapt un arbore de entități, începând cu entitatea rădăcină.

Din punct de vedere logic, structura logică a acestuia este asigurată de marcaje ce permit definirea de elemente, comentarii, declarații, etc.

Un document XML poate fi însoțit de un document XSL (eXtensible Stylesheet Language), care este tot un document XML ce conține definițiile necesare pentru prezentarea informației (din punct de vedere al afișării), pe Web. Documentul XSL poate să conțină cod HTML, stiluri de formatare CSS (Cascading Style Sheets), etc.

Dacă documentul XML nu este însoțit de fișierul XSL, browserul afișează direct forma structurală a documentului (ca în exemplul următor).

EXEMPLU:

Modul de formatare al unui document XML, poate fi realizat și cu ajutorul unui document CSS, pentru definirea de stiluri de formatare a TAG-urilor.

EXEMPLU:

Printre principalele avantaje aduse de XML amintim:

Structura datelor: ceea ce permite modelarea datelor pentru orice nivel de complexitate și utilizarea lor din diversele aplicații informatice;

Asigură schimburile de date: prin Internet între aplicațiile informatice sau între bazele de date;

XML completează HTML: datele XML pot fi utilizate în paginile HTML;

Identificarea rapidă a documentelor prin motoare de căutare: crește relevanța căutării prin includerea informației contextuale în documentele XML;

Facilitatea de reactualizare: nu este necesară reactualizarea întregului site pagină cu pagină – structurile DOM (Document Object Model) din documentele XML permit accesul și reactualizarea la nivelul elementelor individuale;

Accesul selectiv la date: utilizatorii diferiți pot avea acces la diferite informații sau aceeași informație poate fi publicată în multiple formate;

Autodeschiderea documentului: în general, nu sunt necesare cunoștințe anterioare despre aplicație;

Extensibilitatea – se pot defini noi marcatori dacă este nevoie;

Validitatea – se verifică corectitudinea structurală a datelor.

4.4.1.Obiectivele limbajuli XML

XML este un limbaj pentru descrierea și schimbarea documentelor structurate. Ca și fratele său mai mare SGML, din care provine, el permite descrierea structurilor logice ale documenzelor cu ajutorul unui sistem de tag-uri care marchează elementele componente ale structurii și relațiile dintre acestea.

Obiectivele care s-au urmărit la proiectarea XML au fost:

să fie simplu de utilizat pe Internet;

să suporte o mare varietate de aplicații;

să fie compatibil cu SGML;

să fie ușor de scris programe care să prelucreze documente XML;

Numărul caracteristicilor opționale din XML să fie reduse la minimum, ideal, la zero:

documentele XML să fie clare și interpretabile de către utilizatori;

documentele XML să poată fi concepute rapi, formal și concis.

Principalele caracteristici ale limbajului XML sunt:

XML este un limbaj de marcare extins, similar limbajului HTML;

XML a fost proiectat pentru descrierea datelor;

tag-urile XML au fost predefinite – în acest sens există un set de reguli pentru crearea tag-urilor proprii, utilizate în descrierea datelor;

XML utilizează definirea tipului de document (DTD) – pentru a descrie modul de formatare a datelor;

XML se folosește cu un DTD pentru a fi auto-descriptibil.

4.4.2 Utilizarea XML

Prin XML se separă datele care reprezintă conținutul unui document de cele care se referă la prezentarea acestuia. Când se utilizează HTML, datele necesare afișării documentului sunt memorate în același fișier HTML. Utilizând XML, datele pot fi stocate în fișiere XML separate de informația necesară navigatoarelor pentru prezentare. Datele XML mai pot fi memorate în paginile HTML ca insule de date.

Prin XML datele pot fi schimbate între sisteme incompatibile. În prezent sistemele de calcul și bazele de date conțin date în formate diverse, uneori incompatibile. Una dintre problemele, cu care se confruntă cei care dezvoltă aplicații pe Internet, o reprezintă schimbul de date între aceste sisteme. Convertind datele în format XML se va reduce foarte mult această complexitate și se crează date care pot fi citite de diverse tipuri de aplicații.

Prin XML informația din domeniul afacerilor poate fi schimbată prin Internet. Astfel vor fi impulsionate tranzacțiile B2B (Business To Business).

Prin XML fișierele text pot fi utilizate ca date partajate, independent de platformele software și hardware. Acesta permite generarea mult mai ușoară a datelor pentru diferite aplicații care le pot utiliza. De asemenea, se va face mai ușor extinderea și upgrade-ul unui sistem la noile sisteme de operare, server-e, aplicații și navigatoare.

Prin XML datele vor fi disponibile mai multor utilizatori. deoarece XML este independent de hardware, software și aplicații, datele vor fi dispponibile nu numai navigatoarelor HTML standard. Alți clenți și alte aplicații pot accesa fișierele ca surse de date. Datele pot fi disponibile pentru toate tipurile de motoare de căutare (agenți) și în acest fel vor ajunge mai ușor la clienții interesați de aceste informații.

XML poate fi utilizat pentru generarea de noi limbaje. Astfel, Wireless Markup Language (WML), utilizat ca suport în aplicațiile Internet destinate dispozitivelor mobile miniaturizate, este scris în XML.

XML poate fi utilizat pentru memorarea datelor în fișiere sau baze de date. Se pot scrie aplicații pentru a stoca și regăsi informațiile din memorie, iar aplicațiile generice pot fi utilizate pentru afișarea datelor.

4.. Limbajul de prezentare CSS

Foile de stil, în particular CSS – Cascading Style Sheets, descriu modul în care documentele Web sunt prezentate pe ecran, imprimantă sau alte medii. Acestea au fost promovate de grupul W3C printr-un Consorțiu fondat în 1994. Activitatea s-a concretizat prin realizarea celor două recomandări pentru foile de stil: CSS1, CSS2 (level 1 și level 2) și care sunt, în mare măsură, implementate în navigatoarele actuale.

CSS2 este un limbaj al foilor de stil care permite programatorilor și utilizatorilor să atașeze stiluri (set de caractere, poziționare, culoare etc.) documentelor structurate, cum ar fi paginile HTML sau aplicațiile XML.

4.4.1. Stiluri CSS2 în paginile HTML

Pentru ca foile de stil să influențeze prezentarea paginilor Web, trebuie ca navigatoarele să le recunoască și apoi să le interpreteze. Specificațiile HTML definesc modul în care se utilizează HTML cu foile de stil.

Există patru moduri pentru combinarea foilor de stil cu paginile HTML:

utilizarea elementului `LINK` pentru a face legătura către o foaie de stil externă;

declararea elementului `STYLE` în cadrul tag-ului `HEAD`;

importul unei foi de stil utilizând comanda CSS`@ import`;

asocierea atributului `STYLE` unui alt element din corpul documentului (`BODY`).

Identificarea limbajului foilor de stil se obține din informația asociată documentului HTML. Se poate utiliza elementul META pentru a seta limbajul implicit al foii de stil pentru un document HTML. De exemplu, pentru stabilirea implicită a limbajului CSS, în antetul documentului trebuie să se regăsească următoarea declarație:

<META http-eqiv=”Content-Style-Type” content=”text/css”>

Astfel, limbajul implicit pentru foaia de stil va fi setat în antetul HTTP. Declarația META anterioară este echivalentă cu antetul HTTP:

Content-Style-Type:text/css

4.4.2. Structura unei foi de stil

O foaie de stil conține un set de reguli și opțional, comentarii. Considerăm documentul HTML:

<HTML>

<HEAD>

<TITLE>Pagina de primire</TITLE>

</HEAD>

<BODY>

<H1>Exemplu</H1>

<P>CSS-2 pentru HTML</P>

</BODY>

</HTML>

Pentru a specifica o anumită culoare textului delimitat de marcatorul H1, de exemplu roșu, trebuie scrisă următoarea regulă de stil CSS:

H1 {color: red}

Fiecare regulă de stil CSS este compusă din:

selctor `H1` care indică elementul sau elementele asupra cărora acționează regula;

blocul declarațiilor `color: red` care descrie condițiile de redare fizică a elementului specificat, fiind limitat de acolade.

Elementul STYLE

Pentru a include regulile de stil într-un document HTML se utilzează elementul STYLE.

<HTML>

<HEAD>

<TITLE>Pagina de primire</TITLE>

<STYLE type=”text/css”>

H1 {color: red}

</STYLE>

</HEAD>

<BODY>

<H1>Exemplu</H1>

<P>Utilizare CSS-2 in pagina HTML

</BODY>

</HTML>

Atributele elementului STYLE sunt:

type = tip_conținut specifică libajul foii de stil și este obligatoriu, nu există o vaoare implicită.

media = descriptor mdia specifică mediul destinație avut în vedere prin informația de sti. Poate fi un singur dispozitiv de prezentare sau pot fi mai multe, situație în care vor fi incluse într-o listă ale cărui elemente vor fi separate prin virgulă. Valoarea implicită pentru acest atribut este ”screen”. Numele ales pentru descriptor media corespude dispozitivului țintă pentru care proprietățile prezentate au sens:

all – corespunde pentru toate dispozitivele;

aural – sintetizator vocal;

braille – terminal Braile;

embossed – imprimantă Braille;

handheld – microcalculator de buzunar: având un ecran mic, monocrom și conectarea în rețea se face prin modem la un debit redus;

print – dispozitivul imprimantă;

projection – dispozitive de protecție pe perete;

screen – ecranul calculatorului;

tty – dispozitive portabile, terminale;

tv – dispozitive de tip TV.

Atributul style

Atributul style permite specificarea informațieie de stil numai pentru elementul curent.

Utilizarea atibutului style

<P style=”font-size: 12pt; fuchsia”> Informația de stil se referă numai la acest text.

Dacă același stil trebuie aplicat mai multor elemente, se va utiliza elementul STYLE.

Elementul LINK

Pentru o flexibilitate maximă, se recomandă ca regulile de stil să fie memorate într-un fișier extern, care poate fi partajat de mai multe documente. Legătura către foaia de stil externă se asigură prin elementul LINK.

Utilizarea elementului LINK: ex1_css.htm

<HTML>

<HEAD>

<TITLE>Pagina de primire</TITLE>

<LINK rel=”stylesheet” href=”ex1.css” type=”text/css”>

H1 {color: red}

</HEAD>

<BODY>

<H1>Exemplu</H1>

<P>Utilizare CSS-2 in pagina HTML

</BODY>

</HTML>

O foaie de stil externă poate fi scrisă cu orice alt editor de texte, nu va include nici un tag HTML și va fi salvată cu extensia . css. Conținutul fișierului ex1.css este:

BODY {color : red}

H1 {color : blue}

Specificațiile oferite prin elementul LINK sunt:

Tipul legăturii: către un ”stylesheet”;

Identificarea fișierului care include regulile de stil, prin atributul ”href”;

Tipul MIME (Multiple Internet Mail Extension) al foii de stil care va fi asociat: ”text/css”.

Elementul LINK definește o legătură care, spre deosebire de elementul A, poate să apară, o dată sau de mai multe ori, numai în secțiunea HEAD a unui document.

Elementul LINK se poate utiliza pentu a furnia divese informații motoarelor de căutare, cum ar fi:

Legăuri la versiuni alternative ale unui document, scrise în maimulte limbi;

Legăuri la versiuni alternative ale unui document, proiectate pentru medii diferite;

Legăuri la pagina de primire a unei colecții de documente.

Foi de stil multiple

Anumite proprietați ale aceluiași selector pot fi specificate în foi de stil diferite. De exemplu într-ofoaie de stil externă se definește următoarea regulă pentru selectorul P:

Fișierul ex2.css

P

{

text-align: right;

font-size: 40pt;

}

Tipuri de cmenzi

Orice foaie destil conține o listă de comenzi, care sunt identificate din ansamblul de reguli declarate reguli predefinite.

Regulile predefinite, ale căror nume ncep cu cu simbolul `@` (at), urmat imediat de un identificator, permit obținerea unor funcții care nu sunt accesibile regululor normale. Aceste reguli predefinite sunt:

@page – aplică stilurile paginilor documentului;

@import – inserează o foaie de stil externă în foaia de stil curentă;

@media – regrupează regulile de stil care se vor aplica unuia sau mai multor dispozitive pentru prezentarea documentului;

@font-face – descrie setul de caractere utilizat prin foaia de stil;

@charset – definește codul caracterelor utilizat prin foaia de stil.

Rețeaua Web

ca platformă pentru aplicațiile de baze de date

5.1. Cerințe ale integrării Web- SGBD

Dacă mulți comercianți de sisteme SGBD sunt interesați în furnizarea unor soluții patentate de conectivitate a bazei de date la rețeaua Web, majoritatea organizațiilor necesită o soluție mai generală, care să le împiedice de a deveni legate de o anumită tehnologie. Cele mai importante cerințe privind integrarea aplicațiilor de tip bază de date în rețeaua Web sunt:

abilitatea de a accesa date comune, valabile, într-o nanieră sigură;

conectivitatea independentă de date și comerciant, pentru a permite libertatea de alegere în selectarea sistemului SGBD acum și în viitor;

abilitatea de a crea o interfață la baza de date, independentă de orice browser Web sau server Web patentat;

soluție privind conectivitatea, care să profite de toate caracteristicile unui sistem SGBD al unei organizații;

tratare cu ajutorul arhitecturii deschise, pentru a permite interprobabilitatea cu o varietate de sisteme și tehnologii. De exemplu, suportul pentru: diverse servere Web;

modelul de obiecte componente (distribuite) ale companiei Microsoft (DCOM/COM);

CORBA/IIOP (protocol Internet Inter – Orb);

invocarea metodei Java/remote;

soluție eficientă din punct de vedere al costului, care să permită capacitatea de scalare, creșterea și modificările în direcții strategice și să reducă costurile dezvoltării și întreținerii aplicațiilor;

suportul pentru tranzacții care cuprinde HTTP multiple;

suportul pentru autentificarea bazată pe sesiuni și aplicații;

performanțe acceptabile;

suprasarcină de administrare minimală;

un set de instrumente de înaltă productivitate, care să permită dezvoltarea, întreținerea și desfășurarea aplicațiilor cu relativă ușurință și viteză.

5.1.1. Arhitectura Web-SGBD

Clientul este entitatea care asigură interfața cu utilizatorul, lansează cereri de executare a unor operații de către o entitate server și se ocupă de punerea într-o anumită formă a datelor primite de la server în urma executării operației.

Serverul este entitatea care recepționează, interpretează și execută cererile (operațiile) lansate de clienți. De asemenea, el furnizează răspunsul către client.

Cele două entități se pot regăsi sub formă de calculatoare diferite, sau pot conviețui pe același calculator. În această din urmă situație, calculatorul trebuie să aibă instalat un sistem de operare multi-proces, cele două entități regăsindu-se sub formă de procese distincte. Un client poate să efectueze cereri către mai multe servere, iar un server poate satisface cererile lansate de mai mulți clienți.

Un sistem C/S funcționează într-o rețea de calculatoare, calculatoarele din rețea netrebuind să fie omogene. Din punct de vedere al adresării într-o rețea de calculatoare, în contextul arhitecturii client/server, serverul trebuie să se găsescă întodeauna la o singură adresă, sau la un set de adrese stabilite. Clienții pot lansa cererile de ordine neavând nevoie de o adresă fixă. În cazul în care adresa asociată unui server este independentă de modul de adresare din rețeaua unde este amplasat, acesta poate fi reamplasat practic oriunde fără a afecta procesele clienților.

Prima generație de arhitectură C/S a apărut spre sfârșitul anilor ’80 sub forma a două entități:

serverul – pe care este stocată baza de date relațională;

clientul – pe care este stocată aplicația client, aplicație scrisă într-un limbaj de programare și al cărei cod se execută în întregime pe mațina client.

Dialogul C/S se bazează pe mesaje scrise (Send) și respectiv primite (Receive).

Apelurile la serviciul de transport la nivelul client sunt:

SendRequest – prin care clientul transmite serverului ce operație urmează să execute;

ReceiveReply – prin care permite clientului să primească răspunsul provenind de la un server.

Apelurile la serviciul de transport la nivelul server sunt:

ReceiveReqest – prin care permite serverului să primească interogarea transmisă de client;

SendReply – prin care permite serverului să trimită răspunsul către client.

A doua generație de arhitectură C/S a apărut în perioada anilo ’90 și se caracterizează prin orientare obiect.

Într-o arhitectură C/S, serverul poate să ofere mai multe tipuri de servicii clienților:

asigurarea interfețelor grafice pentru dialogul cu utilizatorul;

accesul la fișiere și baze de date gestionate de server;

execuția de programe.

Tendința actuală în arhitectura C/S este orientarea către sisteme informatice client-server de date și proceduri. Componentele unui asemenea sistem sunt:

Clienții – gestionează codul aplicației client, care conține elementele de interfață cu utilizatorul, permite dialogul cu acesta (în sensul preluării de date și furnizării de rezultate), dar nu efectuează prelucrări directe asupra bazei de date stocate pe server;

Serverul – asigură stocarea bazei de date, securitatea acesteia;

Rețeaua – asigură comunicarea clienților cu serverul.

Avantaje oferite de arhitectura C/S:

securitatea oferită bazelor de date stocate pe server – toți utilizatorii care accesează serverul se supun restricțiilor impuse de drepturile de acces configurate.

utilizarea procedurilor stocate – acestea pot fi utilizate de toți clienții (sub rezerva drepturilor de acces stabilite).

diminuarea traficului în rețea – acest lucru se observă în mai multe cazuri; de exemplu, la apelul unor proceduri stocate, aceasta nefiind memorată la client, evident nu se va transmite tot codul acesteia, ci numai valorile parametrilor de apel.

reducerea dimensiunii aplicațiilor – aplicațile nu memorează codul procedurilor stocate, rutinele pentru menținerea coerenței datelor (sunt stocate tot pe server), rutinele pentru asigurarea securității datelor, etc.

administrarea centralizată a unei baze de date – se realizează numai la nivel de server, cu toate implicațiile ce decurg din aceasta (costuri mai reduse, în primul rând), etc.

Odată cu apariția Web-ului, arhitecturile C/S au evoluat de la o arhitectură pe două niveluri la o arhitectură pe trei niveluri:

Nivelul CLIENT – este nivelul care permite unui utilizator comunicarea cu o bază de date prin intermediul WEB-ului. Acest nivel are următoarea sarcină: interfața cu utilizatorul.

Nivelul APLICAȚIE – conține partea de aplicații cea mai importantă din acest ansamblu. Pe acest nivel avem serverul WEB, care prin intermediul protocolului HTTP, preia cererile venite de pe nivelul client, le procesează și le poate transmite mai departe către o altă aplicație, aceasta transmițând aceste cereri către SGBD, adică pe nivelul de date. Acest nivel are următoarele sarcini: logica afacerii, logica prelucrării datelor.

Nivelul DATE – este nivelul care conține sistemul de gestiune a bazelor de date, fiind preferabil un SGBD care suportă tipuri de date complexe de genul celor vehiculate pe WEB: text, imagini, sunet,etc. Acest nivel are următoarele sarcini: validarea datelor, accesul la baza de date.

Introducere in limbajul PHP

6.1.Limbajul PHP

Limbajul PHP este un limbaj de tip script, procedural, oferind și suport pentru programarea orientată-obiect. Programele PHP (stocate în mod uzual de fișiere cu extensia .php) vor fi accesibile direct din cadrul paginilor Web. Sintaxa limbajului este inspirată din cea a limbajelor C/C++ și Perl.

Puterea limbajului constă în setul cuprinzător de funcții puse la dispoziție în special pentru manipularea bazelor de date într-un dialect SQL sau pentru procesarea conținutului unei largi palete de tipuri de fișiere (de exemplu, diferite tipuri de arhive, documente PDF, fișiere grafice, documente XML, etc). Aceste funcții pot fi grupate pe mai multe categorii (o serie fiind similară funcțiilor din biblotecile standard ale limbajului C), dintre care se pot menționa: matematice, de conversie de tipuri, de manipulare a șirurilor de caractere, de prelucrare a tablourilor, de acces la resursele sistemului de operare și de lucru cu fișiere, de manipulare a bazelor de date, privitoare la conecsiunile Internet (exemplu HTTP, FTP, IMAP, etc.), pentru accesarea fișierelor având tipuri speciale: PDF, XML, gzip, etc., specifice sistemului de operare, generale.

Scripturile PHP pot fi incluse în paginile Web în diferite moduri, uzual folosindu-se construcția <?php . . . ?>. Comentarile pot fi scrise în stilul comentariilor din limbajele C/C++(/* . . . */ sau // . . .) ori Perl (# . . . ). Declarațiile și instrucțiunile se separă prin „ ; ” ca și în C, Perl sau Java.

Funcționarea analizorului (motorului PHP) este următoarea: procesorul PHP va determina construcțiile PHP delimitate între tagurile <?php și ?> și le va interpreta, ignorând restul conținutului documentului pe care îl va trimite, la ieșirea standard, nealterat. Astfel putem privi analizatorul PHP ca un script CGI care efectuează o procesare specială înainte ca datele să fie expediate clientului Web. PHP se bazează pe motorul de scripting Zend.

Tipurile de date suportate sunt cele mai simple (scalare): logic (boolean), întreg (integer), flotant (float, double, real) și șir de caractere (string). Tipurile compuse sunt reprezentate din tipul tabloul (array) – indecsat și asociativ – din tipul obiect (object). Mai sunt disponibile și două tipuri speciale: tipul resursă (resource) și nul (NULL).

Este de menționat faptul că șirurile de caractere se pot delimita între ghilimele sau apostrofuri. Între apostrofuri se inhibă evaluarea variabilelor din interiorul șirului respectiv.

6.2. Schema motorului PHP

Variabilele în PHP se reprezintă prin intermediul unui identificator prefixat de caracterul „ $ ”. Numele variabilei este case-sensitive și este compus din caractere alfa-numerice și simbolul „_”. Se remarcă faptul ca variabila $PHP este diferită de $php. Tipul unei variabile se determină în funcție de valoarea pe care o stochează. Variabilele se pot folosi fără a trebui să fie declarate în prealabil. Există, de asemenea, și diverse variabile predefinite, mai ales cele specifice serverului Web. Tot ca variabile sunt transmise unui script PHP câmpurile formularelor HTML dintr-o pagină sau cookie-urile. Un tip special sunt variabilele globale (globals) care stochează diverse categorii de variabile externe (exmplu, $_GET, $_POST, $_COOKIES, $_ENV, etc).

Constantele pot fi considerate variabile ale căror valori sunt fixate și nu mai pot fi alterate pe parcursul programului. Pentru a defini o constantă se va folosi construcția define(). Ca exemplu de constante predefinite sepot da PHP_VERSION, PHP_OS sau CHAR_MAX.

PHP pune la dispoziție un set impresionant de operatori. Acești operatori sunt cei disponibili în limbaje precum C sau Perl. Categoriile importante de operatori sunt: aritmetici, de asignare (exemplu „+=”), pe biți relaționali (ca noutate se poate menționa aici „= = =” care are ca rezultat constanta TRUE dacă operanzii au valori identice și în plus sunt de același tip), de control al erorilor (există un singur operator „@” care inhibă erorile ce pot apărea în cadrul expresiei pe care o prfixează), de incrementare/decrementare („+ +” și „– ”), logici (and or sau „ ! ”, „ & & ” și „ | | ”), pentru șiruri (se definește operatorul de concatenare „ . ” similar celui din Perl). Poate fi folosit, de asemenea, și operatorul de test „ ? : ”.

Instrucțiunile sunt cele uzuale din alte limbaje de programare. Sunt disponibile instrucțiuni de asignare (de forma $variabilă = expresie), instrucțiuni de test (if și switch), instrucțiuni repetitive (while, do, for, foreach) și instrucțiuni de control (break, continue, return).

Un exemplu de afișare a sumei valorilor unui tablou unidimensional (vector), prin utilizarea variabilelor de tip întreg și tablou indexat, a instrucțiunilor for și foreach, a operatorilor relaționali, de asignare și de incrementare (funcția predefinită echo () afișează la intrarea standard – aici fereastra navigatorului – codul HTML generat):

<?php

// umplem un tablou cu valori de la 1 la 10

for ($contor = 1; $contor <= 10; $contor + +){

$valori [$contor] = $contor;

}

// realizam suma valorilor, utilizand foreach

suma = 0;

foreach ($valori as $element)

$suma += $element;

// afisam suma obtinuta la iesirea standard

// pentru a fi trimisa browserului – echo ()

echo (“<p>Suma de la 1 la 10 este: <b>”

. $suma . “</b></p>”) ?>

Funcțiile pot fi predefinite sau definite de utilizator. Cele definite de utilizator se specifică printr-o construcție de genul:

function nume ($arg_1, $arg_2, . . . , $arg_n){

// instructiuni

return $valoare ; /* optional se returneaza o valoare */

}

Apelul uni funcții se realizează pprin numele său, furnizând eventual și valorile pentru argumentele sale: nume (expr_1, expr_2, . . . , expr_n). Pentru un argument se poate furniza o valoare implicită, ca în C++.

În următorul exemplu defininim funcția pătrat() care calculează pătratul unui număr întreg. Vom folosi această funcție pentru afișarea în fereastra navigatorului a pătratelor primilor 5 întregi naturali pari:

<body text=”white” bgcolor=”black”>

<?php

//functia de ridicare la patrat

function patrat ($numar){

return $numar * $numar;

}

$numar = 0;

while ($numar < 10){

$numar++;

// incrementam numarul

if ($numar %2)

//e numar tipar . . .

continue;

// continuam cu urmatoarea iteratie

// e numar par, deci afisam patratul

echo “<p>$numar la patrat este “ . patrat ($numar) . “</p>”;

}?>

</body>

Limbajul PHP, mai ales de la vesiunea PHP4, oferă implementare unora dintre cele mai importante aspecte ale progaramării obiectuale: încapsularea datelor, moștenirea și polimorfismul. Suportul pentru programarea orientată-obiect se realizează prin intermediul claselor.

Datele membre se specifică utilizând construcția var, putând avea orice tip (de exemplu, întreg, tablou sau chiar obiect). Metodele se definesc prin declarații de funcții care prelucrează membrii clasei. Pentru a accesa datele clasei, metodele vor trebui să se folosescă de construcția sintactică – insapirată de C++ ori Java – $this – >variabila, altfel variabila se consideră a fi locală în cadrul acelei metode. Se pot specifica, de asemenea, constructori ai unei clase.

Instanțierea unui obiect al clasei se realizează prin operatorul new, exact ca în limbajul C++. PHP pune la dispoziție suport pentru moștenire, o clasă putând fi derivată dintr-alta prin intermediul construcției sintactice extends.

Un exemplu de definire a unei clase și de instanțiere a unui obiect al acesteia:

<?php

// definim o constanta

define (“AN_IMPLICIT”, 1)

class Student{

// date-membru

var $an;

// anul de studii

var $nume;

// numele

var $email;

// adresa de e-mail

// constructor

function Student ($a = AN_IMPLICIT, $n = ‘’){

$this->an = $a;

$this->nume = $n;

$this->email = $e;

}

// metode

function seteazaAN ($un_an){

$this->an = $un_an;

}

function furnizeazaAN(){

return $this->an;

}

//alte metode

}

//instantierea unui obiect al clasei Student

//ultimul argument va avea valoarea implicita

$stud = new Student (4, ”Cristea Georeta”);

//utilizarea datelor membre si a metodelor clasei

$nume = $stud->nume;

echo (”<p>Anul de studiial lui <b>$nume</b> este” .

$stud ->furnizeazaAn() . ”</p>”);

//verificam daca a fost furnizata adresa de e-mail

If (!$stud->email){

echo (”<p>Adresa de e-mail nu a fost setata.<p>”);

}?>

O clasă derivată a clasei de mai sus se poate defini astfel:

class StudentDestept extends Student{

//date-membru suplimentare

var $note;

//un tablou cu notele obtinute

//metode suplimentare

function seteazaNote ($niste_note){

$this->note = (array) $niste_note;

}

function furnizeazaNote(){

return (array) $niste->note;

}

}

Vom instanția un obiect din clasa derivată (se va apela constructorul clasei de bază) și se vor utiliza metodele noi definite:

//un tablou asociativ continand notele

$note2003 = array (”Web” => 10, ”RC” => 10, ”LFA” => 9);

//instantierea unui obiect al clasei StudentDestept

$alt_student = new StudentDestept (3,

”Iavi Rotberg”, );

$alt_student->seteazaNote ($note2003);

//preluam notele din obiect . . .

$alte-note = $alt_student->furnizeazaNote();

// . . .si le compara cu cele din tabloul note 2003

if ($note2003 === $alte_note){

echo (”<p>Notele au ramas aceleasi . . .<br />”);

echo (”La \tehnologii Web\”, ” .

”$alt_student->nume a luat <b>” .

$alte-note[”Web”] . ”</b>. <?p>”);

}

else

echo (”<p>Notele s-au schimbat!?</p>”);

Aplicație: Bibliotecă Online

Prima bibliotecă a apărut în urmă cu 4000 de ani în centrele urbane din Mesopotamia, unde se păstrau informații despre contracte, taxe și chitanțe. În prezent, cea mai mare bibliotecă din lume este Biblioteca Congresului din Statele Unite, având peste 120 milioane de înregistrări dintre care mai mult de 18 milioane sunt cărți.

În viitor, orice instituție de învățământ va avea propria bibliotecă virtuală.

Bibliotecile disponibile pe Web oferă acces la informații gratuit, rapid și de la orice calculator conectat la Internet.

Un site dinamic este compus din două părți fundamentale: interfața și partea ascunsă utilizatorului final, cea care nu se vede, adică tocmai funcționalitatea (partea de programare și baze de date).

Interfața unei pagini Web este ceea ce vede utilizatorul, este partea cu care acesta interacționeză și – poate cel mai important – reprezintă imaginea, identitatea unei pagini Web. Realizarea interfeței unei pagini Web este foarte importantă, deoarece aceasta atrage și încântă ochiul celui care interacționează cu o pagină Web, ajutându-l să îi descopere funcționalitățile. În general, interfața determină (sau nu) utilizatorii să revină la pagina respectivă. Din acest motiv interfața trebuie „să arate” foarte bine, să fie bine structurată și, desigur să fie ergonomică.

Interfața trebuie să comunice cu utilizatorul și aceasta caomunicare trebuie să fie cat mai ușoarǎ. Mesajul pe care o interfață urmărește să-l transmită trebuie să se potrivească cu interpretarea utilizatorului. Cu alte cuvinte, utilizatorul trebuie să reușească să interpreteze cu succes mesajul pe care autorul paginii Web dorește să-l transmită prin felul în care a organizat textul, tabelele, imaginile, animațiile etc.

7.1. Baze de date folosite

Majoritatea siturilor care au conținut dinamic folosesc un sistem de baze de date. În acest site se folosește sistemul de gestiune a bazelor de date MySQL, un sistem foarte rapid și robust de management al bazelor de date. Un sistem de baze de date permite stocarea, căutarea și sortarea eficientă a datelor. MySQL folosește limbajul SQL, limbajul standard utilizat în sistemele de gestiune a bazelor de date.

Existǎ două modalități de lucru cu sistemul de baze de date: una bazată pe comenzi, printr-o interfață de tip text, și una utilizând o interfață grafică (disponibilă pe Web).

Pentru conectarea la baza de date, se utilizeazǎ o comandǎ de forma

mysql –h <hostname> -u <username> -p

unde se înlocuiește <hostname> cu adresa serverului pe care se află instalat MySQL de obicei localhost. Dacă este instalat pe calculatorul local atunci se poate folosi comanda fără opțiunea –h <hostname>. Parametrul –<username> trebuie înlocuit cu numele de utilizator. Parametrul –p semnifică faptul că sistemul va cere parola imediat după ce comanda a fost rulată. Dupa conectare la serverul de date va apărea un prompter de genul: mysql>

Se vor prezenta în continuare câteva comenzi utile în lucrul cu sistemul MySQL în mediul de comandă text. Fiecare comandă MySQL trebuie să se termine cu punct și virgulă.

Pentru a vedea informațiile introduse într-un tabel se utilizează comanda select * from <nume tabela>; iar pentru a șterge o înregistrare din tabel se folosește: delete from <nume tabela> where <clauza where>. Pentru a părăsi mediul MySQL se folosește comanda quit.

În afarǎ de comenzile SQL standard (ANSI 93), MySQL vine cu un set de comenzi care permit interogarea sistemului pentru afișarea bazelor de date, a listei de tabele a unei baze de date, și afișarea structurii fiecǎrei tabele. Aceste comenzi de interogare a metadatelor vor fi exemplificate în continuare.

show databases;

mysql> show databases;

+––––+

| Database |

+––––+

| libonline |

| innno |

| mail |

| mysql |

| verlihub |

+––––+

10 rows in set (0.09 sec)

show tables;

mysql> show tables;

+–––––-+

| Tables_in_anca |

+–––––-+

| admin |

| autori |

| autoriasoc |

| carti |

| catasoc |

| categorii |

| descarcate |

| edituri |

| preferinte |

| useri |

+–––––-+

10 rows in set (0.01 sec)

describe carti; sau show columns from carti;

mysql> show columns from carti;

+––––+–––––+––+––+–––+–––––-+

| Field | Type | Null | Key | Default | Extra |

+––––+–––––+––+––+–––+–––––-+

| id | int(11) | | PRI | NULL | auto_increment |

| titlu | varchar(255) | | | | |

| edituraid | int(11) | YES | | 0 | |

| an | int(11) | YES | | NULL | |

| data | date | YES | | NULL | |

| down | int(11) | YES | | NULL | |

| spatiu | int(11) | YES | | NULL | |

| coperta | varchar(255) | YES | | | |

| fisier | varchar(255) | YES | | | |

+––––+–––––+––+––+–––+–––––-+

9 rows in set (0.00 sec)

Întreținerea și administrarea aplicației se realizeazǎ de cǎtre o persoanǎ abilitatǎ în acest sens numitǎ administrator, care introduce și gestioneazǎ toate informațiile oferite de site. Administratorul, pentru a putea opera în baza de date trebuie să se conecteze, introducând numele și parola, iar la fiecare conectare este interogatǎ o tabelǎ care conține lista de administratori. Acestǎ tabelǎ permite memorarea unui numǎr mare de persoane care administreazǎ aplicația.

Urmǎtoarea comandă descrie caracteristicile tabelei care memoreazǎ lista de administratori ai bibliotecii virtuale.

mysql> desc admin;

+–––+–––––+––+––+–––+–––––-+

| Field | Type | Null | Key | Default | Extra |

+–––+–––––+––+––+–––+–––––-+

| id | int(11) | | PRI | NULL | auto_increment |

| nume | varchar(100) | | | | |

| parola | varchar(20) | | | | |

+–––+–––––+––+––+–––+–––––-+

3 rows in set (0.18 sec)

Biblioteca virtualǎ își stocheazǎ datele într-o bazǎ de date formatǎ din 10 tabele. Una dintre acestea este tabela de adminstratori prezentatǎ mai sus. O altǎ tabelǎ este tabela de utilizatori înregistrați ai aplicației și anume tabela useri, a cǎrei structurǎ o prezentǎm în continuare.

mysql> desc useri;

+–––+–––––+––+––+–––+–––––-+

| Field | Type | Null | Key | Default | Extra |

+–––+–––––+––+––+–––+–––––-+

| id | int(11) | | PRI | NULL | auto_increment |

| nume | varchar(255) | | UNI | | |

| email | varchar(255) | | | | |

| parola | varchar(20) | | | | |

+–––+–––––+––+––+–––+–––––-+

4 rows in set (0.02 sec)

Informațiile oferite de aplicație sunt formate din cǎrți în format electronic. Pentru fiecare din aceste cǎrți sunt memorate mai multe informații cum ar fi: editura, autorii, anul publicǎrii…

O carte poate avea unul sau mai mulți autori, un autor poate publica mai multe cǎrți. Astfel se creazǎ o relație ∞ – ∞. Pentru a elimina acest inconvenient, și pentru a menține baza de date în formǎ normalǎ, am introdus o nouǎ tabelǎ numitǎ autoriasoc care este legatǎ de tabelele cǎrți și autori prin legǎturi 1- ∞.

Structura tabelelor de autori și autoriasoc este datǎ în continuare:

mysql> describe autori;

+––-+–––––+––+––+–––+–––––-+

| Field | Type | Null | Key | Default | Extra |

+––-+–––––+––+––+–––+–––––-+

| id | int(11) | | PRI | NULL | auto_increment |

| nume | varchar(255) | | | | |

+––-+–––––+––+––+–––+–––––-+

2 rows in set (0.04 sec)

mysql> describe autoriasoc;

+–––+–––+––+––+–––+–––––-+

| Field | Type | Null | Key | Default | Extra |

+–––+–––+––+––+–––+–––––-+

| id | int(11) | | PRI | NULL | auto_increment |

| carteid | int(11) | | | 0 | |

| autorid | int(11) | | | 0 | |

+–––+–––+––+––+–––+–––––-+

3 rows in set (0.10 sec)

O altǎ informație memoratǎ pentru fiecare carte este editura. Fiecǎrei cǎrți îi este asociatǎ o singurǎ editurǎ. Pentru fiecare editurǎ este memorat orașul în care se gǎsește dupǎ cum se poate observa în continuare.

mysql> desc edituri;

+––-+–––––+––+––+–––+–––––-+

| Field | Type | Null | Key | Default | Extra |

+––-+–––––+––+––+–––+–––––-+

| id | int(11) | | PRI | NULL | auto_increment |

| nume | varchar(255) | | | | |

| oras | varchar(255) | | | | |

+––-+–––––+––+––+–––+–––––-+

3 rows in set (0.01 sec)

Fiecare carte aparține cel puțin unei categorii, și fiecare categorie poate conține mai multe cǎrți. Ca în cazul tabelei autori am redus relația ∞ – ∞ la douǎ relații 1- ∞ și ∞ – 1 prin introducerea unei tabele intermediare de asociere a cǎrților cu categoriile din care fac parte acestea. Structura acestor doua tabele este datǎ în continuare.

mysql> describe categorii;

+––-+–––––+––+––+–––+–––––-+

| Field | Type | Null | Key | Default | Extra |

+––-+–––––+––+––+–––+–––––-+

| id | int(11) | | PRI | NULL | auto_increment |

| nume | varchar(255) | | | | |

+––-+–––––+––+––+–––+–––––-+

2 rows in set (0.09 sec)

mysql> describe catasoc;

+–––+–––+––+––+–––+–––––-+

| Field | Type | Null | Key | Default | Extra |

+–––+–––+––+––+–––+–––––-+

| id | int(11) | | PRI | NULL | auto_increment |

| carteid | int(11) | | | 0 | |

| catid | int(11) | | | 0 | |

+–––+–––+––+––+–––+–––––-+

3 rows in set (0.13 sec)

Utilizatorii înregistrați ai bibliotecii virtuale sunt singurii care pot descǎrca fișierele puse la dispoziție de aplicație dupǎ conectare la aplicație prin introducerea unui nume și a unei parole. Cǎrțile descǎrcate de un anumit utilizator sunt memorate în tabela descǎrcate, pentru o revenire ulterioarǎ. În același timp, utilizatorul poate introduce o carte în lista proprie de cǎrți preferate pentru a fi accesate cât mai rapid. Toate aceste informații sunt memorate în douǎ tabele de asociere dintre cǎrți și utilizatori, prezentate în continuare.

mysql> desc descarcate;

+–––+–––+––+––+–––+–––––-+

| Field | Type | Null | Key | Default | Extra |

+–––+–––+––+––+–––+–––––-+

| id | int(11) | | PRI | NULL | auto_increment |

| userid | int(11) | | | 0 | |

| carteid | int(11) | | | 0 | |

+–––+–––+––+––+–––+–––––-+

3 rows in set (0.01 sec)

mysql> desc preferinte;

+–––+–––+––+––+–––+–––––-+

| Field | Type | Null | Key | Default | Extra |

+–––+–––+––+––+–––+–––––-+

| id | int(11) | | PRI | NULL | auto_increment |

| userid | int(11) | | | 0 | |

| carteid | int(11) | | | 0 | |

+–––+–––+––+––+–––+–––––-+

3 rows in set (0.01 sec)

Spre final, prezentǎm comenzile SQL utilizate la generarea bazei de date și schema conceptualǎ, comenzi care pot folosi la regenerarea bazei de date atunci când aplicația este instalatǎ, sau portatǎ în altǎ bazǎ de date.

CREATE TABLE admin (

id int(11) NOT NULL auto_increment,

nume varchar(100) NOT NULL default '',

parola varchar(20) NOT NULL default '',

PRIMARY KEY (id)

);

CREATE TABLE autori (

id int(11) NOT NULL auto_increment,

nume varchar(255) NOT NULL default '',

PRIMARY KEY (id)

);

CREATE TABLE autoriasoc (

id int(11) NOT NULL auto_increment,

carteid int(11) NOT NULL default '0',

autorid int(11) NOT NULL default '0',

PRIMARY KEY (id)

);

CREATE TABLE carti (

id int(11) NOT NULL auto_increment,

titlu varchar(255) NOT NULL default '',

edituraid int(11) default '0',

an int(11) default NULL,

data date default NULL,

down int(11) default NULL,

spatiu int(11) default NULL,

coperta varchar(255) default '',

fisier varchar(255) default '',

PRIMARY KEY (id)

);

CREATE TABLE catasoc (

id int(11) NOT NULL auto_increment,

carteid int(11) NOT NULL default '0',

catid int(11) NOT NULL default '0',

PRIMARY KEY (id)

);

CREATE TABLE categorii (

id int(11) NOT NULL auto_increment,

nume varchar(255) NOT NULL default '',

PRIMARY KEY (id)

);

CREATE TABLE descarcate (

id int(11) NOT NULL auto_increment,

userid int(11) NOT NULL default '0',

carteid int(11) NOT NULL default '0',

PRIMARY KEY (id)

);

CREATE TABLE edituri (

id int(11) NOT NULL auto_increment,

nume varchar(255) NOT NULL default '',

oras varchar(255) NOT NULL default '',

PRIMARY KEY (id)

);

CREATE TABLE preferinte (

id int(11) NOT NULL auto_increment,

userid int(11) NOT NULL default '0',

carteid int(11) NOT NULL default '0',

PRIMARY KEY (id)

);

CREATE TABLE useri (

id int(11) NOT NULL auto_increment,

nume varchar(255) NOT NULL default '',

email varchar(255) NOT NULL default '',

parola varchar(20) NOT NULL default '',

PRIMARY KEY (id),

UNIQUE KEY nume (nume)

);

Categoriile pe care sunt împarțite cǎrțile sunt stocate în tabela categorii, și acestea se pot observa din urmǎtoarele comenzi SQL.

INSERT INTO categorii VALUES (1,'Limbaje de programare');

INSERT INTO categorii VALUES (2,'Sisteme de operare');

INSERT INTO categorii VALUES (3,'Web');

INSERT INTO categorii VALUES (4,'Baze de date');

INSERT INTO categorii VALUES (5,'Grafica');

INSERT INTO categorii VALUES (6,'Algoritmi');

INSERT INTO categorii VALUES (7,'Retele');

Tabela pricipalǎ a schemei conceptuale este tabela carti. Fiecǎrei cǎrți îi corespunde o înregistrare din tabela edituri. Aceastǎ corespondențǎ este asiguratǎ de o legǎturǎ 1-1 dintre cele douǎ tabele. Conținutul tabelei edituri se poate deduce din comenzile care urmeazǎ.

INSERT INTO edituri VALUES (1,'Teora','Bucresti');

INSERT INTO edituri VALUES (2,'Polirom','Bucresti');

INSERT INTO edituri VALUES (3,'ALL','Bucresti');

INSERT INTO edituri VALUES (4,'Nemira','Bucresti');

Aplicația prezentatǎ funcționeazǎ online și se poate accesa la adresa http://anca.innno.ro, si ruleazǎ pe un server UNIX(FreeBSD 5.0), folosește programul Apache ca server web, modulul php pentru interpretarea programelor scrise sǎ ruleze pe server și MySQL ca server de date. Aplicația Biblioteca Online cuprinde toate aspectele necesare unei aplicații comerciale, baze de date, sesiuni, autentificare, administrare, și se poate dezvolta în continuare pânǎ la o aplicație comercialǎ.

Bibliografie

Baze de date. Fundamente teoretice și practice, Grupul BDASEIG, Editura Infomega, București, 2002

Baze de date, Octavian Bâscă, Editura All Educațional, București, 1996

Tehnologia aplicațiilor Web, Floarea năstase, Pavel Năstase, Editura Economică, București, 2002

Totul despre HTML 4, Rick Darnel, Editura Teora, București, 2002

HTML prin EXEMPLE, Teodoru Gugoiu, Editura Teora, București, 2003

Aplicații Web la cheie: studii de caz implementate în PHP, Sabin Burga, Editura Polirom, Iași, 2003

Baze de date: proiectare, implementare, gestionare, Thomas Connolly, Caoly Bepg, Anne Strochan, Editura Teora, București, 1997

PHP and MySQL Web Development, Luke Welling, Laura Thomson, Editura Sam’s Publishing, 2004

MySQL, 3rd Edition, Paul Dubois, Editura Sam’s Publishing, 2005

MySQL Reference Manual, Michael Widenius, David Axmark, Editura O’REILLY, 2002

Web Database Applications with PHP & MySQL, Hugh E. Williams, David Lane, Editura O’REILLY, 2004

PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide, Larry Ullman, Editura Peachpit Press, 2003

HTML Complete, Donna L. Baker, Editura Sybex, 2003

Similar Posts