0% au considerat acest document util (0 voturi)
113 vizualizări9 pagini

Modelul Multidimensional

Încărcat de

Dana Nanu
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
113 vizualizări9 pagini

Modelul Multidimensional

Încărcat de

Dana Nanu
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Revista Informatica Economica, nr.

1 (17)/2001

Modelarea multidimensionala
[Link]. Manole VELICANU, lect. Mihaela MUNTEAN Catedra de Informatica Economica, A.S.E. Bucuresti

La ora actuala organizatiile au un apetit continuu pentru date. Totusi un volum mare de date nu este relevant daca nu este organizat ntr-o structura care sa permita transformarea datelor n informatii utile pentru organizatie. Modelarea multidimensionala este o tehnica de proiectare logica ce permite structurarea datelor. n primul rnd, modelarea multidimensionala nu are legatura cu reprezentarea fizica a datelor. Nu este legata de bazele de date multidimensionale (Express, Essbase, Gentium) si nu implica stocarea informatiilor n cuburi. Conceptul de modelare multidimensionala nu este nou, a aparut n perioada anilor 60, cu produsele software Express si APL. Chiar foile de calcul tabelar pot fi considerate un model multidimensional . Cuvinte cheie: modelare multidimensionala, colectii de fapte, dimensiuni, ierarhii, variabile, modelul stea, modelul fulg de zapada, depozite de date, baze de date. Concepte de baza Modelarea multidimensionala este o tehnica de proiectare logica folosita pentru vizualizarea modelelor de date sub forma unui set de variabile cheie pentru activitatea analizata. Aceste variabile sunt descrise n functie de aspectele caracteristice ale activitatii (proces/procese) analizate. Modelarea multidimensionala faciliteaza analize complexe prin agregarea si aranjarea datelor. Spre deosebire de tehnicile folosite pentru proiectarea sistemelor tranzactionale (tehnica entitate-asociere) care folosesc concepte ca entitati, relatii ntre entitati, descompunere functionala; modelare multidimensionala foloseste concepte ca fapte, dimensiuni, ierarhii, membri si mprastiere. Un model conceptual multidimensional poate fi implementat n: baze de date relationale; baze de date multidimensionale; baze de date orientate obiect. Modelarea multidimensionala este folosita adesea n proiectarea depozitelor de date si sub unele aspecte este mai simpla si mai usor de nteles dect modelarea entitateasociere. Elementele de baza ale modelului multidimensional sunt : colectiile de fapte; dimensiunile;

membrii/atributele; ierarhiile; variabilele/indicatorii; gradul de mprastiere a datelor n model. Colectiile de fapte si dimensiunile pot fi reprezentate ntr-o baza de date relationala ca tabele. n cel mai simplu model multidimensional, schema stea, fiecare dimensiune este descrisa prin propria tabela si colectia de fapte este stocata ntr-o singura tabela ( tabela de fapte), indexata dupa o cheie compusa din cheile primare ale dimensiunilor. Sunt multe variante ale schemei stea, dar ele folosesc aceleasi concepte de baza si anume conceptul de tabela de fapte si tabela dimensionala. Gradul de mprastiere a datelor este un element important n modelul multidimensional influentnd dimensiunea bazei de date. De exemplu indicatorul volumul vnzarilor va avea valori valide numai pentru o mica fractiune a produsului cartezian al dimensiunilor Produs, Client si Timp. Daca consideram ca modelul multidimensional are 120 de clienti, 20000 de produse si 1098 de zile avem 2625200000 de combinatii posibile. Vnzarile reale pot fi numai pentru 1% sau chiar 0,1% din combinatiile posibile. Uneori acest lucru este descris ca 99% sau 99,9% mprastiere.

Revista Informatica Economica, nr. 1 (17)/2001

Dimensiunile Dimensiunile au urmatoarele caracteristici: Furnizeaza informatii descriptive despre fiecare indicator (variabila). Contin n general date statice. Atributele dimensionale nu se modifica la fel de des ca atributele din tabela de fapte. Totusi uneori apar modificari ale valorilor atributelor dimensionale iar modelul dimensional trebuie sa permita modificarea pentru a asigura coerenta si corectitudinea datelor. Sunt esentiale pentru analiza. Un model dimensional ce ofera un numar mare de atribute dimensionale permite analize ct mai complexe si mai variate. ntr-un hypercub, o dimensiune este reprezentata printr-o axa. ntr-o schema stea sunt tabelele care se dispun radial n jurul tabelei de fapte si se mai numesc tabele dimensionale. Aceste tabele sunt denormalizate iar cheia lor primara este o cheie simpla. Dimensiunile trebuie sa contina un numar ct mai mare de atribute (peste 100) pentru a permite analize ct mai complexe si mai variate. Cele mai bune atribute dimensionale sunt cele textuale si se folosesc ca sursa de restrictii n aplicatii. De exemplu dimensiunea Produs poate sa contina urmatoarele atribute dimensionale: categoria de produse, marca, tipul de ambalaj, marimea ambalajului, descrierea produsului etc. Conceptul de dimensiune este fundamental pentru modelarea multidimensionala. Cei mai multi proiectanti utilizeaza fraza dimensiuni comune afacerilor. De exemplu, un model multidimensional trebuie sa includa timpul ca dimensiune fundamentala. Cele mai multe instrumente de analiza multidimensionala au implementata facilitatea care permite conversii de calendar si operatii de agregare ( zi->saptamna>luna->an ) automate si chiar manipularea cu usurinta a seriilor de timp ( perioade promotionale, sezoane, perioade fiscale etc.)

Alte dimensiuni comune afacerilor sunt : locatia, organizatia (ierarhia organizationala), clientul . O dimensiune contine mai multi membri. Un membru este un nume distinct sau un identificator folosit pentru a determina pozitia unui element de data (n schema stea apare sub denumirea de atribut dimensional). De exemplu, toate lunile, trimestrele si anii formeaza dimensiunea Timp si toate orasele, regiunile si tarile dimensiunea Locatie. Un membru poate apartine la una sau mai multe ierarhii sau poate sa nu fie inclus ntr-o ierarhie (independent). De exemplu n dimensiunea Produs membru culoare nu este inclus n nici o ierarhie. Se pot aranja membrii unei dimensiuni n una sau mai multe ierarhii. Fiecare ierarhie poate avea mai multe nivele ierarhice. De exemplu n dimensiunea Timp putem avea doua ierarhii (figura 1). Pentru a identifica pozitia unui membru ntr-o dimensiune se folosesc conceptele de naltime si adncime n ierarhie. naltimea se stabileste de jos n sus. Din acest motiv nivelul (L0) al ierarhiei reprezinta nodurile frunza ale ierarhiei (naltimea cea mai mica). n schema stea, nivelul L0 se leaga la tabela de fapte. La ora actuala sunt doua curente pro sau contra folosirii celor doua concepte. Adncimea n ierarhie este stabilita de sus n jos. Exista posibilitatea ca doi membri care au aceeasi naltime sa aiba adncimi diferite si invers (structuri arborescente neechilibrate). Structurile arborescente neechilibrate sunt implementate cu succes n bazele de date multidimensionale, bazele de date relationale fiind necorespunzatoare. Colectie de fapte (facts) Colectia de fapte este un ansamblu de date corelate constnd din variabile si din date de context. Un fapt poate reprezenta: o tranzactie a afacerii (activitatii) sau un eveniment (de exemplu o vnzare: ce a fost cumparat, unde si cnd a avut loc vnzarea, cine a cumparat produsul, ct s-a

Revista Informatica Economica, nr. 1 (17)/2001

platit pe unitatea de produs vndut precum si reducerile implicate n vnzare); starea unui obiect (de exemplu starea stocului: ce este stocat, unde este stocat si perioada de timp);
Ierarhia fiscala an fiscal trimestru fiscal

modificarile starii unui obiect dat (de exemplu modificarile stocului : miscarea produselor si cantitatea implicata n miscare, etc)

Ierarhia calendaristica an trimestru luna saptamna

luna fiscala saptamna fiscala

Fig. 1 - Ierarhii n dimensiunea Timp

Colectiile de fapte ce sunt asociate cu evenimente se numesc colectii de fapte fara fapte (factless facts), un termen folosit de Ralph Kimball desi mai bine ar fi numite colectii de fapte fara variabile. Evenimentele sunt adesea modelate printro colectie de fapte ce contine numai un numar de chei, fiecare reprezentnd cheia primara a unei dimensiuni care participa la eveniment. Pentru a exemplifica se considera cazul unei colectii de fapte n care se modeleaza prezenta zilnica dintr-un colegiu si care are urmatoarele dimensiuni:

Curs, Profesor, Student, Laborator si Timp Colectia de fapte va contine numai cheile primare ale dimensiunilor si va permite o serie de analize interesante (figura 2): Care sunt cursurile cele mai frecventate/cele mai putin frecventate ? Ce studenti participa la aceste cursuri? Care laboratoare au fost cel mai mult folosite? Care este rata medie de ocupare a laboratoarelor n timpul unei zile? etc.

Dimensiune Curs Dimensiune Student Dimensiune Timp

Cheie_ profesor Cheie_curs Cheie_student Cheie_laborator Cheie_timp

Dimensiune Profesor

Dimensiune Laborator

Fig. 2 - Colectie de fapte fara fapte


Aceste analize presupun de fapt niste contorizari. Comanda SQL corespunzatoare este asimetrica datorita structurii speciale a colectiei de fapte. Oricare din

Revista Informatica Economica, nr. 1 (17)/2001

cele cinci chei externe poate fi folosita ca argument al functiei COUNT(): Variabile (measures) O variabila este un atribut numeric al unui element din colectia de fapte, un indicator de performanta prin care se poate analiza performanta/neperformanta activitatii modelate. Valorile unui indicator se modifica continuu. Pentru fiecare combinatie posibila ntre dimensiuni, exista sau nu o valoare corespunzatoare a indic atorilor. Nu orice atribut numeric este un indicator. De exem-plu, dimensiunea ambalajului este un atribut numeric si totusi nu este un indicator ci un atribut dimensional. Daca valoarea atributului numeric variaza continuu (costul de livrare, cantitatea vnduta, volumul vnzarilor) atunci atributul este un indicator, iar daca atributul este perceput mai mult ca o constanta (dimensiunea ambalajului, descriere produs, culoare) atunci este un atribut dimensional. Indicatorii pot fi clasificati n : indicatori de baza (volumul vnzarilor, cantitatea vnduta, costurile, numarul de clienti). indicatori derivati care se obtin prin combinarea indicatorilor de baza (profitul). O alta clasificare este data de Ralph Kimball [RK96] si anume dupa posibilitatea indicatorilor de a se nsuma dupa dimensiuni: indicatori aditivi care se pot nsuma dupa toate dimensiunile. De exemplu indicatorul volumul vnzarilor se poate calcula pentru o categorie de produse sau pentru o anumita regiune sau pentru a anumita perioada de timp. Volumul vnzarilor, cantitatea vnduta si costurile sunt aditive. Aceasta nseamna ca are sens de a aduna lei sau cantitati de-a lungul oricarei combinatii timp, produs, magazin; indicatori semiaditivi care se pot nsuma numai dupa unele dimensiuni. De exemplu indicatorul numarul de clienti este semiaditiv deoarece se poate calcula numarul de clienti ntr-o anumita perioada de timp sau pentru o anumita regiune, dar

nu este aditiv de-a lungul dimensiunii Produs . Daca pentru fiecare produs (dintro categorie de produse) se cunoaste numarul de clienti si dorim sa aflam numarul de clienti pentru categoria de produse, nu se pot aduna aceste numere. Rezultatul poate fi eronat, deoarece pot exista clienti, care au cumparat mai multe tipuri de produse, din categoria respectiva; indicatori nonaditivi care nu se pot nsuma dupa nici o dimensiune (profitul marginal). Variabilele nonaditive pot fi combinate cu alte variabile pentru a deveni aditive. Tabela de fapte O tabela de fapte ocupa locul central ntr-o schema stea si corespunde unei colectii de fapte din modelul dimensional. Are urmatoarele caracteristici: Contine un numar foarte mare de tupluri (posibil milioane). Numarul de tupluri din tabela reprezinta de fapt produsul cartezian al dimensiunilor. De exemplu se doreste analiza activitatii de desfacere a unei firme de comert, care are un lant de 500 magazine de distributie n ntreaga lume si care comercializeaza 50000 de produse n fiecare magazin. Baza de date dimensionala va stoca informatiile referitoare la tranzactiile zilnice, pe o perioada de doi ani. Tabela de fapte va contine 500*50000*2*365 de tupluri. Dimensiunea ei creste dinamic, n functie de cantitatea de date ncarcate la fiecare ciclu de mprospatare a bazei de date, precum si functie de cantitatea de date istorice stocate n baza de date . Este tabela care reflecta performanta/neperformanta activitatii (procesului) analizate. Contine toti indicatorii de performanta importanti (n schema stea sunt de regula atribute numerice aditive). Cheia primara a tabelei este o cheie compusa, formata din cheile primare ale tabelelor dimensionale. Fiecare tabela de fapte dintr-o baza de date dimensionala are o cheie compusa si invers fiecare tabela care are o cheie compusa este o tabela de fapte.

Revista Informatica Economica, nr. 1 (17)/2001

Este normalizata si realizeaza de fapt o legatura indirecta ntre dimensiuni. 2. Vizualizarea modelului multidimensional Un model multidimensional se poate vizualiza cu ajutorul unui cub. Putem reprezenta un model tridimensional folosind un cub. Totusi un model multidimensional are mai mult de trei dimensiuni si este vizualizat printr-un hypercub. n figura 3 variabila volumul productiei este determinata n functie de trei dimensiuni: Locatie, Produs si Timp. Dimensiunea

Locatie include o ierarhie cu doua niveluri regiune si fabrica iar dimensiunea Produs ierarhia cu nivelurile produs si model produs. Desi nu se reprezinta n figura, dimensiunea Timp se refera la anii 1999, 2000. Fiecare subcub contine volumul productiei pentru o anumita combinatie de valori ale dimensiunilor. De exemplu ntr-o anumita perioada de timp, fabrica Armonk din regiunea estica a produs 4000 de telefoane celulare, model 1001.

Dimensiunea Locatie
Ierarhia: Regiune est central Fabrica Armonk Reston Dallas Houston San Jose Boulder 1001

variabila

4 22 2 21

10 29 21 9 12 34 22 8

vest

1011

2001

2011

Telefon celular

Pager

membru
Dimensiunea Produs (ierarhia:produs , model produs)

Fig. 3 - Reprezentarea sub forma unui cub a modelului multidimensional

3. Tipuri de modele multidimensionale n modelarea multidimens ionala se folosesc doua modele : Modelul (schema) stea.. Modelul (schema) fulg de zapada. Uneori constelatia (schema multistea) este introdusa ca o extensie a modelului stea si fulg de zapada. Schema stea Este o reprezentare intuitiva a cubului de date multidimensional ntr- un mediu relational. Schema stea contine o tabela centrala si un set de tabele dimensionale ar-

anjate ntr-o maniera radiala n jurul tabelei centrale. Fiecare tabela dimensionala reprezinta o dimensiune a activitatii analizate, n timp ce tabela centrala contine continutul cubului de date. Schema este asimetrica. Exista o tabela dominanta n centrul schemei, singura tabela din schema cu multiple legaturi prin care se conecteaza la celelalte tabele. Aceasta tabela se numeste tabela de fapte (fact table). Celelalte tabele au numai o singura jonctiune prin care se leaga la tabela centrala si se numesc tabele dimensionale sau dimensiuni (dimension table). Schema stea reduce numarul de legaturi ntre tabele ca

Revista Informatica Economica, nr. 1 (17)/2001

urmare a procesului de denormalizare. Acestea sunt jonctiuni de egalitate. Totusi, denormalizarea determina duplicarea datelor. Figura 4 arata un exemplu de schema stea. Tabela de fapte este Vnzari nconjurata de dimensiunile Timp, Client, Locatie, Produs, Vnzator. Schema stea are urmatoarele caracteristici: Tabela de fapte se leaga de dimensiuni prin joinuri de egalitate.

Fiecare atribut din cheie primara a tabelei de fapte reprezinta cheia primara a unei dimensiuni. Atributele non cheie pot fi agregate. Tabelele de fapte contin numai atribute numerice Tabelele sunt denormalizate.

Dimensiunea Client

Dimensiunea Timp Dimensiunea Locatie

Dimensiunea Vnzator

Tabela de fapte Vnzari


Dimensiunea Produs

Fig. 4 - Modelul (schema) stea


Schema fulg de zapada Este o varianta a schemei stea. Este rezultatul descompunerii unei dimensiuni sau a mai multor dimensiuni care au ierarhii. Relatiile de tip (m:1) ntre membrii unei dimensiuni se descompun n tabele separate formnd o ierarhie de tabele. De exemplu dimensiunea Produs este descompusa n subdimensiunile Model si Produs (figura 5). Diferenta esentiala fata de schema stea este ca dimensiunile sunt normalizate. Principala motivatie a normalizarii este spatiul

de stocare. Daca ierarhiile se pastreaza n tabele separate, se considera ca spatiul de stocare se reduce consistent. Totusi Ralph Kimball [RK96] ncearca sa demonstreze contrariul. El afirma ca eforturile de a normaliza tabelele din bazele de date dimensionale, n scopul de a reduce spatiul de stocare, sunt inutile si consumatoare de timp. Normalizarea dimensiunilor reduce cu mai putin de 1% spatiul total de stocare iar vizualizarea datelor este mai dificila, implicnd un numar mai mare de jonctiuni ntre tabele.

Revista Informatica Economica, nr. 1 (17)/2001 2

saptamna client

Timp
luna data regiune

Client

locatie Tabela de fapte Vnzari vnzator

Locatie fabrica

model produs piata de desfacere

Vnzator

Produs
regiune

Fig. 5 - Modelul (schema) fulg de zapada

O galaxie (constelatie) este o colectie de stele si consta dintr-o stea centrala nconjurata de alte stele. Steaua centrala contine datele la nive l atomic iar celelalte

stele contin date agregate. Steaua centrala se leaga de celelalte stele prin atribute dimensionale (figura 6).

Fig. 6 - Constelatia

4. Analiza comparata ntre modelul multidimensional si modelul entitate-asociere. Modelul multidimensional (MMD) este proiectat pentru a suporta nevoile de raportare si cele analitice ale managerilor si poate fi descris n comparatie cu modelul entitate-asociere dupa cum urmeaza (tabelul 1): MMD vizualizeaza informatia din perspectiva unei felii de timp si nu a

tranzactiilor atomice. Sistemele tranzactionale nregistreaza evenimente sau tranzactii (de exemplu comenzile de cumparare, facturile etc). Modelul de date multidimensional nu se concentreaza pe evenimentele actuale ci pe rezultatul cantitativ al lor, ntr- un interval de timp cum ar fi zile, saptamni sau ani. MMD este consistent la nivel global, modelul entitate-asociere este consistent numai la nivel local. Un sistem tran-

Revista Informatica Economica, nr. 1 (17)/2001

zactional proiectat corect asigura consistenta datelor locala daca nregistreaza corect toate tranzactiile relevante. Daca se combina informatiile din mai multe sisteme tranzactionale, consistenta globala nu este realizata automat. Modelul multidimensional pleaca de la o consistenta globala la nivelul organizatiei. Sistemele tranzactionale furnizeaza informatii necesare pentru managementul operational, MMD pentru cel strategic si tactic. Modelul multidimensional este proiectat pentru a raspunde la ntrebari de tipul : Voi avea profit n aceasta afacere sau nu? Cine sunt cei mai buni clienti ai mei si de ce? Ce oportunitati am pierdut? Relatiile sunt modelate explicit n modelul entitate-asociere si implicit n modelul multidimensional. De exemplu relatiile explicite ntre clienti si comenzile de vnzare sunt distruse n proiectarea bazei de date folosind modelul entitateasociere. n modelul multidimensional, aceste relatii sunt implicite prin existenta faptelor la zona de intersectie a dimensiunilor. De exemplu, daca sunt vnzari la clientul 101 pentru produsul 2345, atunci relatia ntre client si produs este implicita. Desi arata diferit, au totusi unele asemanari. Modelul multidimensional foloseste aceleasi concepte (entitate, relatie, atribut, cheie primara). O tabela de fapte este de fapt o entitate n care cheia primara este o combinatie de chei externe ce refera dimensiunile. De aceea putem spune ca modelul dimensional este o forma speciala a modelului entitate-asociere. Modelul entitate-asociere poate fi folosit ca punct de pornire n proiectarea modelului multidimensional. Modelarea entitate-asociere este o tehnica de proiectare logica folosita n analiza structurala si care cauta sa elimine redundanta datelor. Astfel tranzactiile devin foarte simple si deterministe. Se pot face o serie de observatii daca privim un model entitate-asociere:

modelul este foarte simetric. Toate tabelele arata la fel. Nu se poate stabili care tabela este mai importanta sau care este mai mare, care tabela contine indicatori de performanta ai activitatii si care nu; modelele complexe (pentru o ntreprindere) sunt greu de urmarit si greu de nteles de catre utilizatori; eficientizarea procesului tranzactional a dus la crearea unor baze de date ce nu pot fi interogate sau sunt foarte greu de interogat. Modelul ent itate-asociere pentru ntreprinderi are sute de entitati logice si de legaturi ntre acestea. Fiecare din aceste entitati, n general, apar ca o tabela, la proiectarea bazei de date. Nu se poate interoga cu usurinta un astfel de model; nu modeleaza real activitatea ci mai exact relatiile micro ntre elementele componentel; este foarte variabil ca structura. Modelul multidimensional este un model top-down iar modelul entitate-asociere un model bottom-up. Multi proiectanti afirma ca este mai putina informatie n modelul multidimensional sau ca schema stea este folosita numai pentru agregari la nivel nalt. Ambele afirmatii sunt false. Cheia ntelegerii relatiei ntre modelul multidimensional si modelul entitate-asociere este ca o singura diagrama entitateasociere (la nivel de ntreprindere) corespunde la un set de diagrame multidimensionale. Modelul multidimensional rezultat pentru o ntreprindere (de dimensiuni mari) va consta din 10-25 de scheme stea similare. Fiecare schema stea va avea 4-12 tabele de dimensiuni. Modelul multidimensional are un numar de avantaje importante fata de modelul entitate-asociere: schema stea rezista la modificarile neasteptate al cerintelor utilizatorilor. Toate dimensiunile pot fi gndite ca puncte de intrare egal simetrice n tabela de fapte. Proiectarea logica este independenta de modelele de cereri. Strategiile de interogare sunt simetrice si codul SQL-ul

Revista Informatica Economica, nr. 1 (17)/2001

generat pentru modelul multidimensional este simetric; schema stea reduce numarul de legaturi si permite o ntretinere usoara;. este extensibil. Se pot adauga noi tabele de fapte, noi dimensiuni, noi atribute n cadrul unei dimensiuni. Modelul multidimensional se poate extinde fara a afecta aplicatia; exista un numar mare de instrumente ce gestioneaza si folosesc agr egatele. Modelarea multidimensionala este aplicata n multe domenii de activitate economica (operatiuni bancare, asigurari de sanatate, comertul cu amanuntul, activitatea companiilor telefonice, expedierea produselor etc.). Este cea mai buna tehnica de proiectare a unui depozit de date/centru de date. BIBLIOGRAFIE [RK96] Ralph Kimball The Data Warehouse Toolkit. Practical Techniques for Building Dimensional Data Ware-

houses, John Wiley &Sons Inc., New York, 1996 [OC99] Oracle Corporation The Essentials of Data Warehouse Database Design, Student Guide, 1999 [BH98] Chuck Ballard, Dirk Herreman, Don Schau Data Modeling Techniques for Data warehousing, 1998, [Link] redbooks/ibm/com [PG96] Paul Gray The new DSS: Data Warehouses, OLAP, MDD and KDD, AIS Americas Conference, 1996 [RK97] Ralph Kimball A dimensional modeling manifesto, DBMS Magazine, 1997 [CC97] Charles Contempo, Coping with complex queries in a Data Warehouse, InfoDB, 1997 [LB96] Lambert Bob Data Warehousing Fundaments: What you need to know to succeed, Data Management Review, 1996 [RK98] Ralph Kimball Meta Meta Data, Data, DBMS Magazine, 1998

S-ar putea să vă placă și