bd cinematograf

69
Universitatea din Craiova Facultatea de Automatica, Calculatoare si Electronica Colegiul Tehnica de Calcul PROIECT DE ABSOLVIRE Indrumator stiintific, S.l. dr. ing. Catalin Cerbulescu Absolvent,

Upload: inga-gurmeza

Post on 24-Nov-2015

271 views

Category:

Documents


17 download

TRANSCRIPT

Universitatea din Craiova

Universitatea din Craiova

Facultatea de Automatica, Calculatoare si Electronica

Colegiul Tehnica de Calcul

PROIECT DE ABSOLVIRE

Indrumator stiintific,

S.l. dr. ing. Catalin Cerbulescu

Absolvent,

Popa Ionica MarianCraiova - 2004

Tema proiect

Gestiune si prezentare on-line a programelor cinematografelor din Romania

Cuprins

Cap.1 Prezentare functiuni

Cap.2 Notiuni fundamentale de baze de date

Cap.3 Limbajul SQL

Cap.4 Active Server pages

4.1 Pagini ASP

4.2 Accesarea bazelor de date

4.3 Obiectul Response

4.4 Obiectul Request

Cap.5 Descriere aplicatie

5.1 Structura bazei de date

5.2 Legaturi intre tabele

5.3 Interfata cu utilizatorul

5.4 Validari asupra datelor

5.5 Tehnici de programare utilizate in partea de administrare

5.5.1 Conexiunea la baza de date

5.5.2 Inserarea si actualizarea datelor

5.5.3 Stergerea datelor

5.6 Tehnici de programare utilizate in partea de client

5.6.1 Pagina Acasa

5.6.2 Pagina In cinematografe

5.6.3 Pagina cu informatii detaliate despre un film

5.6.4 Pagina cu informatii detaliate despre un actor

5.6.5 Pagina Filme

5.6.6 Pagina Actori

5.6.7 Pagina Arhiva filme

Cap.6 Concluzii

Bibliografie

Listing sursa

Cap.1 Prezentare functiuni

Aplicatia care face obiectul acestui proiect se intituleaza Gestiune si prezentare on-line a programelor cinematografelor din Romania si reprezinta un site Web care afiseaza informatia existenta intr-o baza de date MS Access. Ca urmare este un site dinamic, schimbarea informatiei din baza de date conducind la schimbarea automata a informatiei care se afiseaza pe Internet.

Ca solutie pentru realizarea acestui site am ales HTML (HyperText Mark-up Language) si ASP (Active Server Pages).

Site-ul cuprinde doua parti distincte. Prima parte este destinata consultarii de catre orice persoana doritoare de a vedea un film la cinema.

Facilitatile oferite de aceasta prima parte a site-ului realizat de mine sunt grupate sub urmatoarele titluri:

1. Acasa este pagina introductiva, in care vizitatorul este informat asupra a doua lucruri: filmele noi aparute in cinematografe in saptamina curenta, precum si filmele recomandate. Prin asta am inteles filmele care prin calitatea lor sunt recomandate spre vizionare. Pentru fiecare film apare titlul acestuia, afisul si date legate de subiect. Pe fiecare titlu este amplasata o hiperlegatura care conduce la pagina cu informatiile detaliate despre film.

2. In cinematografe - afiseaza datele ce incadreaza saptamina curenta si o lista drop-down din care trebuie ales orasul care intereseaza. In acest moment se afiseaza fiecare cinematograf din orasul respectiv cu adresa s telefonul sau. Apoi, pentru fiecare cinematograf in parte apare lista filmelor care ruleaza, precum si cu zilele si orele de vizionare. Si aici avem hiperlegatura pe titlul filmului pentru a merge in pagina cu detalii.

3. In viitor aceasta pagina este asemanatoare cu cea anterioara, numai ca afiseaza informatii despre filmele programate sa ruleze in cinematografe in etapa de timp viitoare

4. Filme afiseaza titlurile filmelor care ruleaza in tara in saptamina curenta.

5. Actori afiseaza, in ordine alfabetica, numele actorilor care figureaza in baza de date. Numele actorului este o hiperlegatura care daca este urmata conduce la afisarea in partea inferioara a paginii a informatiilor detaliate despre actorul ales.

6. Arhiva filme permite vizualizarea titlurilor filmelor care sunt in baza de date pentru ca au rulat in trecut intr-unul din cinematografele existente in baza de date. Aceasta arhiva este mentinuta, pentru ca un film poate sa ruleze din nou, peste un anume timp, fie in acelasi cinematograf, fie in altul.

Doresc sa mentionez ca interfata grafica este placuta, cu un fundal si butoane adecvate temei.

Cea de a doua parte a site-ului este pusa numai la dispozitia celor care au drepturi sa administreze baza de date MS Access. Acesti utilizatori trebuie sa se identifice printr-un nume de utilizator si parola. In partea de administrare, exista urmatoarele hiperlegaturi:

1. Cinematografe

2. Filme

3. Actori

4. Saptamina

5. Program

Aceste titluri corespund in general tabelelor din baza de date a caror informatie trebuie actualizata. Fiecare din aceste optiuni permite gestionarea informatiei corespunzatoare, prin adaugare, modificare sau stergere de inregistrari.

In pagina Filme, in afara de posibilitatea de adaugare, modificare si stergere exista doua hiperlegaturi numite Distributie si Imagini care permit gestionarea informatiilor corespunzatoare pentru fiecare film in parte.

In pagina Cinematografe, utilizatorul cu drept de administrare poate sa gestioneze informatia despre acestea: sa adauge, sa modifice sau sa stearga inregistrari.

In pagina Filme, administratorul poate sa modifice informtia legata de acestea, plus informatia legata de imaginile din filme si distributia acestora.

De exemplu,in cazul in care se administreaza informatia legata de distributia filmelor, numele actrilor se alege dintr-o lista drop-down, munca acestuia fiind mult simplificata. Aceasta tehnica este utilizata si in alte parti ale site-ului de administrare. Astfel, in cazul informatiilor despre cinematografe, se alege orasul din care apartine, la adagarea programului de rulare al unui film se alege sapatamina si apoi titlul filmului tot prin intermediul unor liste drop-down.

Lucrurile se produc asemanator in cazul celorlalte hiperlegaturi.

Doresc sa evidentiez ca in aceasta sectiune am acordat atentie speciala validarii datelor care se introduc sau se modifica in tabele, pentru a pastra consistenta informatiei, pentru a evita iesirea utilizatorului din pagina din cauza unei erori.

Cap.2 Notiuni fundamentale de baze de date

Entitate,relaie,atribut

Se numete entitate orice obiect,fenomen sau concept care poate fi distins prin valorile caracteristicilor sale de alte obiecte,fenomene sau concepte asemntoare.

Se numete atribut o caracteristic specific unei entiti.

Un atribut se caracterizeaz prin:nume,semantic.structur,tipuldatelor i domeniul de definiie.

Prin tipul datelor nelegem structura datei,mulimea valorilor,operaiile admise si modul de tratare a erorilor specifice.

Semantica nseamn semnificaia atributului n cadrul entitii.ntr-o colecie pot s apar diverse atribute cu acelai nume dar plasate in entiti diferite.Chiar dac au acelai nume atributele pot s aib semnificaii diferite.

Domeniul este o noiune specific bazelor de date i puternic legat de semantica acestora.Cunoaterea semanticii atributelor i a domeniilor specifice este una din cerinele de baz ale proiectrii unei baze de date.

Din punct de vedere al semanticii distingem:

1. Atribute identificator-ale crui valori pot identifica n mod unic o anumita entitate.

2. Atribute descriptor-ale carui valori descriu o anumit proprietate a entitii.

3. n asemenea situaii o entitate poate s nu aib cheie primar natural.n acest caz proiectantul bazei de date poate decide introducerea unei chei primare artificiale.

Din punct de vedere al structurii putem distinge:

1. Atribute atomice din a cror valoare nu poate fii eliminat nici o component fr a afecta semantica atribitului.

2. Atribute compuse a cror valoare este dat de reuniunea valorilor unor atribute atomice.

Din punct de vedere al numrului de valori pe care-l poate lua la un moment dat un atribut pentru o anumit entitate distingem.

1. Atribute cu valoare unic care accept la un moment dat o singur valoare pentru fiecare entitate.

2. Atribute multivaloare care accept la un moment dat un set de valori pentru aceeai entitate.

Din punct de vedere al nivelului de structurare al unui atribut distingem:

1. Atribute slab structurate sunt caracteristice aplicaiilor multimedia.

2. Atribute puternic structurate-sunt atribute care au o structur riguros definit.

ntre entiti se stabilesc legturi.Legtura ntre clase de entiti pune n coresponden entitiile ce particip la realizarea legturii a dou sau mai multe clase de entiti reprezint o submulime a produsului cartezian al entitiilor.

Caracteristici generale ale legturilor:

1. Orice legtur are un nume

2. Orice legtur are o semantic riguros definit

3. O legtur este bidirecional

4. Pot fi definite legturi ntre entitile aceleiai clase de entiti

5. ntre aceleai clase de entiti pot fi definite mai multe legturi cu semnificaii diferite

6. Pot fi definite legturi peste mai mult de dou clase de entiti

7. Legturile pot avea atribute proprii ca i entitiile

Indiferent de semantica lor legturile prezint cteva proprieti deosebit de importante a cror cunoatere este esenial pentru nelegerea si implementarea coleciilor de date.

1. Gradul legturii-indic numrul de clase de entiti care particip la realizarea legturii tip .

2. Indicator de participare-este un indicator care specific dac pot exista entiti ale unei clase de entiti care s nu participe obligatoriu la realizarea legturi tip analizate.

3. Indicator de conectivitate-indic numrul de entiti ale unei clase care pot fi puse n coresponden cu entiti ce particip la realizarea unei anumite legturi.

Baze de date

Se numete baz de date o colecie de date conectate logic exhaustiv,neredundant i care suport independena aplicaiilor n raport cu structura datelor.

Prin structura bazei de date se materializeaz de fapt informaia coninut de date .Structura datelor nu este unic .Prin duplicarea datelor nelegem c aceleeai date sunt reprezentate n baza de date n aceeai form sau n forme apropriate.

Conexiunea logic a datelor presupune c n baza de date sunt introduse numai date specifice unui anumit domeniu iar ntre ele pot fi puse n eviden legturi cu o semantic bine determinat.

Exhaustivitatea datelor se refer la cerina impus de precizia informaiilor i anume c pentru a obine informaii ct mai corecte ntr-un anumit domeniu respectiv.

Prin cerere vom nelege o solicitare abstract sistemului informatic sub forma unor comenzi ntr-un limbaj de programare n scopul obineri unui anumit rezultat cu ajutorul unor prelucrri elementare asupra datelor pstrate n baza de date.

Prin aplicaie se nelege un grup de cereri concatenate semantic i care solicit aproximariv aceleai date pentru obinerea rezultatelor. n concluzie exist un numr mare de elemente ale bazei de date a cror modificare nu trebuie s afecteze aplicaiile deja implementate. Printre acestea putem aminti:

1. utilizarea unor tipuri de dat diferite pentru valorile aceluiai atribut

2. formatul de reprezentare al datei calendaristice poate varia foarte puternic n funcie de aplicaie,de preferinele beneficiarului de tranzacie.

3. anumite date pot fi vzute distinct de ctre o aplicaie i concatenate de ctre alt aplicatie.

4. diverse apilicaii utilizeaz fiecare doar o parte a coninutului bazei de date.

5. dac la un moment dat se hotrte extinderea bazei de date prin adugarea de noi categori de informaii ,vechile aplicaii care nu utilizeaz aceste date nu trebuie s fie afectate.

6. avnd n vedere preul de cost mare al implementri unei baze de date i a aplicaiilor peste aceasta se poate decide implementarea bazei de date n etape.

7. modificrile n structura sistemului informatic pri achiziia de echipamente de calcul noi prin modificarea tipului suportului extern de informaie,prin redistribuirea fiierelor de date nu trbuie s afecteze programele aplicative.

8. un program aplicativ poate fi utilizat n contexte diferite peste baze de date cu structuri de date identice dar implementate pe sisteme de calcul diferite.

Sistemul de gestiune a bazelor de date reprezint un pachet de programme care permit crearea, utilizarea si eliminarea obiectelor ce compun baza de date n scopul creteri randamentului global al utilizrii bazelor de date si avnd ca principal obiectiv reducerea dependenei aplicaiilor n raport cu structura datelor. Principala noutate introdus de SGBD a fost separarea descrierii datelor de programul aplicativ. Descrierea datelor se face n mod unitar pentru toate aplicaiile cu ajutorul SGBD. SGBD-ul ofer mecanisme puternice de acces la date fr s necesite cunotine avansate privind structura datelor i sistemul de operare.

Introducerea SGBD-ului a permis crearea unei arhitecturi pe 3 nivele a sistemului informatic:

Nivelul logic corespunde modului n care fiecare utilizator vede coninutul bazei de date.

Nivelul conceptual corespunde structurii ntregii baze de date.Modelul conceptual este o descriere a continutului bazei de date independent att de aplicaiile propriuzise ct i de modelul de implementare al bazei de date.

Nivelul intern se refer la modul de implementare al bazei de date.

Modelul intern conine descrierea structurii de date implementate, descrierea fiierelor a tehnicilor de acces la date, lista utilizatorilor, drepturile lor de acces.

Modelul relaional este un model logig al bazei de date care sa impus datorit naturaleii sale i simplitii n nelegerea i manipularea structurilor de date. Rrezentarea unei baze de date sub form de relaii se numete model relaional al bazei de date.

O relaie este format dintr-un tabel bidimensional n care coloanele corespund atributelor iar fiecare linie corespunde unei entiti.

Fiecare relaie se identific printr-un nume unic n cadrul unei baze de date.

Fiecare atribut are un nume unic i trebuie s sugereze semnificaia acestuia.

O linie a relaiei se numete tuplu al relaiei .Prin relaie materializm o clas de entiti n care fiecare tuplu reprezint o entitate.

CHEI

Noiunea de cheie deriv din conceptul determinant .

Se numete determinant orice atribut simplu sau compus ale crui valori identific n mod unic valorile altor atribute.

Se numete supercheie orice atribut simplu sau compus care identific n mod unic un tuplu.

Exist o supercheie care apare n orice relaie numit cheie trivial i anume o supercheie format din toate atributele relaiei.

Cheie candidat:

Se numete cheie candidat o supercheie minimal adic o supercheie din care ndeprtnd cel puin un atribut se pierde caracterul de determinant. Supercheile si cheile candidat rezult n mod natural din semantica datelor.

Cheie primar:

Cheia primar este o cheie candidat aleas de ctre proiectantul bazei de date pentru identificarea tuplurilor intr-o relaie. Specificarea cheii primare este obligatorie n orice documentaie privind baza de date. Alegerea cheii primare se poate face pe baza unei analize profunde a semnificaiei datelor i a modului n care acestea sunt utilizate n diverse aplicaii sau pot fi fixate arbitrar dintre cheile candidat. n cazul in care nu exist nici o cheie candidat sau cheile candidat naturale au un numr prea mare de atribute proiectantul poate decide introducerea unor chei primare artificiale generate de ctre SGBD.

Cheie alternant: este o cheie candidat care nu a fost aleas pentru postul de cheie primar.

Cheie secundar:

Orice atribut sau grup de atribute prin ale cror valori se identific o mulime de tupluri dintr-o relaie.

Fie o relaie avnd schema r(a1,a2,,an),unde a1 este cheie primar a relaiei. Se numete domeniu primar al relaiei domeniul corespunztor cheii primare. Fie o alt relaie s(b1,b2,,bn),unde b1 este definit peste acelai domeniu primar din relaia r.n acest caz se spune c b1 este cheie extern peste definit peste cheia primar din relaia r.

Cheia extern reprezint un mecanism fundamental pentru materializarea legturi ntre relaiile r i s. Cheile externe pot fi definite n practic peste chei candidat n afara cheii primare.

Reguli de integritate

Regulile de integritate a datelor dintr-o baz de date relaional reprezint restricii impuse datelor cu scopul de a elimina redundana datelor,inconsisten a datelor i erori de actualizare a datelor.

Exist multe tipuri de integriti i anume:

1. Integritatea domeniului-aceast restricie presupune definirea domeniului unui atribut astfel nct s reprezinte efectiv valorile posibile ale unui atribut.

2. Integritatea cheilor-prin cheie vom nelege toate cheile candidat puse n eviden ntr-o relaie.

3. Integritatea entitii-prin definiie cheia primar trbuie s identifice n mod unic un tuplu al unei relaii care n general este materializarea unei entiti. Pentru ca s-i poat realiza rolul de identificator cheia primar nu poate avea valori nule.

4. Integritatea referirii-aceast restricie de integritate are ca scop s elimine referirile n gol, adic cheia extern nu are voie s se refere la un tuplu care nu exist. Restricia integritii referirii impune ca la un moment dat valorile cheii externe fie s fie nule, fie s se afle printre valorile deja nregistrate pentru cheia primar peste care este definit cheia extern.

5. Restricii de utilizator-n unele situaii utilizatorul poate impune i alte restricii dect cele impuse de regulile de integritate discutate anterior:

-unicitatea altor atribute dect cheia primar

-valori nule

-diverse validri

Operatori ai algebrei relaionale

Operatorii algebrei relaionale pot fi mpri n dou grupe:

1. Operatori clasici peste mulimi

2. Operatori relaionali specifici

Se spune c relaiile r1 i r2 sunt compatibile cu reuniunea dac cele 2 relaii au aceeai paritate i atributele care ocup aceeai paritate sunt definite peste acelai domeniu chiar dac au nume diferite.

Reuniunea:Fie r1 i r2 dou relaii compatibile cu reuniunea .Se numete reuniune relaia r care conine toate tuplurile celor 2 relaii iniiale fr duplicate.

Intersecia:Fie r1 i r2 dou relaii compatibile cu reuniunea.Se numete intersecie relaia r care conine toate tuplurile comune lui r1 i r2.

Diferena:Fie r1 i r2 dou relaii compatibile cu reuniunea.Se numete diferen relaia r care conine numai tuplurile din r1 care nu apar n r2.

Produsul cartezian:Fie r1 i r2 dou relaii oarecare.Se numete produs cartezian relaia r opinut prin concatenarea fiecrui tuplu din r1 cu fiecare tuplu din r2.

Operatori relaionali specifici:

Selecia-Fie o relaie r i o expresie relational aritmetic f numit filtru.Se numete selecie o relaie format din toate tuplurile relaiei r pentru care atributele iau valori care nlocuite n expresia f fac ca aceasta s aib valoarea adevrat true.

Proiecia-Fie o relaie r i ai1,ai2,,ain, un set de atribute ale acestei relaii.Se numete proiecie o relaie opinut din relaia r care conine numai atributele specificate.

Tipuri de limbaje utilizate n domeniul bazelor de date

1. Limbaje de descriere a bazei de date(LDBD)-permit descrierea relaiilor atributelor i a unor restricii de integritate,a unor vederi asupra bazelor de date a unor utilizatori i aprivilegiilor acordate acestora.

2. Limbaje de manipularea bazelor de date(LMDB)-acestea cuprind comenzi care permit:

-introducerea de noi date n baza de date

-modificare valorilor deja nscrise n baza de date

-eliminarea unor tupluri ale unei relaii

3. Limbaje de interogare-au ca scop posibilitatea formulri unor cereri de cutare a informaiilor n baza de date.

4. Limbaje pentru generarea rapoartelor-sunt limbaje care permit o

formatare sofisticat a datelor care s prezinte informaia intr-o form adecvat problemei rezolvate.

Normalizarea

Este un proces interativ i reversibil prin care se nlocuiete o colecie dat de relaii prin colecii succesive n care relaiile au o structur din ce n ce mai simpl i mai regulat.

Obiectivele normalizrii sunt:

1.S permit reprezentarea oricrei relaii n baza de date .

2.S opin algoritmii de cutare puternici bazai pe o colecie de operatori relaionali .

3.S elimine din relaii anomaliile de inserie ,modificare i tergere.

4.S reduc necesitatea restructurrii relaiilor atunci cnd se introduce un nou tip de date sau se modific ipotezele de lucru.

5.S fac colecia de relaii imun n raport cu cererile aleatoare a cror semantic se modific n timp.

Pot fi puse n eviden cinci forme de normalizare ce formeaz o structur riguros ierarhizat care vor fi notate cu FN1-FN5.

Forma normal 1(FN1)

O relatie este n FN1 dac fiecare atribut al relaiei are un domeniu de valori atomice.FN1 este cea mai slab form normal.n general relaiile n aceast form prezint numeroase anomalii la inserie,modificare i eliminare, acestea fiind eliminate de celelalte forme normale.

Forma normal 2(FN2)

Fie X mulimea tuturor atributelor relaiei r(a1,a2,,an),care nu particip la formarea vreunei chei n r. Se spune c relaia r este n FN2 dac i numai dac fiecare atribut din X este complet dependent funcional de oricare din cheile lui r.Un atribut este atribut prim dac face parte din cel puin o cheie a relaiei r.Un atribut este atribut nonprim dac nu face parte din cel puin o cheie a relaiei r.O relaie este n FN2 dac i numai dac orice atribut nonprim din r este complet dependent funcional de toate cheile din r.

Proprietate:

Dac o relaie nu este n FN2,exist o descompunere a lui r ntr-un set de proiecii,fiecare n FN2. Descompunerea se poate realiza n aa fel nct aplicnd joncea natural ntre proiecii se opine coninutul informaional al lui r far pierdere de informaie.

Forma normal 3(FN3)

O relaie este n FN3 dac i numai dac nici unul din atributele sale nonprime nu este dependent tranzitiv de o cheie a relaiei r.

Proprietti:

1.Dac o relaie se afl n FN3 ,ea este obligatoriu n FN2.

2.Exist relaii n FN2 care nu se afl n FN3.

3.Dac o relaie r nu este n FN3,exist o decompoziie a lui r intr-un set de proiecii,toate n FN3. Aceast decompoziie este astfel realizat nct aplicnd jonciunea natural ntre proieciile opinute se reface relaia iniial fr pierdere de informaii.

Forma normal Boyce-Codd(FNBC)

Relaia r(a1,a2,,an) este n FNBC dac i numai dac existena unei dependene funcionale netrivial X-Y ,unde X i Y sunt seturi de atribute ale lui r implic existena dependenelor funcionale X-a1,pentru i=1,2,,n.

Aceast definiie poate fi reformulat utiliznd termenul determinant.

Se numate determinant orice atribut simplu sau compus care implic funcional alte atribute.

O relaie este n FNBC dac i numai dac orice determinant al relaiei este cheie candidat.

Proprieti:

1.Dac o relaie este n FNBC,ea este obligatoriu in FN3.

2.Exist relaii n FN3 care nu sunt n FNBC.

3.Dac o relaie nu este n FNBC,atunci aceast relaie poate fi descompus ntr-un set de proiecii FNBC astfel nct coninutul relaiei iniiale s poat fi refcut fr pierdere de informaie prin jonciunea natural a proieciilor.

Procesul de normalizare poate fi rezumat astfel:

N1.Se transform tabelul iniial ntr-unul sau mai multe tabele cu valori atomice.

N2.Din relaiile de la pasul precedent se elimin toate dependenele funcionale pariale opinnd relaii FN2.

N3.Din relaiile FN2 se elimin toate dependenele funcionale tranzitive de atribute cheie.Se opin relaii FN3.

N4.Se aleg proieciile relaiilor FN3 care elimin acele dependene funcionale n care determinantul nu este cheie candidat i se opin relaii FNBC.

N5.Se aduc relaiile FNBC n FN4.

N6.Se aleg proieciile relaiilor FN4 care elimin dependenele jonciune care nu sunt implicate prin chei candidat .Rezult relaii FN5.

Cap.3 Limbajul SQL

SQL a fost conceput ca un limbaj standard de descriere a datelor si acces la informatiile din baze de date, dezvoltindu-se ca o adevarata tehnologie dedicata arhitecturilor client/server.

Utilizat initial de catre firma IBM pentru produsul DB2, limbajul de interogare a bazelor de date relationale SQL (Structured Query Language) a devenit la mijlocul deceniului trecut un standard in domeniu. De atunci si pina in prezent au fost dezvoltate mai multe versiuni ale standardului SQL, trei dintre ele apartinind Institutului National American de Standarde ( ANSI ), celelalte fiind concepute de firme de prestigiu ca IBM, Microsoft, Borland. Din pacate, lipsa unui standard unic SQL are drept consecinte cresterea costurilor programelor de gestiune a bazelor de date si ingreuneaza intretinerea arhitecturilor client/server. Primul standard SQL a fost creat in anul 1989 de catre ANSI, fiind cunoscut sub numele de ANSI-SQL 89 si a fost revizuit in 1992 sub noua denumire ANSI-SQL 92. Proliferarea intre timp a diferitelor implementari ale limbajului SQL, a determinat formarea consortiului SAG, cu scopul de a concepe un set de standarde SQL, care sa aiba la baza un subset al standardului ANSI-SQL 89 si in plus sa rezolve problemele legate de implementarea acestora in arhitecturi client/server cum ar fi conectivitatea si interfetele cu utilizatorul ale programelor.

In anul 1992, firma Microsoft, in calitate de membru SAG a lansat pe piata produsul ODBC ( Open Database Conectivity ), un standard API-SQL ce are la baza un proiect de standard si defineste o interfata de programare a aplicatiilor ( API ) pentru accesul la baze de date.

Interfata de programare cunoscuta in domeniu sub initialele API, ofera o cale de comunicare intre programe si bazele de date prin apeluri de functii care substituie instructiunile SQL. Astfel, standardele API se bazeaza pe conectivitate, precum si schimbul de date si mesaje SQL.

SQL este un limbaj complet pentru baze de date, cuprinzind comenzi pentru definirea datelor, actualizare si interogare. Deci, este atit un limbaj pentru definirea datelor (DDL), cit si pentru manipularea datelor (DML). In plus, are facilitati pentru definirea viziunilor, pentru crearea si stergerea indecsilor si pentru incapsularea comenzilor SQL in limbaje de programare ca C sau Pascal.

Comenzile SQL pentru definirea datelor sint CREATE, ALTER si DROP.

Comenzile SQL pentru modificarea datelor sint INSERT, DELETE si UPDATE.

SQL are o singura comanda pentru regasirea datelor din bazele de date, SELECT .

Avind in vedere ca in ASP, accesul la bazele de date de tip Access se realizeaza prin intermediul limbajului SQL, voi prezenta in continuare, sintaxa comenzilor SQL in Microsoft Access.

Comanda SELECTPermite returnarea unui set de inregistrari din baza de date. Are urmatoarea sintaxa:

SELECT [predicate] { * | table.* | [table.]field1 [AS alias1]

[,table.]field2 [AS alias2] [, ...]]}

FROM tableexpression [, ...] [IN externaldatabase]

[WHERE... ]

[GROUP BY... ]

[ORDER BY... ]

Comanda SELECT are urmatoarele parti:

- Predicate poate fi unul dintre urmatoarele predicate: ALL, DISTINCT, DISTINCTROW, or TOP, care se utilizeaza pentru a restrictiona numarul de inregistrari returnate. ( implicit este ALL).

- *- specifica selectarea tuturor cimpurilor din tabela sau tabelelor selectate.

- table specifica numele tabelei continind cimpurile din care se selecteaza datele

- field1, field2 reprezinta numele cimpurilor din care dorim regasirea datelor.

- alias1, alias2- reprezinta numele utilizate ca si titluri de coloane in locul numelor coloanelor din tabela

- tableexpression reprezinta numele tabelei sau tabelelor din care se regases datele

- externaldatabase reprezinta numele bazei de date externe, daca tabelele nu sint in cea curenta

Observatii:

Pentru a executa aceasta operatie, motorul de baze de date Microsoft Jet cauta tabela sau tabelele specificate, extrage coloanele alese, selecteaza rindurile care satisfac criteriul si sorteaza sau grupeaza rindurile rezultate in ordinea specificata.

Comanda SELECT nu modifica datele din baza de date.

Daca numele unui cimp apare in mai multe tabele din clauza FROM, el trebuie precedat de numele tabelei si operatorul punct (.).

Clauza WHERE specifica inregistrarile din tabelele ce apar in clauza FROM care vor fi afectate de comanda SELECT. Numai acele inregistari care satisfac criteriul din aceasta clauza vor fi incluse in interogarea rezultat.

Observatii :

Daca nu se specifica clauza WHERE vor fi returnate toate rindurile din tabele. Daca in interogare se specifica mai mult de o tabela si nu specifica clauza WHERE sau JOIN, se efectueaza produsul cartezian al tabelelor, operatie consumatoare de timp.

Clauza ORDER BY permite sortarea inregistrarilor dupa valorile din cimpurile specificate, ascendent sau descendent.

Sintaxa acestei clauze este:

[ORDER BY field1 [ASC | DESC ][, field2 [ASC | DESC ]][, ...]]]

Observatii :

Clauza este optionala. Sortarea implicita este ascendenta, altfel trebuie specificat DESC. In aceasta clauza nu pot apare cimpuri de tip OLE sau Memo.

Clauza GROUP BY combina inregistrarile cu valori identice din lista de cimpuri specificate, intr-o singura inregistrare.Daca in comanda SELECT se specifica una dintre functiile agregat ( Sum, Count, Max ), atunci pentru fiecare astfel de inregistrare se creaza apoi o valoare agregat.

Clauza are urmatoarea sintaxa:

[GROUP BY groupfieldlist]

- groupfieldlist reprezinta numele a cel mult 10 cimpuri utilizate pentru gruparea inregistrarilor. Ordinea acestor cimpuri in lista determina nivelele de grupare de la cel mai inalt pina la cel mai de jos

Observatii:

Clauza este optionala. Valorile agregat sint omise daca in comanda SQL nu se specifica nici o functie agregat. Nu se poate face grupare dupa cimpuri de tip Ole sau Memo.

Jonctiunea interna ( INNER JOIN )

Se specifica cu urmatoare sintaxa:

FROM table1 INNER JOIN table2 ON table1.field1

compopr table2.field2

Operatia INNER JOIN are urmatoarele parti:

- table1, table2 -reprezinta numele tabelelor din care se combina inregistrarile

- field1, field2 reprezinta numele cimpurilor dupa care se face jonctiunea. Daca ele nu sint numerice, trebuie sa fie de acelasi tip, aceeasi dimensiune, dar nu trebuie sa aiba acelasi nume.

- compopr reprezinta orice operator relational: "=," "," "=," sau "."

Observatii:

Acest tip de jonctiune este cel mai utilizat si se poate folosi in orice clauza FROM. Combina inregistrarile din doua tabele, ori de cite ori exista valori care isi corespund in cimpul comun din cele doua tabele.

Nu se poate face jonctiune pe tipuri de date OLE sau Memo.

Comanda UPDATE

Permite modificarea valorilor cimpurilor intr-o tabela specificata, pe baza unui criteriu specificat. Are urmatoarea sintaxa:

UPDATE table

SET newvalue

WHERE criteria

Comanda UPDATE are urmatoarele parti:

- table reprezinta numele tabelei ce contine datele ce vor fi modificate.

- newvalue - este expresia care determina valoarea ce va fi memorata intr-un anume cimp din inregistrarile care se actualizeaza.

- criteria este expresia care determina inregistrarile ce vor fi actualizate

Cap.4 Active Server Pages

4.1 Pagini ASP

O pagina ASP este un fisier stocat pe un server Web si care are extensia .ASP. Aceasta extensie speciala face deosebirea dintre o pagina ASP si un fisier HTML normal care are extensia .HTML sau .HTM.

Cind un utilizator viziteaza un site Web si cere un fisier HTML normal, serverul preia pur si simplu fisierul de pe hard-discul sau din memoria calculatorului si il trimite browserului utilizatorului. Browserul interpreteaza continutul HTML al fisierului si vizitatorul va vedea pagina Web.

Cind cineva solicita o pagina HTML normala, serverul Web nu este interesat de continutul fisierului. Rolul serverului Web se rezuma la preluarea fisierului corect fara a-l prelucra. Toata munca de interpretare a continutului fisierului este realizata de browserul utilizatorului.

Pe de alta parte, cind cineva solicita o pagina ASP, serverul Web va avea un rol mult mai activ. Inainte ca fisierul sa fie trimis catre browserul utilizatorului, el este mai intii prelucrat de catre serverul Web. Acesta din urma interpreteaza si executa orice script-uri dintr-o pagina ASP, inainte ca acesta sa fie trimis catre browserul utilizatorului. Datorita faptului ca o pagina ASP este prelucrata de catre server in loc de browser, o astfel de pagina este compatibila cu toate browserele Web.

Paginile ASP contin script-uri pe parte de server. Ca limbaj de generare a script-urilor, se poate utiliza Microsoft Visual Basic Scripting Edition (VBScript), sau Microsoft Jscript sau PerlScript. Firma Microsoft include Jscript in tehnologia ASP. PerlScript nu este un produs Microsoft.

Limbajele de generare de script-uri, cum este VBScript, difera de limbajele de programare complete, cum sunt Visual Basic si Java, prin simplitatea regulilor si sintaxei lor. De exemplu, VBScript nu necesita declararea variabilelor ca tipuri particulare de date.

Mai mult, spre deosebire de Visual Basic sau Java, o pagina ASP nu trebuie compilata intr-un fisier separat inainte de a o putea executa. Cind modificati o pagina ASP, aceasta este recompilata automat la urmatoarea solicitare.

Avantajul utilizarii unui limbaj de generare de script-uri la construirea paginilor Web este faptul ca acesta faciliteaza modificarea unui site Web chiar si dupa ce a fost lansat in Internet. Daca se descopera o eroare in site, se poate incarca rapid pagina respectiva in programul Notepad sau Wordpad unde se va rezolva problema.

Nu trebuie trasa concluzia ca, daca o pagina ASP utilizeaza un limbaj de generare de script-uri, atunci paginile Active Server sunt lente sau nu asigura acoperirea necesara. Script-urile ASP ruleaza in acelasi proces ca si serverul Web si poate fi divizat in fire de executie. Acest lucru permite unei pagini ASP sa ofere simultan, in mod eficient, suport pentru un numar mare de utilizatori.

O pagina ASP ar fi strict limitata daca nu ar putea contine decit script-uri. S-ar putea afisa ora exacta sau alte mesaje interesante, dar nu ar exista posibilitatea de a prelua informatii de la utilizatori, de a stoca date intr-o baza de date sau de a crea fisiere pe server. Din fericire, o pagina ASP poate contine componente pe parte de server.

O componenta este ceva care, de obicei, are metode, proprietati si colectii.

Metodele unei componente determina actiunile pe care le puteti efectua cu un obiect.

Proprietatile unei componente pot fi citite sau stabilite pentru a preciza starea componentei.

Colectiile unei componente sunt seturi de perechi cheie si valoare, referitoare la componenta.

Paginile Active Server au doua tipuri de componente: obiecte incluse si componente ce pot fi instalate.

Cele sase obiecte incluse in Active Server pages sunt:

Applications - reprezinta informatia care poate fi partajata intre toti utilizatorii unei aplicatii ASP.

ObjectContext - acest obiect se utilizeaza la paginile ASP care se ocupa de tranzactii

Request - reprezinta toate informatiile trimise de browser catre server, inclusiv variabile de forma si siruri interogare.

Response - reprezinta toate informatiile trimise de la un server catre un browser, inclusiv continutul HTML trimis de catre o pagina ASP.

Server - permite folosirea pe server a diferite functii utilitare

Session - reprezinta informatia referitoare la sesiunea de lucru particulara a unui utilizator.

In paginile Active Server este inclus un set special de obiecte : ActiveX Data, care permit accesarea unei baze de date dintr-o pagina ASP. Aceste obiecte se utilizeaza pentru a insera, actualiza si sterge linii dintr-un tabel. Aceste obiecte se pot folosi, de asemenea, pentru a prelua un set de inregistrari dintr-o tabela si a le afisa intr-o pagina ASP.

4.2 Accesarea bazelor de date

ActiveX Data Objects ( ADO ) reprezinta o tehnologie extensibila si usor de utilizat care permite accesul la baze de date din cadrul paginilor de Web. ADO se poate utiliza pentru a scrie scripturi compacte si scalabile pentru conectarea la baze de date prin intermediul ODBC ( Open Database Connectivity ).

Inainte de a putea deschide o conexiune la o baza de date, va trebui sa furnizam paginii ASP informatii despre localizarea fizica a bazei de date. Cu alte cuvinte trebuie sa furnizam script-ului o metoda de gasire a bazei de date pe unitatea de hard disc. O cale de a realiza acest lucru cu ajutorul numelui de sursa de date ( Data Source name-DSN).

Se pot crea doua tipuri diferite de nume de sursa de date. In cazul in care se creaza un nume de sursa fisier (File DSN), informatia despre conectarea la baza de date va fi stocata intr-un fisier. In cazul in care se creaza un nume de sursa de sistem, informatia despre conectarea la baza de date va fi stocata in baza de date Registry a calculatorului.

Nu exista motive speciale care sa impuna utilizarea unuia sau celuilalt tip de nume de sursa de date. Ambele tipuri functioneaza la fel de bine, dar eu am utilizat in aplicatie un num,e de sursa de date sistem.

Pentru a crea un fisier DSN de tip System pentru o baza de date de tip MS Access se procedeaza astfel:

1. Din meniul Start din Windows se alege optiunea Settings apoi Control Panel

2. Dublu-click pe icoana ODBC ceea ce conduce la afisarea ferestrei ODBC Data Source Administrator

2. Se selecteaza optiunea System DSN3. Se selecteaza butonul Add pentru a alege driverul bazei de date si apoi se apasa butonul Finish

4. Se introduce un nume pentru fisierul DSN in caseta Data Source Name

5. Prin apasarea butonului Select se alege o baza de date de tip Access ( *.mdb ) existenta si apoi se apasa butonul OK.

Conectarea la o baza de date

Primul pas in vederea accesarii informatiilor dintr-o baza de date este stabilirea unei conexiuni cu sursa datelor. In acest scop, ADO furnizeaza obiectul Connection care permite stabilirea si administrarea conexiunilor intre aplicatie si baza de date ODBC. Obiectul Connection are o mare varietate de proprietati si metode care permit deschiderea si inchiderea conexiunilor la baza de date, transmiterea interogarilor pentru selectarea si actualizarea datelor.

Pentru a stabili o conexiune la baza de date trebuie creata o instanta a obiectului Connection. Scriptul urmator creaza o instanta a obiectului Connection si apoi deschide conexiunea :

Obiectul Server furnizeaza accesul la metodele si proprietatile de pe server. Multe dintre aceste metode si proprietati servesc ca si functii utilitare.

Sintaxa este :

Server. proprietate | metoda

Metodele sale sint : CreateObject, HTMLEncode, MapPath si URLEncode, iar proprietatea sa este ScriptTimeout. In continuare se va descrie metoda CreateObject care a fost folosita in aplicatie.

Metoda CreateObject creaza o instanta a unei componente server. Sintaxa este :

Server.CreateObject ( progID)

Parametrul progID specifica tipul de obiect care se creaza.

Implicit, obiectele create cu aceasta metoda au ca scop pagina, ceea ce inseamna ca sint distruse automat de catre server atunci cind acesta termina de procesat pagina ASP curenta.

Un obiect se mai poate distruge fie prin setarea variabilei la Nothing, fie prin setarea ei la o noua valoare.

Nu se poate crea o instanta a unui obiect avind acelasi nume ca si un obiect bult-in. De exemplu,

va genera eroare.

Executarea interogarilor cu ajutorul obiectului Connection

Dupa deschiderea unei conexiuni cu ajutorul metodei Open a obiectului Connection, se poate utiliza metoda Execute a aceluiasi obiect pentru a transmite interogari SQL catre baza de date.Scriptul urmator utilizeaza metoda Execute a obiectului Connection pentru a transmite bazei de date o comanda SQL Update, care insereaza date intr-o anume tabela.