SlideShare ist ein Scribd-Unternehmen logo
1 von 78
Downloaden Sie, um offline zu lesen
PROIECT DE DIPLOMĂ




Aplicaţie pentru managementul documentelor




        Prezentată Facultăţii de Automatică şi Calculatoare
          din Universitatea Politehnică Bucureşti de către




                       LUPU Ionut-Marius



                           in Iulie 2010




         Coordonator: prof. dr. ing. Valentin SGARCIU
Abstract




Abstract


        Documentul este o unealtă de comunicare importantă între departamentele organizaţiilor
şi în relaţiile cu alte companii. Sistemele de management al documentelor sunt folosite de
organizaţii din toate sectoarele publice şi private pentru a organiza şi structura documentele
electronice precum şi pentru a urmări fluxul acestora în cadrul companiei şi în punctele de
intrare/ieşire ale acesteia.
        Această lucrare îşi propune implementarea unei aplicaţii de management al
documentelor care permite gestiunea şi urmărirea documentelor, precum şi arhivarea acestora,
asigurând un echilibru între securitate şi accesibilitate, protejând informaţiile şi în acelasi timp
oferind un acces usor şi rapid pentru a ajuta personalul companiei să lucreze cu un maxim de
eficienţă.




                                                                                                 2
Cuprins




Cuprins



     Abstract …...........................................................................................................i
     Cuprins …...........................................................................................................3
1.   Introducere ….....................................................................................................5
     1.1 Sistemele de management al documentelor .................................................5
               1.1.1 Definirea documentului …...............................................................5
               1.1.2 Caracteristici ….........................................................................…...6
               1.1.3 Avantaje ..........................................................................….............9
     1.2 Scopul proiectului ….......................................................................................9
2.   Aplicaţii similare de management al documentelor …..................................11
     2.1 Biblioteci de documente …............................................................................11
     2.2 Aplicaţii de flux (workflow) ….........................................................................12
3.   Specificaţii de proiectare ….......................................…...................................14
     3.1 Stabilirea obiectivelor de proiectare ..............................................................14
     3.2 Interfaţa cu utilizatorul ...................................................................................15
4.   Limbaje de programare folosite .......................................................................17
     4.1 PHP (Hypertext Preprocessor) ......................................................................17
     4.2 SQL (Structured Query Language - Limbaj Structurat de Interogare) ..........20
               4.2.1 MySql ..............................................................................................20
     4.3 HTML (HyperText Markup Language) ...........................................................22
5.   Proiectarea conceptuală a bazei de date .........................................................24
     5.1 Noţiuni generale .............................................................................................24
     5.2 Modelul Entitate-Asociere (EA) ......................................................................25
               5.2.1 Identificarea tipurilor de entităţi ........................................................25
               5.2.2 Identificarea tipurilor de asocieri ......................................................27
               5.2.3 Identificarea şi asocierea atributelor cu tipurile de entităţi sau relaţii ..29
               5.2.4 Diagrama Entitate-Asociere .............................................................32
     5.3 Modelul relaţional ............................................................................................36
               5.3.1 Noţiuni generale ...............................................................................36
               5.3.2 Descrierea structurii tabelelor folosite şi legăturilor dintre acestea .40




                                                                                                                              3
Cuprins




6.    Interogarea bazei de date ................................................................................52
      6.1 Noţiuni generale ...........................................................................................52
      6.2 Conectarea la baza de date .........................................................................55

      6.3 Inserarea inregistrărilor ................................................................................56
      6.4 Selectarea inregistrărilor ..............................................................................57
      6.5 Actualizarea inregistrărilor ...........................................................................57
      6.6 Ştergerea inregistrărilor ...............................................................................58
7.    Prezentarea aplicaţiei ......................................................................................59
      7.1 Structură ......................................................................................................59
                7.1.1 Modulul client ................................................................................59
                7.1.2 Modulul administrator ....................................................................68
8.    Detalii de implementare a aplicaţiei ...............................................................70
      8.1 Implementarea modulelor ............................................................................70
      8.2 Optimizări şi performanţe .............................................................................73
                8.2.1 Normalizarea bazei de date ...........................................................73
                8.2.2 Utilizarea procedurilor stocate .......................................................75
                8.2.3 Promovare .....................................................................................76
9.    Concluzii şi dezvoltări ulterioare ....................................................................77
10.   Bibliografie .......................................................................................................78




                                                                                                                               4
1. Introducere




1. Introducere




1.1 Sistemele de management al documentelor


          Istoria sistemelor pentru managementul documentelor cunoaşte două mari perioade de
evoluţie. Primele soluţii dezvoltate erau sisteme in cadrul cărora scopul era in principal
„arhivarea electronică‖, reprezentand o alternativă la micrografie. In acea perioadă, 90% dintre
soluţii erau concentrate in domeniile de administraţie publică şi bănci-asigurări. A doua perioadă
incepe in 1995 odată cu evoluţia reţelelor, a soluţiilor multimedia şi a informaticii in general.
Astfel:
          • documentul electronic a devenit multimedia: nu mai este vorba numai despre texte, dar
          şi despre imagini, sunet, video, etc. ce pot fi integrate;
          • un mare progres ce a fost realizat se referă la capacităţile de stocare la costuri din ce in
          ce mai scăzute (de exemplu DVD-urile);
          • au apărut din ce in ce mai multe standarde referitoare la protocoalele de reţele, la
          sistemele de exploatare şi la conectivitatea intre diferitele platforme;
          • interfeţele om-maşină s-au simplificat mult pentru a face informatica accesibilă pentru
          mai multe persoane.
          Justificarea achiziţionării unui sistem pentru managementul documentelor devine
astfel, parte importantă şi integrantă a sistemului informaţional al organizaţiilor şi joacă din
acest moment un rol economic şi strategic deoarece prin utilizarea şi administrarea eficientă
a informaţiei se poate obţine avantaj competitiv.


1.1.1 Definirea documentului


          Inainte de revoluţia digitală, documentul nu era altceva decat ceea ce definea
dicţionarul: "act prin care se adevereşte, se constată sau se preconizează un fapt, se conferă un
drept, se recunoaşte o obligaţie; text scris sau tipărit, inscripţie sau altă mărturie servind la
cunoaşterea unui fapt real actual sau din trecut" (DEX ediţia a II-a 1996, Editura Univers



                                                                                                     5
1. Introducere




Enciclopedic). Pe scurt, un document era o foaie de hartie pe care era scris un lucru important,
ce putea fi o informaţie.
       Astăzi, tehnologiile integrate, puternice, pe care le avem permit o redefinire a
documentului: "orice pachet de date structurate care poate fi folosit ca informaţie". Adică un
document poate fi aproape orice: holograme, CD-ROM-uri, secvenţe video.
       Un document tipic devine o compoziţie cu text şi elemente multimedia, tipărită mult mai
rar ca inainte. Documentul poate fi citit, vizualizat, auzit simultan pe dispozitive wireless
portabile sau pe echipamente de birou. Cu ajutorul acestuia se pot realiza tranzacţii de oriunde,
fără constrangeri de spaţiu şi timp.
       Aşadar, apare noţiunea de document electronic. Documentul electronic implică orice
conţinut media electronic (text, imagine grafică, arhive, e-mail, etc.), atat timp cat nu
desemnează un program pe calculator sau fişiere sistem, fiind destinat folosirii intr-o formă
electronică sau in variantă printată. Odată cu dezvoltarea reţelelor de calculatoare, s-a dovedit
faptul că in cele mai multe cazuri este mult mai convenabil să distribuim documentele
electronice decat cele printate.


1.1.2 Caracteristici


Definiţie


       Un sistem de management al documentelor reprezintă un sistem informatic, folosit
pentru a crea, gestiona, distribui şi controla documente electronice, cu facilitaţi de conectare la
alte sisteme informatice sau dispozitive electronice.
       In general, un sistem performant de management al documentelor:
       • implementează rapid fluxuri de documente
       • este flexibil la orice structură organizaţională
       • are un grad inalt de securitate
       • este adaptabil la orice tip de document
       • este conectabil la alte aplicaţii
       • prezintă uşurinţă in exploatare
       • este scalabil la dezvoltări ulterioare.


Componentele de bază ale unui sistem de management al documentelor:



                                                                                                6
1. Introducere




        Sistemele de management al documentelor implică de obicei stocare, control al
versiunilor, date meta, securitate precum şi posibilităţi de indexare şi recuperare. O descriere a
acestor componente este prezentată mai jos:


• Date meta
        Această componentă este atribuită fiecărui document in parte. Ca exemplu, datele meta
pot include data la care documentul a fost salvat şi identitatea utilizatorului care a salvat acel
document. Sistemul de management al documentelor poate extrage automat datele meta din
cadrul unui document, sau poate atenţiona utilizatorul să o introducă. Unele sisteme pot utiliza o
recunoaştere optică 1 a caracterelor asupra imaginilor scanate sau pot extrage text din
documente electronice. Textul rezultat poate fi de ajutor pentru utilizatori in cazul localizării
documentelor prin identificarea cuvintelor cheie.


• Captura
        Imagini ale documentelor hartie folosind scannere sau imprimante multifuncţionale.
Recunoaşterea optică a caracterelor este des folosită in acest caz.


• Indexare
        Folosită pentru a ţine evidenţa documentelor electronice. Poate varia de la forme simple
cum ar fi stabilirea identificatorilor unici ai documentelor pană la forme complexe precum
clasificarea dupa datele meta ale documentelor sau indici ai cuvintelor extrase din conţinutul
acestora.


• Stocare
        Stocarea documentelor implică de multe ori o gestionare a acestora; unde au fost
salvate, pentru cat timp, migrarea documentelor de la un mediu de stocare la altul precum şi
distrugerea acestora.


• Recuperare
        Implică obţinerea documentelor din mediul in care au fost stocate. Acest proces poate fi
unul complex. In varianta simplă, recuperarea documentelor individuale poate fi realizată prin
specificarea de către utilizator a identificatorului unic atribuit documentului respectiv. O

1
 Recunoaşterea optică a caracterelor reprezintă translatarea mecanică sau electronică a imaginilor cu scris de
mană, tipărit sau printat (de obicei scanat) in text editabil.



                                                                                                           7
1. Introducere




recuperare mai flexibilă, implică specificarea de către utilizator a unor termeni parţiali de căutare
implicand identificatorul documentului şi/sau părţi din datele meta atribuite acestuia.


• Securitate
        Securitatea documentelor este un lucru vital in astfel de sisteme. Multe aplicaţii de
management al documentelor au implementat un modul de atribuire de drepturi de către
administrator, asupra documentelor, pentru anumiţi utilizatori sau grupuri de utilizatori.
Securitatea implică şi atribuirea de semnături digitale asupra documentelor pentru validarea
autenticităţii acestora precum şi transmiterea lor de la server la client sau invers folosind
conexiuni sigure (SSL2).


• Workflow (Aplicaţii de flux)
        Documentele intr-o organizaţie nu sunt statice. Ele sunt create, modificate, distribuite pe
rute clar definite. De aceea, sistemele de management de documente conţin aplicaţii de flux
care determină cu precizie unde se trimite un document, dacă a ajuns la destinaţie, cand a fost
redirectat şi care este statutul lui la un moment dat. Permit automatizarea proceselor din cadrul
organizaţiei, rutand un document sau un folder de documente către utilizatori şi grupuri folosind
un set de reguli stabilite de noi. Ele pot fi manuale, bazate pe reguli sau automate.


• Colaborare
        Atunci cand un utilizator autorizat face modificări asupra unui document, accesul
celorlalţi utilizatori trebuie să fie blocat atat timp cat se desfaşoară acea activitate.


• Controlul versiunilor
        Versiunea unui document este o copie intermediară a unui document sau o actualizare a
unui document precedent. Prin crearea şi păstrarea transparentă a versiunilor unui document
este posibilă urmărirea evoluţiei acestuia.


• Publicare
        Un document publicat trebuie să fie intr-un format care nu poate fi modificat uşor decat
cu unelte sau cunoştinţe specifice, fiind totodată ―read-only‖ sau portabil.


2
  SSL (Secure Sockets Layer) este un acronim care reprezintă un protocol Web dezvoltat de Netscape pentru a
transmite documente private prin Internet.



                                                                                                        8
1. Introducere




Funcţiile de bază ale sistemelor de management al documentelor
       Sistemele de management al documentelor asigură:


       • Alocarea unui număr unic de inregistrare fiecărui document
       • Stabilirea locului unde se află fiecare document activ.
       • Urmărirea intregului ciclu de viaţă al unui document
                - personalul insărcinat cu recepţia acestuia.
                - momentul la care a fost recepţionat.
                - persoana care răspunde de avizarea/răspunsul formulat.
                - data la care răspunsul/avizarea au fost finalizate.
       • Controlul versiunii.


1.1.3 Avantaje


       Tradiţionalele sisteme de operare ca DOS şi Windows nu au reuşit să ofere uneltele şi
resursele necesare pentru gestiunea documentelor.
       Spre deosebire de sistemele manuale, sistemele automate de management al
documentelor:
       • Stochează informaţiile legate de document intr-un singur loc
       • Permit accesul rapid la locul in care se află documentul in organizaţie
       • Informează privind stadiul de avizare (rezoluţie) in care se află un document
       • Urmăresc timpul necesar finalizării unei avizări (rezoluţii) şi cele care au depăşit acest
       termen
       • Vizualizează numărul de documente intrate zilnic, săptămanal şi lunar.


1.2 Scopul proiectului


       Scopul proiectului este de a realiza o aplicaţie de management al documentelor bazată
pe tehnologii web, care să ofere utilizatorilor dintr-o reţea soluţii privind problemele de stocare,
căutare, de urmărire şi de control a propriilor documente electronice, ele putand fi accesate de
oriunde şi oricand.
       Aplicaţia este realizată pentru a gestiona :



                                                                                                  9
1. Introducere




• Fluxul Documentelor :
       – Gestiunea documentelor dintr-o organizaţie
       –Inregistrarea documentelor prin atribuirea de numere unice in cadrul
        organizaţiei
       –Clasificarea documentelor
       –Identificarea sursei
       –Căutarea şi regăsirea rapida a documentelor
       –Stările documentelor
       –Acces rapid la documente prin browsere web standard
• Arhivarea documentelor electronice:
       –Fişierele sunt salvate intr-un mediu de stocare secundar
       –Informaţia     este    centralizată    fiind   uşor   de   regăsit   şi   controlat.




                                                                                        10
2. Aplicatii similare de management al documentelor




2. Aplicaţii similare de management al documentelor




Sumar. In acest capitol sunt descrise cateva aplicatii cu funcţionalitate similara cu cea din
cadrul proiectului.


2.1 Biblioteci de documente


        Elemente centrale al unui sistem de management de documente, bibliotecile de
documente conţin:


        • Documente relative la proiect.
        • Proceduri ale sistemului calităţii, manualul calităţii.
        • Norme, proceduri, regulamente care trebuiesc consultate de personal.
        • Documente interne etc.
        Un exemplu concret de astfel de aplicaţii il reprezintă DocPlus Biblioteca de documente.
Beneficii
        -Oferă acces rapid la biblioteci electronice cu informaţii şi documente utile, acces la baze
de discuţii tematice sau colaborative;
        -Asigură utilizatorilor acces la documente tematice, departamentale şi transfer de ―know-
how‖, in baza drepturilor de acces definite, biblioteci disponibile pentru toţi membrii unei echipe
sau ai unui grup de lucru;
        -Reduce incărcarea inutilă a reţelei, fiind transmise doar legături (link-uri) către
documentele de interes, din cadrul bibliotecii virtuale; imbunătăţeşte colaborarea intre echipele
de lucru prin partajarea şi distribuţia informaţiilor;
        -Asigură reducerea costurilor asociate cu gestiunea şi arhivarea diferitelor tipuri de
documente ale departamentelor, precum şi timpul alocat activităţilor de arhivare şi regăsire a
documentelor;
        -Creşte eficienţa personalului prin reutilizarea informaţiilor stocate in aplicaţii partajate
sau utilizarea acestor informaţii ca bază de plecare in rezolvarea de situaţii similare;




                                                                                                 11
2. Aplicatii similare de management al documentelor




        -Permite gruparea documentelor in zone de interes pentru acces rapid la acestea,
precum şi crearea unor profile de interes pentru notificare automată de către sistem in cazul
apariţiei unor informaţii noi care corespund profilelor create.


2.2 Aplicaţii de flux (workflow)


        Documentele intr-o organizaţie nu sunt statice. Ele sunt create, modificate, distribuite pe
rute clar definite. De aceea, sistemele de management de documente conţin aplicaţii de flux
care determină cu precizie unde se trimite un document, dacă a ajuns la destinaţie, cand a fost
redirectat şi care este statutul lui la un moment dat.
        DocPlus Circuitul documentelor este o aplicaţie care permite automatizarea, gestionarea
şi monitorizarea proceselor interne de lucru, care pot fi imbunătăţite, rafinate, iar erorile pot fi
reduse intrucat paşii de flux predefiniţi sunt rezultatul unei analize a proceselor de lucru. Odată
cu evoluţia fluxurilor de lucru, profilul acestora se poate modifica cu uşurinţă.
        Modulul se adresează oricărei tip de organizaţii, fie că este organizaţie guvernamentală,
companii mari sau din segmentul intreprinderilor mici şi mijlocii, fiind un instrument de lucru
eficient utilizatorilor sistemului şi managementului organizaţiei.
        Integrarea cu platforma internă de comunicare mail şi in timp real este nativă, permiţand
utilizatorilor sistemului de management al documentelor să fie notificaţi asupra acţiunii de
aprobare, informare a unor documente.
        Documentele vor putea fi accesate şi se va putea lucra asupra lor indiferent de locul in
care se află utilizatorii autorizaţi. Acest lucru este posibil utilizand funcţiile avansate de lucru off-
line pe care sistemul le pune la dispoziţie.
        Timpii de aşteptare pentru acţionarea asupra documentelor urgente sunt eliminaţi,
productivitatea fiind susţinută prin eficienţă. Aceeaşi eficienţă se remarcă şi prin utilizarea
capabilităţii de comunicare in timp real din orice locaţie cu persoanele implicate in activitatea
respectivă pentru schimb de idei, informaţii şi luare de decizii.
Circuitul documentelor asigură suportul pentru automatizarea proceselor interne ale
organizaţiei, pune la dispoziţie instrumente pentru definirea circuitului diverselor tipuri de
documente, in scopul aprobării interne şi informării, furnizand in orice moment rapoarte privind
stadiul de aprobare, tipurile de documente procesate şi alte informaţii specifice.




                                                                                                     12
2. Aplicatii similare de management al documentelor




Beneficii
       -Oferă un mecanism automatizat de circulaţie internă a documentelor de diverse tipuri,
definite intern: cerere achiziţie, cerere concediu, referat deplasare, decontare, sau alte
formulare specifice organizaţiei.
       -Oferă un cadru unitar şi standardizat pentru operarea documentelor interne de către
personal.
       - Asigură circulaţia documentelor in interiorul organizaţiei pe trasee predefinite sau
stabilite de către autorul documentului, cu posibilitatea aprobării sau respingerii acestora şi
adăugarea de comentarii.
       -Pune la dispoziţie multiple criterii de definire a fluxului de aprobare, a aprobatorilor finali,
a timpilor de aşteptare, de informare.
       -Permite urmărirea stării documentelor pe parcursul fluxului, precum şi evidenţierea
modului de rezolvare a fiecărui document de către responsabilii desemnaţi.
       -Oferă posibilitatea de a obţine rapoarte privind documentele rezolvate sau aflate in lucru
dupa criterii precum stare, tip, responsabil etc.
       -Asigură integrarea cu sistemul de comunicare in timp real pentru afişarea disponibilităţii
persoanelor pentru comunicare sau schimb de idei.
       -Asigură obţinerea de rapoarte specifice după persoane, stare document, tip document,
fiecare persoană avand acces la documentele proprii sau la cele comune, in funcţie de
drepturile de acces stabilite.
       -Eficientizează lucrul cu documentele pe hartie şi automatizează procesele de aprobare
internă şi informare, reducand timpul necesar manipulării documentelor.




                                                                                                    13
3. Specificatii de proiectare




3. Specificaţii de proiectare




Sumar. In acest capitol sunt prezentate cerinţele de proiectare ale aplicaţiei. Acest lucru
presupune o bună formulare şi inţelegere a problemei, evidenţiind necesităţile informaţionale ale
organizaţiei. Această intelegere poate conduce la o distincţie netă intre analiză ("ce trebuie
făcut?") şi proiectarea ("cum trebuie făcut?") aplicaţiei.


3.1 Stabilirea obiectivelor de proiectare


        Aplicaţia va prezenta următoarele caracteristici, in ceea ce priveşte stabilirea obiectivelor
de proiectare.


        • independenţa de platformă
        • uşurinţă in exploatare
        • nu necesită instalare sau alte configurări
        • grad inalt de securitate
        • adaptabilă la orice tip de document
        • dinamică
        Obiectul de bază cu care operează aplicaţia este documentul electronic.
        Documentele sunt introduse de către utilizatori in baza de stocare a organizaţiei prin
reţeaua Internet prin completarea unor formulare on-line specifice. Aceste formulare vor fi
proiectate astfel incat să permită crearea de documente noi, sau rescrierea acestora peste cele
vechi. Totodată, sunt preluate de către sistem şi verificate in ceea ce priveşte completitudinea şi
corectitudinea datelor introduse de utilizator. De asemenea datele introduse sunt supuse unor
prelucrări menite a proteja sistemul informatic la atacuri informatice (dezactivarea caracterelor
speciale, eliminarea eventualelor tag-uri sau secvenţe de cod).
        Structura documentelor in cadrul aplicaţiei trebuie să fie aceeaşi cu cea de pe suportul
fizic pe care sunt stocate, facilitand astfel funcţia de adaptabilitate şi scalabilitate a aplicaţiei.




                                                                                                         14
3. Specificatii de proiectare




        Documentele companiilor sunt puse in comun angajaţilor acestora intr-un mediu
securizat. Se va folosi o transmisie criptată a acestora (SSL), informaţiile din baza de date
precum şi documentele electronice efective vor fi salvate in mod regulat (―backup‖), iar accesul
documentelor de către utilizatori se va face pe baza drepturilor caştigate.
        Mai mult, se vor folosi funcţii hash de criptare/decriptare pentru garantarea autenticităţii
şi confidenţialităţii documentelor şi datelor despre utilizatori dar şi pentru stabilirea modificărilor
făcute asupra documentelor.
        Aplicaţia va fi modularizată, pentru o inţelegere şi distribuire mai bună a sarcinilor in
etapa de implementare.
        Pentru asigurarea calităţii aplicaţiei, aceasta trebuie indeplinească următoarele:


Increderea
        Este garantată buna funcţionare precum şi corectitudinea stocării datelor obţinute de la
utilizatori in baza de date. Eventualele erori ce pot să apară vor fi in stransă legatură cu starea
sistemului pe care este rulată aplicaţia, dar şi cu starea resurselor ce sunt utilizate.


Fiabilitatea
        Posibilitatea de accesare a aplicaţiei web depinde de funcţionalitatea serverului pe care
este rulată aplicaţia, cat şi de starea bazei de date. Aplicaţia web in discuţie este construită
pentru a fi folosită in condiţii optime o perioadă indelungată de timp, efectuanduse operaţii din
cele mai diverse.


Securitatea
        Este asigurată păstrarea confidenţialităţii datelor introduse de utilizatorii care au cont in
cadrul aplicaţiei.


Toleranţa la erori
        Aplicaţia are o toleranţa ridicată la erori. Eventualele erori ce pot să apară depind de
configuraţia serverului pe care rulează aplicaţia şi de baza de date utilizată.




                                                                                                   15
3. Specificatii de proiectare




3.2 Interfaţa cu utilizatorul

        Interfaţa este intuitivă, prezentand uşurinţă in exploatare indiferent de gradul de
cunoştinţe al utilizatorului.
        Interfaţa cu utilizatorul implică un set de funcţionalităţi prin care acesta trimite comenzi
pentru a fi rulate in mediul de execuţie.
        Interfaţa este aceeaşi atat pentru utilizatorul obişnuit cat şi pentru administratorul
aplicaţiei, cu excepţia faptului că cel din urmă beneficiază de anumite facilităţi in plus, cum ar fi
adăugarea, editarea sau ştergerea de utilizatori, stabilirea perioadei de timp după care incepe
să se desfăşoare procesul de arhivare etc.
        Funcţionalităţile de bază sunt: crearea efectivă a documentelor, ştergerea , modificarea,
copierea , mutarea, căutarea şi redenumirea acestora. Alte facilităţi specifice interfeţei implică
faptul că utilizatorii vor putea seta drepturi de acces asupra documentelor pentru anumiţi
utilizatori, sau crea fluxuri de lucru.
        Interfaţa vizitatorului este mai redusă, acesta avand doar drepturi de căutare şi
vizualizare şi nu are acces la modificarea datelor din bază.
        Accesul la interfaţa utilizatorului este garantat prin browser-ul web (Opera, Mozilla
Firefox, Internet Explorer, Safari etc) care la randul său reprezintă o interfaţă de comunicare cu
server-ul pe care rulează aplicaţia.




                                                                                                 16
4. Limbaje de programare folosite




4. Limbaje de programare folosite




Sumar. In acest capitol sunt prezentate principalele limbaje de programare ce stau la baza
implementării aplicaţiei.


4.1 PHP (Hypertext Preprocessor)


          PHP este un limbaj de programare destinat in primul rand Internetului, aducand
dinamică unei pagini de web. Este unul din cele mai importante limbaje de programare web
open-source şi server-side.
          Numele PHP provine din limba engleză şi este un acronim recursiv: Php: Hypertext
Preprocessor. Exemple faimoase de utilizare a acestui limbaj sunt PhpBB (forum),
PhpNuke(CMS), chiar şi MediaWiki, software-ul din spatele Wikipedia. Folosirea PHP poate fi
văzută ca o alternativă gratuită la utilizarea unor limbaje comerciale cum sunt ASP de la
Microsoft, ColdFusion de la Macromedia, sau chiar JSP de la Sun Microsystems.


Istoric
          PHP a insemnat iniţial Personal Home Page. PHP a fost inceput in 1994 ca o extensie a
limbajului server-side Perl, şi apoi ca o serie de CGI-uri compilate de către Rasmus Lerdorf,
pentru a genera un curriculum vitae şi pentru a urmări numărul de vizitatori ai unui site. Apoi a
evoluat in PHP/FI 2.0, dar proiectul open-source a inceput să ia amploare după ce Zeev Suraski
şi Andi Gutmans, de la Technion au lansat o nouă versiune a interpretorului PHP in vara anului
1998, această versiune primind numele de PHP 3.0. Tot ei au schimbat şi numele in acronimul
recursiv de acum, pană atunci PHP fiind cunoscut ca Personal Home Page Tools. Apoi Suraski
şi Gutmans au rescris baza limbajului, producand astfel şi Zend Engine in 1999. In mai 2000 a
fost lansat PHP 4.0, avand la bază Zend Engine 1.0.


Evolutie
          - PHP 5




                                                                                             17
4. Limbaje de programare folosite




        Pe 13 iulie 2004 a fost lansat PHP 5, cu Zend Engine II, ce a adus şi o orientare obiect
mai pronunţată şi suportand mai multe caracteristici ale acestui tip de programare.
        PHP 5 aduce mai multe noutăţi faţă de versiunea 4:
        • Suport imbunătăţit pentru OOP
        • Introduce extensia PDO - PHP Data Objects, care defineşte o modalitate facilă şi
consistentă de accesare a diferitelor baze de date
        • Imbunătăţiri de performanţă
        • Suport imbunătăţit pentru MySQL şi MSSQL
        • Suport nativ pentru SQLite
        • Suport SOAP integrat
        • Iteratori pentru date
        • Controlul erorilor prin tratarea de excepţii


PHP 6
        PHP 6 are următoarea agendă de imbunătăţiri şi modificări:
        • imbunătăţirea suportului pentru Unicode
        • retragerea definitivă a unor funcţii ca register_globals şi magic_quotes, şi a variabilelor
tip $HTTP_*_VARS
        • var va fi un alias pentru public, şi folosirea lui va ridica o atenţionare E_STRICT
        • suport pentru int pe 64 biti
        • taguri tip ASP sunt retrase definitiv
        • erorile tip E_STRICT sunt incluse in E_ALL
        • adaugarea instrucţinuii goto permite salturi la un alt bloc de comenzi
        • namespace, import, şi goto devin cuvinte rezervate
        • opţiunea safe_mode a fost inlăturată
        • operatorul and a fost inlăturat.


Popularitate
        PHP-ul este unul din cele mai folosite limbaje de programare server-side, conform unui
studiu efectuat de Netcraft in aprilie 2002, apărand pe 9 din cele 37 milioane de domenii
cercetate in studiu. De asemenea, există un grafic al creşterii folosirii PHP-ului pe site-ul oficial.
Popularitatea de care se bucură acest limbaj de programare se datorează următoarelor
caracteristici :
        - Familiaritatea : sintaxa limbajului este foarte uşoară combinand sintaxele unora din



                                                                                                  18
4. Limbaje de programare folosite




cele mai populare limbaje Perl sau C;
       - Simplitatea : sintaxa limbajului este destul de liberă. Nu este nevoie de includere de
biblioteci sau de directive de compilare, codul PHP inclus intr-un document executanduse intre
marcajele speciale;
       - Eficienţa : PHP-ul se foloseşte de mecanisme de alocare a resurselor, foarte necesare
unui mediu multiutilizator, aşa cum este web-ul;
       - Securitate : PHP-ul pune la dispoziţia programatorului un set flexibil şi eficient de
măsuri de siguranţă;
       - Flexibilitate : fiind apărut din necesitatea dezvoltării web-ului, PHP a fost modularizat
pentru a ţine pasul cu dezvoltarea diferitelor tehnologii. Nefiind legat de un anumit server web,
PHP-ul a fost integrat pentru numeroasele servere web existente:
       Apache, IIS, Zeus, server, etc.;
       - Gratuitate : este probabil cea mai importantă caracteristică a PHP-ului. Dezvoltarea
PHP-ului sub licenţa open-source a determinat adaptarea rapidă a PHP-ului la nevoile webului,
eficientizarea şi securizarea codului.


Scrierea unui script PHP
       Pentru a crea scripturi PHP, majoritatea programatorilor PHP folosesc un editor de texte
obişnuit. Sub Microsoft Windows se utilizează frecvent Windows Notepad , WordPad sau chiar
un procesor de texte precum Microsoft Word.


Scrierea scheletului programelor PHP
       Fiecare program PHP include două linii speciale , care indică serverului PHP că textul
cuprins intre cele două linii este alcătuit din instrucţiuni PHP. Aceste 2 linii intre care se scrie
scriptul PHP sunt : <?php şi ?>.
       După scrierea scriptului acesta se salvează sub formă de fişier text , cu un nume care
respectă următoarele reguli :
       • Numele fişierului trebuie să fie alcătuit numai din caractere minuscule, cifre şi liniuţe.
       Utilizarea spaţiilor şi a altor caractere este interzisă.
       • Extensia fişierului trebuie să fie .php.


Crearea datelor de ieşire pentru un browser Web
       Programele PHP execută trei categorii de operaţii elementare :
       • Obţin date de la utilizator



                                                                                                19
4. Limbaje de programare folosite




         • Execută prelucrări ale datelor, respectiv obţin accesul la datele stocate in fişiere şi baze
de date şi le manipulează
         • Afişează date astfel incat un utilizator să le poată vizualiza.
         Instrucţiunea care trimite date de ieşire la un browser Web astfel incat acestea să fie
vizibile pentru utilizatori - numită instrucţiune de reflectare este :
         • echo (―text afişat ―) ;


Suport
         PHP are un manual oficial intreţinut de comunitatea din jurul proiectului. In plus,
răspunsurile la multe probleme pot fi găsite printr-o simplă căutare pe internet. Există multe
resurse disponibile pentru un programator PHP incepător.


4.2 SQL (Structured Query Language)


         SQL (Structured Query Language - Limbaj Structurat de Interogare) este un limbaj de
programare specific lucrului cu bazele de date, devenit un standard in domeniu (standardizat
ANSI-ISO), fiind cel mai popular limbaj utilizat pentru crearea, modificarea, regăsirea şi
manipularea datelor de către SGBD-urile (Sistemele de Gestiune a Bazelor de Date) relaţionale.
Pe langă versiunile standardizate ale limbajului, există o mulţime de dialecte şi variante, unele
proprietare, fiind specifice anumitor SGBD-uri şi de asemenea conţinand extensii pentru a
suporta SBD-urile (Sistemele de Baze de Date) obiectuale (obiectual-relaţionale).
         SQL permite atat accesul la conţinutul bazelor de date, cat şi la structura acestora.


4.2.1 MySql


         MySQL este un sistem de gestiune a bazelor de date relaţional, produs de compania
suedeză MySQL AB şi distribuit sub Licenţa Publică Generală GNU. Este cel mai popular SGBD
open-source la ora actuală, fiind o componentă cheie a stivei LAMP (Linux, Apache, MySQL,
PHP).
         Popularitatea sa ca aplicaţie web este strans legată de cea a PHP-ului care este adesea
combinat cu MySQL şi denumit Duo-ul Dinamic. MySQL este mult mai uşor de invăţat şi folosit
decat multe din aplicaţiile de gestiune a bazelor de date.




                                                                                                   20
4. Limbaje de programare folosite




           Pentru a administra bazele de date MySQL se poate folosi modul linie de comandă sau,
prin descărcare de pe internet, o interfaţă grafică: MySQL Administrator şi MySQL Query
Browser. Un alt instrument de management al acestor baze de date este aplicaţia gratuită,
scrisă in PHP, phpMyAdmin.
           Cele mai uzuale operaţii cu bazele de date sunt:


Comanda           Semnificatie
CREATE            crează o bază de date sau un tabel
DROP              şterge o baza de date sau un tabel
INSERT            adaugă inregistrări intr-un tabel
DELETE            şterge inregistrări dintr-un tabel
UPDATE            ―updatează‖ inregistrările dintr-un tabel
SELECT            selectează un tabel
ALTER             alterarea unui tabel.


           In MySQL spaţiul alocat pe discul serverului este funcţie de tipul de date. Cateva din
tipurile de date folosite in bazele de date MySQL sunt:


Tip               Semnificaţie
int()             număr intreg 32 biti
bigint()          număr intreg 64 biti
tinyint()         număr intreg (-128 la 127 sau 0 la 255) 8 biti
mediumint()       numar intreg 24 biti
smallint()        număr intreg 16 biti
char()            secţiune cu lungime fixă de la 0 la 255 caractere
varchar()         secţiune cu lungime variabilă de la 0 la 255 caractere
float()           număr mic cu virgulă flotantă
double            număr mare cu virgulă flotantă
text              şir cu maximum 65535 caractere
date()            data in format YYYY-MM-DD
date              data in format YYYY-MM-DD HH:MM:SS
time              ora in format HH:MM:SS
           Pentru ca baza de date să fucţioneze mai bine, coloanelor li s-au adăugat modificatori
de coloană.



                                                                                             21
4. Limbaje de programare folosite




       MySQL poate fi rulat pe multe dintre platformele software existente: AIX, FreeBSD,
GNU/Linux, Mac OS X, NetBSD, Solaris, SunOS, Windows 9x/NT/2000/XP/Vista.


4.3 HTML (HyperText Markup Language)


       HyperText Markup Language (HTML) este un limbaj de marcare utilizat pentru crearea
paginilor web ce pot fi afişate intr-un browser (sau navigator). Scopul HTML este mai degrabă
prezentarea informaţiilor – paragrafe, fonturi, tabele etc. – decat descrierea semanticii
documentului.
       Specificaţiile HTML sunt dictate de World Wide Web Consortium (W3C).


Noţiuni de bază


       Paginile HTML sunt formate din etichete sau tag-uri şi au extensia .html sau .htm. In
marea lor majoritate aceste etichete sunt pereche, una de deschidere <etichetă> şi alta de
inchidere </etichetă>. Browserul interpretează aceste etichete afişand rezultatul pe ecran.
       HTML-ul nu este un limbaj case sensitiv (nu face deosebirea intre litere mici şi mari).
Pagina principală a unui domeniu este fişierul index.html. Această pagină este setată a fi afişată
automat la vizitarea unui domeniu. De exemplu la vizitarea domeniului www.nume.ro este
afişată pagina www.nume.ro/index.html.
       Unele etichete permit utilizarea de atribute care pot avea anumite valori: <etichetă
atribut="valoare"> ... </etichetă>


Elementele de marcare
       • Marcare structurală. Descrie scopul unui text.
       De exemplu: <h1>Document</h1>
       Direcţionează browserul pentru a reda "Document" ca pe cel mai important titlu.
       Marcarea structurală nu are un anumit stil predefinit, dar cele mai multe browsere web
au standardizat modul in care acestea sunt afişate. De exemplu, titlurile importante (h1, h2, etc.)
sunt aldine şi mai mari decat restul textului. De notat că "h1" este folosit doar o singură dată per
pagină deoarece cu el este marcat titlul ei.
       • Marcare pentru prezentare. Descrie cum apare un text, indiferent de funcţiile sale.
       De exemplu: <strong>îngroşat</strong>



                                                                                                22
4. Limbaje de programare folosite




       Va afişa textul "ingroşat" cu litere groase, aldine.
       • Marcare pentru hiperlink. Leagă părţi ale unui document cu alte documente.
       De exemplu: <a href="http://upb.ro/">Politehnica Bucuresti</a>
       Va reda Wikipedia romanească ca hiperlink către un URL specificat.
       • Elemente speciale (widget). Creează obiecte, cum ar fi butoanele şi listele.
       Doar marcatorii de prezentare (impreună cu foile de stiluri - CSS) determină cum
conţinutul din interiorul marcatorului va fi prezentat. Ceilalţi marcatori spun browserului ce
obiecte să redea sau ce funcţii să execute.


Mai mult,
       Pentru o mai bună reprezentare a informaţiilor in pagina web foloseşte CSS (Cascading
Style Sheets), care este un standard pentru formatarea elementelor unui document HTML.
Stilurile se pot ataşa elementelor HTML prin intermediul unor fişiere externe sau in cadrul
documentului, prin elementul <style> şi/sau atributul style. CSS se poate utiliza şi pentru
formatarea elementelor XHTML, XML şi SVGL.
       JavaScript este un limbaj de programare orientat obiect bazat pe conceptul
prototipurilor. Este folosit mai ales pentru introducerea unor funcţionalităţi in paginile web, codul
Javascript din aceste pagini fiind rulat de către browser. Limbajul este binecunoscut pentru
folosirea sa in construirea siturilor web, dar este folosit şi pentru acesul la obiecte incastrate
(embedded objects) in alte aplicaţii.
       Cea mai des intalnită utilizare a JavaScript este in scriptarea paginilor web.
       Programatorii web pot ingloba in paginile HTML script-uri pentru diverse activităţi cum ar
fi verificarea datelor introduse de utilizatori sau crearea de meniuri şi alte efecte animate.




                                                                                                 23
5. Proiectarea conceptuala a bazei de date




5 Proiectarea conceptuală a bazei de date




Sumar. Pentru realizarea aplicaţiei este necesară construirea bazei de date folosind un server
de gestiune baze de date (SGBD), şi anume MySQL. In acest capitol se va prezenta etapă cu
etapă realizarea unui proiect conceptual al bazei de date (BD).


5.1 Noţiuni generale


         Faza de proiectare conceptuală a bazelor de date incepe cu crearea unui model de date
conceptual al organizaţiei, care este total independent de detaliile privind implementarea, cum
ar fi elementele de software ale sistemului SG-BD ţintă, programele aplicaţie, limbajele de
programare, platforma hardware sau orice consideraţie de ordin fizic.
         Prima etapă in proiectarea BD constă in realizarea unor modele de date conceptuale.
         Utilitatea oricărei colecţii de date in obţinerea de infomaţii depinde de modul de
organizare al datelor. Regulile după care sunt organizate şi manipulate datele depind de
modelul de date utilizat. Principalele modele de date utilizate in proiectarea SGBD-urilor sunt:
modelul ierarhic (arborescent), modelul reţea, modelul relaţional si modelul orientat pe obiecte.
         Mai mult, in proiectarea bazelor de date se folosesc 2 categorii de modele:


         - Modele conceptuale de nivel înalt (modelul Entitate-Asociere, modelul Entitate-
Asociere -Extins) – descriu concis colecţiile de date care modelează activitatea dorită fără să
detalieze modul de reprezentare sau de prelucrare a datelor - schemă conceptuală de nivel
înalt.
         - Modele specializate (modelul ierarhic, modelul reţea, modelul relaţional, etc.) descriu
reprezentarea mulţimilor de entităţi şi a asocierilor dintre acestea prin structuri de date specifice
- schemă conceptuală (logică).
         Trecerea de la modelul conceptual de nivel inalt la un model de date specific, implică
proiectarea logică a bazei de date.
         Modelele ierarhice (arborescente) sunt construite astfel incat au un element unic



                                                                                                 24
5. Proiectarea conceptuala a bazei de date




radacină şi un număr finit de succesori, care la randul lor au alte noduri succesoare, pană la
nodurile terminale, care nu mai au alţi succesori. Orice nod, exceptand nodul rădăcină, are
un predecesor unic. Relaţiile care se stabilesc in cadrul acestor modele sunt de tipul 1-n.
        Modelele de tip reţea sunt de tip graf cu legături bidirecţionale intre noduri. Un nod
poate avea mai multi predecesori şi mai mulţi succesori. In aceste modele relaţiile stabilite
sunt de tipul m-n.
        Modelele de tip relaţional sunt de tip tabel de date, care au fost aduse intr-o formă
optimă. In astfel de modele relaţiile stabilite admit orice tip de relaţie: 1-n; n-m.
        Modelele orientate obiect redau structuri de date complexe ale realităţii, impreună cu
toate caracteristicile acestora, sub formă de obiecte. Aceste modele de date admit orice tip
de relaţie: 1-n; n-m.
        Un model de date este compus din doua părţi: set de reguli de structurare a datelor
(materializate prin LDD) , set de operaţii permise asupra datelor (materializate prin LMD).
        Pentru folosirea modelului de date adecvat este necesar să se efectueze un studiu şi o
analiză privind situaţia reală, pentru identificarea necesarului de informaţii si a modului de
reprezentare, precum şi a cerinţelor de prelucrare a acestor informaţii. Modelele de date
necesită identificarea structurii modelului, a operatorilor care acţionează asupra structurilor de
date şi a restricţiilor pentru menţinerea corectitudinii datelor.
        Structura modelului presupune identificarea obiectelor (care sunt denumite entităţi), a
caracteristicilor acestora (denumite atribute sau campuri de date) şi a legăturilor (denumite
relaţii sau asocieri). Acest lucru este descris in cele ce urmează mai jos.


5.2 Modelul Entitate-Asociere


        Modelul Entitate-Asociere defineşte mulţimile de entităţi şi asocierile dintre ele, dar nu
impune nici un mod specific de structurare şi prelucrare (gestiune) a datelor.


5.2.1 Identificarea tipurilor de entităţi


        In această etapă obiectivul este identificarea principalelor tipuri de entităţi din vederea
utilizatorului asupra companiei.




                                                                                               25
5. Proiectarea conceptuala a bazei de date




           O metodă de identificare a entităţilor constă in examinarea specificaţiei cerinţelor
corespunzătoare unei anumite funcţii a utilizatorului in cadrul intreprinderii. Din această
specificaţie se identifică substantivele sau expresiile substantivale menţionate. De asemenea,
se caută obiectivele principale, cum ar fi: personale, locurile sau conceptele de interes,
excluzandu-se substantivele care reprezintă doar calităţi ale altor obiecte.
           O modalitate alternativă de identificare a entităţilor este de a căuta obiectele care există
pe cont propriu.
           Uneori, entităţile sunt greu de identificat, datorită modului in care sunt prezentate in
cadrul specificaţiei cerinţelor utilizatorului, uneori utilizatorii se exprimă prin exemple sau
analogii. Nu este intotdeauna evident dacă un anumit obiect este o entitate, o relaţie sau un
atribut.
           Pe măsură ce se identifică entităţile, li se atribuie denumiri care să aibă semnificaţie şi
să fie evidente pentru utilizatori. Denumirea şi descrierile entităţilor sunt reunite intr-un dicţionar
de date. Atunci cand este posibil se documentează numărul estimat de apariţii ale fiecărei
entităţi. O entitate cunoscută sub denumiri diferite, acestea se numesc aliasuri sau sinonime şi
sunt inregistrate in dicţionarul de date.
           Prin entitate inţelegem mulţimea tuturor elementelor de un anumit tip (care prezintă
aceleaşi caracteristici).
           Entitatea sau tabelul bidimensional, constituie unitatea informaţională elementară din
structura unei organizări de date prin care se reflectă elemente reale sau abstracte ce
definesc segmente omogene ale realităţii obiective caracterizate prin nume unic, număr
maxim de apariţii (realizări) şi o structură specifică acestei realităţi pe care o descrie.
           Prin instanţă a unei entităţi inţelegem un singur element, bine individualizat, unic, din
mulţimea elementelor care formează entitatea respectivă.
           In cazul nostru, s-au creat următoarele entităţi:
           • Useri_admini
           • Foldere
           • Fisiere
           • Istoric
           • Workflow
           • Activitaţi
           Entităţile sunt de două tipuri:
           - entităţi independente (sau tari): au existenţa independentă de alte entităţi;




                                                                                                   26
5. Proiectarea conceptuala a bazei de date




        - entităţi dependente (sau slabe): sunt formate din instanţe, care işi justifică incadrarea
in clasa respectivă doar atata timp cat intr-o altă entitate (tată) există o anumită instanţă.
        Fiecare entitate este descrisă de o mulţime de proprietăţi esenţiale numite atribute.
Pentru diferitele elemente ale entităţii, atributele pot să primească valori din anumite mulţimi
numite domeniul atributului respectiv.


5.2.2 Identificarea tipurilor de asocieri


        In această etapă obiectivul este identificarea relaţiilor importante care există intre
entităţile identificate.
        Atunci cand se identifică entităţile, o metodă este de a căuta substantivele in specificaţia
cerinţelor utilizatorului. De regulă, asocierile sunt indicate prin expresii verbale.
        Asocierea descrie o legatură specifică, delimitată logic, intre două tipuri semnificative de
entităţi sau chiar in interiorul entităţilor, prin care se defineşte gradul de implicare a unei entităţi
in raport cu altele.
        Pentru a stabili tipul legăturii, trebuie determinate numerele minime şi maxime
posibile de realizări ale unei entităţi, care pot fi asociate cu o realizare a unei alte entităţi cu
care se află in legătură. O astfel de implicare reprezintă cardinalitatea relaţiei (legăturii).
        Pe măsură ce se identifică tipurile de relaţii, li se atribuie denumiri care au semnificaţie şi
sunt existente pentru utilizator.
        Dupa numărul de entităţi distincte ce participă la asociere, relaţiile pot fi:
        - relaţii binare, in care se realizează legături intre două entităţi distincte;
        - relaţii recursive, in care se realizează legături ale entităţilor cu ele insele;
        - relaţii complexe, in care se realizează legături intre mai mult de două entităţi
distincte. – destul de rare.
        După gradul asocierii (valorile maxime identificate), relaţiile din cadrul unei
organizări de date pot fi de diferite tipuri şi anume:
        - de tipul 1-1, prin care se semnifică conexiunea simplă;
        - de tipul 1-n şi n-m prin care se semnifică conexiunea multiplă.


        Raport de cardinalitate: raportul dintre valorile cardinalităţilor unei asocieri faţă de două
din mulţimile de entităţi asociate.




                                                                                                    27
5. Proiectarea conceptuala a bazei de date




        - Exemple pentru asocieri binare: 1:1, 1:N, N:1, M:N
        - Asocierile multiple (k > 2) prezintă cate un raport de cardinalitate pentru fiecare
pereche de mulţimi de entităţi pe care le asociază.
        Noţiunile de entitate, atribut şi relaţie reprezintă (formează) esenţa unui model denumit
Entitate - Asociere (EA), care asigură definirea şi modelarea structurii unei organizări de date.
        Modul de stabilire a tipurilor de entităţi şi a asocierilor nu este unic: aceeaşi
funcţionalitate se poate obţine printr-o varietate de diagrame EA.
        O mulţime de entităţi se denumeşte printr-un substantiv, iar o asociere se denumeşte
(de regulă) printr-un verb, deoarece o asociere reprezintă o interacţiune intre entităţi.
        Modelul EA nu precizează modul cum sunt realizate asocierile intre mulţimile de entităţi:
acest aspect depinde de modelul de date specializat utilizat pentru definirea bazei de date.
        In cadrul fazei de proiectare a BD se recomandă modelul E-A oriunde este necesar,
pentru a servi la construirea unei imagini a sectorului de intreprindere care urmează să fie
modelat.
        În cazul aplicaţiei de faţă, vom avea asocieri binare şi recursive.
        Astfel, se stabilesc asocieri binare intre mulţimile de entităţi: useri_admini – foldere
(relaţie de tip 1-1), foldere – fişiere (relaţie de tip 1-n), drepturi – foldere (relaţie de tip n-n),
drepturi – fişiere (relaţie de tip n-n). Asocierea recursivă se stabileşte in cazul mulţimii entităţii
useri_admini, fiind de tip 1-n, intrucăt un administrator poate gestiona mai mulţi utilizatori iar
unui utilizator ii corespunde un singur administrator.
        O asociere poate prezenta unul sau mai multe atribute proprii cu rol de a caracteriza,
explicita, legătura stabilită intre entităţile participante la asociere.
        Asocieri din cadrul aplicaţiei de management al documentelor:
        – GESTIONARE (intre useri_admini şi fişiere/foldere)
        – INIŢIAZĂ (intre useri_admini şi workflow)
        – PRECIZARE FIŞIER (intre workflow şi fişiere)
        – SPECIFICARE UTILIZATOR (intre useri_admini şi drepturi)
        – SPECIFICARE FIŞIER (intre fişiere şi drepturi)
        – SPECIFICARE FOLDER (intre foldere şi drepturi)
        – INREGISTRARE FOLDER (intre foldere şi istoric)
        – INREGISTRARE FIŞIER (intre fişiere şi istoric)
        – INREGISTRARE UTILIZATOR (intre useri_admini şi istoric)




                                                                                                  28
5. Proiectarea conceptuala a bazei de date




        De exemplu, intre entităţile useri_admini şi fişiere ori useri_admini şi foldere poate exista
o asociere GESTIONARE, care implică faptul că un fişier sau folder are un singur utilizator
creator.


5.2.3 Identificarea şi asocierea atributelor cu tipurile de entităţi sau
relaţii


        Obiectivul acestei etape constă in asocierea atributelor cu tipurile de entităţi sau relaţii
adecvate. Această etapă din constă in identificarea tipurilor privind entităţile şi relaţiile care
trebuie reprezentate in BD.
        Atributele pot fi identificate acolo unde substantivul sau expresia substantivală exprimă o
proprietate, calitate, identificator sau caracteristică a uneia din acela entităţi sau relaţii.
        Atribute simple/compuse
        Este foarte important de a determina dacă un atribut este simplu sau compus. Atributele
compuse sunt formate din atribute simple. De exemplu, atributul Adresă poate fi simplu
conţinand toate detaliile adresei ca o singură valoare. Dar atributul poate fi şi compus, fiind
format din atribute simple care conţin detaliile adresei ca valori separate in atribute. Stradă,
zonă, oraş şi cod P. Opţiunea de a reprezenta detaliile adresei ca un atribut simplu sau compus
este determinată de cerinţele utilizatorului.
        In cadrul acestei etape, este important de identificat toate atributele simple care vor fi
reprezentate in modelul de date conceptual-inclusiv acela care formează atributele compuse.
        De exemplu, in cadrul aplicaţiei noastre, atributul Adresă specific entităţii Useri_admini
este unul compus fiind alcătuit din atributele simple Oraş şi Cod_postal.
        Atributele derivate
        Atributele ale căror valori pot fi deduse din valorile altor atribute se numesc derivate sau
calculate.
        Un atribut sau o mulţime de atribute pentru care valorile asociate determină in mod unic
orice element al entităţii respective se numeşte cheie. Orice entitate admite cel puţin o cheie,
deci toate elementele unei entităţi sunt distincte. In cazul in care există elemente care să aibă
aceleaşi valori pentru toate atributele, se ia drept cheie un atribut suplimentar reprezentat de
numărul asociat elementului in entitatea respectivă, care defineşte in mod unic elementul.
        Determinarea atributelor cheielor candidate




                                                                                                  29
5. Proiectarea conceptuala a bazei de date




         In această sub-etapă obiectivul constă in identificarea cheii (cheilor) candidate pentru
fiecare entitate şi dacă există mai mult decat o cheie candidat – selecţionarea celei care va fi
cheia primară.
         O cheie candidat este un atribut sau un set minimal de atribute ale unei entităţi, care
identifică in mod unic fiecare apariţie a acesteia. Se poate identifica mai mult decat o singură
cheie candidat, dar in acest caz trebuie să alegem una dintre ele drept cheie primară, celelalte
chei candidat se numesc chei alternative.
         La alegerea unei chei primare din cele candidate trebuie să se ţină seama de
următoarele, care ajută la efectuarea selectării:
         • se alege cheia candidat cu setul minim de atribuţi;
         • se alege cheia candidat căreia probabilitatea de modificare a valorii este mai mică;
         • se alege cheia candidat care are probabilitatea mai mică să-şi piardă caracterul de
unitate in viitor;
         • se alege cheia candidat cu cel mai mic număr de caractere;
         • se alege cheia candidat cea mai prietenoasă din punct de vedere al utilizatorului.
         In procesul de identificare al cheilor primare se constată dacă o entitate este tare sau
slabă.
         O altă clasificare a atributelor unei entităţi, le prezintă in două feluri:
         – atribute de identificare (formand impreună identificatorul entităţii) sunt acele atribute
care permit distincţia intre instanţele aceleiaşi entităţi;
         – atributele de descriere (sau descriptori), care sunt folosiţi pentru memorarea
caracteristicilor suplimentare ale instanţelor.
         In cazul aplicaţiei noastre, atributele asociate entităţilor sunt:


         Atributele entităţii Useri_admini:
         - id
         - nume_org
         - user
         - parola
         - nume
         - prenume
         - email
         - telefon
         - oras



                                                                                                  30
5. Proiectarea conceptuala a bazei de date




       - adresa
       - cod_postal
       - data
       - timp
       - id_folder
       - id_admin
       In exemplul de mai sus, id este atribut de identificare (deoarece nu pot exista doi
utilizatori cu acelaşi id), sau o cheie primară, pe cand celelalte atribute sunt descriptori şi chei
secundare.


       • Atributele entităţii Foldere:
       - id
       - nume
       - folder_id
       - data
       - timp
       - owner


       • Atributele entităţii Fisiere:
       - id
       - nume
       - folder_id
       - data
       - timp
       - owner
       - versiune


       • Atributele entităţii Drepturi:
       - id
       - id_fisier
       -r
       - rwd
       - rwda
       - id_user



                                                                                                31
5. Proiectarea conceptuala a bazei de date




       • Atributele entităţii Workflow:
       - id
       - nume
       - tip
       - initiator
       - instructiuni
       - stare
       - transmitere
       - data
       - timp
       - id_fisier
       - exp


       Atributele entităţii Activităţi:
       - id
       - nume
       - id_user
       - stare
       - viz
       - nota
       - id_workflow


       Pentru fiecare relaţie s-a identificat un anumit atribut, id , ce reprezintă atributul relaţiei
respective dintre cele două entităţi.


5.2.4 Diagrama Entitate-Asociere


       Diagramele Entitate – Asociere (Ea) se utilizează pentru a reprezenta mai uşor entităţile
şi modelul in care sunt legate acestea unele de altele.
       Convenţia de reprezentare grafică a elementelor, care participă la formarea unei
diagrame EA, este următoarea:
       - entităţile se reprezintă prin dreptunghiuri, in care este inscris numele entităţii. In cazul
entităţilor dependente, conturul va fi cu linie dublă;



                                                                                                  32
5. Proiectarea conceptuala a bazei de date




        - atributele se reprezintă prin cercuri (sau ovale), in interiorul cărora apare numele
atributului şi care sunt conectate cu un segment de dreaptă cu entitatea de care aparţin.
        Pentru a distinge atributele de identificare de cele de descriere, numele celor de
identificare va fi subliniat;
        - asocierile se reprezintă prin romburi (dacă conectează una sau două entităţi) sau
poligoane regulate (dacă conectează mai mult de două entităţi) conectate prin segmente de
dreaptă la entităţile pe care le leagă, avand inscris in interior (sau alături) numele asocierii.
        In figura de mai jos este prezentată convenţia de reprezentare a elementelor modelului
EA.




                                                                                                    33
5. Proiectarea conceptuala a bazei de date




Diagrama modelului Entitate-Asociere




Atributele entităţilor de mai sus, sunt reprezentate schematic astfel:
• entitatea Useri_admini




                                                                         34
5. Proiectarea conceptuala a bazei de date




• entitatea Foldere




• entitatea Fisiere




                                                                   35
5. Proiectarea conceptuala a bazei de date




       • entitatea Drepturi




5.3 Modelul relaţional


5.3.1 Noţiuni generale


       Modelul relaţional ca şi orice alt model de date utilizat in proiectarea logică a bazelor de
date eliberează utilizatorul de cunoaşterea detaliilor despre structura fizică şi metodele de acces
la date. In afară de aceasta, el are două avantaje suplimentare: e simplu şi elegant. Simplitatea
sa constă in structurile de date omogene in formă de relaţii tabelare. Iar eleganţa modelului se
explică prin temelia sa ştiinţifică. El este riguros din punct de vedere matematic graţie faptului că
se sprijină pe bine puse la punct teoriile matematica relaţiilor şi logica de ordinul unu.
       Modelul relaţional a fost primul exemplu de model de date formal şi a fost propus de E.
Codd in 1970. Prin model datele utilizatorului sunt reprezentate şi manipulate in mod abstract.
Modelul de asemenea presupune tehnici ce ajută administratorul de a detecta şi corecta
posibilele probleme de proiectare ce pot apărea o dată cu pregătirea datelor pentru
implementare intr-un SGBD concret.


                                                                                                 36
5. Proiectarea conceptuala a bazei de date




            Orice model de date, conform unei sugestii a lui Codd, trebuie să se bazeze pe trei
componente: structurile de date, constrangerile de integritate şi operatorii de manipulare a
datelor.
            - Structurile de date. Structurile sunt definite de un limbaj de definire a datelor (data
definition language). Datele in modelul relaţional sunt structurate in relaţii bidimensionale.
Elementele principale ale structurii relaţionale sunt relaţiile, tuplurile, atributele, domeniile.
            - Constrângerile de integritate. Prin integritatea datelor se subinţelege că datele răman
stabile, in siguranţă şi corecte. Integritatea in modelul relaţional este menţinută de constrangeri
interne care nu sunt cunoscute utilizatorului.
            - Manipularea datelor. Relaţiile pot fi manipulate utilizand un limbaj de manipulare a
datelor (data manipulation language). In modelul relaţional, limbajul foloseşte operatorii
relaţionali bazaţi pe conceptul algebrei relaţionale. In afară de aceasta, există limbaje
echivalente algebrei relaţionale, cum ar fi calculul relaţional orientat pe tuplu şi calculul relaţional
orientat pe domeniu.
            O bază de date relaţională este compusă dintr-o mulţime finită de relaţii, fiecare relaţie
reprezentand un tip de entitate sau o asociere dintre două sau mai multe tipuri (mulţimi) de
entităţi.
            Din această definiţie rezultă că intr-o bază de date fiecare relaţie este unică (nu există
două sau mai multe relaţii de acelaşi fel), dat fiind că o bază de date este o mulţime de relaţii. O
relaţie se defineşte prin intermediul atributelor sale.
            Atributele unei relaţii sunt atributele tipului de entitate sau de asociere pe care il
reprezintă relaţia respectivă.
            Fiecare atribut al unei relaţii are un domeniu de definiţie şi poate lua o singură valoare
(din domeniul său de definiţie) pentru fiecare tuplu al relaţiei, ceea ce inseamnă că atributele au
numai valori scalare.
            Un domeniu de definiţie este o mulţime cu nume de valori atomice de acelaşi tip,
avand o anumită semnificaţie, din care işi iau valori atributele relaţiilor.
            Nu trebuie confundată atomicitatea din punct de vedere semantic a valorii unui atribut cu
atomicitatea structurii de date prin care este reprezentată valoarea acelui atribut in memoria
calculatorului. De exemplu, un atribut care desemnează un nume (de persoană, de instituţie, de
produs, de componentă, etc.) se reprezintă printr-un şir (vector) de caractere, care, bineinţeles,
poate fi descompus in elementele componente (caracterele), dar sistemul de gestiune nu
atribuie nici o semnificaţie unui element separat, ci numai intregii valori (şirul de caractere).




                                                                                                     37
5. Proiectarea conceptuala a bazei de date




        Schema relaţiei, notată R(A1A2,...Ai,...An), este compusă din numele relaţiei (R) şi din
lista ordonată a atributelor sale A1,A2,...Ai,...An, fiecare atribut Ai definit pe domeniul său de
definiţie, D(Ai). Schema relaţiei este folosită pentru a descrie relaţia respectivă şi se mai
numeşte şi tipul sau intensiunea relaţiei. Numărul de atribute ale schemei unei relaţii se
numeşte gradul relaţiei.
        O relaţie R definită de schema R(A1,A2,...Ai,...An) este o mulţime de n-tupluri t, fiecare
tuplu fiind o listă ordonată de n valori t = <v1,v2,...vi,....vn>, unde 1 ≤ i ≤ n şi vi este valoarea
atributului Ai, aparţinand domeniului său de definiţie D(Ai).
        O relaţie corespunde, in general, unei mulţimi de entităţi din diagrama E-A (Entitate-
Asociere) a unei baze de date, iar un tuplu reprezintă o entitate din mulţimea de entităţi.
        Atributele tipului de entitate din modelul conceptual de nivel inalt devin atributele relaţiei
in modelul relaţional.
        Ca exemplu de relaţie se defineşte relaţia cu schema Fisiere (sau FISIERE)
corespunzătoare tipului de entitate ―fisiere‖ (descris in exemplele prezentate anterior) astfel:
        FISIERE (Id,Nume,Folder_id,data,timp,owner,versiune)
        Domeniile de definiţie ale atributelor se specifică prin numele domeniului, semnificaţia
acestuia, tipul de date şi restricţii asupra valorilor in cadrul acelui tip de date.
        Exemple de domenii relaţionale ale atributelor:
        • D_Nume: domeniul numelor fişierelor gestionate, reprezentate printr-un şir de
maximum 255 caractere.
        Cel mai frecvent insă, in implementarea modelului relaţional in cadrul diferitelor sisteme
de gestiune a bazelor de date, ca domenii de definiţie ale atributelor se folosesc direct tipurile
de date predefinite ale limbajului de definiţie a datelor (LDD) specific acelui SGBD. - în cazul
nostru SQL, respectiv MySql.
        Reprezentarea relaţiilor prin tabele
        Un tabel este o reprezentare a unei relaţii şi este compus din următoarele părţi:
        • Numele tabelului, care este identic cu numele relaţiei pe care o reprezintă.
        • Un număr de coloane egal cu numărul de atribute ale relaţiei, fiecare coloană
reprezentand un atribut.
        • Capul tabelului, in care se inscriu numele atributelor relaţiei, fiecare atribut fiind inscris
in coloana corespunzătoare.
        • O mulţime de linii, fiecare linie corespunzand unui tuplu (deci unei entităţi); in fiecare
element al unei linii se inregistrează valoarea atributului corespunzător coloanei in care se află
elementul respectiv.



                                                                                                    38
5. Proiectarea conceptuala a bazei de date




Constrângeri de integritate
         Constrangerile de integritate sunt reguli care se definesc la proiectarea unei bazei de
date şi care trebuie să fie respectate de orice stare a acesteia. Relaţiile unei baze de date
reflectă realitatea modelată şi de aceea valorile pe care le conţin trebuie să respecte anumite
reguli, care să corespundă celor din realitate. Constrangerile se pot clasifica după locul unde
sunt definite şi după modul in care sunt definite. Din punct de vedere al locului unde sunt
definite, constrangerile pot fi constrangeri intra-relaţie şi constrangeri inter-relaţii.
         Constrangerile intra-relaţie sunt reguli care se impun in cadrul unei singure relaţii şi
asigură integritatea datelor acesteia. Ele sunt, la randul lor, de trei categorii:
         • Constrangeri de domeniu, care sunt condiţii ce se impun valorilor atributelor şi asigură
integritatea domeniilor atributelor.
         • Constrangeri de tuplu, care sunt condiţii ce se impun tuplurilor unei relaţii şi asigură
identificarea corectă a tuplurilor prin intermediul cheilor (primare sau candidate).
         • Constrangeri impuse prin dependenţe de date (dependenţe funcţionale, multivalorice
sau de joncţiune); acestea sunt constrangeri prin care valorile unor atribute ale unei relaţii
determină valorile altor atribute ale aceleiaşi relaţii.
         Constrangerile inter-relaţii sunt reguli care se impun intre două sau mai multe relaţii.
         Cele mai importante constrangeri inter-relaţii sunt constrangerile de integritarea
referenţială, care se realizează prin intermediul cheilor străine şi asigură asocierea corectă a
relaţiilor.


Algebra relaţională
         Algebra relaţională exprimă interogările prin aplicarea unor operatori specializaţi
(operatorii algebrei relaţionale) asupra relaţiilor. E.F. Codd a propus opt operaţii ale algebrei
relaţionale, grupate in două categorii:
         • Operaţii pe mulţimi: reuniunea, intersecţia, diferenţa şi produsul cartezian. Aceste
operatii reprezintă adaptarea operatiilor corespunzătoare din teoria mulţimilor şi acţionează
asupra relaţiilor văzute ca mulţimi de elemente (tupluri), fără a lua in consideraţie compoziţia
fiecărui element.
         • Operaţii relaţionale speciale: restricţia, proiecţia, joncţiunea şi diviziunea. Aceste
operaţii iau in consideraţie compoziţia tuplurilor, formate din valori ale atributelor relaţiilor.
         Toate aceste operaţii trebuie să asigure proprietatea de inchidere, adică rezultatul
fiecărei operaţii trebuie să fie tot o relaţie. Această proprietate permite efectuarea operaţiilor
imbricate: proiecţia unei joncţiuni dintre o relaţie şi restricţia aplicată altei relaţii, etc.



                                                                                                     39
5. Proiectarea conceptuala a bazei de date




        Restricţia şi proiecţia sunt operaţii unare (au un singur operand, o relaţie); operaţiile pe
mulţimi, joncţiunea şi diviziunea sunt operaţii binare (au doi operanzi, două relaţii).


5.3.2 Descrierea structurii tabelelor folosite şi legăturilor dintre
acestea


        Mai intai, vom prezenta concretiza cat mai succint anumite noţiuni legate de structura
bazei de date folosită pentru aplicaţia de management al documentelor.
        Aşadar, O cheie primară sau principală reprezintă una sau mai multe coloane ale caror
valori identifică in mod unic toate liniile unui tabel.
        Cheia primară este utilizată pentru a face referinţe la o singură linie. Fără cheia primară,
actualizarea sau stergerea de linii specifice devine foarte dificilă, deoarece nu există nici o
modalitate garantat sigură pentru a face referire numai la liniile ce vor fi afectate.
        Cheie straină sau externă este o coloană sau un set de coloane cu valori din setul de
valori a cheii primare a unei alte tabele cu care face astfel o legătură. Dacă o cheie străină
apare in mai mult de o tabelă, aceasta este de regulă o legătură intre cele două tabele.
        Astfel, legăturile intre tabele se fac prin intermediul cheilor primare şi străine.
        Fiecare coloană are un set de atribute care pot fi completate (sau nu) pentru a prelua
anumite caracteristici.
        In cazul atributelor avem mai multe opţiuni, in funcţie de serverul de gestiune al bazei de
date (in cazul nostru MySql):
        - să alegem tipul variabilei, folosit pentru a menţiona cu ce tip de date poate fi completat
campul respectiv (ex: int, varchar, date, text etc.);
        - să setăm dimensiunea maximă admisă;
        - avem posibilitatea de a completa o valoare nulă (NULL sau NOT_NULL);
        Campurile marcate NOT NULL sunt acele campuri ale căror valori trebuie introduse in
fiecare inregistrare, in timp ce campurile NULL sunt acelea care nu necesită de fiecare dată
introducerea unei valori.
        - avem posibilitatea de a selecta o valoare default cu care vor fi completate toate
inregistrările coloanei respective;
        - putem seta auto-increment (incrementare automată la fiecare inregistrare nouă din
tabelă), unique (nu pot exista două sau mai multe valori identice), index, primary key (cheie
primară), foreign key (cheie straină).



                                                                                                40
5. Proiectarea conceptuala a bazei de date




         Inainte de prezentarea tabelelor, am creat o bază de date cu MySQL server versiunea
5.1.30. Baza de date se numeşte „diploma” şi a fost realizată folosind următoarea sintaxă SQL:


CREATE DATABASE `diploma` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `diploma`;


         Acestea fiind zise, structura tabelelor in baza de date corespunzătoare aplicaţiei noastre
se prezintă astfel:


         • Tabela Useri_admini
Este alcatuită din următoarele câmpuri, urmate de tipul şi domeniul acestora:


Id               int(11)
nume_org         varchar(25)
user             varchar(20)
parola           varchar(255)
nume             varchar(20)
prenume          varchar(20)
email            varchar(30)
telefon          varchar(15)
oras             varchar(20)
adresa           varchar(150)
cod_postal       varchar(10)
data             DATE
timp             TIME
id_folder        int(11)
id_admin         int(11)


Tabela Useri_admini este reprezentată schematic astfel:




                                                                                               41
5. Proiectarea conceptuala a bazei de date




        Coloana id reprezintă o cheie primară. La adăugarea unei noi inregistrări in această
tabelă, valoarea cheii id respective se va incrementa automat, fapt ce garantează unicitatea
inregistrărilor din tabelă.
        Coloana id_folder şi id_admin reprezintă chei străine, care sunt chei primare in tabelele
foldere şi useri_admini. După cum observăm, cheia străină id_admin face referinţă către
aceeaşi tabelă din care face parte. In tabela există utilizatori administratori care reprezintă o
anumită organizaţie şi utilizatori creaţi de utilizatorii administratori respectivi, avand drepturi
limitate in ceea ce priveşte managementul documentelor aceleiaşi organizaţii. In cazul in care
inregistrarea introdusă in tabelă denotă un utilizator administrator, valoarea campului id_admin
va fi 0, altfel va indica o valoare a cheii primare din aceeaşi tabelş ce reprezintă utilizatorul
administrator ce gestionează utilizatorul nou introdus.
        Coloanele nume_org şi user au valori unice intrucat nu pot exista doi useri cu acelaşi
nume sau două organizaţii cu acelaşi nume.
        Codul SQL specific creării tabelei Useri_admini in baza de date (denumită „diploma‖)
este:


CREATE TABLE IF NOT EXISTS `useri_admini` (




                                                                                               42
5. Proiectarea conceptuala a bazei de date




`id` int(11) NOT NULL AUTO_INCREMENT,
`nume_org` varchar(25) NOT NULL,
`user` varchar(20) NOT NULL,
`parola` varchar(255) NOT NULL,
`nume` varchar(20) NOT NULL,
`prenume` varchar(20) NOT NULL,
`email` varchar(30) NOT NULL,
`telefon` varchar(15) NOT NULL,
`oras` varchar(20) NOT NULL,
`adresa` varchar(150) NOT NULL,
`cod_postal` varchar(10) NOT NULL,
`data` date NOT NULL,
`timp` time NOT NULL,
`id_folder` int(11) NOT NULL,
`id_admin` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `nume_org` (`nume_org`),
UNIQUE KEY `user` (`user`),
KEY `id_folder` (`id`),
KEY `id_admin` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=45 ;


• Tabela Foldere
Are urmatoarea structură:
Id              int(11)
nume            varchar(25)
folder_id       int(11)
data            varchar(255)
timp            varchar(20)
owner           int(11)


        Schematic, tabela arată astfel:




                                                                             43
5. Proiectarea conceptuala a bazei de date




       Coloanele owner şi folder_id sunt chei străine.Cheia străină owner implică cheia primară
(id) din tabela Useri_admini iar cheia straină folder_id face referire către cheia primară (id) din
aceeaşi tabelă Foldere. Fiecare director (sau folder) are un singur utilizator creator reprezentat
prin cheia (id) şi un singur părinte, care este tot un director (folder), reprezentat prin cheia
(folder_id). Campurile data şi timp reprezintă data şi ora la care a fost creat folderul respectiv.


       Sintaxa SQL specifică creării tabelei foldere este următoarea:


CREATE TABLE IF NOT EXISTS `foldere` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nume` varchar(25) NOT NULL,
`folder_id` int(11) NOT NULL,
`data` date NOT NULL,
`timp` time NOT NULL,
`owner` int(11) NOT NULL,
PRIMARY KEY (`id`)
KEY `id_folder` (`id_folder`),
KEY `owner` (`owner`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1265 ;


• Tabela Fisiere
       Are următoarea structură:


Id              int(11)
nume           varchar(25)



                                                                                                  44
5. Proiectarea conceptuala a bazei de date




folder_id       int(11)
data           varchar(255)
timp            varchar(20)
owner          int(11)




        Ca şi in cazul tabelei Foldere, in tabela Fişiere avem aceleaşi chei străine owner şi
folder_id. In acest caz, folder_id face referinţă către cheia primară (id) din tabela Foldere şi
reprezintă faptul că un fişier are un tată (sau este stocat in directorul tată) reprezentat prin cheia
id in tabela Foldere.
        Coloana versiune, reprezintă versiunea curentă (ultima versiune) la care a ajuns fişierul
respectiv.
        Sintaxa SQL specifică creării acestei tabele este următoarea:


CREATE TABLE IF NOT EXISTS `fisiere` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nume` varchar(255) NOT NULL,
`folder_id` int(11) NOT NULL,
`data` date NOT NULL,
`timp` time NOT NULL,
`owner` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `id_folder` (`id_folder`),
KEY `owner` (`owner`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ;



                                                                                                  45
5. Proiectarea conceptuala a bazei de date




• Tabela Drepturi
       Prezintă următoarea structură:


Id             int(11)
id_folder      varchar(25)
id_fisier      int(11)
r              int(1)
rwd            int(1)
rwda           int(1)
id_user        int(11)




       După cum observăm, cheia primară este id, iar id_folder, id_fisier şi id_user reprezintă
chei străine cu aceeaşi semnificaţie ca şi in cazul tabelelor descrise mai sus.
       Valorile campurilor r, rwd, rwda pot fi 0 sau 1.
       Pe larg, un fişier sau director (folder) poate avea drepturi acordate pentru anumiţi
utilizatori. Ele sunt interpretate in funcţie de valorile r (read), rwd (read-write-delete), rwda
(„read,write,delete,administer‖).
       Sintaxa SQL conform căreia s-a creat această tabelă este următoarea:


CREATE TABLE IF NOT EXISTS `drepturi` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_folder` int(11) NOT NULL,
`id_fisier` int(11) NOT NULL,
`r` int(1) NOT NULL,



                                                                                             46
5. Proiectarea conceptuala a bazei de date




`rwd` int(1) NOT NULL,
`rwda` int(1) NOT NULL,
`id_user` int(11) NOT NULL,
PRIMARY KEY (`id`)
KEY `id_folder` (`id_folder`),
KEY `id_fisier` (`id_fisier`),
KEY `id_user` (`id_user`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=337 ;


• Tabela Workflow




        Cheile străine sunt reprezentate prin atributele initiator şi id_fisier care reprezintă
identificatorul utilizatorului care a creat fluxul de lucru respectiv si identificatorul fişierului pentru
care s-a creat acel flux.
        Sintaxa SQL conform căreia s-a creat această tabelă este următoarea:


CREATE TABLE IF NOT EXISTS `workflow` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nume` varchar(80) NOT NULL,
`tip` varchar(30) NOT NULL,
`initiator` int(11) NOT NULL,



                                                                                                      47
5. Proiectarea conceptuala a bazei de date




`instructiuni` text NOT NULL,
`stare` varchar(30) NOT NULL,
`transmitere` varchar(30) NOT NULL,
`data` date NOT NULL,
`timp` time NOT NULL,
`id_fisier` int(11) NOT NULL,
`exp` date NOT NULL,
PRIMARY KEY (`id`)
KEY `initiator` (`initiator`),
KEY `id_fisier` (`id_fisier`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


• Tabela Activitati




        Atributul id_user reprezintă utilizatorul pentru care a fost creată activitatea, iar
id_workflow reprezintă identificatorul unic al fluxului de lucru de care aparţine activitatea
respectivă. Starea poate fi activ, aprobat sau respins.
        Sintaxa SQL corespunzătoare este:


CREATE TABLE IF NOT EXISTS `activitati` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nume` varchar(80) NOT NULL,
`id_user` int(11) NOT NULL,



                                                                                         48
5. Proiectarea conceptuala a bazei de date




`stare` varchar(30) NOT NULL,
`viz` int(1) NOT NULL,
`nota` text,
`id_workflow` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `id_workflow` (`id_workflow`)
KEY `id_user` (`id_user`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


        In cazul de faţă, baza de date conţine tabele corelate. Mai precis, intre aceste tabele se
stabilesc legături de mai multe tipuri:
        - 1:n (una-la-mai multe). O inregistrare din primul tabel poate fi legată cu mai multe
inregistrări din al doilea tabel.
        - 1:1 (una-la-una). O inregistrare din primul tabel este legată la o singură inregistrare din
al doilea tabel.
        - n:n (mai multe-la-mai multe).O inregistrare din primul tabel poate fi legată la mai multe
inregistrări din al doilea tabel şi invers.


        Schema bazei de date relaţionale cu tabelele şi legăturile dintre acestea este prezentată
mai jos:




                                                                                                 49
5. Proiectarea conceptuala a bazei de date




       Aşadar intre tabela Useri_admini şi tabela Fişiere există o dată, o legătură de tip 1:n
intrucat un utilizator poate crea mai multe fişiere dar un fişier este creat de un singur utilizator.
Pe de altă parte se stabileşte şi o legătură indirectă de tip n:n prin intermediul tabelei Drepturi
deoarece un un utilizator poate avea drepturi asupra mai ultor fişiere, iar un fişier poate avea
acordate drepturi pentru mai mulţi utilizatori.


                                                                                                 50
5. Proiectarea conceptuala a bazei de date




       Analog, legături asemănătoare se stabilesc şi intre tabela Useri_admini şi tabela
Foldere.
       Intre tabela Foldere şi tabela Fişiere se stabileşte o legătură de tip 1:n deoarce un folder
poate avea mai multe fişiere in conţinutul său, pe cand un fişier poate fi reprezentat doar intr-un
singur folder.
       In interiorul tabelei Useri_admini se stabileşte o asociere de tip 1:n, intrucat un utilizator
administrator poate gestiona mai mulţi utilizatori subalterni, iar un utilizator subaltern poate fi
gestionat doar de un singur utilizator administrator.
       Intre tabelele Workflow şi Activitati se stabileşte o asociere de tip 1:n, deoarece un flux
de lucru are asociate mai multe activităţi, iar o activitate poate fi stabilită in cadrul unui singur
flux                                              de                                           lucru.




                                                                                                 51
6. Interogarea bazei de date




6. Interogarea bazei de date




6.1 Noţiuni generale


       Sub numele de interogare sau cerere sunt referite acele solicitări de date in mod direct
fără indicarea modului de obţinere.
       O cerere se poate lansa din fereastra de comenzi sau din interiorul unui program
(aplicatia scrisa in PHP) pentru că ea funcţionează ca orice altă comandă dar se poate proiecta
intr-un mod interactiv cu ajutorul utilitarului PhpMyAdmin.


       Una din cele mai importante comenzi şi mai des folosite este comanda SELECT.
       Această comandă permite specificarea datelor care vor constitui ieşirea din interogare
precum şi sursa acestora.
       O frază SQL include mai multe clauze ce sunt executate dupa optimizare de către SQL.


       Structura generală:
SELECT lista campuri FROM lista tabele WHERE conditii de tip select, join
GROUP BY lista campuri grupare
HAVING conditii pe functii
ORDER BY lista campuri grupare


       Numai clauzele SELECT, FROM sunt obligatorii celelalte sunt dependente de natura
cererii. Ordinea clauzelor group by, having, order by poate fi modificată.
       Rezultatul execuţiei este tot un tabel, de regulă temporar, care se suprascrie.
       Vom prezenta pe scurt cele mai frecvente comenzi MySql:


1.Modificarea numelui unei tabele:
mysql>alter table nume_vechi rename nume_nou;




                                                                                           52
6. Interogarea bazei de date




2.Adăugarea unei coloane:
mysql>alter table nume_tabela add column nume_coloana tip atribute;


3. Comanda “insert”
        Insert serveşte la adăugarea de inregistrări (linii) intr-un tabel al bazei de date curente.
        Sintaxa comenzii este:
mysql>insert into nume_tabela(col1, col2,...) values (val1,val2,...);
        Valorile de tip text trebuie puse intre ghilimele simple.


4. Comanda “update”
        Comanda update permite modificarea valorilor unor campuri dintr-un tabel. Sintaxa ei
este:
mysql> update nume_tabela set col1=val1,col2=val2...where col1=value;
        Deşi condiţia din clauza where poate fi complexă, de cele mai multe ori ea este de forma
cheie_primara=valoare.


5. Comanda “select”
        Comanda select este cea mai complexă comandă din limbajul SQL şi este destinată
regăsirii unor anumite informaţii. Dacă se doreşte selectarea tuturor inregistrărilor dintr-o tabelă,
sintaxa comenzii este:
mysql>select * from nume_tabela;
        Dacă se doreşte selectarea doar a unor inregistrări dintr-o tabelă, care indeplinesc o
anumită condiţie, sintaxa comenzii este:
mysql>select * from nume_tabela where nume_camp=100;
        Dacă se doreşte selectarea doar a unor coloane dintr-o tabelă, sintaxa comenzii este:
mysql>select nume_camp1,nume_camp2 from nume_tabela;
        Dacă se doreşte selectarea doar a unor coloane dintr-o tabelă, care indeplinesc o
anumită condiţie, sintaxa comenzii este:
mysql>select nume_camp1,nume_camp2 from nume_tabela where nume_camp=100;


6. Comanda “delete”
        Pentru a şterge unul sau mai multe articole existente, dintr-o tabelă se va utiliza
comanda delete cu sintaxa:
mysql>delete from nume_tabela where nume_camp=100;



                                                                                                 53
6. Interogarea bazei de date




        Pentru a şterge toate articolele existente dintr-o tabelă, sintaxa comenzii este:
mysql>delete from nume_tabela;


7. Comanda “drop”
        Comanda drop permite suprimarea unui tabel din baza de date curentă sau distrugerea
intregii baze de date. Sintaxa comenzii este:
mysql>drop table nume_tabela;
mysql>drop database nume_baza;


8. Comanda “show”
        Comanda show se foloseşte pentru listarea bazelor de date existente, a tabelelor din
baza de date curentă sau pentru listarea campurilor unei tabele. Sintaxa ei este:
mysql>show databases;
mysql>show tables;
mysql>show fields from nume_tabela;


9. Comanda “quit”
        Comanda determină intreruperea conexiunii cu serverul MySQL şi inchiderea sesiunii de
lucru a clientului MySQL. Este echivalentă cu exit.
mysql>quit;
mysql>exit;
        O interogare inglobată in alte cereri SQL se numeşte o subcerere. Subcererea poate să
includă la randul ei o altă subcerere. Subcererile sunt de două feluri: necorelate şi corelate:
• subcererea necorelată este o subcerere independentă de cererea principală. Se execută o
singură dată in interiorul cererii principale.
• cererea corelată se bazează pe date provenite de la cererea principală. Se execută pentru
fiecare inregistrare returnată de cererea principală.
        Execuţia subcererillor corelate durează mai mult, iar acest lucru este vizibil in cazul
bazelor de date cu un volum foarte mare de date.
        Din punct de vedere al rezultatelor returnate, subcererile se impart in trei categorii:
• Subcereri care intorc o singură valoare
• Subcereri care intorc o coloană
• Subcereri care intorc un tabel




                                                                                                  54
6. Interogarea bazei de date




        Mai departe, urmează să prezentăm principalele comenzi SQL folosite pentru
interogarea bazei de date in cadrul aplicaţiei de management al documentelor.


6.2 Conectarea la Baza de Date


        PHP permite conectarea la diferite baze de date. Cea mai frecventă combinaţie o
reprezintă PHP şi MySQL pe care o vom prezenta in acest capitol.
        Pentru a putea funcţiona o aplicaţie web dezvoltată cu aceste medii trebuie instalate:
php, mySQl şi serverul de web Apache. (se va instala xampp sau easyphp, etc.) Ideea pe care
se bazează interacţiunea PHP - MySQL sau in general interactiunea dintre PHP şi o bază de
date este aceea că permite că informaţiile care se doresc să apară pe site să fie prezente in
baza de date. In acest fel informaţiile pot fi actualizate usor şi prezentate intr-o formă "dinamică"
in cadrul site-ului.
        Vom incepe prin a ne conecta la o bază de date MySQL.
mysql_connect(adresa, utilizator, parola);
        Ca şi parametri vom folosi adresa care reprezintă IP-ul sau hostname-ul calculatorului
pe care am instalat baza de date MySQL. Acesta poate fi acelaşi cu cel pe care rulează serverul
de web (de obicei Apache sau IIS) sau un alt calculator. In cazul in care se găseşte pe acelaşi
calculator cu serverul de web, putem folosi la adresa şi localhost. Numele de utilizator şi parolă
vor fi cele setate pentru MySQL. Implicit acestea sunt nume de utilizator: root şi fără parolă.
Este recomandat ca aceste setări implicite să fie modificate.
        Funcţia mysql_connect returnează un număr de identificare a conexiunii in caz de
succes, sau false in caz de eroare. In cazul in care nu ne putem conecta la baza de date funcţia
mysql_connect va returna false, iar in acest caz se va trece la executarea funcţiei die, care va
afişa mesajul din paranteză şi va termina execuţia scriptului.
        Următorul pas il reprezintă alegerea bazei de date.
mysql_select_db(baza_de_date, identificatorul_conexiunii);
        Parametrii folosiţi in acest caz vor fi: numele bazei de date ales şi identificatorul returnat
de către mysql_connect.
        Acestea fiind zise, conectarea la baza de date se face utilizand următoarea sintaxă
PHP:
<?php
$AdresaBazaDate = "localhost";



                                                                                                  55
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie
Documentatie

Weitere ähnliche Inhalte

Andere mochten auch

Introduction tovn splitted
Introduction tovn splittedIntroduction tovn splitted
Introduction tovn splittedNguyen Huy Thach
 
Corneliu Zelea Codreanu
Corneliu Zelea CodreanuCorneliu Zelea Codreanu
Corneliu Zelea CodreanuCitesteLiber
 
Rbd Homes rebranding
Rbd Homes rebrandingRbd Homes rebranding
Rbd Homes rebrandingLaeeq Ali
 
2011 Subaru Tribeca For Sale Near Manchester NH | Singer Subaru
2011 Subaru Tribeca For Sale Near Manchester NH | Singer Subaru2011 Subaru Tribeca For Sale Near Manchester NH | Singer Subaru
2011 Subaru Tribeca For Sale Near Manchester NH | Singer SubaruSinger Subaru, LLC
 
How can a broken business be fixed?
How can a broken business be fixed?How can a broken business be fixed?
How can a broken business be fixed?Roger Gillespie
 
When the faith rubber meets the road mile 3
When the faith rubber meets the road   mile 3When the faith rubber meets the road   mile 3
When the faith rubber meets the road mile 3Donald Jacobs
 
Raport la Studiu de Evaluare a Impactului asupra Mediului
Raport la Studiu de Evaluare a Impactului asupra MediuluiRaport la Studiu de Evaluare a Impactului asupra Mediului
Raport la Studiu de Evaluare a Impactului asupra MediuluiAcademia Caţavencu
 

Andere mochten auch (18)

Introduction tovn splitted
Introduction tovn splittedIntroduction tovn splitted
Introduction tovn splitted
 
Corneliu Zelea Codreanu
Corneliu Zelea CodreanuCorneliu Zelea Codreanu
Corneliu Zelea Codreanu
 
Swot Analysis
Swot AnalysisSwot Analysis
Swot Analysis
 
Rbd Homes rebranding
Rbd Homes rebrandingRbd Homes rebranding
Rbd Homes rebranding
 
2011 Subaru Tribeca For Sale Near Manchester NH | Singer Subaru
2011 Subaru Tribeca For Sale Near Manchester NH | Singer Subaru2011 Subaru Tribeca For Sale Near Manchester NH | Singer Subaru
2011 Subaru Tribeca For Sale Near Manchester NH | Singer Subaru
 
Gånger med bilder
Gånger med bilderGånger med bilder
Gånger med bilder
 
How can a broken business be fixed?
How can a broken business be fixed?How can a broken business be fixed?
How can a broken business be fixed?
 
Seo Manual
Seo ManualSeo Manual
Seo Manual
 
Sosyal Medya ve Eğitim
Sosyal Medya ve EğitimSosyal Medya ve Eğitim
Sosyal Medya ve Eğitim
 
When the faith rubber meets the road mile 3
When the faith rubber meets the road   mile 3When the faith rubber meets the road   mile 3
When the faith rubber meets the road mile 3
 
Newsletter January - February 2011
Newsletter January  - February 2011Newsletter January  - February 2011
Newsletter January - February 2011
 
Comunicat evacuare romi - coastei-cluj napoca
Comunicat   evacuare romi - coastei-cluj napocaComunicat   evacuare romi - coastei-cluj napoca
Comunicat evacuare romi - coastei-cluj napoca
 
Daktari Newsletter September - October 2011
Daktari Newsletter September - October 2011Daktari Newsletter September - October 2011
Daktari Newsletter September - October 2011
 
Daktari Newsletter May - June 2011
Daktari Newsletter May - June 2011Daktari Newsletter May - June 2011
Daktari Newsletter May - June 2011
 
Raport la Studiu de Evaluare a Impactului asupra Mediului
Raport la Studiu de Evaluare a Impactului asupra MediuluiRaport la Studiu de Evaluare a Impactului asupra Mediului
Raport la Studiu de Evaluare a Impactului asupra Mediului
 
Formular aplicare pentru experti amare phrala
Formular aplicare pentru experti   amare phralaFormular aplicare pentru experti   amare phrala
Formular aplicare pentru experti amare phrala
 
Social Media & Education
Social Media & EducationSocial Media & Education
Social Media & Education
 
Our Planet Earth
Our Planet EarthOur Planet Earth
Our Planet Earth
 

Ähnlich wie Documentatie

Date structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataDate structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataionut_ignatescu
 
Lucrare grad i gidioi ionel cup e 15 iumie_bun-converted
Lucrare grad i gidioi ionel  cup e 15  iumie_bun-convertedLucrare grad i gidioi ionel  cup e 15  iumie_bun-converted
Lucrare grad i gidioi ionel cup e 15 iumie_bun-convertedGadioi Ionel
 
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizareDiploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizareVlad Petre
 
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...Ecaterina Moraru (Valica)
 
Disertatie retelele sociale, un nou canal de marketing pentru comertul online
Disertatie   retelele sociale, un nou canal de marketing pentru comertul onlineDisertatie   retelele sociale, un nou canal de marketing pentru comertul online
Disertatie retelele sociale, un nou canal de marketing pentru comertul onlineAlexandru Rada
 
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...Ecaterina Moraru (Valica)
 
Arta de a comunica ghid pentru activitati de comunicare
Arta de a comunica ghid pentru activitati de comunicareArta de a comunica ghid pentru activitati de comunicare
Arta de a comunica ghid pentru activitati de comunicareIrina Sile
 
Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...
Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...
Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...ivan ion
 
Tendinte in proiectarea si dezvoltarea aplicatiilor Web
Tendinte in proiectarea si dezvoltarea aplicatiilor WebTendinte in proiectarea si dezvoltarea aplicatiilor Web
Tendinte in proiectarea si dezvoltarea aplicatiilor WebSabin Buraga
 
IT & C, Volumul 2, Numărul 3, Septembrie 2023 - Rezumate
IT & C, Volumul 2, Numărul 3, Septembrie 2023 - RezumateIT & C, Volumul 2, Numărul 3, Septembrie 2023 - Rezumate
IT & C, Volumul 2, Numărul 3, Septembrie 2023 - RezumateNicolae Sfetcu
 
Noi tendinte in activitatea de birotica Proiect de Licenta Patrascu Frincu M...
 Noi tendinte in activitatea de birotica Proiect de Licenta Patrascu Frincu M... Noi tendinte in activitatea de birotica Proiect de Licenta Patrascu Frincu M...
Noi tendinte in activitatea de birotica Proiect de Licenta Patrascu Frincu M...Marketing Communication Health &Medicine
 
Ilie vaduva vasile baltag ingineria programarii (vol.1) - part 1
Ilie vaduva vasile baltag   ingineria programarii (vol.1) - part 1Ilie vaduva vasile baltag   ingineria programarii (vol.1) - part 1
Ilie vaduva vasile baltag ingineria programarii (vol.1) - part 1George Cazan
 
07 tehnici de comutatie transmisiuni
07 tehnici de comutatie transmisiuni07 tehnici de comutatie transmisiuni
07 tehnici de comutatie transmisiuniRobert Kocsis
 
Cloud computing caracteristici si modele v greavu
Cloud computing caracteristici si modele   v greavuCloud computing caracteristici si modele   v greavu
Cloud computing caracteristici si modele v greavuMalairauValeria
 
46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...
46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...
46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...anaany2
 
Volumul de lucrari ale Conferintei Nationale de Interactiune Om-Calculator --...
Volumul de lucrari ale Conferintei Nationale de Interactiune Om-Calculator --...Volumul de lucrari ale Conferintei Nationale de Interactiune Om-Calculator --...
Volumul de lucrari ale Conferintei Nationale de Interactiune Om-Calculator --...Sabin Buraga
 

Ähnlich wie Documentatie (20)

Date structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataDate structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked data
 
Lucrare grad i gidioi ionel cup e 15 iumie_bun-converted
Lucrare grad i gidioi ionel  cup e 15  iumie_bun-convertedLucrare grad i gidioi ionel  cup e 15  iumie_bun-converted
Lucrare grad i gidioi ionel cup e 15 iumie_bun-converted
 
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizareDiploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
 
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
 
Disertatie retelele sociale, un nou canal de marketing pentru comertul online
Disertatie   retelele sociale, un nou canal de marketing pentru comertul onlineDisertatie   retelele sociale, un nou canal de marketing pentru comertul online
Disertatie retelele sociale, un nou canal de marketing pentru comertul online
 
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...
Tehnici De Tip Mashup Pentru Interactiuni Web In Sisteme Informationale Geogr...
 
Arta de a comunica ghid pentru activitati de comunicare
Arta de a comunica ghid pentru activitati de comunicareArta de a comunica ghid pentru activitati de comunicare
Arta de a comunica ghid pentru activitati de comunicare
 
Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...
Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...
Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...
 
Tendinte in proiectarea si dezvoltarea aplicatiilor Web
Tendinte in proiectarea si dezvoltarea aplicatiilor WebTendinte in proiectarea si dezvoltarea aplicatiilor Web
Tendinte in proiectarea si dezvoltarea aplicatiilor Web
 
Limajul c
Limajul cLimajul c
Limajul c
 
IT & C, Volumul 2, Numărul 3, Septembrie 2023 - Rezumate
IT & C, Volumul 2, Numărul 3, Septembrie 2023 - RezumateIT & C, Volumul 2, Numărul 3, Septembrie 2023 - Rezumate
IT & C, Volumul 2, Numărul 3, Septembrie 2023 - Rezumate
 
Algoritmi
AlgoritmiAlgoritmi
Algoritmi
 
Noi tendinte in activitatea de birotica Proiect de Licenta Patrascu Frincu M...
 Noi tendinte in activitatea de birotica Proiect de Licenta Patrascu Frincu M... Noi tendinte in activitatea de birotica Proiect de Licenta Patrascu Frincu M...
Noi tendinte in activitatea de birotica Proiect de Licenta Patrascu Frincu M...
 
Ilie vaduva vasile baltag ingineria programarii (vol.1) - part 1
Ilie vaduva vasile baltag   ingineria programarii (vol.1) - part 1Ilie vaduva vasile baltag   ingineria programarii (vol.1) - part 1
Ilie vaduva vasile baltag ingineria programarii (vol.1) - part 1
 
07 tehnici de comutatie transmisiuni
07 tehnici de comutatie transmisiuni07 tehnici de comutatie transmisiuni
07 tehnici de comutatie transmisiuni
 
Cloud computing caracteristici si modele v greavu
Cloud computing caracteristici si modele   v greavuCloud computing caracteristici si modele   v greavu
Cloud computing caracteristici si modele v greavu
 
46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...
46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...
46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...
 
Word si excel
Word si excelWord si excel
Word si excel
 
Volumul de lucrari ale Conferintei Nationale de Interactiune Om-Calculator --...
Volumul de lucrari ale Conferintei Nationale de Interactiune Om-Calculator --...Volumul de lucrari ale Conferintei Nationale de Interactiune Om-Calculator --...
Volumul de lucrari ale Conferintei Nationale de Interactiune Om-Calculator --...
 
Proiect flexform
Proiect flexformProiect flexform
Proiect flexform
 

Documentatie

  • 1. PROIECT DE DIPLOMĂ Aplicaţie pentru managementul documentelor Prezentată Facultăţii de Automatică şi Calculatoare din Universitatea Politehnică Bucureşti de către LUPU Ionut-Marius in Iulie 2010 Coordonator: prof. dr. ing. Valentin SGARCIU
  • 2. Abstract Abstract Documentul este o unealtă de comunicare importantă între departamentele organizaţiilor şi în relaţiile cu alte companii. Sistemele de management al documentelor sunt folosite de organizaţii din toate sectoarele publice şi private pentru a organiza şi structura documentele electronice precum şi pentru a urmări fluxul acestora în cadrul companiei şi în punctele de intrare/ieşire ale acesteia. Această lucrare îşi propune implementarea unei aplicaţii de management al documentelor care permite gestiunea şi urmărirea documentelor, precum şi arhivarea acestora, asigurând un echilibru între securitate şi accesibilitate, protejând informaţiile şi în acelasi timp oferind un acces usor şi rapid pentru a ajuta personalul companiei să lucreze cu un maxim de eficienţă. 2
  • 3. Cuprins Cuprins Abstract …...........................................................................................................i Cuprins …...........................................................................................................3 1. Introducere ….....................................................................................................5 1.1 Sistemele de management al documentelor .................................................5 1.1.1 Definirea documentului …...............................................................5 1.1.2 Caracteristici ….........................................................................…...6 1.1.3 Avantaje ..........................................................................….............9 1.2 Scopul proiectului ….......................................................................................9 2. Aplicaţii similare de management al documentelor …..................................11 2.1 Biblioteci de documente …............................................................................11 2.2 Aplicaţii de flux (workflow) ….........................................................................12 3. Specificaţii de proiectare ….......................................…...................................14 3.1 Stabilirea obiectivelor de proiectare ..............................................................14 3.2 Interfaţa cu utilizatorul ...................................................................................15 4. Limbaje de programare folosite .......................................................................17 4.1 PHP (Hypertext Preprocessor) ......................................................................17 4.2 SQL (Structured Query Language - Limbaj Structurat de Interogare) ..........20 4.2.1 MySql ..............................................................................................20 4.3 HTML (HyperText Markup Language) ...........................................................22 5. Proiectarea conceptuală a bazei de date .........................................................24 5.1 Noţiuni generale .............................................................................................24 5.2 Modelul Entitate-Asociere (EA) ......................................................................25 5.2.1 Identificarea tipurilor de entităţi ........................................................25 5.2.2 Identificarea tipurilor de asocieri ......................................................27 5.2.3 Identificarea şi asocierea atributelor cu tipurile de entităţi sau relaţii ..29 5.2.4 Diagrama Entitate-Asociere .............................................................32 5.3 Modelul relaţional ............................................................................................36 5.3.1 Noţiuni generale ...............................................................................36 5.3.2 Descrierea structurii tabelelor folosite şi legăturilor dintre acestea .40 3
  • 4. Cuprins 6. Interogarea bazei de date ................................................................................52 6.1 Noţiuni generale ...........................................................................................52 6.2 Conectarea la baza de date .........................................................................55 6.3 Inserarea inregistrărilor ................................................................................56 6.4 Selectarea inregistrărilor ..............................................................................57 6.5 Actualizarea inregistrărilor ...........................................................................57 6.6 Ştergerea inregistrărilor ...............................................................................58 7. Prezentarea aplicaţiei ......................................................................................59 7.1 Structură ......................................................................................................59 7.1.1 Modulul client ................................................................................59 7.1.2 Modulul administrator ....................................................................68 8. Detalii de implementare a aplicaţiei ...............................................................70 8.1 Implementarea modulelor ............................................................................70 8.2 Optimizări şi performanţe .............................................................................73 8.2.1 Normalizarea bazei de date ...........................................................73 8.2.2 Utilizarea procedurilor stocate .......................................................75 8.2.3 Promovare .....................................................................................76 9. Concluzii şi dezvoltări ulterioare ....................................................................77 10. Bibliografie .......................................................................................................78 4
  • 5. 1. Introducere 1. Introducere 1.1 Sistemele de management al documentelor Istoria sistemelor pentru managementul documentelor cunoaşte două mari perioade de evoluţie. Primele soluţii dezvoltate erau sisteme in cadrul cărora scopul era in principal „arhivarea electronică‖, reprezentand o alternativă la micrografie. In acea perioadă, 90% dintre soluţii erau concentrate in domeniile de administraţie publică şi bănci-asigurări. A doua perioadă incepe in 1995 odată cu evoluţia reţelelor, a soluţiilor multimedia şi a informaticii in general. Astfel: • documentul electronic a devenit multimedia: nu mai este vorba numai despre texte, dar şi despre imagini, sunet, video, etc. ce pot fi integrate; • un mare progres ce a fost realizat se referă la capacităţile de stocare la costuri din ce in ce mai scăzute (de exemplu DVD-urile); • au apărut din ce in ce mai multe standarde referitoare la protocoalele de reţele, la sistemele de exploatare şi la conectivitatea intre diferitele platforme; • interfeţele om-maşină s-au simplificat mult pentru a face informatica accesibilă pentru mai multe persoane. Justificarea achiziţionării unui sistem pentru managementul documentelor devine astfel, parte importantă şi integrantă a sistemului informaţional al organizaţiilor şi joacă din acest moment un rol economic şi strategic deoarece prin utilizarea şi administrarea eficientă a informaţiei se poate obţine avantaj competitiv. 1.1.1 Definirea documentului Inainte de revoluţia digitală, documentul nu era altceva decat ceea ce definea dicţionarul: "act prin care se adevereşte, se constată sau se preconizează un fapt, se conferă un drept, se recunoaşte o obligaţie; text scris sau tipărit, inscripţie sau altă mărturie servind la cunoaşterea unui fapt real actual sau din trecut" (DEX ediţia a II-a 1996, Editura Univers 5
  • 6. 1. Introducere Enciclopedic). Pe scurt, un document era o foaie de hartie pe care era scris un lucru important, ce putea fi o informaţie. Astăzi, tehnologiile integrate, puternice, pe care le avem permit o redefinire a documentului: "orice pachet de date structurate care poate fi folosit ca informaţie". Adică un document poate fi aproape orice: holograme, CD-ROM-uri, secvenţe video. Un document tipic devine o compoziţie cu text şi elemente multimedia, tipărită mult mai rar ca inainte. Documentul poate fi citit, vizualizat, auzit simultan pe dispozitive wireless portabile sau pe echipamente de birou. Cu ajutorul acestuia se pot realiza tranzacţii de oriunde, fără constrangeri de spaţiu şi timp. Aşadar, apare noţiunea de document electronic. Documentul electronic implică orice conţinut media electronic (text, imagine grafică, arhive, e-mail, etc.), atat timp cat nu desemnează un program pe calculator sau fişiere sistem, fiind destinat folosirii intr-o formă electronică sau in variantă printată. Odată cu dezvoltarea reţelelor de calculatoare, s-a dovedit faptul că in cele mai multe cazuri este mult mai convenabil să distribuim documentele electronice decat cele printate. 1.1.2 Caracteristici Definiţie Un sistem de management al documentelor reprezintă un sistem informatic, folosit pentru a crea, gestiona, distribui şi controla documente electronice, cu facilitaţi de conectare la alte sisteme informatice sau dispozitive electronice. In general, un sistem performant de management al documentelor: • implementează rapid fluxuri de documente • este flexibil la orice structură organizaţională • are un grad inalt de securitate • este adaptabil la orice tip de document • este conectabil la alte aplicaţii • prezintă uşurinţă in exploatare • este scalabil la dezvoltări ulterioare. Componentele de bază ale unui sistem de management al documentelor: 6
  • 7. 1. Introducere Sistemele de management al documentelor implică de obicei stocare, control al versiunilor, date meta, securitate precum şi posibilităţi de indexare şi recuperare. O descriere a acestor componente este prezentată mai jos: • Date meta Această componentă este atribuită fiecărui document in parte. Ca exemplu, datele meta pot include data la care documentul a fost salvat şi identitatea utilizatorului care a salvat acel document. Sistemul de management al documentelor poate extrage automat datele meta din cadrul unui document, sau poate atenţiona utilizatorul să o introducă. Unele sisteme pot utiliza o recunoaştere optică 1 a caracterelor asupra imaginilor scanate sau pot extrage text din documente electronice. Textul rezultat poate fi de ajutor pentru utilizatori in cazul localizării documentelor prin identificarea cuvintelor cheie. • Captura Imagini ale documentelor hartie folosind scannere sau imprimante multifuncţionale. Recunoaşterea optică a caracterelor este des folosită in acest caz. • Indexare Folosită pentru a ţine evidenţa documentelor electronice. Poate varia de la forme simple cum ar fi stabilirea identificatorilor unici ai documentelor pană la forme complexe precum clasificarea dupa datele meta ale documentelor sau indici ai cuvintelor extrase din conţinutul acestora. • Stocare Stocarea documentelor implică de multe ori o gestionare a acestora; unde au fost salvate, pentru cat timp, migrarea documentelor de la un mediu de stocare la altul precum şi distrugerea acestora. • Recuperare Implică obţinerea documentelor din mediul in care au fost stocate. Acest proces poate fi unul complex. In varianta simplă, recuperarea documentelor individuale poate fi realizată prin specificarea de către utilizator a identificatorului unic atribuit documentului respectiv. O 1 Recunoaşterea optică a caracterelor reprezintă translatarea mecanică sau electronică a imaginilor cu scris de mană, tipărit sau printat (de obicei scanat) in text editabil. 7
  • 8. 1. Introducere recuperare mai flexibilă, implică specificarea de către utilizator a unor termeni parţiali de căutare implicand identificatorul documentului şi/sau părţi din datele meta atribuite acestuia. • Securitate Securitatea documentelor este un lucru vital in astfel de sisteme. Multe aplicaţii de management al documentelor au implementat un modul de atribuire de drepturi de către administrator, asupra documentelor, pentru anumiţi utilizatori sau grupuri de utilizatori. Securitatea implică şi atribuirea de semnături digitale asupra documentelor pentru validarea autenticităţii acestora precum şi transmiterea lor de la server la client sau invers folosind conexiuni sigure (SSL2). • Workflow (Aplicaţii de flux) Documentele intr-o organizaţie nu sunt statice. Ele sunt create, modificate, distribuite pe rute clar definite. De aceea, sistemele de management de documente conţin aplicaţii de flux care determină cu precizie unde se trimite un document, dacă a ajuns la destinaţie, cand a fost redirectat şi care este statutul lui la un moment dat. Permit automatizarea proceselor din cadrul organizaţiei, rutand un document sau un folder de documente către utilizatori şi grupuri folosind un set de reguli stabilite de noi. Ele pot fi manuale, bazate pe reguli sau automate. • Colaborare Atunci cand un utilizator autorizat face modificări asupra unui document, accesul celorlalţi utilizatori trebuie să fie blocat atat timp cat se desfaşoară acea activitate. • Controlul versiunilor Versiunea unui document este o copie intermediară a unui document sau o actualizare a unui document precedent. Prin crearea şi păstrarea transparentă a versiunilor unui document este posibilă urmărirea evoluţiei acestuia. • Publicare Un document publicat trebuie să fie intr-un format care nu poate fi modificat uşor decat cu unelte sau cunoştinţe specifice, fiind totodată ―read-only‖ sau portabil. 2 SSL (Secure Sockets Layer) este un acronim care reprezintă un protocol Web dezvoltat de Netscape pentru a transmite documente private prin Internet. 8
  • 9. 1. Introducere Funcţiile de bază ale sistemelor de management al documentelor Sistemele de management al documentelor asigură: • Alocarea unui număr unic de inregistrare fiecărui document • Stabilirea locului unde se află fiecare document activ. • Urmărirea intregului ciclu de viaţă al unui document - personalul insărcinat cu recepţia acestuia. - momentul la care a fost recepţionat. - persoana care răspunde de avizarea/răspunsul formulat. - data la care răspunsul/avizarea au fost finalizate. • Controlul versiunii. 1.1.3 Avantaje Tradiţionalele sisteme de operare ca DOS şi Windows nu au reuşit să ofere uneltele şi resursele necesare pentru gestiunea documentelor. Spre deosebire de sistemele manuale, sistemele automate de management al documentelor: • Stochează informaţiile legate de document intr-un singur loc • Permit accesul rapid la locul in care se află documentul in organizaţie • Informează privind stadiul de avizare (rezoluţie) in care se află un document • Urmăresc timpul necesar finalizării unei avizări (rezoluţii) şi cele care au depăşit acest termen • Vizualizează numărul de documente intrate zilnic, săptămanal şi lunar. 1.2 Scopul proiectului Scopul proiectului este de a realiza o aplicaţie de management al documentelor bazată pe tehnologii web, care să ofere utilizatorilor dintr-o reţea soluţii privind problemele de stocare, căutare, de urmărire şi de control a propriilor documente electronice, ele putand fi accesate de oriunde şi oricand. Aplicaţia este realizată pentru a gestiona : 9
  • 10. 1. Introducere • Fluxul Documentelor : – Gestiunea documentelor dintr-o organizaţie –Inregistrarea documentelor prin atribuirea de numere unice in cadrul organizaţiei –Clasificarea documentelor –Identificarea sursei –Căutarea şi regăsirea rapida a documentelor –Stările documentelor –Acces rapid la documente prin browsere web standard • Arhivarea documentelor electronice: –Fişierele sunt salvate intr-un mediu de stocare secundar –Informaţia este centralizată fiind uşor de regăsit şi controlat. 10
  • 11. 2. Aplicatii similare de management al documentelor 2. Aplicaţii similare de management al documentelor Sumar. In acest capitol sunt descrise cateva aplicatii cu funcţionalitate similara cu cea din cadrul proiectului. 2.1 Biblioteci de documente Elemente centrale al unui sistem de management de documente, bibliotecile de documente conţin: • Documente relative la proiect. • Proceduri ale sistemului calităţii, manualul calităţii. • Norme, proceduri, regulamente care trebuiesc consultate de personal. • Documente interne etc. Un exemplu concret de astfel de aplicaţii il reprezintă DocPlus Biblioteca de documente. Beneficii -Oferă acces rapid la biblioteci electronice cu informaţii şi documente utile, acces la baze de discuţii tematice sau colaborative; -Asigură utilizatorilor acces la documente tematice, departamentale şi transfer de ―know- how‖, in baza drepturilor de acces definite, biblioteci disponibile pentru toţi membrii unei echipe sau ai unui grup de lucru; -Reduce incărcarea inutilă a reţelei, fiind transmise doar legături (link-uri) către documentele de interes, din cadrul bibliotecii virtuale; imbunătăţeşte colaborarea intre echipele de lucru prin partajarea şi distribuţia informaţiilor; -Asigură reducerea costurilor asociate cu gestiunea şi arhivarea diferitelor tipuri de documente ale departamentelor, precum şi timpul alocat activităţilor de arhivare şi regăsire a documentelor; -Creşte eficienţa personalului prin reutilizarea informaţiilor stocate in aplicaţii partajate sau utilizarea acestor informaţii ca bază de plecare in rezolvarea de situaţii similare; 11
  • 12. 2. Aplicatii similare de management al documentelor -Permite gruparea documentelor in zone de interes pentru acces rapid la acestea, precum şi crearea unor profile de interes pentru notificare automată de către sistem in cazul apariţiei unor informaţii noi care corespund profilelor create. 2.2 Aplicaţii de flux (workflow) Documentele intr-o organizaţie nu sunt statice. Ele sunt create, modificate, distribuite pe rute clar definite. De aceea, sistemele de management de documente conţin aplicaţii de flux care determină cu precizie unde se trimite un document, dacă a ajuns la destinaţie, cand a fost redirectat şi care este statutul lui la un moment dat. DocPlus Circuitul documentelor este o aplicaţie care permite automatizarea, gestionarea şi monitorizarea proceselor interne de lucru, care pot fi imbunătăţite, rafinate, iar erorile pot fi reduse intrucat paşii de flux predefiniţi sunt rezultatul unei analize a proceselor de lucru. Odată cu evoluţia fluxurilor de lucru, profilul acestora se poate modifica cu uşurinţă. Modulul se adresează oricărei tip de organizaţii, fie că este organizaţie guvernamentală, companii mari sau din segmentul intreprinderilor mici şi mijlocii, fiind un instrument de lucru eficient utilizatorilor sistemului şi managementului organizaţiei. Integrarea cu platforma internă de comunicare mail şi in timp real este nativă, permiţand utilizatorilor sistemului de management al documentelor să fie notificaţi asupra acţiunii de aprobare, informare a unor documente. Documentele vor putea fi accesate şi se va putea lucra asupra lor indiferent de locul in care se află utilizatorii autorizaţi. Acest lucru este posibil utilizand funcţiile avansate de lucru off- line pe care sistemul le pune la dispoziţie. Timpii de aşteptare pentru acţionarea asupra documentelor urgente sunt eliminaţi, productivitatea fiind susţinută prin eficienţă. Aceeaşi eficienţă se remarcă şi prin utilizarea capabilităţii de comunicare in timp real din orice locaţie cu persoanele implicate in activitatea respectivă pentru schimb de idei, informaţii şi luare de decizii. Circuitul documentelor asigură suportul pentru automatizarea proceselor interne ale organizaţiei, pune la dispoziţie instrumente pentru definirea circuitului diverselor tipuri de documente, in scopul aprobării interne şi informării, furnizand in orice moment rapoarte privind stadiul de aprobare, tipurile de documente procesate şi alte informaţii specifice. 12
  • 13. 2. Aplicatii similare de management al documentelor Beneficii -Oferă un mecanism automatizat de circulaţie internă a documentelor de diverse tipuri, definite intern: cerere achiziţie, cerere concediu, referat deplasare, decontare, sau alte formulare specifice organizaţiei. -Oferă un cadru unitar şi standardizat pentru operarea documentelor interne de către personal. - Asigură circulaţia documentelor in interiorul organizaţiei pe trasee predefinite sau stabilite de către autorul documentului, cu posibilitatea aprobării sau respingerii acestora şi adăugarea de comentarii. -Pune la dispoziţie multiple criterii de definire a fluxului de aprobare, a aprobatorilor finali, a timpilor de aşteptare, de informare. -Permite urmărirea stării documentelor pe parcursul fluxului, precum şi evidenţierea modului de rezolvare a fiecărui document de către responsabilii desemnaţi. -Oferă posibilitatea de a obţine rapoarte privind documentele rezolvate sau aflate in lucru dupa criterii precum stare, tip, responsabil etc. -Asigură integrarea cu sistemul de comunicare in timp real pentru afişarea disponibilităţii persoanelor pentru comunicare sau schimb de idei. -Asigură obţinerea de rapoarte specifice după persoane, stare document, tip document, fiecare persoană avand acces la documentele proprii sau la cele comune, in funcţie de drepturile de acces stabilite. -Eficientizează lucrul cu documentele pe hartie şi automatizează procesele de aprobare internă şi informare, reducand timpul necesar manipulării documentelor. 13
  • 14. 3. Specificatii de proiectare 3. Specificaţii de proiectare Sumar. In acest capitol sunt prezentate cerinţele de proiectare ale aplicaţiei. Acest lucru presupune o bună formulare şi inţelegere a problemei, evidenţiind necesităţile informaţionale ale organizaţiei. Această intelegere poate conduce la o distincţie netă intre analiză ("ce trebuie făcut?") şi proiectarea ("cum trebuie făcut?") aplicaţiei. 3.1 Stabilirea obiectivelor de proiectare Aplicaţia va prezenta următoarele caracteristici, in ceea ce priveşte stabilirea obiectivelor de proiectare. • independenţa de platformă • uşurinţă in exploatare • nu necesită instalare sau alte configurări • grad inalt de securitate • adaptabilă la orice tip de document • dinamică Obiectul de bază cu care operează aplicaţia este documentul electronic. Documentele sunt introduse de către utilizatori in baza de stocare a organizaţiei prin reţeaua Internet prin completarea unor formulare on-line specifice. Aceste formulare vor fi proiectate astfel incat să permită crearea de documente noi, sau rescrierea acestora peste cele vechi. Totodată, sunt preluate de către sistem şi verificate in ceea ce priveşte completitudinea şi corectitudinea datelor introduse de utilizator. De asemenea datele introduse sunt supuse unor prelucrări menite a proteja sistemul informatic la atacuri informatice (dezactivarea caracterelor speciale, eliminarea eventualelor tag-uri sau secvenţe de cod). Structura documentelor in cadrul aplicaţiei trebuie să fie aceeaşi cu cea de pe suportul fizic pe care sunt stocate, facilitand astfel funcţia de adaptabilitate şi scalabilitate a aplicaţiei. 14
  • 15. 3. Specificatii de proiectare Documentele companiilor sunt puse in comun angajaţilor acestora intr-un mediu securizat. Se va folosi o transmisie criptată a acestora (SSL), informaţiile din baza de date precum şi documentele electronice efective vor fi salvate in mod regulat (―backup‖), iar accesul documentelor de către utilizatori se va face pe baza drepturilor caştigate. Mai mult, se vor folosi funcţii hash de criptare/decriptare pentru garantarea autenticităţii şi confidenţialităţii documentelor şi datelor despre utilizatori dar şi pentru stabilirea modificărilor făcute asupra documentelor. Aplicaţia va fi modularizată, pentru o inţelegere şi distribuire mai bună a sarcinilor in etapa de implementare. Pentru asigurarea calităţii aplicaţiei, aceasta trebuie indeplinească următoarele: Increderea Este garantată buna funcţionare precum şi corectitudinea stocării datelor obţinute de la utilizatori in baza de date. Eventualele erori ce pot să apară vor fi in stransă legatură cu starea sistemului pe care este rulată aplicaţia, dar şi cu starea resurselor ce sunt utilizate. Fiabilitatea Posibilitatea de accesare a aplicaţiei web depinde de funcţionalitatea serverului pe care este rulată aplicaţia, cat şi de starea bazei de date. Aplicaţia web in discuţie este construită pentru a fi folosită in condiţii optime o perioadă indelungată de timp, efectuanduse operaţii din cele mai diverse. Securitatea Este asigurată păstrarea confidenţialităţii datelor introduse de utilizatorii care au cont in cadrul aplicaţiei. Toleranţa la erori Aplicaţia are o toleranţa ridicată la erori. Eventualele erori ce pot să apară depind de configuraţia serverului pe care rulează aplicaţia şi de baza de date utilizată. 15
  • 16. 3. Specificatii de proiectare 3.2 Interfaţa cu utilizatorul Interfaţa este intuitivă, prezentand uşurinţă in exploatare indiferent de gradul de cunoştinţe al utilizatorului. Interfaţa cu utilizatorul implică un set de funcţionalităţi prin care acesta trimite comenzi pentru a fi rulate in mediul de execuţie. Interfaţa este aceeaşi atat pentru utilizatorul obişnuit cat şi pentru administratorul aplicaţiei, cu excepţia faptului că cel din urmă beneficiază de anumite facilităţi in plus, cum ar fi adăugarea, editarea sau ştergerea de utilizatori, stabilirea perioadei de timp după care incepe să se desfăşoare procesul de arhivare etc. Funcţionalităţile de bază sunt: crearea efectivă a documentelor, ştergerea , modificarea, copierea , mutarea, căutarea şi redenumirea acestora. Alte facilităţi specifice interfeţei implică faptul că utilizatorii vor putea seta drepturi de acces asupra documentelor pentru anumiţi utilizatori, sau crea fluxuri de lucru. Interfaţa vizitatorului este mai redusă, acesta avand doar drepturi de căutare şi vizualizare şi nu are acces la modificarea datelor din bază. Accesul la interfaţa utilizatorului este garantat prin browser-ul web (Opera, Mozilla Firefox, Internet Explorer, Safari etc) care la randul său reprezintă o interfaţă de comunicare cu server-ul pe care rulează aplicaţia. 16
  • 17. 4. Limbaje de programare folosite 4. Limbaje de programare folosite Sumar. In acest capitol sunt prezentate principalele limbaje de programare ce stau la baza implementării aplicaţiei. 4.1 PHP (Hypertext Preprocessor) PHP este un limbaj de programare destinat in primul rand Internetului, aducand dinamică unei pagini de web. Este unul din cele mai importante limbaje de programare web open-source şi server-side. Numele PHP provine din limba engleză şi este un acronim recursiv: Php: Hypertext Preprocessor. Exemple faimoase de utilizare a acestui limbaj sunt PhpBB (forum), PhpNuke(CMS), chiar şi MediaWiki, software-ul din spatele Wikipedia. Folosirea PHP poate fi văzută ca o alternativă gratuită la utilizarea unor limbaje comerciale cum sunt ASP de la Microsoft, ColdFusion de la Macromedia, sau chiar JSP de la Sun Microsystems. Istoric PHP a insemnat iniţial Personal Home Page. PHP a fost inceput in 1994 ca o extensie a limbajului server-side Perl, şi apoi ca o serie de CGI-uri compilate de către Rasmus Lerdorf, pentru a genera un curriculum vitae şi pentru a urmări numărul de vizitatori ai unui site. Apoi a evoluat in PHP/FI 2.0, dar proiectul open-source a inceput să ia amploare după ce Zeev Suraski şi Andi Gutmans, de la Technion au lansat o nouă versiune a interpretorului PHP in vara anului 1998, această versiune primind numele de PHP 3.0. Tot ei au schimbat şi numele in acronimul recursiv de acum, pană atunci PHP fiind cunoscut ca Personal Home Page Tools. Apoi Suraski şi Gutmans au rescris baza limbajului, producand astfel şi Zend Engine in 1999. In mai 2000 a fost lansat PHP 4.0, avand la bază Zend Engine 1.0. Evolutie - PHP 5 17
  • 18. 4. Limbaje de programare folosite Pe 13 iulie 2004 a fost lansat PHP 5, cu Zend Engine II, ce a adus şi o orientare obiect mai pronunţată şi suportand mai multe caracteristici ale acestui tip de programare. PHP 5 aduce mai multe noutăţi faţă de versiunea 4: • Suport imbunătăţit pentru OOP • Introduce extensia PDO - PHP Data Objects, care defineşte o modalitate facilă şi consistentă de accesare a diferitelor baze de date • Imbunătăţiri de performanţă • Suport imbunătăţit pentru MySQL şi MSSQL • Suport nativ pentru SQLite • Suport SOAP integrat • Iteratori pentru date • Controlul erorilor prin tratarea de excepţii PHP 6 PHP 6 are următoarea agendă de imbunătăţiri şi modificări: • imbunătăţirea suportului pentru Unicode • retragerea definitivă a unor funcţii ca register_globals şi magic_quotes, şi a variabilelor tip $HTTP_*_VARS • var va fi un alias pentru public, şi folosirea lui va ridica o atenţionare E_STRICT • suport pentru int pe 64 biti • taguri tip ASP sunt retrase definitiv • erorile tip E_STRICT sunt incluse in E_ALL • adaugarea instrucţinuii goto permite salturi la un alt bloc de comenzi • namespace, import, şi goto devin cuvinte rezervate • opţiunea safe_mode a fost inlăturată • operatorul and a fost inlăturat. Popularitate PHP-ul este unul din cele mai folosite limbaje de programare server-side, conform unui studiu efectuat de Netcraft in aprilie 2002, apărand pe 9 din cele 37 milioane de domenii cercetate in studiu. De asemenea, există un grafic al creşterii folosirii PHP-ului pe site-ul oficial. Popularitatea de care se bucură acest limbaj de programare se datorează următoarelor caracteristici : - Familiaritatea : sintaxa limbajului este foarte uşoară combinand sintaxele unora din 18
  • 19. 4. Limbaje de programare folosite cele mai populare limbaje Perl sau C; - Simplitatea : sintaxa limbajului este destul de liberă. Nu este nevoie de includere de biblioteci sau de directive de compilare, codul PHP inclus intr-un document executanduse intre marcajele speciale; - Eficienţa : PHP-ul se foloseşte de mecanisme de alocare a resurselor, foarte necesare unui mediu multiutilizator, aşa cum este web-ul; - Securitate : PHP-ul pune la dispoziţia programatorului un set flexibil şi eficient de măsuri de siguranţă; - Flexibilitate : fiind apărut din necesitatea dezvoltării web-ului, PHP a fost modularizat pentru a ţine pasul cu dezvoltarea diferitelor tehnologii. Nefiind legat de un anumit server web, PHP-ul a fost integrat pentru numeroasele servere web existente: Apache, IIS, Zeus, server, etc.; - Gratuitate : este probabil cea mai importantă caracteristică a PHP-ului. Dezvoltarea PHP-ului sub licenţa open-source a determinat adaptarea rapidă a PHP-ului la nevoile webului, eficientizarea şi securizarea codului. Scrierea unui script PHP Pentru a crea scripturi PHP, majoritatea programatorilor PHP folosesc un editor de texte obişnuit. Sub Microsoft Windows se utilizează frecvent Windows Notepad , WordPad sau chiar un procesor de texte precum Microsoft Word. Scrierea scheletului programelor PHP Fiecare program PHP include două linii speciale , care indică serverului PHP că textul cuprins intre cele două linii este alcătuit din instrucţiuni PHP. Aceste 2 linii intre care se scrie scriptul PHP sunt : <?php şi ?>. După scrierea scriptului acesta se salvează sub formă de fişier text , cu un nume care respectă următoarele reguli : • Numele fişierului trebuie să fie alcătuit numai din caractere minuscule, cifre şi liniuţe. Utilizarea spaţiilor şi a altor caractere este interzisă. • Extensia fişierului trebuie să fie .php. Crearea datelor de ieşire pentru un browser Web Programele PHP execută trei categorii de operaţii elementare : • Obţin date de la utilizator 19
  • 20. 4. Limbaje de programare folosite • Execută prelucrări ale datelor, respectiv obţin accesul la datele stocate in fişiere şi baze de date şi le manipulează • Afişează date astfel incat un utilizator să le poată vizualiza. Instrucţiunea care trimite date de ieşire la un browser Web astfel incat acestea să fie vizibile pentru utilizatori - numită instrucţiune de reflectare este : • echo (―text afişat ―) ; Suport PHP are un manual oficial intreţinut de comunitatea din jurul proiectului. In plus, răspunsurile la multe probleme pot fi găsite printr-o simplă căutare pe internet. Există multe resurse disponibile pentru un programator PHP incepător. 4.2 SQL (Structured Query Language) SQL (Structured Query Language - Limbaj Structurat de Interogare) este un limbaj de programare specific lucrului cu bazele de date, devenit un standard in domeniu (standardizat ANSI-ISO), fiind cel mai popular limbaj utilizat pentru crearea, modificarea, regăsirea şi manipularea datelor de către SGBD-urile (Sistemele de Gestiune a Bazelor de Date) relaţionale. Pe langă versiunile standardizate ale limbajului, există o mulţime de dialecte şi variante, unele proprietare, fiind specifice anumitor SGBD-uri şi de asemenea conţinand extensii pentru a suporta SBD-urile (Sistemele de Baze de Date) obiectuale (obiectual-relaţionale). SQL permite atat accesul la conţinutul bazelor de date, cat şi la structura acestora. 4.2.1 MySql MySQL este un sistem de gestiune a bazelor de date relaţional, produs de compania suedeză MySQL AB şi distribuit sub Licenţa Publică Generală GNU. Este cel mai popular SGBD open-source la ora actuală, fiind o componentă cheie a stivei LAMP (Linux, Apache, MySQL, PHP). Popularitatea sa ca aplicaţie web este strans legată de cea a PHP-ului care este adesea combinat cu MySQL şi denumit Duo-ul Dinamic. MySQL este mult mai uşor de invăţat şi folosit decat multe din aplicaţiile de gestiune a bazelor de date. 20
  • 21. 4. Limbaje de programare folosite Pentru a administra bazele de date MySQL se poate folosi modul linie de comandă sau, prin descărcare de pe internet, o interfaţă grafică: MySQL Administrator şi MySQL Query Browser. Un alt instrument de management al acestor baze de date este aplicaţia gratuită, scrisă in PHP, phpMyAdmin. Cele mai uzuale operaţii cu bazele de date sunt: Comanda Semnificatie CREATE crează o bază de date sau un tabel DROP şterge o baza de date sau un tabel INSERT adaugă inregistrări intr-un tabel DELETE şterge inregistrări dintr-un tabel UPDATE ―updatează‖ inregistrările dintr-un tabel SELECT selectează un tabel ALTER alterarea unui tabel. In MySQL spaţiul alocat pe discul serverului este funcţie de tipul de date. Cateva din tipurile de date folosite in bazele de date MySQL sunt: Tip Semnificaţie int() număr intreg 32 biti bigint() număr intreg 64 biti tinyint() număr intreg (-128 la 127 sau 0 la 255) 8 biti mediumint() numar intreg 24 biti smallint() număr intreg 16 biti char() secţiune cu lungime fixă de la 0 la 255 caractere varchar() secţiune cu lungime variabilă de la 0 la 255 caractere float() număr mic cu virgulă flotantă double număr mare cu virgulă flotantă text şir cu maximum 65535 caractere date() data in format YYYY-MM-DD date data in format YYYY-MM-DD HH:MM:SS time ora in format HH:MM:SS Pentru ca baza de date să fucţioneze mai bine, coloanelor li s-au adăugat modificatori de coloană. 21
  • 22. 4. Limbaje de programare folosite MySQL poate fi rulat pe multe dintre platformele software existente: AIX, FreeBSD, GNU/Linux, Mac OS X, NetBSD, Solaris, SunOS, Windows 9x/NT/2000/XP/Vista. 4.3 HTML (HyperText Markup Language) HyperText Markup Language (HTML) este un limbaj de marcare utilizat pentru crearea paginilor web ce pot fi afişate intr-un browser (sau navigator). Scopul HTML este mai degrabă prezentarea informaţiilor – paragrafe, fonturi, tabele etc. – decat descrierea semanticii documentului. Specificaţiile HTML sunt dictate de World Wide Web Consortium (W3C). Noţiuni de bază Paginile HTML sunt formate din etichete sau tag-uri şi au extensia .html sau .htm. In marea lor majoritate aceste etichete sunt pereche, una de deschidere <etichetă> şi alta de inchidere </etichetă>. Browserul interpretează aceste etichete afişand rezultatul pe ecran. HTML-ul nu este un limbaj case sensitiv (nu face deosebirea intre litere mici şi mari). Pagina principală a unui domeniu este fişierul index.html. Această pagină este setată a fi afişată automat la vizitarea unui domeniu. De exemplu la vizitarea domeniului www.nume.ro este afişată pagina www.nume.ro/index.html. Unele etichete permit utilizarea de atribute care pot avea anumite valori: <etichetă atribut="valoare"> ... </etichetă> Elementele de marcare • Marcare structurală. Descrie scopul unui text. De exemplu: <h1>Document</h1> Direcţionează browserul pentru a reda "Document" ca pe cel mai important titlu. Marcarea structurală nu are un anumit stil predefinit, dar cele mai multe browsere web au standardizat modul in care acestea sunt afişate. De exemplu, titlurile importante (h1, h2, etc.) sunt aldine şi mai mari decat restul textului. De notat că "h1" este folosit doar o singură dată per pagină deoarece cu el este marcat titlul ei. • Marcare pentru prezentare. Descrie cum apare un text, indiferent de funcţiile sale. De exemplu: <strong>îngroşat</strong> 22
  • 23. 4. Limbaje de programare folosite Va afişa textul "ingroşat" cu litere groase, aldine. • Marcare pentru hiperlink. Leagă părţi ale unui document cu alte documente. De exemplu: <a href="http://upb.ro/">Politehnica Bucuresti</a> Va reda Wikipedia romanească ca hiperlink către un URL specificat. • Elemente speciale (widget). Creează obiecte, cum ar fi butoanele şi listele. Doar marcatorii de prezentare (impreună cu foile de stiluri - CSS) determină cum conţinutul din interiorul marcatorului va fi prezentat. Ceilalţi marcatori spun browserului ce obiecte să redea sau ce funcţii să execute. Mai mult, Pentru o mai bună reprezentare a informaţiilor in pagina web foloseşte CSS (Cascading Style Sheets), care este un standard pentru formatarea elementelor unui document HTML. Stilurile se pot ataşa elementelor HTML prin intermediul unor fişiere externe sau in cadrul documentului, prin elementul <style> şi/sau atributul style. CSS se poate utiliza şi pentru formatarea elementelor XHTML, XML şi SVGL. JavaScript este un limbaj de programare orientat obiect bazat pe conceptul prototipurilor. Este folosit mai ales pentru introducerea unor funcţionalităţi in paginile web, codul Javascript din aceste pagini fiind rulat de către browser. Limbajul este binecunoscut pentru folosirea sa in construirea siturilor web, dar este folosit şi pentru acesul la obiecte incastrate (embedded objects) in alte aplicaţii. Cea mai des intalnită utilizare a JavaScript este in scriptarea paginilor web. Programatorii web pot ingloba in paginile HTML script-uri pentru diverse activităţi cum ar fi verificarea datelor introduse de utilizatori sau crearea de meniuri şi alte efecte animate. 23
  • 24. 5. Proiectarea conceptuala a bazei de date 5 Proiectarea conceptuală a bazei de date Sumar. Pentru realizarea aplicaţiei este necesară construirea bazei de date folosind un server de gestiune baze de date (SGBD), şi anume MySQL. In acest capitol se va prezenta etapă cu etapă realizarea unui proiect conceptual al bazei de date (BD). 5.1 Noţiuni generale Faza de proiectare conceptuală a bazelor de date incepe cu crearea unui model de date conceptual al organizaţiei, care este total independent de detaliile privind implementarea, cum ar fi elementele de software ale sistemului SG-BD ţintă, programele aplicaţie, limbajele de programare, platforma hardware sau orice consideraţie de ordin fizic. Prima etapă in proiectarea BD constă in realizarea unor modele de date conceptuale. Utilitatea oricărei colecţii de date in obţinerea de infomaţii depinde de modul de organizare al datelor. Regulile după care sunt organizate şi manipulate datele depind de modelul de date utilizat. Principalele modele de date utilizate in proiectarea SGBD-urilor sunt: modelul ierarhic (arborescent), modelul reţea, modelul relaţional si modelul orientat pe obiecte. Mai mult, in proiectarea bazelor de date se folosesc 2 categorii de modele: - Modele conceptuale de nivel înalt (modelul Entitate-Asociere, modelul Entitate- Asociere -Extins) – descriu concis colecţiile de date care modelează activitatea dorită fără să detalieze modul de reprezentare sau de prelucrare a datelor - schemă conceptuală de nivel înalt. - Modele specializate (modelul ierarhic, modelul reţea, modelul relaţional, etc.) descriu reprezentarea mulţimilor de entităţi şi a asocierilor dintre acestea prin structuri de date specifice - schemă conceptuală (logică). Trecerea de la modelul conceptual de nivel inalt la un model de date specific, implică proiectarea logică a bazei de date. Modelele ierarhice (arborescente) sunt construite astfel incat au un element unic 24
  • 25. 5. Proiectarea conceptuala a bazei de date radacină şi un număr finit de succesori, care la randul lor au alte noduri succesoare, pană la nodurile terminale, care nu mai au alţi succesori. Orice nod, exceptand nodul rădăcină, are un predecesor unic. Relaţiile care se stabilesc in cadrul acestor modele sunt de tipul 1-n. Modelele de tip reţea sunt de tip graf cu legături bidirecţionale intre noduri. Un nod poate avea mai multi predecesori şi mai mulţi succesori. In aceste modele relaţiile stabilite sunt de tipul m-n. Modelele de tip relaţional sunt de tip tabel de date, care au fost aduse intr-o formă optimă. In astfel de modele relaţiile stabilite admit orice tip de relaţie: 1-n; n-m. Modelele orientate obiect redau structuri de date complexe ale realităţii, impreună cu toate caracteristicile acestora, sub formă de obiecte. Aceste modele de date admit orice tip de relaţie: 1-n; n-m. Un model de date este compus din doua părţi: set de reguli de structurare a datelor (materializate prin LDD) , set de operaţii permise asupra datelor (materializate prin LMD). Pentru folosirea modelului de date adecvat este necesar să se efectueze un studiu şi o analiză privind situaţia reală, pentru identificarea necesarului de informaţii si a modului de reprezentare, precum şi a cerinţelor de prelucrare a acestor informaţii. Modelele de date necesită identificarea structurii modelului, a operatorilor care acţionează asupra structurilor de date şi a restricţiilor pentru menţinerea corectitudinii datelor. Structura modelului presupune identificarea obiectelor (care sunt denumite entităţi), a caracteristicilor acestora (denumite atribute sau campuri de date) şi a legăturilor (denumite relaţii sau asocieri). Acest lucru este descris in cele ce urmează mai jos. 5.2 Modelul Entitate-Asociere Modelul Entitate-Asociere defineşte mulţimile de entităţi şi asocierile dintre ele, dar nu impune nici un mod specific de structurare şi prelucrare (gestiune) a datelor. 5.2.1 Identificarea tipurilor de entităţi In această etapă obiectivul este identificarea principalelor tipuri de entităţi din vederea utilizatorului asupra companiei. 25
  • 26. 5. Proiectarea conceptuala a bazei de date O metodă de identificare a entităţilor constă in examinarea specificaţiei cerinţelor corespunzătoare unei anumite funcţii a utilizatorului in cadrul intreprinderii. Din această specificaţie se identifică substantivele sau expresiile substantivale menţionate. De asemenea, se caută obiectivele principale, cum ar fi: personale, locurile sau conceptele de interes, excluzandu-se substantivele care reprezintă doar calităţi ale altor obiecte. O modalitate alternativă de identificare a entităţilor este de a căuta obiectele care există pe cont propriu. Uneori, entităţile sunt greu de identificat, datorită modului in care sunt prezentate in cadrul specificaţiei cerinţelor utilizatorului, uneori utilizatorii se exprimă prin exemple sau analogii. Nu este intotdeauna evident dacă un anumit obiect este o entitate, o relaţie sau un atribut. Pe măsură ce se identifică entităţile, li se atribuie denumiri care să aibă semnificaţie şi să fie evidente pentru utilizatori. Denumirea şi descrierile entităţilor sunt reunite intr-un dicţionar de date. Atunci cand este posibil se documentează numărul estimat de apariţii ale fiecărei entităţi. O entitate cunoscută sub denumiri diferite, acestea se numesc aliasuri sau sinonime şi sunt inregistrate in dicţionarul de date. Prin entitate inţelegem mulţimea tuturor elementelor de un anumit tip (care prezintă aceleaşi caracteristici). Entitatea sau tabelul bidimensional, constituie unitatea informaţională elementară din structura unei organizări de date prin care se reflectă elemente reale sau abstracte ce definesc segmente omogene ale realităţii obiective caracterizate prin nume unic, număr maxim de apariţii (realizări) şi o structură specifică acestei realităţi pe care o descrie. Prin instanţă a unei entităţi inţelegem un singur element, bine individualizat, unic, din mulţimea elementelor care formează entitatea respectivă. In cazul nostru, s-au creat următoarele entităţi: • Useri_admini • Foldere • Fisiere • Istoric • Workflow • Activitaţi Entităţile sunt de două tipuri: - entităţi independente (sau tari): au existenţa independentă de alte entităţi; 26
  • 27. 5. Proiectarea conceptuala a bazei de date - entităţi dependente (sau slabe): sunt formate din instanţe, care işi justifică incadrarea in clasa respectivă doar atata timp cat intr-o altă entitate (tată) există o anumită instanţă. Fiecare entitate este descrisă de o mulţime de proprietăţi esenţiale numite atribute. Pentru diferitele elemente ale entităţii, atributele pot să primească valori din anumite mulţimi numite domeniul atributului respectiv. 5.2.2 Identificarea tipurilor de asocieri In această etapă obiectivul este identificarea relaţiilor importante care există intre entităţile identificate. Atunci cand se identifică entităţile, o metodă este de a căuta substantivele in specificaţia cerinţelor utilizatorului. De regulă, asocierile sunt indicate prin expresii verbale. Asocierea descrie o legatură specifică, delimitată logic, intre două tipuri semnificative de entităţi sau chiar in interiorul entităţilor, prin care se defineşte gradul de implicare a unei entităţi in raport cu altele. Pentru a stabili tipul legăturii, trebuie determinate numerele minime şi maxime posibile de realizări ale unei entităţi, care pot fi asociate cu o realizare a unei alte entităţi cu care se află in legătură. O astfel de implicare reprezintă cardinalitatea relaţiei (legăturii). Pe măsură ce se identifică tipurile de relaţii, li se atribuie denumiri care au semnificaţie şi sunt existente pentru utilizator. Dupa numărul de entităţi distincte ce participă la asociere, relaţiile pot fi: - relaţii binare, in care se realizează legături intre două entităţi distincte; - relaţii recursive, in care se realizează legături ale entităţilor cu ele insele; - relaţii complexe, in care se realizează legături intre mai mult de două entităţi distincte. – destul de rare. După gradul asocierii (valorile maxime identificate), relaţiile din cadrul unei organizări de date pot fi de diferite tipuri şi anume: - de tipul 1-1, prin care se semnifică conexiunea simplă; - de tipul 1-n şi n-m prin care se semnifică conexiunea multiplă. Raport de cardinalitate: raportul dintre valorile cardinalităţilor unei asocieri faţă de două din mulţimile de entităţi asociate. 27
  • 28. 5. Proiectarea conceptuala a bazei de date - Exemple pentru asocieri binare: 1:1, 1:N, N:1, M:N - Asocierile multiple (k > 2) prezintă cate un raport de cardinalitate pentru fiecare pereche de mulţimi de entităţi pe care le asociază. Noţiunile de entitate, atribut şi relaţie reprezintă (formează) esenţa unui model denumit Entitate - Asociere (EA), care asigură definirea şi modelarea structurii unei organizări de date. Modul de stabilire a tipurilor de entităţi şi a asocierilor nu este unic: aceeaşi funcţionalitate se poate obţine printr-o varietate de diagrame EA. O mulţime de entităţi se denumeşte printr-un substantiv, iar o asociere se denumeşte (de regulă) printr-un verb, deoarece o asociere reprezintă o interacţiune intre entităţi. Modelul EA nu precizează modul cum sunt realizate asocierile intre mulţimile de entităţi: acest aspect depinde de modelul de date specializat utilizat pentru definirea bazei de date. In cadrul fazei de proiectare a BD se recomandă modelul E-A oriunde este necesar, pentru a servi la construirea unei imagini a sectorului de intreprindere care urmează să fie modelat. În cazul aplicaţiei de faţă, vom avea asocieri binare şi recursive. Astfel, se stabilesc asocieri binare intre mulţimile de entităţi: useri_admini – foldere (relaţie de tip 1-1), foldere – fişiere (relaţie de tip 1-n), drepturi – foldere (relaţie de tip n-n), drepturi – fişiere (relaţie de tip n-n). Asocierea recursivă se stabileşte in cazul mulţimii entităţii useri_admini, fiind de tip 1-n, intrucăt un administrator poate gestiona mai mulţi utilizatori iar unui utilizator ii corespunde un singur administrator. O asociere poate prezenta unul sau mai multe atribute proprii cu rol de a caracteriza, explicita, legătura stabilită intre entităţile participante la asociere. Asocieri din cadrul aplicaţiei de management al documentelor: – GESTIONARE (intre useri_admini şi fişiere/foldere) – INIŢIAZĂ (intre useri_admini şi workflow) – PRECIZARE FIŞIER (intre workflow şi fişiere) – SPECIFICARE UTILIZATOR (intre useri_admini şi drepturi) – SPECIFICARE FIŞIER (intre fişiere şi drepturi) – SPECIFICARE FOLDER (intre foldere şi drepturi) – INREGISTRARE FOLDER (intre foldere şi istoric) – INREGISTRARE FIŞIER (intre fişiere şi istoric) – INREGISTRARE UTILIZATOR (intre useri_admini şi istoric) 28
  • 29. 5. Proiectarea conceptuala a bazei de date De exemplu, intre entităţile useri_admini şi fişiere ori useri_admini şi foldere poate exista o asociere GESTIONARE, care implică faptul că un fişier sau folder are un singur utilizator creator. 5.2.3 Identificarea şi asocierea atributelor cu tipurile de entităţi sau relaţii Obiectivul acestei etape constă in asocierea atributelor cu tipurile de entităţi sau relaţii adecvate. Această etapă din constă in identificarea tipurilor privind entităţile şi relaţiile care trebuie reprezentate in BD. Atributele pot fi identificate acolo unde substantivul sau expresia substantivală exprimă o proprietate, calitate, identificator sau caracteristică a uneia din acela entităţi sau relaţii. Atribute simple/compuse Este foarte important de a determina dacă un atribut este simplu sau compus. Atributele compuse sunt formate din atribute simple. De exemplu, atributul Adresă poate fi simplu conţinand toate detaliile adresei ca o singură valoare. Dar atributul poate fi şi compus, fiind format din atribute simple care conţin detaliile adresei ca valori separate in atribute. Stradă, zonă, oraş şi cod P. Opţiunea de a reprezenta detaliile adresei ca un atribut simplu sau compus este determinată de cerinţele utilizatorului. In cadrul acestei etape, este important de identificat toate atributele simple care vor fi reprezentate in modelul de date conceptual-inclusiv acela care formează atributele compuse. De exemplu, in cadrul aplicaţiei noastre, atributul Adresă specific entităţii Useri_admini este unul compus fiind alcătuit din atributele simple Oraş şi Cod_postal. Atributele derivate Atributele ale căror valori pot fi deduse din valorile altor atribute se numesc derivate sau calculate. Un atribut sau o mulţime de atribute pentru care valorile asociate determină in mod unic orice element al entităţii respective se numeşte cheie. Orice entitate admite cel puţin o cheie, deci toate elementele unei entităţi sunt distincte. In cazul in care există elemente care să aibă aceleaşi valori pentru toate atributele, se ia drept cheie un atribut suplimentar reprezentat de numărul asociat elementului in entitatea respectivă, care defineşte in mod unic elementul. Determinarea atributelor cheielor candidate 29
  • 30. 5. Proiectarea conceptuala a bazei de date In această sub-etapă obiectivul constă in identificarea cheii (cheilor) candidate pentru fiecare entitate şi dacă există mai mult decat o cheie candidat – selecţionarea celei care va fi cheia primară. O cheie candidat este un atribut sau un set minimal de atribute ale unei entităţi, care identifică in mod unic fiecare apariţie a acesteia. Se poate identifica mai mult decat o singură cheie candidat, dar in acest caz trebuie să alegem una dintre ele drept cheie primară, celelalte chei candidat se numesc chei alternative. La alegerea unei chei primare din cele candidate trebuie să se ţină seama de următoarele, care ajută la efectuarea selectării: • se alege cheia candidat cu setul minim de atribuţi; • se alege cheia candidat căreia probabilitatea de modificare a valorii este mai mică; • se alege cheia candidat care are probabilitatea mai mică să-şi piardă caracterul de unitate in viitor; • se alege cheia candidat cu cel mai mic număr de caractere; • se alege cheia candidat cea mai prietenoasă din punct de vedere al utilizatorului. In procesul de identificare al cheilor primare se constată dacă o entitate este tare sau slabă. O altă clasificare a atributelor unei entităţi, le prezintă in două feluri: – atribute de identificare (formand impreună identificatorul entităţii) sunt acele atribute care permit distincţia intre instanţele aceleiaşi entităţi; – atributele de descriere (sau descriptori), care sunt folosiţi pentru memorarea caracteristicilor suplimentare ale instanţelor. In cazul aplicaţiei noastre, atributele asociate entităţilor sunt: Atributele entităţii Useri_admini: - id - nume_org - user - parola - nume - prenume - email - telefon - oras 30
  • 31. 5. Proiectarea conceptuala a bazei de date - adresa - cod_postal - data - timp - id_folder - id_admin In exemplul de mai sus, id este atribut de identificare (deoarece nu pot exista doi utilizatori cu acelaşi id), sau o cheie primară, pe cand celelalte atribute sunt descriptori şi chei secundare. • Atributele entităţii Foldere: - id - nume - folder_id - data - timp - owner • Atributele entităţii Fisiere: - id - nume - folder_id - data - timp - owner - versiune • Atributele entităţii Drepturi: - id - id_fisier -r - rwd - rwda - id_user 31
  • 32. 5. Proiectarea conceptuala a bazei de date • Atributele entităţii Workflow: - id - nume - tip - initiator - instructiuni - stare - transmitere - data - timp - id_fisier - exp Atributele entităţii Activităţi: - id - nume - id_user - stare - viz - nota - id_workflow Pentru fiecare relaţie s-a identificat un anumit atribut, id , ce reprezintă atributul relaţiei respective dintre cele două entităţi. 5.2.4 Diagrama Entitate-Asociere Diagramele Entitate – Asociere (Ea) se utilizează pentru a reprezenta mai uşor entităţile şi modelul in care sunt legate acestea unele de altele. Convenţia de reprezentare grafică a elementelor, care participă la formarea unei diagrame EA, este următoarea: - entităţile se reprezintă prin dreptunghiuri, in care este inscris numele entităţii. In cazul entităţilor dependente, conturul va fi cu linie dublă; 32
  • 33. 5. Proiectarea conceptuala a bazei de date - atributele se reprezintă prin cercuri (sau ovale), in interiorul cărora apare numele atributului şi care sunt conectate cu un segment de dreaptă cu entitatea de care aparţin. Pentru a distinge atributele de identificare de cele de descriere, numele celor de identificare va fi subliniat; - asocierile se reprezintă prin romburi (dacă conectează una sau două entităţi) sau poligoane regulate (dacă conectează mai mult de două entităţi) conectate prin segmente de dreaptă la entităţile pe care le leagă, avand inscris in interior (sau alături) numele asocierii. In figura de mai jos este prezentată convenţia de reprezentare a elementelor modelului EA. 33
  • 34. 5. Proiectarea conceptuala a bazei de date Diagrama modelului Entitate-Asociere Atributele entităţilor de mai sus, sunt reprezentate schematic astfel: • entitatea Useri_admini 34
  • 35. 5. Proiectarea conceptuala a bazei de date • entitatea Foldere • entitatea Fisiere 35
  • 36. 5. Proiectarea conceptuala a bazei de date • entitatea Drepturi 5.3 Modelul relaţional 5.3.1 Noţiuni generale Modelul relaţional ca şi orice alt model de date utilizat in proiectarea logică a bazelor de date eliberează utilizatorul de cunoaşterea detaliilor despre structura fizică şi metodele de acces la date. In afară de aceasta, el are două avantaje suplimentare: e simplu şi elegant. Simplitatea sa constă in structurile de date omogene in formă de relaţii tabelare. Iar eleganţa modelului se explică prin temelia sa ştiinţifică. El este riguros din punct de vedere matematic graţie faptului că se sprijină pe bine puse la punct teoriile matematica relaţiilor şi logica de ordinul unu. Modelul relaţional a fost primul exemplu de model de date formal şi a fost propus de E. Codd in 1970. Prin model datele utilizatorului sunt reprezentate şi manipulate in mod abstract. Modelul de asemenea presupune tehnici ce ajută administratorul de a detecta şi corecta posibilele probleme de proiectare ce pot apărea o dată cu pregătirea datelor pentru implementare intr-un SGBD concret. 36
  • 37. 5. Proiectarea conceptuala a bazei de date Orice model de date, conform unei sugestii a lui Codd, trebuie să se bazeze pe trei componente: structurile de date, constrangerile de integritate şi operatorii de manipulare a datelor. - Structurile de date. Structurile sunt definite de un limbaj de definire a datelor (data definition language). Datele in modelul relaţional sunt structurate in relaţii bidimensionale. Elementele principale ale structurii relaţionale sunt relaţiile, tuplurile, atributele, domeniile. - Constrângerile de integritate. Prin integritatea datelor se subinţelege că datele răman stabile, in siguranţă şi corecte. Integritatea in modelul relaţional este menţinută de constrangeri interne care nu sunt cunoscute utilizatorului. - Manipularea datelor. Relaţiile pot fi manipulate utilizand un limbaj de manipulare a datelor (data manipulation language). In modelul relaţional, limbajul foloseşte operatorii relaţionali bazaţi pe conceptul algebrei relaţionale. In afară de aceasta, există limbaje echivalente algebrei relaţionale, cum ar fi calculul relaţional orientat pe tuplu şi calculul relaţional orientat pe domeniu. O bază de date relaţională este compusă dintr-o mulţime finită de relaţii, fiecare relaţie reprezentand un tip de entitate sau o asociere dintre două sau mai multe tipuri (mulţimi) de entităţi. Din această definiţie rezultă că intr-o bază de date fiecare relaţie este unică (nu există două sau mai multe relaţii de acelaşi fel), dat fiind că o bază de date este o mulţime de relaţii. O relaţie se defineşte prin intermediul atributelor sale. Atributele unei relaţii sunt atributele tipului de entitate sau de asociere pe care il reprezintă relaţia respectivă. Fiecare atribut al unei relaţii are un domeniu de definiţie şi poate lua o singură valoare (din domeniul său de definiţie) pentru fiecare tuplu al relaţiei, ceea ce inseamnă că atributele au numai valori scalare. Un domeniu de definiţie este o mulţime cu nume de valori atomice de acelaşi tip, avand o anumită semnificaţie, din care işi iau valori atributele relaţiilor. Nu trebuie confundată atomicitatea din punct de vedere semantic a valorii unui atribut cu atomicitatea structurii de date prin care este reprezentată valoarea acelui atribut in memoria calculatorului. De exemplu, un atribut care desemnează un nume (de persoană, de instituţie, de produs, de componentă, etc.) se reprezintă printr-un şir (vector) de caractere, care, bineinţeles, poate fi descompus in elementele componente (caracterele), dar sistemul de gestiune nu atribuie nici o semnificaţie unui element separat, ci numai intregii valori (şirul de caractere). 37
  • 38. 5. Proiectarea conceptuala a bazei de date Schema relaţiei, notată R(A1A2,...Ai,...An), este compusă din numele relaţiei (R) şi din lista ordonată a atributelor sale A1,A2,...Ai,...An, fiecare atribut Ai definit pe domeniul său de definiţie, D(Ai). Schema relaţiei este folosită pentru a descrie relaţia respectivă şi se mai numeşte şi tipul sau intensiunea relaţiei. Numărul de atribute ale schemei unei relaţii se numeşte gradul relaţiei. O relaţie R definită de schema R(A1,A2,...Ai,...An) este o mulţime de n-tupluri t, fiecare tuplu fiind o listă ordonată de n valori t = <v1,v2,...vi,....vn>, unde 1 ≤ i ≤ n şi vi este valoarea atributului Ai, aparţinand domeniului său de definiţie D(Ai). O relaţie corespunde, in general, unei mulţimi de entităţi din diagrama E-A (Entitate- Asociere) a unei baze de date, iar un tuplu reprezintă o entitate din mulţimea de entităţi. Atributele tipului de entitate din modelul conceptual de nivel inalt devin atributele relaţiei in modelul relaţional. Ca exemplu de relaţie se defineşte relaţia cu schema Fisiere (sau FISIERE) corespunzătoare tipului de entitate ―fisiere‖ (descris in exemplele prezentate anterior) astfel: FISIERE (Id,Nume,Folder_id,data,timp,owner,versiune) Domeniile de definiţie ale atributelor se specifică prin numele domeniului, semnificaţia acestuia, tipul de date şi restricţii asupra valorilor in cadrul acelui tip de date. Exemple de domenii relaţionale ale atributelor: • D_Nume: domeniul numelor fişierelor gestionate, reprezentate printr-un şir de maximum 255 caractere. Cel mai frecvent insă, in implementarea modelului relaţional in cadrul diferitelor sisteme de gestiune a bazelor de date, ca domenii de definiţie ale atributelor se folosesc direct tipurile de date predefinite ale limbajului de definiţie a datelor (LDD) specific acelui SGBD. - în cazul nostru SQL, respectiv MySql. Reprezentarea relaţiilor prin tabele Un tabel este o reprezentare a unei relaţii şi este compus din următoarele părţi: • Numele tabelului, care este identic cu numele relaţiei pe care o reprezintă. • Un număr de coloane egal cu numărul de atribute ale relaţiei, fiecare coloană reprezentand un atribut. • Capul tabelului, in care se inscriu numele atributelor relaţiei, fiecare atribut fiind inscris in coloana corespunzătoare. • O mulţime de linii, fiecare linie corespunzand unui tuplu (deci unei entităţi); in fiecare element al unei linii se inregistrează valoarea atributului corespunzător coloanei in care se află elementul respectiv. 38
  • 39. 5. Proiectarea conceptuala a bazei de date Constrângeri de integritate Constrangerile de integritate sunt reguli care se definesc la proiectarea unei bazei de date şi care trebuie să fie respectate de orice stare a acesteia. Relaţiile unei baze de date reflectă realitatea modelată şi de aceea valorile pe care le conţin trebuie să respecte anumite reguli, care să corespundă celor din realitate. Constrangerile se pot clasifica după locul unde sunt definite şi după modul in care sunt definite. Din punct de vedere al locului unde sunt definite, constrangerile pot fi constrangeri intra-relaţie şi constrangeri inter-relaţii. Constrangerile intra-relaţie sunt reguli care se impun in cadrul unei singure relaţii şi asigură integritatea datelor acesteia. Ele sunt, la randul lor, de trei categorii: • Constrangeri de domeniu, care sunt condiţii ce se impun valorilor atributelor şi asigură integritatea domeniilor atributelor. • Constrangeri de tuplu, care sunt condiţii ce se impun tuplurilor unei relaţii şi asigură identificarea corectă a tuplurilor prin intermediul cheilor (primare sau candidate). • Constrangeri impuse prin dependenţe de date (dependenţe funcţionale, multivalorice sau de joncţiune); acestea sunt constrangeri prin care valorile unor atribute ale unei relaţii determină valorile altor atribute ale aceleiaşi relaţii. Constrangerile inter-relaţii sunt reguli care se impun intre două sau mai multe relaţii. Cele mai importante constrangeri inter-relaţii sunt constrangerile de integritarea referenţială, care se realizează prin intermediul cheilor străine şi asigură asocierea corectă a relaţiilor. Algebra relaţională Algebra relaţională exprimă interogările prin aplicarea unor operatori specializaţi (operatorii algebrei relaţionale) asupra relaţiilor. E.F. Codd a propus opt operaţii ale algebrei relaţionale, grupate in două categorii: • Operaţii pe mulţimi: reuniunea, intersecţia, diferenţa şi produsul cartezian. Aceste operatii reprezintă adaptarea operatiilor corespunzătoare din teoria mulţimilor şi acţionează asupra relaţiilor văzute ca mulţimi de elemente (tupluri), fără a lua in consideraţie compoziţia fiecărui element. • Operaţii relaţionale speciale: restricţia, proiecţia, joncţiunea şi diviziunea. Aceste operaţii iau in consideraţie compoziţia tuplurilor, formate din valori ale atributelor relaţiilor. Toate aceste operaţii trebuie să asigure proprietatea de inchidere, adică rezultatul fiecărei operaţii trebuie să fie tot o relaţie. Această proprietate permite efectuarea operaţiilor imbricate: proiecţia unei joncţiuni dintre o relaţie şi restricţia aplicată altei relaţii, etc. 39
  • 40. 5. Proiectarea conceptuala a bazei de date Restricţia şi proiecţia sunt operaţii unare (au un singur operand, o relaţie); operaţiile pe mulţimi, joncţiunea şi diviziunea sunt operaţii binare (au doi operanzi, două relaţii). 5.3.2 Descrierea structurii tabelelor folosite şi legăturilor dintre acestea Mai intai, vom prezenta concretiza cat mai succint anumite noţiuni legate de structura bazei de date folosită pentru aplicaţia de management al documentelor. Aşadar, O cheie primară sau principală reprezintă una sau mai multe coloane ale caror valori identifică in mod unic toate liniile unui tabel. Cheia primară este utilizată pentru a face referinţe la o singură linie. Fără cheia primară, actualizarea sau stergerea de linii specifice devine foarte dificilă, deoarece nu există nici o modalitate garantat sigură pentru a face referire numai la liniile ce vor fi afectate. Cheie straină sau externă este o coloană sau un set de coloane cu valori din setul de valori a cheii primare a unei alte tabele cu care face astfel o legătură. Dacă o cheie străină apare in mai mult de o tabelă, aceasta este de regulă o legătură intre cele două tabele. Astfel, legăturile intre tabele se fac prin intermediul cheilor primare şi străine. Fiecare coloană are un set de atribute care pot fi completate (sau nu) pentru a prelua anumite caracteristici. In cazul atributelor avem mai multe opţiuni, in funcţie de serverul de gestiune al bazei de date (in cazul nostru MySql): - să alegem tipul variabilei, folosit pentru a menţiona cu ce tip de date poate fi completat campul respectiv (ex: int, varchar, date, text etc.); - să setăm dimensiunea maximă admisă; - avem posibilitatea de a completa o valoare nulă (NULL sau NOT_NULL); Campurile marcate NOT NULL sunt acele campuri ale căror valori trebuie introduse in fiecare inregistrare, in timp ce campurile NULL sunt acelea care nu necesită de fiecare dată introducerea unei valori. - avem posibilitatea de a selecta o valoare default cu care vor fi completate toate inregistrările coloanei respective; - putem seta auto-increment (incrementare automată la fiecare inregistrare nouă din tabelă), unique (nu pot exista două sau mai multe valori identice), index, primary key (cheie primară), foreign key (cheie straină). 40
  • 41. 5. Proiectarea conceptuala a bazei de date Inainte de prezentarea tabelelor, am creat o bază de date cu MySQL server versiunea 5.1.30. Baza de date se numeşte „diploma” şi a fost realizată folosind următoarea sintaxă SQL: CREATE DATABASE `diploma` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; USE `diploma`; Acestea fiind zise, structura tabelelor in baza de date corespunzătoare aplicaţiei noastre se prezintă astfel: • Tabela Useri_admini Este alcatuită din următoarele câmpuri, urmate de tipul şi domeniul acestora: Id int(11) nume_org varchar(25) user varchar(20) parola varchar(255) nume varchar(20) prenume varchar(20) email varchar(30) telefon varchar(15) oras varchar(20) adresa varchar(150) cod_postal varchar(10) data DATE timp TIME id_folder int(11) id_admin int(11) Tabela Useri_admini este reprezentată schematic astfel: 41
  • 42. 5. Proiectarea conceptuala a bazei de date Coloana id reprezintă o cheie primară. La adăugarea unei noi inregistrări in această tabelă, valoarea cheii id respective se va incrementa automat, fapt ce garantează unicitatea inregistrărilor din tabelă. Coloana id_folder şi id_admin reprezintă chei străine, care sunt chei primare in tabelele foldere şi useri_admini. După cum observăm, cheia străină id_admin face referinţă către aceeaşi tabelă din care face parte. In tabela există utilizatori administratori care reprezintă o anumită organizaţie şi utilizatori creaţi de utilizatorii administratori respectivi, avand drepturi limitate in ceea ce priveşte managementul documentelor aceleiaşi organizaţii. In cazul in care inregistrarea introdusă in tabelă denotă un utilizator administrator, valoarea campului id_admin va fi 0, altfel va indica o valoare a cheii primare din aceeaşi tabelş ce reprezintă utilizatorul administrator ce gestionează utilizatorul nou introdus. Coloanele nume_org şi user au valori unice intrucat nu pot exista doi useri cu acelaşi nume sau două organizaţii cu acelaşi nume. Codul SQL specific creării tabelei Useri_admini in baza de date (denumită „diploma‖) este: CREATE TABLE IF NOT EXISTS `useri_admini` ( 42
  • 43. 5. Proiectarea conceptuala a bazei de date `id` int(11) NOT NULL AUTO_INCREMENT, `nume_org` varchar(25) NOT NULL, `user` varchar(20) NOT NULL, `parola` varchar(255) NOT NULL, `nume` varchar(20) NOT NULL, `prenume` varchar(20) NOT NULL, `email` varchar(30) NOT NULL, `telefon` varchar(15) NOT NULL, `oras` varchar(20) NOT NULL, `adresa` varchar(150) NOT NULL, `cod_postal` varchar(10) NOT NULL, `data` date NOT NULL, `timp` time NOT NULL, `id_folder` int(11) NOT NULL, `id_admin` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `nume_org` (`nume_org`), UNIQUE KEY `user` (`user`), KEY `id_folder` (`id`), KEY `id_admin` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=45 ; • Tabela Foldere Are urmatoarea structură: Id int(11) nume varchar(25) folder_id int(11) data varchar(255) timp varchar(20) owner int(11) Schematic, tabela arată astfel: 43
  • 44. 5. Proiectarea conceptuala a bazei de date Coloanele owner şi folder_id sunt chei străine.Cheia străină owner implică cheia primară (id) din tabela Useri_admini iar cheia straină folder_id face referire către cheia primară (id) din aceeaşi tabelă Foldere. Fiecare director (sau folder) are un singur utilizator creator reprezentat prin cheia (id) şi un singur părinte, care este tot un director (folder), reprezentat prin cheia (folder_id). Campurile data şi timp reprezintă data şi ora la care a fost creat folderul respectiv. Sintaxa SQL specifică creării tabelei foldere este următoarea: CREATE TABLE IF NOT EXISTS `foldere` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nume` varchar(25) NOT NULL, `folder_id` int(11) NOT NULL, `data` date NOT NULL, `timp` time NOT NULL, `owner` int(11) NOT NULL, PRIMARY KEY (`id`) KEY `id_folder` (`id_folder`), KEY `owner` (`owner`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1265 ; • Tabela Fisiere Are următoarea structură: Id int(11) nume varchar(25) 44
  • 45. 5. Proiectarea conceptuala a bazei de date folder_id int(11) data varchar(255) timp varchar(20) owner int(11) Ca şi in cazul tabelei Foldere, in tabela Fişiere avem aceleaşi chei străine owner şi folder_id. In acest caz, folder_id face referinţă către cheia primară (id) din tabela Foldere şi reprezintă faptul că un fişier are un tată (sau este stocat in directorul tată) reprezentat prin cheia id in tabela Foldere. Coloana versiune, reprezintă versiunea curentă (ultima versiune) la care a ajuns fişierul respectiv. Sintaxa SQL specifică creării acestei tabele este următoarea: CREATE TABLE IF NOT EXISTS `fisiere` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nume` varchar(255) NOT NULL, `folder_id` int(11) NOT NULL, `data` date NOT NULL, `timp` time NOT NULL, `owner` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `id_folder` (`id_folder`), KEY `owner` (`owner`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ; 45
  • 46. 5. Proiectarea conceptuala a bazei de date • Tabela Drepturi Prezintă următoarea structură: Id int(11) id_folder varchar(25) id_fisier int(11) r int(1) rwd int(1) rwda int(1) id_user int(11) După cum observăm, cheia primară este id, iar id_folder, id_fisier şi id_user reprezintă chei străine cu aceeaşi semnificaţie ca şi in cazul tabelelor descrise mai sus. Valorile campurilor r, rwd, rwda pot fi 0 sau 1. Pe larg, un fişier sau director (folder) poate avea drepturi acordate pentru anumiţi utilizatori. Ele sunt interpretate in funcţie de valorile r (read), rwd (read-write-delete), rwda („read,write,delete,administer‖). Sintaxa SQL conform căreia s-a creat această tabelă este următoarea: CREATE TABLE IF NOT EXISTS `drepturi` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_folder` int(11) NOT NULL, `id_fisier` int(11) NOT NULL, `r` int(1) NOT NULL, 46
  • 47. 5. Proiectarea conceptuala a bazei de date `rwd` int(1) NOT NULL, `rwda` int(1) NOT NULL, `id_user` int(11) NOT NULL, PRIMARY KEY (`id`) KEY `id_folder` (`id_folder`), KEY `id_fisier` (`id_fisier`), KEY `id_user` (`id_user`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=337 ; • Tabela Workflow Cheile străine sunt reprezentate prin atributele initiator şi id_fisier care reprezintă identificatorul utilizatorului care a creat fluxul de lucru respectiv si identificatorul fişierului pentru care s-a creat acel flux. Sintaxa SQL conform căreia s-a creat această tabelă este următoarea: CREATE TABLE IF NOT EXISTS `workflow` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nume` varchar(80) NOT NULL, `tip` varchar(30) NOT NULL, `initiator` int(11) NOT NULL, 47
  • 48. 5. Proiectarea conceptuala a bazei de date `instructiuni` text NOT NULL, `stare` varchar(30) NOT NULL, `transmitere` varchar(30) NOT NULL, `data` date NOT NULL, `timp` time NOT NULL, `id_fisier` int(11) NOT NULL, `exp` date NOT NULL, PRIMARY KEY (`id`) KEY `initiator` (`initiator`), KEY `id_fisier` (`id_fisier`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; • Tabela Activitati Atributul id_user reprezintă utilizatorul pentru care a fost creată activitatea, iar id_workflow reprezintă identificatorul unic al fluxului de lucru de care aparţine activitatea respectivă. Starea poate fi activ, aprobat sau respins. Sintaxa SQL corespunzătoare este: CREATE TABLE IF NOT EXISTS `activitati` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nume` varchar(80) NOT NULL, `id_user` int(11) NOT NULL, 48
  • 49. 5. Proiectarea conceptuala a bazei de date `stare` varchar(30) NOT NULL, `viz` int(1) NOT NULL, `nota` text, `id_workflow` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `id_workflow` (`id_workflow`) KEY `id_user` (`id_user`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; In cazul de faţă, baza de date conţine tabele corelate. Mai precis, intre aceste tabele se stabilesc legături de mai multe tipuri: - 1:n (una-la-mai multe). O inregistrare din primul tabel poate fi legată cu mai multe inregistrări din al doilea tabel. - 1:1 (una-la-una). O inregistrare din primul tabel este legată la o singură inregistrare din al doilea tabel. - n:n (mai multe-la-mai multe).O inregistrare din primul tabel poate fi legată la mai multe inregistrări din al doilea tabel şi invers. Schema bazei de date relaţionale cu tabelele şi legăturile dintre acestea este prezentată mai jos: 49
  • 50. 5. Proiectarea conceptuala a bazei de date Aşadar intre tabela Useri_admini şi tabela Fişiere există o dată, o legătură de tip 1:n intrucat un utilizator poate crea mai multe fişiere dar un fişier este creat de un singur utilizator. Pe de altă parte se stabileşte şi o legătură indirectă de tip n:n prin intermediul tabelei Drepturi deoarece un un utilizator poate avea drepturi asupra mai ultor fişiere, iar un fişier poate avea acordate drepturi pentru mai mulţi utilizatori. 50
  • 51. 5. Proiectarea conceptuala a bazei de date Analog, legături asemănătoare se stabilesc şi intre tabela Useri_admini şi tabela Foldere. Intre tabela Foldere şi tabela Fişiere se stabileşte o legătură de tip 1:n deoarce un folder poate avea mai multe fişiere in conţinutul său, pe cand un fişier poate fi reprezentat doar intr-un singur folder. In interiorul tabelei Useri_admini se stabileşte o asociere de tip 1:n, intrucat un utilizator administrator poate gestiona mai mulţi utilizatori subalterni, iar un utilizator subaltern poate fi gestionat doar de un singur utilizator administrator. Intre tabelele Workflow şi Activitati se stabileşte o asociere de tip 1:n, deoarece un flux de lucru are asociate mai multe activităţi, iar o activitate poate fi stabilită in cadrul unui singur flux de lucru. 51
  • 52. 6. Interogarea bazei de date 6. Interogarea bazei de date 6.1 Noţiuni generale Sub numele de interogare sau cerere sunt referite acele solicitări de date in mod direct fără indicarea modului de obţinere. O cerere se poate lansa din fereastra de comenzi sau din interiorul unui program (aplicatia scrisa in PHP) pentru că ea funcţionează ca orice altă comandă dar se poate proiecta intr-un mod interactiv cu ajutorul utilitarului PhpMyAdmin. Una din cele mai importante comenzi şi mai des folosite este comanda SELECT. Această comandă permite specificarea datelor care vor constitui ieşirea din interogare precum şi sursa acestora. O frază SQL include mai multe clauze ce sunt executate dupa optimizare de către SQL. Structura generală: SELECT lista campuri FROM lista tabele WHERE conditii de tip select, join GROUP BY lista campuri grupare HAVING conditii pe functii ORDER BY lista campuri grupare Numai clauzele SELECT, FROM sunt obligatorii celelalte sunt dependente de natura cererii. Ordinea clauzelor group by, having, order by poate fi modificată. Rezultatul execuţiei este tot un tabel, de regulă temporar, care se suprascrie. Vom prezenta pe scurt cele mai frecvente comenzi MySql: 1.Modificarea numelui unei tabele: mysql>alter table nume_vechi rename nume_nou; 52
  • 53. 6. Interogarea bazei de date 2.Adăugarea unei coloane: mysql>alter table nume_tabela add column nume_coloana tip atribute; 3. Comanda “insert” Insert serveşte la adăugarea de inregistrări (linii) intr-un tabel al bazei de date curente. Sintaxa comenzii este: mysql>insert into nume_tabela(col1, col2,...) values (val1,val2,...); Valorile de tip text trebuie puse intre ghilimele simple. 4. Comanda “update” Comanda update permite modificarea valorilor unor campuri dintr-un tabel. Sintaxa ei este: mysql> update nume_tabela set col1=val1,col2=val2...where col1=value; Deşi condiţia din clauza where poate fi complexă, de cele mai multe ori ea este de forma cheie_primara=valoare. 5. Comanda “select” Comanda select este cea mai complexă comandă din limbajul SQL şi este destinată regăsirii unor anumite informaţii. Dacă se doreşte selectarea tuturor inregistrărilor dintr-o tabelă, sintaxa comenzii este: mysql>select * from nume_tabela; Dacă se doreşte selectarea doar a unor inregistrări dintr-o tabelă, care indeplinesc o anumită condiţie, sintaxa comenzii este: mysql>select * from nume_tabela where nume_camp=100; Dacă se doreşte selectarea doar a unor coloane dintr-o tabelă, sintaxa comenzii este: mysql>select nume_camp1,nume_camp2 from nume_tabela; Dacă se doreşte selectarea doar a unor coloane dintr-o tabelă, care indeplinesc o anumită condiţie, sintaxa comenzii este: mysql>select nume_camp1,nume_camp2 from nume_tabela where nume_camp=100; 6. Comanda “delete” Pentru a şterge unul sau mai multe articole existente, dintr-o tabelă se va utiliza comanda delete cu sintaxa: mysql>delete from nume_tabela where nume_camp=100; 53
  • 54. 6. Interogarea bazei de date Pentru a şterge toate articolele existente dintr-o tabelă, sintaxa comenzii este: mysql>delete from nume_tabela; 7. Comanda “drop” Comanda drop permite suprimarea unui tabel din baza de date curentă sau distrugerea intregii baze de date. Sintaxa comenzii este: mysql>drop table nume_tabela; mysql>drop database nume_baza; 8. Comanda “show” Comanda show se foloseşte pentru listarea bazelor de date existente, a tabelelor din baza de date curentă sau pentru listarea campurilor unei tabele. Sintaxa ei este: mysql>show databases; mysql>show tables; mysql>show fields from nume_tabela; 9. Comanda “quit” Comanda determină intreruperea conexiunii cu serverul MySQL şi inchiderea sesiunii de lucru a clientului MySQL. Este echivalentă cu exit. mysql>quit; mysql>exit; O interogare inglobată in alte cereri SQL se numeşte o subcerere. Subcererea poate să includă la randul ei o altă subcerere. Subcererile sunt de două feluri: necorelate şi corelate: • subcererea necorelată este o subcerere independentă de cererea principală. Se execută o singură dată in interiorul cererii principale. • cererea corelată se bazează pe date provenite de la cererea principală. Se execută pentru fiecare inregistrare returnată de cererea principală. Execuţia subcererillor corelate durează mai mult, iar acest lucru este vizibil in cazul bazelor de date cu un volum foarte mare de date. Din punct de vedere al rezultatelor returnate, subcererile se impart in trei categorii: • Subcereri care intorc o singură valoare • Subcereri care intorc o coloană • Subcereri care intorc un tabel 54
  • 55. 6. Interogarea bazei de date Mai departe, urmează să prezentăm principalele comenzi SQL folosite pentru interogarea bazei de date in cadrul aplicaţiei de management al documentelor. 6.2 Conectarea la Baza de Date PHP permite conectarea la diferite baze de date. Cea mai frecventă combinaţie o reprezintă PHP şi MySQL pe care o vom prezenta in acest capitol. Pentru a putea funcţiona o aplicaţie web dezvoltată cu aceste medii trebuie instalate: php, mySQl şi serverul de web Apache. (se va instala xampp sau easyphp, etc.) Ideea pe care se bazează interacţiunea PHP - MySQL sau in general interactiunea dintre PHP şi o bază de date este aceea că permite că informaţiile care se doresc să apară pe site să fie prezente in baza de date. In acest fel informaţiile pot fi actualizate usor şi prezentate intr-o formă "dinamică" in cadrul site-ului. Vom incepe prin a ne conecta la o bază de date MySQL. mysql_connect(adresa, utilizator, parola); Ca şi parametri vom folosi adresa care reprezintă IP-ul sau hostname-ul calculatorului pe care am instalat baza de date MySQL. Acesta poate fi acelaşi cu cel pe care rulează serverul de web (de obicei Apache sau IIS) sau un alt calculator. In cazul in care se găseşte pe acelaşi calculator cu serverul de web, putem folosi la adresa şi localhost. Numele de utilizator şi parolă vor fi cele setate pentru MySQL. Implicit acestea sunt nume de utilizator: root şi fără parolă. Este recomandat ca aceste setări implicite să fie modificate. Funcţia mysql_connect returnează un număr de identificare a conexiunii in caz de succes, sau false in caz de eroare. In cazul in care nu ne putem conecta la baza de date funcţia mysql_connect va returna false, iar in acest caz se va trece la executarea funcţiei die, care va afişa mesajul din paranteză şi va termina execuţia scriptului. Următorul pas il reprezintă alegerea bazei de date. mysql_select_db(baza_de_date, identificatorul_conexiunii); Parametrii folosiţi in acest caz vor fi: numele bazei de date ales şi identificatorul returnat de către mysql_connect. Acestea fiind zise, conectarea la baza de date se face utilizand următoarea sintaxă PHP: <?php $AdresaBazaDate = "localhost"; 55