Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  

CATEGORII DOCUMENTE





AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Proiectarea si implementarea unei baze de date

baze de date

+ Font mai mare | - Font mai mic







DOCUMENTE SIMILARE

Trimite pe Messenger
Seminar Baze de date
Utilizatorii si Securitatea
Modelarea bazelor de date utilizand ORM - Ce este ORM ?
Identificatorii obiectelor
Comparatii intre abodarea obiectuala si cea relationala privind modelarea datelor
BAZE DE DATE SI SISTEME DE GESTIUNE A BAZELOR DE DATE
Clarificarea notiunilor de Informatie si Data
Procese de realizare a sistemelor informatice conform RUP
Modelarea orientata obiect
PROIECT - Baza de Date pentru Gestiunea Politelor de Asigurare

Proiectarea si implementarea unei baze de date

              Pentru a surprinde mai multe aspecte ale utilizarii metodei de proiectare a unei baze de date, am ales o baza de date existenta de la SC Textile S.A. Braila.



              Societatea a fost infiintata in anul 1990 si functioneaza in actuala forma de organizare ca societate pe actiuni, cu un capital social integral privat. Sociatatea este persoana juridica romana si isi desfasoara activitatea in conformitate cu legile romanesti si cu prevederile Actului Constitutiv.

              Scopul aplicatiei este de ilustra necesitatea utilizarii unei metodologii de proiectare, si eventual a unui instrument de lucru, pentru proiectarea corecta a unei baze de date. Cele mai multe aplicatii informatice existente in momentul de fata in majoritatea societatilor nu au fost realizate utilizand o anumita metodologie de proiectare. De aici decurg o serie de dezavantaje, printre care cel mai important pentru sistemele ce utilizeaza o baza de date, este proiectarea incorecta sau chiar lipsa proiectarii bazelor de date aferente aplicatiilor. Acest aspect a fost surprins in aplicatia de fata prin utilizarea procedeului reverse engineering. Pentru a executa reverse engineering am utilizat produsul Microsoft Visual Studio for Enterprise Architects, iar drept baza de date SQL Server 2000. Pentru realizarea aplicatiei am mai utilizat limbajul PHP.

              Produsul Microsoft® Visio® for Enterprise Architects (VEA) este inclus in editia Enterprise Architect (numita Microsoft® Visual Studio® .NET Enterprise Architect) a produsului Microsoft® Visual Studio® .NET (sau Microsoft® Visio® Professional 2002). Acesta include solutii de modelare a bazelor de date pentru definirea schemei logice a bazei de date pornind de la o baza de date existenta (procedeu numit reverse engineering - proiectare inversa), sau de la zero (forward engineering - proiectare directa). Diagramele ORM nu pot fi transpuse in schemele logice ale bazei de date si nu pot fi obtinute prin reverse engineering de la o baza de date fizica. Mai recent acest produs suporta proiectarea bazei de date si proiectarea codului program, utilizand UML.

              Versiunea Microsoft® Visual® Studio. NET cuprinde trei editii:

·         Visual® Studio.NET Enterprise Architect

·          Visual® Studio.NET Enterprise Developer

·          Visual® Studio.NET Professional

              Pachetul Visual® Studio.NET Enterprise Architect cuprinde:

·          Visual Studio.NET Enterprise Features

·          Visual Studio.NET Tools (ISAPI Web Debug Tool, MCF-ATL Trace Tool, Spy++, Visual C++ Error Lookup, Visual C++ Remote Debugger, Visual Studio.NET Command Prompt)

·          Microsoft Visual Studio.NET Documentation

·          Microsoft Visual Studio.NET (Microsoft Visual Basic.NET, Microsoft Visual C#.NET, Microsoft Visual C++.NET, Crystal Reports for Visual Studio.NET, Microsoft Application Center Test, Visual Studio Analyzer)

              Prin intermediul acestui produs al firmei Microsoft un administrator al bazei de date are la indemana un instrument puternic si flexibil pentru proiectarea si analiza unei baze de date, si de asemenea permite si utilizarea procedeului reverse engineering.

              Prin produsul Microsoft® Visio® for Enterprise Architects proiectarea unei baze de date se poate efectua prin cele doua metode. Indiferent de metoda aleasa proiectantul va trebui sa inceapa cu elaborarea unui proiect, proiect care poate avea la baza o baza de date deja existenta (fie ca se doreste optimizarea acesteia, sau se doreste a se avea un punct de pornire pentru noua baza de date) sau sa se porneasca de la zero (facand abstractie de ceea ce exista in organizatie).

              PHP-ul este una dintre cele mai interesante tehnologii folosite pentru realizarea aplicatiilor Internet existente in prezent. Deoarece imbina caracteristici dintre cele mai complexe cu simplitatea in utilizare, PHP-ul a devenit rapid un instrument de frunte pentru dezvoltarea aplicatiilor in Web. Totusi, spre deosebire de alte instrumente populare pentru dezvoltarea aplicatiilor Web, cum este Perl, PHP-ul este un limbaj de programare comod pentru incepatori, chiar si pentru cei care nu au mai desfasurat activitati de programare in trecut.

              PHP imbina perfect puterea, structurarea si usurinta in utilizare, avand o sintaxa superioara ASP-ului si JSP-ului, fiind mai puternic decat ColdFusion fara sa fie totusi la fel de dificil de invatat precum Perl.

              Faptul ca PHP ofera cea mai buna solutie in a dezvolta rapid aplicatii Web puternice nu este insa singurul avantaj al acestuia. Un alt avantaj major al PHP-ului este ca este independent de platforma.

              PHP apartine unei clase de software care este cunoscuta sub numele de “open source”. Aceasta inseamna ca odata cu obtinerea aplicatiei obtinem si codul sursa al aplicatiei.

              Mai mult, spre deosebire de limbajele de scripting, precum JavaScript, PHP-ul ruleaza pe server-ul Web, nu in browser-ul Web. In consecinta, PHP-ul poate obtine accesul la fisiere, baze de date si alte resurse inaccesibile programului JavaScript.

              Microsoft SQL Server 7.0 include facilitati similare celor intalnite in alte baze de date, dar si unele facilitati unice. Majoritatea acestor facilitati aditionale se datoreaza integrarii stranse cu sistemul de operare Windows NT. SQL Server 7.0 ofera diferite optiuni privind stocarea datelor, avand capacitatea de a stoca si manipula acelasi volum de date ca un sistem mainframe sau ca un minicalculator.

              Asemeni majoritatii bazelor de date de pe sisteme mainframe sau minicalculatoare, SQL Server 7.0 este o baza de date care a evoluat continuu de la aparitia sa, la mijlocul anilor '80, si pana in prezent. Microsoft SQL Server 7.0 a fost creata pe baza modelului relational, matur si puternic, acesta fiind si astazi modelul preponderent folosit la stocarea si regasirea datelor.

              Spre deosebire de bazele de date de pe sistemele mainframe si minicalculatoare, un server de baze de date este accesat de utilizatori, sau clienti, de pe calculatoare distincte, si nu prin intermediul unor dispozitive de intrare/iesire, asa cum sunt terminalele. Sunt necesare mecanisme care sa permita ca Microsoft SQL Server sa rezolve problemele ce apar la accesarea simultana a datelor de pe zeci sau chiar sute de calculatoare, unde fiecare acces poate sa prelucreze zone ale bazei de date independent de datele aflate pe server.

              In cadrul unei infrastructuri client/server a bazei de date, server-ul raspunde si de conexiunile cu sistemele client. Aceasta se intampla printr-o integrare cu elementele de comunicatie si prin cooperarea stransa cu sistemul de operare gazda. Conexiunile client/server create de Microsoft SQL Server 7.0 folosesc componentele de retea incluse in Windows NT pe diferitele platforme sustinute.

              Spre deosebire de o baza de date de sine statatoare de pe un PC, bazele de date de pe sistemele mainframe sau minicalculatoare si server-ele de baze de date, asa cum este Microsoft SQL Server, adauga peste componentele de retea componente de tip serviciu, exemple in acest sens fiind OLE-DB sau ODBC (conectivitatea deschisa pentru baze de date). Aceste componente permit interconectarea diferitelor aplicatii client fara a necesita modificari ale serverului de baze de date sau ale altor aplicatii client existente.

              Microsoft SQL Server contine si o serie de instrumente front-end specifice bazelor de date de pe PC, care de regula nu sunt prezente in cazul bazelor de date de pe sistemele mainframe sau minicalculatoare. Pe langa utilizarea unui dialect al limbajului structurat de interogare (SQL - Structured Query Language), sunt puse la dispozitie aplicatii care prezinta o interfata grafica cu utilizatorul (GUI) si permit stocarea, manipularea si administrarea bazei de date. In Microsoft SQL Server 7.0, posibilitatile oferite de aceste aplicatii GUI au sporit de mai multe ori. Proiectarea bazelor de date, a tabelelor si a relatiilor dintre ele a devenit mult mai simpla.

Proiectarea bazei de date utilizand Microsoft® Visual® Studio.NET Enterprise Architect se poate realiza in doua moduri:

·          pornind de la o baza de date existenta, utilizand procedeul reverse engineering (proiectare inversa);

·          pornind de la zero, elaborand pe rand cele trei modele (logic, conceptual si fizic).

              Prima etapa pe care am parcurs-o ??? a fost utilizarea procedeului reverse engineering pentru a obtine informatiile necesare proiectarii bazei de date.

              Ce inseamna „reverse engineering”-ul unei baze de date existente?

              Cu ajutorul sablonului Database Model Diagram se poate crea un nou model de baza de date prin reverse engineering, total sau partial, a schemei unei bazei de date existenta.

              Prin intermediul utilitarului Reverse Engineer Wizard se pot executa urmatoarele operatii:

·          Conectarea la sistemul de gestiune a bazei de date sursa (tinta) de la care se pleaca pentru proiectarea noii baze de date

·          Specificarea obiectelor bazei de date care se doresc a fi utilizate in reverse engineering, cum ar fi tabelele, cheile primare, indexii si codul bazei de date

·          Extragerea, analizarea si validarea schemei intr-o diagrama a modelului bazei de date, ce poate fi examinata si modificata

              Obiectele care pot fi extrase cu ajutorul Reverse Engineer Wizard sunt: tabelele, cheile primare, indexii, cheile straine, trigger-ele, clauzele de verificare, vederile, procedurile stocate.

              Informatiile extrase de Wizard depind de capabilitatile sistemului de gestiune a bazei de date sursa, in cazul de fata acesta fiind Microsoft Access. Daca in SGBD-ul ales sunt disponibile unele scheme de definire, Microsoft Visio pune la dispozitie acele optiuni in cadrul Reverse Engineer Wizard-ului.

              Rezultatele Reverse Engineer Wizard-ului sunt specificate in fereastra Output. Cand extragerea este completa, wizard-ul afiseaza structurile extrase in fereastra Table and Views.

Am aratat mai inainte ca baza de date existenta, de la care am pornit, este realizata in Microsoft Access. Dupa cum se poate observa din Figura 1 intre tabelele bazei de date nu exista nici o legatura, nu toate tabelele au chei primare, iar unele din campurile existente sunt redundante, etc.

Figura 9 Modelul fizic al bazei de date existente

              Totodata, datorita faptului ca aplicatia se refera la urmarirea drepturilor salariatilor, am selectat numai o parte din tabele si anume cele referitoare la urmarirea bonurilor de masa. Pentru aceasta am renunta si la unele campuri din tabelele selectate rezultand o baza de date, care are in structura sa tabelele din Figura nr.2.



Figura 10 Baza de date aferenta urmaririi bonurilor de masa, selectata din baza de date initiala

              Am denumit noua baza de date bm1.mdb. Asupra acesteia am aplicat in continuare procedeul reverse engineering. Pentru inceput, in cadrul programului Microsoft Visio For Enterprise Arhitects se deschide un nou ORM Source Model si din meniul Database se opteaza pentru Reverse Engineer, apeland astfel utilitarul Reverse Engineer Wizard. Se alege tipul bazei de date, si anume Microsoft Access si sursa de date MS Access Database, urmand a se specifica locatia bazei de date sursa si informatii de conectare.

Figura 11 Specificarea tipului bazei de date sursa si a sursei de date

              Se selecteaza obiectele bazei de date pe care dorim sa le supunem reverse engineering-ului, observandu-se ca Microsoft Access nu activeaza toate obiectelor din baza de date, si anume trigger-ele (declansatoarele) si procedurile stocate.

Figura 12 Selectarea obiectelor din baza de date sursa supuse procedeului de reverse engineering

              Se selecteaza apoi tabelele si/sau vederile asupra carora se aplica reverse engineeringul.

Figura 13 Selectarea tabelelor si/sau vederilor din baza de date sursa supuse procedeului de reverse engineering

              Rezultatul folosirii acestui utilitar se observa in fereastra Output, odata cu incheierea procedeului de reverse engineering.

Figura 14 Fereastra Output returneaza rezultatul procedeului de reverse engineering

              In fereastra Business Rules apar faptele rezultate din acest procedeu, care urmeaza a fi selectate si aduse pe pagina de diagrame, rezultand modelul ORM (conceptual) din Figura nr. 7.


Figura 15 Modelul conceptual al bazei de date selectate, rezultat prin procedeul de reverse engineering


              Dupa cum se observa din Figura 7, entitatile nu sunt legate intre ele prin nici o relatie. De aceea, a trebuit sa fac legaturile dintre entitati, sa aleg identificatorii, sa reproiectez anumite campuri, etc.

              De exemplu, tipul fapta „Situatie_BM are ValoareBM” inseamna ca pentru fiecare matricola si luna, este completat campul ValoareBM cu aceeasi valoare, ceea ce conduce la redundanta in date. Acest tip fapta a fost eliminat din model si introdus tipul fapta „Luna are ValoareBM”, deoarece valoarea unui bon de masa este constanta pe parcursul unei luni. In plus, ValoareBM este folosita in momentul in care un salariat este dator societatii cu un numar de bonuri si nu le returneaza fizic preferand sa i se retina valoarea bonurilor de masa din salariu, deci ValoareBM depinde de luna.

              Datorita faptului ca unele entitati nu au chei primare, pentru entitatile care folosesc acele campuri apar situatii de tipul: „Situatie_BM este partial identificata de Matricola1” si „Situatie_BM este partial identificata de CodLuna2”.

              A mai fost necesara introducerea unei legaturi intre Personal, Atelier, Sectie si Fabrica, adica fiecare salariat lucreaza numai intr-un atelier, o sectie si o fabrica. Aceasta legatura a fost introdusa astfel:

Figura 16 Exemplu de introducere a unei fapte in modelul conceptual

              Asupra acestei fapte actioneaza urmatoarele constrangeri: fiecare combinatie de trei entitati din cele patru existente in aceasta fapta este unica.

              Dupa ce am executat toate modificarile necesare, modelul conceptual rezultat este cel din Figura 4.


Figura 17 Modelul conceptual modificat al bazei de date selectate


              Pentru verificarea corectitudinii modelului se foloseste optiunea Model Error Check din meniul Database, rezultatul fiind intors in fereastra Output, prezentata in Figura 10.

Figura 18 Rezultatul verificarii corectitudinii modelului conceptual




              Urmatorul pas consta in proiectarea modelului logic al bazei de date. In acest scop am utilizat tot produsul Microsoft Visio For Enterprise Arhitects. Se deschide un nou Database Model Diagram si din meniul Database se opteaza pentru Project|Add Existing Document, unde se introduce denumirea documentului in care a fost salvat modelul conceptual realizat anterior. Apoi, din meniul Database se opteaza pentru Project|Build si daca modelul nu are erori in fereastra Output apar mesajele din Figura 11. In cazul in care modelul are erori, mesajele de eroare apar in aceeasi fereastra.

Figura 19 Fereastra Output aferenta generarii modelului logic

              In fereastra Table and View apar tabelele corespunzatoare modelului conceptual, asa cum se observa din Figura 12.

Figura 20 Fereastra Tables and View aferenta generarii modelului logic

              Prin selectarea tabelelor din Tables and View si aducerea acestora in pagina de diagrame va rezulta modelul logic din Figura 13. Se observa ca in tabelele rezultate sunt pastrate drept denumiri ale campurilor o parte din tipurile de fapte descrise in modelul conceptual.

Figura 21 Modelul logic transpus din modelul conceptual

              In modelul logic se pot face modificarile corespunzatoare referitoare la : denumirea campurilor, tipurile campurilor, etc. Este de preferat alegerea acestei variante, datorita faptului ca un acealsi model conceptual poate fi utilizat in obtinerea unor modele logice diferite, deci nu modelul conceptual trebuie modificat.

              In urma efectuarii tuturor modificarilor rezulta modelul logic din Figura 14.

Figura 22 Modelul logic modificat pentru generarea fizica a bazei de date

              Pentru a ne asigura de corectitudinea modelului logic, se alege optiunea Model|Error Check din meniul Database. In ferestra Output va apare rezultatul verificarii, asa cum se observa si in Figura 15.

Figura 23 Fereastra Output aferenta verificarii corectitudinii modelului logic

              Urmatorul pas il constituie elaborarea modelului fizic al bazei de date. Pentru aceasta se alege din meniul Database optiunea Generate sau Update, pe ecran aparand utilitarul Generate Wizard, asa cum se observa din Figura 16.

Figura 24 Primul etapa in generarea modelului fizic al bazei de date

              In urmatoarea fereastra se stabileste conexiunea la baza de date. Trebuie specificat driver-ul Visio care determina tipul bazei de date care va fi creata, numele sursei de date si numele bazei de date. In Figura 17 este prezentata aceasta fereastra.

Figura 25 Stabilirea conexiunii la baza de date

              Urmatoarea fereastra ilustreaza tabele bazei de date care vor fi create in urma folosirii acestui utilitar, dupa care vom fi anuntati ca validarea fizica este completa si ca baza de date si script-ul DDL au fost generate.

Figura 26 Tabelele bazei de date create

              In functie de alegerea SGBD, anumite caracteristici cum ar fi trigerr-ii, procedurile stocate, caracteristicile campurilor s-ar putea sa fie modificate. De exemplu, Microsoft Access nu suporta procedurile stocate. Pentru a le impelmenta se va utiliza fisierul DDL, rezultat in urma generarii modelului fizic.

              Am ales SQL Server 2000, iar in urma generarii rezulta baza de date Bonuri, prezentata in Figura 19.



Figura 27 Baza de date creata in Microsoft SQL Server 7.0

              Diagramele bazei de date din Microsoft SQL Server 7.0 permit crearea, administrarea si vizualizarea obiectelor bazei de date intr-un format grafic. In Figura urmatoare este prezentata diagrama bazei de date Bonuri.

Figura 20 Diagrama bazei de date Bonuri

              Unul din principalele avantaje oferite de aplicatie este asigurarea securitatii datelor, care este realizata prin autentificarea utilizatorului care poate introduce datele in aplicatie. Pentru utilizatorii neautorizati, aplicatia beneficiaza doar de realizarea rapoartelor, consultarea datelor din rapoarte si listarea rapoartelor. Utilizatorii autorizati introduc datele referitoare la initializarea lunii, realizeaza pontajul initial, atribuirea lunara de bonuri, pontajul final si situatia finala a bonurilor de masa.

              La inceputul lunii, se introduc datele referitoare la luna curenta, si anume codul lunii, numarul zilelor lucratoare, numarul bonurilor de masa corespunzatoare zilelor lucratoare si valoarea lunara a unui bon de masa. Aceasta valoare a bonului de masa este folosita in cazul in care bonurile restante ale unui salariat nu pot fi returnate fizic, fiindu-i retinute din salariu. In momentul in care se apasa butonul „Adauga luna” se adauga datele introduse in tabela „Luna” si in acelasi timp se adauga pentru matricolele din tabela „Temporar” numarul de bonuri restante corespunzatoare lunii trecute in tabela „Situatie_BM”.

              Urmatoarea etapa din aplicatie este introducerea pontajului initial al salariatilor pentru care se cunoaste de la inceputul lunii cate zile de concediu au. Dupa fiecare completare a campului „zile concediu” pentru o anumita matricola, se apasa butonul „Adauga pontaj”. Cu ajutorul acestui buton se completeaza pentru matricola respectiva, campul „zile_concediu” din tabela „Pontaj”. In cazul in care pentru o anumita matricola a mai fost introdus numarul de zile de concediu, apare un mesaj de eroare „Pontajul a mai fost initializat”.

              Aplicatia ofera siguranta in introducerea datelor prin faptul ca matricolele salariatilor se gasesc intr-o lista derulanta, ceea ce inlatura pericolul introducerii matricolelor incorecte, prin faptul ca pontajul initial se introduce pentru ultima luna gasita in tabela „Luna”, astfel ca nu apare pericolul modificarilor ulterioare pentru situatiile deja incheiate.

              Urmatoarea etapa a aplicatiei o reprezinta atribuirea de bonuri. Atribuirea de bonuri se realizeaza la inceputul lunii, dupa ce aceasta a fost introdusa si dupa ce a fost realizat pontajul initial, in cazul in care exista salariati pentru care se stie, de la inceputul lunii, ca au zile de concediu. Atribuirea de bonuri se face prin scaderea din numarul bonurilor de masa ale lunii curente a bonurilor restante din luna trecuta si a bonurilor corespunzatoare zilelor de concediu, daca acestea exista.

              Toate aceste prime calcule au loc la inceputul lunii. La sfarsitul lunii, are loc introducerea pontajului final si realizarea situatiei bonurilor de masa.

              Pontajul final presupune introducerea pentru un salariat a numarului zilelor de concediu nepontat (adica a zilelor suplimentare de concediu sau in cazul in care au fost pontate la inceputul lunii mai multe zile de concediu decat au fost introduse in pontajul initial, aceste zile sunt trecute cu minus), a zilelor de delegatie si a zilelor obstesti, daca este cazul. Pentru a usura activitatea, pentru fiecare matricola aleasa este afisata si valoarea zilelor de concediu pontate la inceputul lunii. Numarul zilelor de delegatie si a zilelor obstesti se memoreaza in tabela „Pontaj” in campurile corespunzatoare pentru o anumita matricola si pentru luna in curs, iar numarul zilelor de concediu nepontate, daca exista, se memoreaza in tabela „Temporar” pentru matricola corespunzatoare. Luna in curs este afisata intr-un camp needitabil pentru a nu oferi posibilitatea utilizatorului de a introduce pontajul final pentru o alta luna decat cea curenta, ceea ce reflecta siguranta in introducerea datelor.


              In continuare, dupa incheierea introducerii pontajului final se calculeaza situatia finala a bonurilor de masa. Astfel, din numarul bonurilor de masa corespunzatoare zilelor lucratoare pontate initial atribuite la inceputul lunii pentru fiecare salariat, se scade numarul de bonuri corespunzatoare zilelor de delegatie, obstesti si celor de concediu nepontat, daca exista, deoarece zilele de concediu, de delegatie si obstesti sunt considerate zile pontate, dar carora nu le corespund bonuri de masa. Situatia finala a bonurilor de masa reprezinta regularizarea atribuirii bonurilor, ilustrand totalitatea operatiilor realizate de-a lungul lunii curente.

              Partea de aplicatie care poate fi utilizata si de utilizatorii neautorizati este cea de generare si listare a rapoartelor, care cuprinde realizarea rapoartelor privind situatia bonurilor la nivelul unei fabrici, sectii si atelier, la nivelul unui angajat pe parcursul mai multor luni, sau situatia tuturor angajatilor pe o anumita luna.

              Pentru raportul lunar aferent unei fabrici este necesara introducerea fabricii si a lunii pentru care se doreste raportul. Dupa introducerea acestor date, se afiseaza pe ecran raportul dorit.


              Pentru realizarea raportului lunar aferent unei sectii sunt necesare codul lunii, codul sectiei si codul fabricii de care apartine sectia respectiva. Prin utilizarea butonului „Afiseaza” raportul dorit apare pe ecran, fiind specificat inclusiv atelierul in care lucreaza salaritii din sectia respectiva.


              Raportul lunar pe ateliere necesita introducerea datelor referitoare la luna, fabrica, sectie si atelier.


              Se ofera posibilitatea agregarii datelor referitoare la un anumit salariat pe a perioada de timp. Astfel pentru generarea raportului pe matricola este necesar codul matricol , luna de inceput si cea de sfarsit.


              Raportul pentru o anumita luna pentru toti angajatii necesita doar introducerea codului lunii.








Politica de confidentialitate

DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 3812
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2019 . All rights reserved

Distribuie URL

Adauga cod HTML in site