Sunteți pe pagina 1din 10

CURS 6. ASOCIERI SI TIPURI DE ASOCIERI.

DIAGRAMA ENTITATE-
ASOCIERE (E-A)

6.1. Tipuri de asocieri

Asocierea reprezintă legătura sau corespondenţa existentă între două sau mai
multe entităţi, în care fiecare joacă un anumit rol.
Rolul unei entităţi este un nume care desemnează modul de participare a
entităţii la o asociere. Identificarea asocierilor se realizează prin rolurile entităţilor
participante, deci, concret, cu ajutorul identificatorilor entităţilor participante.
Tipul asocierii reprezintă ansamblul legăturilor sau a corespondenţelor cu
aceeaşi semnificaţie, dintre două sau mai multe tipuri de entităţi.
Tipurile de entităţi (mulţimea entităţilor) care participă la un tip de asociere
formează colecţia acesteia. Numărul de tipuri de entităţi care participă la un tip de
asociere formează gradul sau dimensiunea asocierii.
Din punct de vedere al gradului unei asocieri, distingem:
§ unară (reflexivă sau ciclică) – 1 entitate;
§ binară – 2 entitati;
§ ternară – 3 entitati;
§ complexă – 4 sau mai multe entitati.
Spre deosebire de entităţi, asocierile nu au existenţă de sine stătătoare, acestea depinzând de
existenţa entităţilor pe care le leagă. Existenţa unei asocieri poate fi mai scurtă decât a
entităţilor participante.
O asociere poate avea atribute proprii.
Pentru identificarea asocierilor, trebuie sa tinem cont de urmatoarele reguli:
§ o asociere nu poate exista decât o singură dată între aceleaşi entităti;
§ numele entităţilor, corespondenţelor, rolurilor, atributelor trebuie să fie unice
în cadrul modelului conceptual, iar apoi, în baza de date definită.

În modelul Entitate-Asociere (E-A), conform metodei gramaticale, orice entitate


semnifică un substantiv, în timp ce o asociere semnifică un verb. Deci pentru gasirea
asocierilor între tipurile de entităţi, proiectantul va identifica verbele care pun in legatura
respectivele entitati. Nu este obligatoriu ca numele dat unei asocieri să fie un verb, dar o

1
asociere reprezintă o interacţiune între tipurile de entităţi (şi mulţimile de entităţi
corespunzătoare), care poate fi exprimată printr-un verb.

De exemplu, în diagrama E-A din Figura 6.1, asocierea FACTURA-CLIENT poate


fi exprimată prin verbul “se trimite”.

Figura 6.1.

Un exemplu tipic de asociere unară sau reflexivă sau ciclică, este asocierea stabilită
intre realizările aceleiasi entitati: ANGAJAT (vezi Figura 6.2.). In acest caz, entitatea
ANGAJAT joacă dublu rol: „este condus” si „conduce”.

Figura 6.2.

In Figura 6.3. este prezentata schema unei asocieri binare. Rolul entitatii FACTURA
este de document emis, iar cel al entitatii FURNIZOR este de emitent.

Figura 6.3.

In Figura 6.4. este prezentata schema unei asocieri ternare.

2
Figura 6.4.

6.2 Cardinalitatea asocierii


Cardinalitatea asocierii - exprimă modul de participare al entităţilor la asociere.
Putem vorbi despre o cardinalitate minimă (0 sau 1) si una maximă (1 sau n).
Deci, cardinalitatea reprezinta numarul minim, respectiv maxim de realizari al
entitatilor implicate intr-o asociere. Valorile uzuale sunt: 0,1; 1,1; 0,n; 1,n.
Cardinalitatea unei asocieri poate fi de tipul:
1) unu-la-unu (one-to-one/biunivocă). Fiind date două mulţimi de entităţi, A şi
B, spunem că cele 2 multimi sunt într-o relaţie unu-la-unu, dacă unei entităţi
din mulţimea A îi corespunde o singură entitate din mulţimea B, şi reciproc;
se notează cu 1:1 (vezi Figura 6.5, punctul a)).
2) unu-la-mulţi (one-to-many) - este asocierea în care unei entităţi din mulţimea
A îi corespund una sau mai multe entităţi în mulţimea B, dar unei entităţi din
B îi corespunde o singură entitate din mulţimea A; se notează cu 1:N (vezi
Figura 6.5, punctul b)).
3) mulţi-la-mulţi (many-to-many) - este asocierea în care unei entităţi din
mulţimea A îi corespund una sau mai multe entităţi în mulţimea B, şi, de
asemenea, unei entităţi din B îi corespund una sau mai multe entităţi din
mulţimea A; se notează cu M:N (vezi Figura 6.5, punctul c)).

3
Figura 6.5. - Tipuri de asocieri între două mulţimi de entităţi
(a) Asociere 1:1; (b) Asociere 1:N; (c) Asociere M:N.

Vom descrie în exemplele următoare, modalitatea prin care se stabileste cardinalitatea


unei asocieri. Considerăm exemplul din Figura 6.1.:

Pentru entitatea FACTURA:


Identificatorul entitatii este format din 2 atribute: NrFactura si DataFactura.
Vom avea în vedere faptul că întocmirea unei facturi trebuie să vizeze un singur
client.
Astfel, Factura cu numarul 1125 din data de 20.09.2010 se trimite unui singur
client (minim 1 client si maxim 1 client). Deci, cardinalitatea minimă este 1 si
cardinalitatea maximă este 1; se noteaza langa entitatea CLIENT astfel:

Pentru entitatea CLIENT:


Identificatorul entitatii este CodClient.
Astfel, clientul cu codul 145 poate sa primească minim 0 facturi (este posibil ca,
într-o anumită perioadă, să nu i se trimită nicio factură) si maxim n (este posibil să i se
trimită mai multe facturi). Deci, cardinalitatea minimă este 0 si cardinalitatea maximă
este N; se noteaza langa entitatea FACTURA astfel:

4
Pentru fiecare grup de valori, respectiv (0, N) si (1,1), vom alege cardinalitatile maxime,
obtinand astfel valoarea (1,N).
In acest mod, am identificat cardinalitatea asocierii de tipul 1 la N sau unu la multi,
reprezentata astfel:

Să ne reamintim...

Cardinalitatea asocierii - exprimă modul de participare al entităţilor la asociere. Putem


vorbi despre o cardinalitate minimă (0 sau 1) si una maximă (1 sau n).
Valorile uzuale sunt: 0,1; 1,1; 0,n; 1,n.

6.3 Reguli de modelare

Consideram exemplul anterior:

In acest caz, am identificat cardinalitatea asocierii de tipul 1 la N sau unu la multi (one-
to-many).

Deci, in acest caz, am aplicat regula de modelare pentru o asociere de tipul unu la multi,
enuntata astfel:

Modelarea unei asocieri de tipul unu la multi se realizeaza astfel: identificatorul entitatii
cu cardinalitate 1 (în cazul nostru CLIENT) se adaugă entităţii cu cardinalitate N (în cazul
nostru FACTURA), devenind atribut de legatura (cheie externa). Deci, CodClient se
adaugă la entitatea FACTURA.

Pentru exemplificarea unei asocieri de tipul N la N (mulţi la mulţi) vom folosi


asocierea de mai jos.
Vom considera câte o realizare pentru fiecare dintre cele doua entitati.

5
Pentru entitatea Articol_papetărie (se consideră o realizare a entităţii):
Un articol de papetarie cu codul 65 poate fi cuprins in minim 0 facturi (se poate
întampla ca un anumit produs să nu mai fie comandat de clienţi) sau se poate factura de
mai multe ori, adica se poate regăsi în maxim N facturi. Se notează, langă entitatea
Factura, astfel:

Pentru entitatea Factura:


Factura cu numarul 652 din data de 23.07.2010, poate conţine, în cantităţi si la preţuri
diferite, minim 1 articol de papetarie si maxim N (poate contine mai multe produse ce
urmeaza a fi livrate unui client). Se notează, langă entitatea Articol_papetărie, astfel:

6
Pentru fiecare grup de valori, respectiv (1, N) si (0,N), alegem cardinalităţile maxime,
obţinând valoarea (N,N). Deci, am identificat cardinalitatea asocierii de tipul N la N sau
mulţi la mulţi, reprezentată astfel:

Pe baza exemplului anterior, putem enunta urmatoarea regula de modelare pentru o


asociere de tipul multi la multi (many – to-many):
Modelarea unei asocieri de tipul N la N sau mulţi la mulţi se realizează astfel:
între cele două entităţi se introduce, în mod artificial, o noua entitate care are, ca atribute
de pornire, identificatorii celor doua entităţi implicate iniţial în asociere.
Pe lângă aceste atribute, proiectantul sistemului va introduce şi atributele
multivaloare, deci cele care exprimă o cantitate, un preţ etc.
Procesul de modelare al asocierii mulţi la mulţi se reprezintă astfel:

Înainte de modelare:

Dupa modelare:

7
S-a introdus entitatea ConţinutFactura care are un identificator compus din identificatorii
celor 2 entităţi, respectiv CodArticol si NrFactură, DataFactură. Aceasta entitate a preluat
si atributele multivaloare de la entitatea Factura, respectiv, Cantitate si Preţ.
Să ne reamintim...
Modelarea unei asocieri de tipul unu la multi se realizeaza astfel: identificatorul entitatii
cu cardinalitate 1 se adaugă entităţii cu cardinalitate N, devenind atribut de legatura (cheie
externa).

6.4 Rezumat

• O asociere reprezintă o expresie a modului în care una sau mai multe entitati
interactionează între ele, sau cu ele însele.
• Cardinalitatea reprezintă numarul minim, respectiv maxim, de realizari al
entitatilor implicate într-o asociere.
• Modelarea unei asocieri de tipul one-to-many se realizeaza astfel: identificatorul
entitatii cu cardinalitate 1 se adaugă entităţii cu cardinalitate N, devenind atribut
de legatura (cheie externa).
• Modelarea unei asocieri de tipul many-to-many se realizează astfel: între cele
două entităţi se introduce, în mod artificial, o noua entitate care are, ca atribute de
pornire, identificatorii celor doua entităţi implicate iniţial în asociere.

6.5 Test de autoevaluare a cunoștințelor


(timp necesar : 20 minute)

1. Considerând entităţile si asocierile din figura următoare, cardinalitatea


asocierii este:

8
CLIENT trimite COMANDA

a) 1:1;
b) 1:N;
c) M:N.

2. Considerând entităţile si asocierile din figura următoare, cardinalitatea


asocierii este:

COMANDA cuprind PRODUS


e

a) 1:1;
b) 1:N;
c) M:N.

3. Considerând entităţile si asocierile din figura următoare, cardinalitatea


asocierii este:

CLIENT deschide CONT

a) 1:1;
b) 1:N;
c) M:N.

4. Se consideră entităţile din figura de mai jos. Entitatea CLIENT are ca identificator
CodClient, iar entitatea AGENŢIE are ca identificator CodAgenţie. În urma
modelării asocierii se obţine:

se înregistrează
CLIENT AGENŢIE

9
a) CodClient se adaugă entităţii AGENŢIE;
b) CodAgenţie se adaugă entităţii CLIENT;
c) Rezultă o nouă entitate care are ca identificator atributele CodClient şi
CodAgenţie.

5. Următoarea afirmaţie este corectă:


a) Factura cu numărul 145 din data de 23.05.2010 reprezintă o entitate oarecare.
b) Factura cu numărul 145 din data de 23.05.2010 reprezintă o realizare a entităţii
FACTURA.
c) Factura cu numărul 145 din data de 23.05.2010 reprezintă un atribut complex.

Răspunsuri:

1. b
2. c
3. b
4. a
5. b

6.6 Bibliografie

1. Adina Creţan, Analiza şi proiectarea sistemelor informatice. Editura Pro


Universitaria, Bucureşti, 2013, ISBN: 978-606-647-799-4, pp. 51-65 004/C85
2. Bogdan Oancea, Adina Cretan, Baze de date, Editura Pro Universitaria, 2013,
ISBN: 978-606-647-815-1, pp. 49-58 004/O-11
3. Adina Creţan, Bogdan Oancea, Aplicatii informatice in administrarea
afacerilor, 2014, Editura Universitatii „Nicolae Titulescu”, ISBN 978-606-751-
045-4, pp. 43-52 CD 004ID/C85

10

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