15
2. MODELAREA DATELOR Posibilitatea de a obţine informaţii utile dintr-o colecţie de date (deci dintr-o bază de date) depinde de modul de organizare şi interpretare a datelor. Datele în sine nu constitue informaţie, ci numai datele împreună cu regulile de organizare (structurare) a acestora permit interpretarea şi utilizarea informaţiilor conţinute de datele respective. De exemplu, secvenţa de octeţi: 21 00 00 3A 00 00 într-un program imagine memorie nu are nici-o semnificaţie dacă nu se cunoaşte modul de codare a instrucţiunilor maşină ale procesorului respectiv. Dacă presupunem că secvenţa de mai sus face parte dintr-un program pentru procesorul Z80, atunci secvenţa de octeţi este interpretată ca secvenţă de insrucţiuni: LD HL,0 LDA 0 Un model de date este un instrument teoretic care permite structurarea şi interpretarea corectă a datelor. Un model de date ne permite deci să identificăm semnificaţia sau conţinutul de informaţie a unei colecţii de date. Pentru exemplul de mai sus, arhitectura procesorului (setul de instrucţiuni) este modelul care permite interpretarea corectă de către procesor a secvenţei de instrucţiuni date. Reluând definiţia bazelor de date, se poate specifica mai precis o bază de date este o colecţie de date persistente, organizate conform unui anumit model de date. 2.1. Entităţi şi asocieri Elementele esenţiale ale modelelor de date folosite în proiectarea bazelor de date sunt entităţile (entities) şi asocierile (relationships) dintre acestea. O entitate este "orice poate fi identificat în mod distinctiv". O entitate se referă la un aspect al realităţii obiective, care poate fi deosebit de restul universului şi poate reprezenta un obiect fizic, o activitate, un concept, etc. Orice entitate este descrisă prin atributele sale. Atributele prin care este descrisă o entitate se aleg pe baza criteriului relevanţei relativ la domeniul de interes pentru care se defineşte modelul respectiv, astfel încât să asigure diferenţierea precisă a entităţii respective faţă de restul universului. De exemplu, entitatea ANGAJAT (al unei instituţii) reprezintă o persoană angajată a instituţiei, care are o anumită funcţie, lucrează într-o anumită secţie şi primeşte un anumit salariu. Această entitate fi descrisă prin mai multe atribute, dintre 1

Cap2

Embed Size (px)

Citation preview

Page 1: Cap2

2. MODELAREA DATELOR

Posibilitatea de a obţine informaţii utile dintr-o colecţie de date (deci dintr-o bază de date) depinde de modul de organizare şi interpretare a datelor. Datele în sine nu constitue informaţie, ci numai datele împreună cu regulile de organizare (structurare) a acestora permit interpretarea şi utilizarea informaţiilor conţinute de datele respective.

De exemplu, secvenţa de octeţi:21 00 00 3A 00 00

într-un program imagine memorie nu are nici-o semnificaţie dacă nu se cunoaşte modul de codare a instrucţiunilor maşină ale procesorului respectiv. Dacă presupunem că secvenţa de mai sus face parte dintr-un program pentru procesorul Z80, atunci secvenţa de octeţi este interpretată ca secvenţă de insrucţiuni:

LD HL,0LDA 0

Un model de date este un instrument teoretic care permite structurarea şi interpretarea corectă a datelor.

Un model de date ne permite deci să identificăm semnificaţia sau conţinutul de informaţie a unei colecţii de date. Pentru exemplul de mai sus, arhitectura procesorului (setul de instrucţiuni) este modelul care permite interpretarea corectă de către procesor a secvenţei de instrucţiuni date.

Reluând definiţia bazelor de date, se poate specifica mai precis că o bază de date este o colecţie de date persistente, organizate conform unui anumit model de date.

2.1. Entităţi şi asocieri

Elementele esenţiale ale modelelor de date folosite în proiectarea bazelor de date sunt entităţile (entities) şi asocierile (relationships) dintre acestea.

O entitate este "orice poate fi identificat în mod distinctiv". O entitate se referă la un aspect al realităţii obiective, care poate fi deosebit de restul universului şi poate reprezenta un obiect fizic, o activitate, un concept, etc.

Orice entitate este descrisă prin atributele sale. Atributele prin care este descrisă o entitate se aleg pe baza criteriului relevanţei relativ la domeniul de interes pentru care se defineşte modelul respectiv, astfel încât să asigure diferenţierea precisă a entităţii respective faţă de restul universului. De exemplu, entitatea ANGAJAT (al unei instituţii) reprezintă o persoană angajată a instituţiei, care are o anumită funcţie, lucrează într-o anumită secţie şi primeşte un anumit salariu. Această entitate fi descrisă prin mai multe atribute, dintre care o parte sunt atribute de identificare a persoanei (cum sunt: Nume, Prenume, DataNasterii, Adresa), iar alte atribute sunt atribute legate de activitatea acesteia în instituţia respectivă (cum sunt: Funcţia, Salariul).

În bazele de date entităţile similare, care pot fi descrise prin aceleaşi atribute, se grupează în mulţimi, fiecare entitate având valori particulare ale atributelor respective. Toate entităţile similare, care pot fi descrise prin aceleaşi atribute, aparţin unui acelaşi tip de entitate (entity type). Colecţia tuturor entităţilor de acelaşi tip dintr-o bază de date constitue o mulţime de entităţi (entities set). O mulţime de entităţi se descrie prin aceleaşi atribute prin care este descrisă fiecare entitate componentă.

În proiectarea bazelor de date de orice tip se folosesc asocieri (relationships) între mulţimile de entităţi (datele) componente, pentru a modela realitatea pe care baza de date o reprezintă. Asocierile pot fi binare (între 2 mulţimi de entităţi) sau n-are (între n mulţimi de entităţi, n>2).

Asocierile binare sunt, la rândul lor, de trei categorii, după numărul elementelor asociate din fiecare dintre cele două mulţimi (Figura 2.1). Fiind date două mulţimi de entităţi, E1 şi E2, se definesc următoarele asocierile binare:

Asocierea “unu-la-unu” (one-to-one) este asocierea în care unei entităţi din mulţimea E1 îi coreaspunde o singură entitate din mulţimea E2, şi reciproc; se notează cu 1:1.

Asocierea “unu-la-multe” (one-to-many) este asocierea în care unei entităţi din mulţimea E1 îi coreaspund una sau mai multe entităţi în mulţimea E2, dar unei entităţi din E2 îi corespunde o singură entitate în mulţimea E1; se notează cu 1:N.

1

Page 2: Cap2

Asocierea “multe-la-multe” (many-to-many) este asocierea în care unei entităţi din mulţimea E1 îi coreaspund una sau mai multe entităţi în mulţimea E2, şi, de asemenea, unei entităţi din E2 îi corespund una sau mai multe entităţi în mulţimea E1; se notează cu M:N.

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

Numărul de elemente dintr-o mulţime de entităţi care intervine într-o asociere se numeşte cardinalitatea (sau multiplicitatea) asocierii faţă de mulţimea respectivă. De exemplu, asocierea 1:N dintre mulţimile E1 şi E2 prezintă multiplicitatea 1 faţă de mulţimea E1 şi multiplicitatea N (se înţelege o valoare oarecare N > 1) faţă de mulţimea E2.

Asocierile n-are (ternare, quaternare, etc. ) prezintă câte o valoare a multiplicităţii pentru fiecare din mulţimile asociate.

Asocierile între mulţimile de entităţi sunt, în acelaşi timp asocieri între tipurile de entităţi corespunzătoare.

2.2. Clasificarea modelelor de date folosite la proiectarea bazelor de date

La proiectarea bazelor se folosesc, de regulă, două modele de date. Punctul de plecare este un model semantic a datelor, pe baza cărui se dezvoltă unui model de date specializat, cum ar fi modelul ierarhic, modelul reţea, modelul relaţional, etc.

Modelul semantic este un model conceptual de nivel înalt, care exprimă esenţa entităţilor şi a asocierilor între acestea independent de sistemul de gestiune a bazelor de date care va fi folosit pentru proiectarea şi realizarea bazei de date respective. Modelul semantic se mai numeşte şi modelul Entitate-Asociere şi este, de regulă, folosit ca punct de plecare pentru obţinerea unui model de date specializat, care să corespundă sistemului de gestiune care va fi folosit în realizarea bazei de date respective.

Modelele de date specializate impun anumite forme de reprezentare a entităţilor şi a asocierilor dintre acestea, forme care corespund sistemului de gestiune a bazelor de date care va fi folosit pentru realizarea bazei de date. Modelele de date specializate sunt:

Modelul ierarhic Modelul reţea Modelul relaţional Modelul obiect Modelul obiect-relaţional

2.3. Modelul Entitate-Asociere (E/A)

Modelarea conceptuală este o fază importantă în proiectarea unei aplicaţii de baze de date. Termenul aplicaţie de bază de date se referă la o utilizare particulară a unei baze de date. De exemplu, o bază de date care contine informaţii de personal al unei instituţii şi un program asociat care implementează comenzile necesare pentru introducere, ştergere, actualizare a datelor, precum şi interogarile prin care un

2

(a) (b) (c)E1 E2 E1 E2 E1 E2

Page 3: Cap2

utilizator (operator) obţine informaţiile dorite (drepturile salariale ale unui angajat, etc) reprezintă o aplicaţie de baze de date.

Modelul Entitate-Asociere, introdus în 1976 de P.S. Chen, este un model conceptual de nivel înalt al bazei de date, care conţine mulţimile de entităţi şi asocierile dintre ele, dar nu presupune nici un mod specific de gestiune a datelor. Acest model este folosit pentru dezvoltarea unui model conceptual al bazei de date (de tip ierarhic, reţea, relaţional sau orientat pe obiecte) corespunzător unui anumit sistem de gestiune a datelor.

În proiectarea bazelor de date se consideră două categorii de entităţi: Entităţi obişnuite (puternice, normale, regular entities) Entităţi slabe (dependente, weak entities). Entităţile normale au o existenţă proprie în cadrul modelului, în timp ce entităţile slabe nu pot

exista decât dacă există o entitate normală (puternică) cu care sunt asociate. De exemplu, entitatea DEPENDENT poate să reprezinte o persoană care depinde de un angajat al unei instituţii (adică se află în întreţinerea acestuia). Entitatea ANGAJAT este o entitate puternică, deoarece ea există în mod mod normal în modelul activităţii instituţiei, în timp ce o entitate DEPENDENT este o entitate slabă: nu se va înregistra o astfel de persoană decât dacă părintele acesteia este angajat în acea instituţie.

2.3.1 Diagrama Entitate-Asociere

Modelul Entitate-Asociere se reprezintă printr-o diagramă, numită diagrama Entitate-Asociere, care conţine mulţimile de entităţi şi asocierile dintre acestea. Există numeroase variante de notaţii pentru redarea diagramei E-A. Una dintre cele mai folosite notaţii reprezintă un tip de entitate (precum şi mulţimea de entităţi de acel tip) printr-un dreptunghi, iar atributele tipului de entitate prin elipse conectate (printr-o linie continuă) ca aceasta. Pentru entităţile puternice se utilizează un dreptunghi încadrat cu o linie simplă, iar pentru entităţile slabe se utilizează un dreptunghi încadrat cu linie dublă (Figura 2.2).

O asociere dintre două sau mai multe mulţimi de entităţi se reprezintă printr-un romb conectat prin link-uri (linii continue, formate din unul sau mai multe segmente) la tipurile de entităţi asociate. O asociere poate să aibă sau nu un nume; dacă are un nume, acesta poate fi înscris în rombul respectiv sau în vecinătatea acestuia. Tipul asocierii se notează prin înscrierea multiplicităţii pe fiecare link care conduce la un tip de entitate. Este posibil ca o asociere să prezinte ea însăşi atribute, şi aceste atribute se reprezintă prin elipse conectate la asocierea respectivă.

Figura 2.2. Notaţiile diagramei Entitate -Asociere

3

Nume entitate Tip de entitate puternică

Nume entitate Tip de entitate slabă

Nume atribut

Atribut

E1 E2 Asociere binară 1:N între 2 tipuri de entităţiiA1 N

Page 4: Cap2

Exemplu de diagramă E-ASe exemplifică dezvoltarea modelului conceptual de nivel înalt al unei baze de date a unei

instituţii, definind câteva tipuri de entităţi şi asocierile între acestea.Entităţi puterniceEntitatea "secţie" reprezintă o unitate de organizare a instituţiei. Tipul acestei entităţi se

caracterizează prin mai multe atribute, de exemplu, un număr al secţiei, numele secţiei şi bugetul alocat. Mulţimea de entităţi care grupează toate entităţile de acest tip se poate denumi SECŢIE sau SECŢII (ambele variante pot fi folosite în egală măsură de autori) şi este caracterizată prin aceleaşi atribute care caracterizează tipul entităţilor componente.

SECTIE (Număr, Nume, Buget)Entitatea "angajat" reprezintă o persoană angajată în instituţie, caracterizată prin mai multe

atribute, dintre care o parte sunt atribute de identificare a persoanei (cum sunt: Nume, Prenume, DataNasterii, Adresa), iar altă parte sunt atribute legate de activitatea acesteia în instituţia respectivă (cum sunt: DataAngajării, Funcţia, Salariul):

ANGAJAT (Nume, Prenume, DataNaşterii, Adresa, Funcţia, Salariul).Entitatea "proiect" reprezintă o activitate a instituţiei, care poate fi caracterizată prin numele

proiectului, data începerii, termen de realizare, bugetul proiectului:PROIECT (Nume, Termen, Buget).Entităţi slabeEntitatea "dependent" reprezintă o persoană care depinde de un angajat al instituţiei (adică se află

în întreţinerea acestuia). Entitatea "dependent" este o entitate slabă: nu se va înregistra o astfel de persoană decât dacă întreţinătorul acesteia este angajat în acea instituţie. Tipul acestei entităţi se poate defini astfel:

DEPENDENT (Nume, Varsta, GradRudenie)AsocieriAsocierea SECŢIE-ANGAJAT este o asociere 1:N, dacă se consideră că o secţie este formată din

mai mulţi angajaţi, iar un angajat aparţine unei singure secţii. Asocierea ANGAJAT-PROIECT este o asociere M:N, dacă se consideră că la fiecare proiect

lucrează mai mulţi angajaţi, şi fiecare angajat lucrează la mai multe proiecte. Asocierea ANGAJAT-DEPENDENT este o asociere de tipul 1:N, deoarece un angajat poate avea

în îmtreţinere mai multe persoane (fii, parinţi, etc), iar o persoană dependentă este în întreţinerea unui singur susţinător. Diagrama E-A a acestui mic model de bază de date este dată în Figura 2.3.

Tipul unei asocieri este stabilit astfel încât să reflecte cât mai corect modul de organizare al activităţii modelate. De exemplu, asocierea ANGAJAT-PROIECT este de tiplu M:N dacă în instituţia respectivă se admite ca un angajat să lucreze concomitent la mai multe proiecte; dacă s-ar impune ca un angajat să lucreze la un singur proiect, atunci asocierea respectivă ar fi de tipul N:1.

Figura 2.3. Exemplu de diagramă E-A

4

ANGAJATSECTIE 1 N

DEPENDENT

1

N

PROIECTM N

Lucrează la

Intreţine

Număr Nume Buget Nume Prenume Salariul Nume Termen Buget

DataInceperii Durata

Nume Varsta GradRudenie

Page 5: Cap2

Sunt de remarcat câteva caracteristici generale ale modelului Entitate-Asociere.a) În modelul E-A tipul de entitate (şi mulţimea de entităţi corespunzătoare) semnifică un

substantiv, în timp ce o asociere semnifică un verb. Bineînţeles, nu este obligatoriu ca numele dat unei asocieri să fie un verb (şi, de cele mai multe ori, nici nu este), dar o 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 2.3, asocierea ANGAJAT-DEPENDENT poate fi exprimată prin verbul “Întreţine”, asocierea ANGAJAT-PROIECT poate fi exprimată prin verbul “Lucrează la”, etc.

b) Modul de stabilire a entităţilor şi a asocierilor dintre acestea nu este unic, aceeaşi funcţionalitate se poate obţine printr-o varietate de diagrame E-A, depinzând de felul în care proiectantul dezvoltă modelul conceptual şi, mai departe, realizează baza de date. Mai mult, graniţa dintre entităţi şi asoicieri nu este, în general, una bine precizată. O asociere poate fi considerată şi ca un tip de entitate. De exemplu, pentru baza de date a unei facultăţi se definesc tipurile de entităţi:

FACULTATE (Nume, Adresa, ..)PROFESOR (Nume, Prenume, Funcţia, …) STUDENT (Nume, Prenume, AnStudii, …)Între aceste tipuri de entităţi se pot defini asocierile: FACULTATE-PROFESOR, de tipul 1:N şi

asocierea PROFESOR-STUDENT, de tipul M:N. Asocierea PROFESOR-STUDENT reprezintă (în general) examinarea studenţilor de către

profesori, cu atributele acesteia: DataExaminării, Disciplina, Nota. Dar, la fel de bine, este posibil ca NOTA să fie definită ca un tip de entitate, aflată în asociere 1:N cu fiecare din tipurile de entităţi PROFESOR şi STUDENT (Figura 2.4).

Figura 2.4. Diferite moduri de definire a tipurilor de entităţi şi asocieri.(a) Se defineşte o asociere de tip M:N între tipurile PROFESOR şi STUDENT.(b) Se defineşte tipul de entităţi NOTA, asociat 1:N cu fiecare din tipurile PROFESOR şi STUDENT.

d) Modelul E-A nu precizează modul cum sunt realizate asocierile între mulţimile de entităţi. Acest aspect depinde de modelul de date specializat, utilizat pentru definirea modelului conceptual al bazei de date. De exemplu, în modelele ierarhic şi reţea, asocierile sunt realizate explicit, prin link-uri (arce) de la o entitate la entităţile asociate, în timp ce în modelul relaţional asocierea se realizează prin valorile unor atribute comune ale mulţimilor de entităţi (chei).

2.3.2. Ierarhii de tipuri de entităţi

Modelul E-A prezentat în capitolul precedent este suficient pentru modelarea aplicaţiilor de baze de date "tradiţionale", adică bazele de date utilizate pentru activităţi financiare şi industriale. După anii 1970, domeniile în care se folosesc baze de date au devenit tot mai numeroase, ca de exmplu, telecomunicaţiile, proiectarea tehnologică, sistemele de informaţii geografice, seviciul WWW, etc. Tipurile de entităţi definite în astfel de baze de date sunt mult mai complexe şi pentru reprezentarea lor cît mai intuitivă şi mai compactă au fost propuse numeroase concepte noi, iar modelul E-A a fost extins, pentru a îngloba aceste noi concepte.

Tipuri-subtipuri. În modelul E-A extins se pot defini subtipuri de entităţi, care reprezintă specializări ale unor tipuri de entităţi, şi se pot defini, de asemenea, ierarhii pe mai multe nivele de tipuri şi

5

PROFESORFACULTATE 1 N NOTAN 1 STUDENT1 N

PROFESOR STUDENTM NFACULTATE 1 N (a)

(b)

Page 6: Cap2

subtipuri de entităţi. Este evidentă analogia dintre ierarhiile de tipuri de entităţi din modelul E-A. şi ierarhiile de clase din modelul orientat pe obiecte.

Se pot folosi două modalităţi de definire a ierarhiilor de tipuri: specializarea şi generalizarea.

Specializarea este un proces de abstractizare a datelor prin care, pornind de la un tip de entitate dat, se definesc unul sau mai multe subtipuri, diferenţiate între ele în funcţie de rolul pe care îl au în modelul de date.

De exemplu, de la tipul de entitate ANGAJAT se definesc subtipurile SECRETARA, TEHNICIAN, INGINER. Acestea “moştenesc” toate atributele tipului iniţial şi fiecare dintre ele are în plus atribute suplimentare, specifice rolului lor. Din nou, se poate observa analogia cu moştenirea şi ierarhiile de clase din modelul obiect, dar în modelul E-A ierarhia tipurilor se reprezintă prin asocierea dintre tipul de entitate iniţial şi subtipurile acestuia, pe unul sau mai multe nivele.

În Figura 2.5 este reprezentată diagrama E-A care defineşte tipul de entitate ANGAJAT şi subtipurile acestuia (SECRETARA, TEHNICIAN, INGINER), iar ierarhia tipurilor şi a subtipurilor este reprezentată prin asocierile dintre acestea.

Figura 2.5. Asocierea între mulţimile de tipuri şi subtipuri de entităţi

Subtipul SECRETARA are ca atribut specific atributul "VitezaRedactare", care este o măsură a calificării; subtipul TEHNICIAN are ca atribut specific atributul "GradCalificare", iar subtipul INGINER are ca atribut specific atributul "Specialitatea"; acest din urmă atribut poate lua diferite valori, ca de exemplu: Electronist, Programator, Mecanica, etc.

Generalizarea este procesul de abstractizare invers specializării, prin care se crează un supertip de entitate pornind de la mai multe tipuri de entităţi. Pentru aceasta se identifică atributele comune ale mai multor tipuri de entităţi şi aceste atribute vor caracteriza un supertip de entitate, iar atributele care diferă de acestea rămân atribute specifice ale fiecărui tip.

De exemplu, dacă au fost definite tipurile de entităţi: AUTOMOBIL (Marca, VitezaMaxima, Pret, NumarPasageri) şi CAMION (Marca, VitezaMaxima, Pret, Tonaj), se poate defini un supertip al acestor tipuri: VEHICUL (Marca, VitezaMaxima, Pret), care cuprinde toate atributele comune, iar tipurile AUTOMOBIL şi CAMION devin subtipuri ale tipului VEHICUL, fiecare conţinând atributele specifice (NumărPasageri pentru tipul AUTOMOBIL şi Tonaj pentru tipul CAMION).

Rezultatul obţinut prin generalizare este, ca şi în cazul specializării, o ierarhie de tipuri şi subtipuri de entităţi, iar asociearea dintre mulţimile corespunzătoare este tot o asociere 1:1. Ceea ce diferă în generalizare faţă de specializare, este doar modul în care se definesc nivelele ierarhiei.

Asocierea dintre o mulţime de entităţi de un tip dat şi mulţimea de entităţi de un subtip al acestuia este o asociere 1:1, semnificând faptul că o entitate care aparţine unei mulţimi de un subtip este asociată cu o singură entitate din mulţimea de entităţi de bază şi reciproc (Figura 2.6).

6

ANGAJAT

1

TEHNICIAN

1

1

SECRETARA

Nume Prenume Salariul

VitezaRedactare GradCalificare

DataNasterii Adresa

INGINER

11

1

Specialitatea

Page 7: Cap2

Figura 2.6. Corespondenţa între entităţi în asocierea 1:1.

2.3.3. Reprezentarea diagramei E-A folosind limbajul UML

Pentru reprezentarea diagramei E-A au fost propuse numeroase variante de notaţii şi se poate folosi chiar limbajul UML (Unified Modeling Language), dezvoltat în special pentru modelarea aplicaţiilor software în modelul obiect.

Diagrama claselor definită în limbajul UML este similară diagramei E-A, deşi terminologia diferă în câteva aspecte. În Figura 2.7. este reprezentată schema conceptuală UML a bazei de date a unei instituţii, corespunzătoare diagramelor E-A din Figura 2.3. şi Figura 2.5.

Figura 2.7. Schema conceptuală UML a unei baze de date.

7

a1

a2

a3

a4

a5

a6

a7

ANGAJATSECRETARA

s1

s2

t1

t2

t3

TEHNICIAN

INGINERI

i1

i2

i3a8

ANGAJAT

NumePrenumeDataNasteriiAdresaSalariul

SECŢIE

NumărNumeBuget

1 1…*

PROIECT

NumePrenumeDataNasteriiAdresa

1…*1…*

SECRETARA

VitezaRedactare

DEPENDENT

NumeVarstaGradRudenie

1

1…*INGINER

Specialitatea

TEHNICIAN

GradCalificare

Page 8: Cap2

Corespondenţa dintre modelul E-A şi modelul obiect este destul de evidentă. Un tip de entitate din modelul E-A corespunde unei clase în modelul obiect, o entitate corespunde unui obiect, iar mulţimea de entităţi de un tip dat corespunde tuturor instanţierilor de obiecte din clasa respectivă.

În UML o clasă se reprezintă printr-un deptunghi cu trei compartimente: în primul compartiment (cel mai de sus) este înscris numele clasei; în compartimentul următor sunt înscrise atributele clasei (care sunt atributele pe care le prezintă orice obiect instanţă a clasei), iar în ultimul compartiment sunt înscrise metodele clasei, care reprezintă operaţiile care pot fi aplicate obiectelor. În UML se admit şi notaţii mai puţin detaliate, în care sunt reprezentate numai unul sau două din compartimentele unei clase.

În reprezentarea UML a unei diagrame E-A, un tip de entitate se reprezintă prin compartimentul de nume şi compartimentul de atribute; metodele nu sunt specifice diagramelor E-A.

Asocierile (relationships) între tipurile de entităţi din diagramele E-A sunt numite (tot) asocieri (associations) în UML şi se reprezintă prin link-uri (legături) între clase.

O asociere binară de tipul 1:N sau M:N între două tipuri de entităţi din modelul E-A corespunde unei asocieri binare de acelaşi tip în modelul obiect, reprezentată printr-un link între cele două tipuri de entităţi. Link-ul este marcat cu numele (opţional) al asocierii şi prin multiplicitatea fiecărui tip de entitate în cadrul asocierii, marcată la capătul corespunzător al link-ului, cu o singură valoare (de exemplu 1) sau în forma (min…max); un asterix (*) înseamnă nici-o limită superioară a participarii în asociere.

În UML, o asociere în care o entitate este pusă în corespondenţă cu entităţi care sunt părţi constituente ale acesteia se numeşte agregare (aggregation), deci agregarea este corespondenţa între "întreg" şi părţile acestuia. O agregare se reprezintă printr-un link de asociere marcat cu un indicator de agregare, un romb plasat la capătul link-ului din vecinătatea tipului de entitate care reprezintă "întregul". În modelul obiect şi în limbajul UML agregările sunt intens utilizate, dar în diagramele E-A agregarea se utilizează numai pentru asocierea unui tip de entitate slabă cu tipul de entitate puternică de care depinde.

Ierarhiile de tipuri din diagrama E-A, reprezentate prin asocieri de tipul 1:1, corespund ierarhiilor de clase (moştenirilor) din modelul obiect, care se reprezintă în UML printr-un link cu o săgeată direcţionată către superclasă.

Proiectul conceptual de nivel înalt al unei baze de date (diagrama E-A) poate fi dezvoltat independent de un SGBD anume, ca un proiect pe hârtie sau dezvoltat pe baza unor instrumente software de proiectare vizuală. De obicei însă, SGBD-urile (în special SGBD-urile relaţionale) pun la dispoziţie instrumente mai mult sau mai puţin "prietenoase" de proiectare a bazelor de date, în care se poate dezvolta proiectul conceptual. De exemplu, Access oferă o interfaţă vizuală de proiectare a relaţiilor (corespunzătoare tipurilor de entităţi) şi a asocierilor dintre acestea. La fel, SQL Server permite proiectarea vizuală a relaţiilor, iar Oracle Developer 2000 adaugă facilităţi grafice de proiectare pentru SGBD Oracle.

În Access, relaţiile şi asocierile sunt reprezentate în "diagrama de asocieri" (Relationships), care este corespondentul relaţional al diagramei Entitate-Asociere. În această diagramă relaţiile se reprezintă asemănător tipurilor de entităţi în notaţie UML, printr-un dreptunghi cu două compartimente, compartimentul de nume şi compartimentul de atribute. Dat fiind că în modelul relaţional singurele asocieri posibile între relaţii sunt asocierile binare de tip 1:1 sau 1:N, diagrama de asociere mai conţine, în afară de relaţii, doar link-uri de asociere marcate cu 1 (la capătul dinspre relaţia cu multiplcitate 1) şi cu (la capătul dinspre relaţia cu multiplicitate > 1). Diagrame de asociere asemănătoare se pot dezvolta şi in SQL Server şi Oracle Developer.

2.4. Modele de date specializate

La proiectarea unei bazei de date se stabileşte schema conceptuală a acesteia, conform modelului specializat de date ales, prin două seturi de reguli:

Un set de reguli de structurare a datelor, care exprimă proprietăţile statice ale modelului. În SGBD, aceste reguli sunt exprimate prin limbajul de definire a datelor (LDD).

Un set de reguli de manipualare (operaţii) a datelor, care reprezintă proprietăţile dinamice ale modelului. În SGBD, aceste reguli sunt exprimate prin limbajul de manipulare a datelor (LMD). Prin operaţiile prevăzute în LMD nu se poate modifica organizarea datelor, ci numai valori particulare ale acestora.

În continuare se vor prezenta pe scurt primele (din punct de vedere istoric) modele de date specializate: modelul ierarhic şi modelul reţea. Modelul relaţional va fi studiat în majoritarea cursului, iar

8

Page 9: Cap2

modelele post-relaţionale (modelul obiect şi modelul obiect-relaţional) vor fi analizate ulterior prin comparaţie cu modelul relaţional. Prezentarea modelului ierarhic şi a modelului reţea se face mai cu seamă pentru a înţelege ulterior ce a adus nou modelul relaţional, care este de departe modelul cel mai folosit în realizarea bazelor de date în momentul de faţă.

2.4.1. Modelul de date ierarhic

Modelul de date ierarhic a fost primul model folosit pentru proiectarea bazelor de date. Cea mai cunoscută realizare de SGBD ierarhic este sistemul IMS (Information Management System) dezvoltat de firma IBM în cadrul programului de cercetări Apollo. Deşi acest model este depăşit, se mai păstrează unele aplicaţii de baze de date în model ierarhic.

Modelul conceptual al unei baze de date ierarhice se defineşte printr-un arbore direcţionat, compus din mai multe nivele, în care sunt reprezentate tipurile de entităţi şi asocierile dintre acestea . Tipurile de entităţi constitue nodurile arborelui, iar asocierile dintre tipurile de entităţi sunt reprezentate prin arce între noduri. Fiecare nod (cu excepţia nodurilor frunză) are unul sau mai multe arce către noduri de pe nivelul imediat inferior (către nodurile fii) şi fiecare nod (cu excepţia nodurlui rădăcină) are un singur arc către un nod de pe un nivel superior (nodul parinte). În Figura 2.8(a) este prezentat arborele de definiţie corespunzător diagramei E-A din Figura 2.4(a).

Figura 2.8. Bază de date ierarhică(a) Arborele de definiţie al bazei de date ierarhice. (b) Asocierea între entităţi.

Asocierile 1:1 şi 1:N se reprezintă simplu într-o astfel se structură: o entitate (dintr-un nod aflat pe un anumit nivel al arborelui) se poate asocia prin link-uri cu una sau mai multe entităţi de pe nivelul imediat inferior. Entităţile sunt reprezentate prin înregistrări, iar link-urile care realizează asocierile sunt vectori de adrese (pointeri) către entităţile fii, memoraţi explicit în entitatea părinte.

Asocierile M:N sunt mult mai greu de reprezentat, datorită structurii de definire de tip arbore şi se realizează prin multiplicarea entităţilor din nodurile fii atunci când sunt referite de mai multe entităţi din nodul parinte, ceea ce conduce la o mare redundanţă a datelor memorate. În figura 2.7(b) este prezentat un exemplu de asocieri între entităţi.

În modelul ierarhic nu se pot rezolva decât acele interogări pentru care au fost prevăzute în mod explicit asocieri prin arcele arborelui. În plus, în modelul ierarhic apare o puternică asimetrie în rezolvarea interogărilor. De exemplu, la interogarea “Care sunt studenţii care studiază cu profesorul p1?” răspunsul se obţine relativ uşor, prin explorarea subarborelui corespunzător entităţii p1. În schimb, interogarea “Care sunt profesorii care predau studentului s1”, se rezolvă mult mai greu. Este necesară explorarea subarborilor tuturor profesorilor şi reţinerea acelora care au în subarbore entitatea s1. Cele două interogări sunt echivalente la nivelul semantic, dar au o complexitate de rezolvare diferită, datorată asimetriei de reprezentare a entităţilor şi a asocierilor.

Avantajele modelul ierarhic sunt simplitatea şi eficienţa de calcul, dar acestea nu sunt suficiente pentru ca acest model să mai fie utilizat, în condiţiile existenţei altor modele mult mai performante.

9

FACULTATE

PROFESOR

STUDENT

f1 f2 f3

FACULTATE

p1 p2 p3

PROFESOR

s1 s2 s3

STUDENT

s1 s2 s3

(a) (b)

Page 10: Cap2

2.4.2. Modelul de date reţea

Apărut după modelul ierarhic, modelul de date reţea de structurare a bazelor de date a fost standardizat în 1971, de o comisie DBTG (Database Task Group).

Modelul reţea foloseşte o structură de graf pentru definirea tipurilor de entităţi şi a asocierilor între acestea. La fel ca şi în modelul ierarhic, nodurile grafului reprezintă tipurile de entităţi, iar muchiile grafului reprezintă în mod explicit asocierile dintre tipurile de entităţi.

Deosebirea faţă de modelul ierarhic constă în aceea că asocierile M:N se reprezintă fără duplicarea entităţilor, fiecare entitate putând fi adresată de mai multe entităţi. În acest fel redundanţa datelor este redusă, iar interogările devin simetrice.

La fel ca şi la modelul ierarhic, dezavantajul principal al modelului reţea este acela că fiecare interogare trebuie să fie prevăzută încă din faza de proiectare, prin introducerea link-urilor necesare în graful de reprezentare. În plus, complexitatea reprezentării datelor în modelul reţea este deosebit de ridicată, iar programatorul trebuie să o cunoască pentru a putea realiza aplicaţiile necesare.

În momentul de faţă nu se mai utilizează modelul de date reţea pentru baze de date de uz general (baze de date care suportă interogări), dar mai există unele domenii în care structurarea ca graf a datelor permite o parcurgere eficientă. Un exemplu reprezentativ de baze de date cu structura reţea sunt bazele de date grafice, folosite în modelarea scenelor tridimensionale din realitatea virtuală.

10