Documente Academic
Documente Profesional
Documente Cultură
Curs 9-Proiectarea BD PDF
Curs 9-Proiectarea BD PDF
Administratorii de date şi de BD
BD şi SGBD sunt resurse comune care trebuie gestionate ca orice resursă.
Sarcinile administratorului de date (DA = data administrator):
- responsabil cu gestionarea resurselor de date: planificarea, elaborarea şi
întreţinerea strategiilor şi procedurilor bazei de date
- responsabil cu proiectarea conceptuală/logică a BD
- consultarea şi îndrumarea managerilor superiori cu privire la direcţia de
dezvoltare a BD, a.î BD să sprijine obiectivele generale ale organizaţiei.
Administratorul de baze de date (DBA – data base administrator) este responsabil cu
realizarea fizică a BD, având următoarele sarcini:
- proiectarea şi implementarea BD,
- securitatea şi controlul integrităţii BD,
- întreţinerea sistemului operaţional,
- asigurarea de performanţe satisfăcătoare pentru aplicaţii şi utilizatori;
Rolul DBA este mai tehnic şi necesită cunoaşterea în detaliu a SGBD şi a mediului acestuia.
Proiectanţii de BD
Există proiectanţi de BD logice şi proiectanţi de BD fizice.
1
Proiectanţii de BD logice: “ce anume?”
- se ocupă cu identificarea datelor (entităţi şi atribute) şi relaţiilor dintre acestea, şi
de constrângerile asupra celor care vor fi stocate în BD;
- trebuie să cunoască foarte bine datele organizaţiei şi a regulilor de operare ale
organizaţiei;
- trebuie să implice toţi posibilii utilizatori ai BD în modelul creat.
Proiectanţii de BD fizice (“Cum anume?”) preia modelul logic şi stabileşte realizarea fizică:
- transpunerea modelului logic de date într-un set de tabele şi constrângeri privind
integritatea;
- selectarea de structuri de stocare şi metode de acces specifice, a.î. să se obţină
performanţe bune ale datelor in activităţile legate de BD;
- măsuri referitoare la securitatea datelor.
Proiectarea fizică a unei BD trebuie să ţină cont de SGBDul avut în vedere; proiectantul trebuie
să cunoască funcţionalitatea acestui SGBD şi avantajele şi dezavantajele fiecărei variante de
implementare a BD. Strategia de stocare aleasă trebuie să ţină cont de modul de utilizare.
Programatorii de aplicaţii
Odată realizată BD trebuie implementate programele de aplicaţie ce conferă
funcţionalitatea cerută de utilizatorii finali. Aceasta este sarcina programatorilor de aplicaţii.
Fiecare program conţine instrucţiuni care îi cere SGBD să efectueze o operaţie oarecare în BD
(extragere, inserare, reactualizare, ştergere de date). Programele pot fi scrise într-un limbaj de
generaţia a treia sau a patra.
Utilizatorii finali
Sunt clienţii pentru care a fost proiectată, implementată şi este întreţinută BD, pentru a le
satisface necesităţile informaţionale.
Utilizatorii simpli nu sunt conştienţi de SGBD. Accesează BD prin programe de aplicaţie
speciale, simplificatoare. Ei folosesc comenzi simple, opţiuni din meniu. Utilizatorul simplu nu
ştie nimic despre BD sau SGBD (de ex. vânzătorul care citeşte codul de bare pentru a afla preţul
unui produs. Există totuşi un program care citeşte codul de bare, caută preţul articolului respectiv
în BD, modifică câmpul cu stocul de articole, afişează preţul la casă).
Utilizatorii sofisticaţi sunt familiarizaţi cu structura BD şi facilităţile SGBD. Pot utiliza un limbaj
de interogare de nivel înalt (SQL). Pot scrie programe de aplicaţie pentru uz personal.
2
2.2. O METODOLOGIE CLASICĂ DE DEZVOLTARE A APLICAŢIILOR
3
Planificarea BD
Definirea sistemului
Proiectarea BD
Proiectarea conceptuală
Selectarea Proiectarea
SGBD Proiectarea logică aplicaţiei
Proiectarea fizică
Prototipizare Implementare
Încărcarea şi
conversia datelor
Testare
Întreţinere operaţională
Definirea sistemului
4
Colectarea şi analiza cerinţelor
Aceasta etapă implică adunarea şi analiza cerinţelor aplicaţiilor din partea utilizatorilor.
Cerinţa reprezintă o opţiune, un element ce trebuie inclus, tratat în noul sistem. Proiectarea BD
se bazează pe informaţii despre organizaţii, informaţii ce trebuie preluate şi gestionate de bază.
Acestea pot fi culese în diferite moduri :
Aceasta include proiectarea logică şi fizică a BD. În urma acestei etape va fi elaborat
modelul BD care va constitui suportul obiectivelor şi operaţiunilor organizaţiei. Principalele
obiective ale proiectării BD sunt:
• reprezentarea datelor şi a relaţiilor dintre date, formulare pe diferitele zone ale aplicaţiei
şi ale grupurilor de utilizatori ;
• furnizarea unui model al datelor care să permită orice tranzacţie autorizată asupra
acestora ;
5
• construirea unui proiect care va atinge cerinţele de performanţă ale sistemului, cum ar
fi: securitatea, timpul de răspuns etc.
Deseori însă, realizarea unui obiectiv se face în detrimentul altuia. Spre exemplu, un nivel
ridicat de securitate atrage după sine scăderea vitezei de răspuns.
Există două abordări majore ale proiectării BD. Abordarea bottom-up porneşte de la
nivelul elementar, cel al atributelor, care sunt grupate în clase de entitati şi asociaţii.
Normalizarea este un exemplu tipic de demers bottom-up, care dă rezultate bune atunci când
numărul atributelor nu este prea mare.
Când numărul de atribute este ridicat, mai nimerită este abordarea top-down, care
dezvoltă mai întâi un model sintetic, simplificat al datelor. Cele câteva entităţi sunt descompuse
ulterior în mai multe etape, până la identificarea atributelor şi entităţilor elementare. Modelarea
folosind diagrame E-R are la bază abordarea top-down.
Există şi alte abordări ale proiectării BD; spre exemplu, inside-out (de la interior către
exterior) seamănă cu bottom-up, dar diferă prin faptul că mai întâi se stabileşte un set de
concepte majore şi apoi analiza se lărgeşte prin includerea în model şi a altor concepte care se
afla în relatie cu cele majore. Strategia mixtă utilizează deopotrivă, pentru diferitele părţi ale
modelului, şi bottom-up, şi top-down, combinând rezultatele.
După cea mai mare parte a autorilor, proiectarea bazelor de date este de două tipuri,
logică şi fizică, în timp ce după alţii există trei tipuri: conceptuală, logică, fizică.
Considerată un pas opţional, selectarea SGBD presupune alegerea celui mai adecvat
SGBD pentru realizarea şi exploatarea aplicaţiei. Nu toate SGBD-urile satisfac cerinţele
aplicaţiei, iar, pe de altă parte, cele mai performante sunt şi cele mai scumpe. Cerinţele de
funcţionalitate trebuie coroborate cu resursele disponibile, în vederea identificării celui mai
adecvat SGBD comercial pentru realizarea şi exploatarea aplicaţiei.
Proiectarea aplicaţiei
6
tranzacţiilor. De asemenea, tot acum se elaborează şi modelul interfeţei cu utilizatorul a
aplicaţiei.
Prototipizarea
Deşi opţională, prototipizarea se poate dovedi deosebit de utilă prin construirea unui
model de lucru iniţial simplificat, model ce permite dezvoltatorilor şi utilizatorilor să testeze şi să
amelioreze incremental noua aplicaţie. Un mare avantaj al prototipizarii este gradul mult mai
mare de acceptare a noului sistem la final, acesta fiind dezvoltat împreună cu utilizatorii ce pot
să-şi exprime pe parcurs doleanţele. Etapele prototipizarii sunt descrise în figura 2.2.
Construirea Implementarea
prototipului aplicaţiei
Decizie
Implementarea
Acest pas este necesar atunci când sistemul (aplicaţia) dezvoltat înlocuieşte un altul.
Datele trebuie transferate din vechea aplicaţie în cea nouă, operaţie ce implică de multe ori
schimbarea structurii fişierelor, a formatului, logic şi fizic, al datelor, în concordanţă cu cerinţele
7
noii aplicaţii, dar şi ale noului SGBD. Uneori sunt necesare (şi posibile) şi conversii ale unor
programe din vechiul în noul sistem. Majoritatea SGBD-urilor actuale au module de import-
export din/în alte SGBD-uri. Conversia aplicaţiilor este, în general, mult mai complexă atunci
când se schimbă limbajul/mediul de programare.
Testarea
• top-down;
• bottom-up;
• fire de execuţie ;
• test de stres.
Testarea top-down începe de la nivelul superior al funcţiilor majore ale aplicaţiei. Este
utilă în verificarea arhitecturii sistemului, reproiectările majore fiind semnalate din primele
momente ale testării.
Testarea bottom-up începe cu modulele elementare şi continuă pe verticală cu modulele
compozite până la nivelul general al aplicaţiei.
Testarea firelor de execuţie este foarte importantă în sistemele de prelucrare în timp real,
în care sunt rulate simultan o serie de procese ce cooperează. Acest tip de testare este mult mai
complex, fiind legat de detaliile tehnice ale sistemului de operare. Fiecarui proces i se alocă un
fir de execuţie (thread) care este urmărit de la declanşarea sa, acordându-se o mare importanţă
punctelor de întâlnire cu celelalte fire executate pe sistem.
Testul de stres presupune suprasolicitarea bazei şi aplicaţiilor. Astfel, BD se încarcă
automat cu un număr extrem de mare de înregistrări, iar la aplicaţie se conectează cât mai mulţi
utilizatori. Astfel se depistează până la ce limite rezistă aplicaţia.
8
Întreţinerea operaţională
Deși au fost publicate destule cărți dedicate proiectării bazelor de date, subiectul continuă
să fie departe de epuizare. Chiar dacă unii autori s-au străduit să aducă rigurozitate, uneori cu
prețul unei anume rigidități, proiectarea bazelor de date rămâne preponderent o artă și mai puțin
o știință. Problema proiectarii unei baze de date ține de elaborarea unei structuri logice și a alteia
fizice în vederea întâmpinării nevoilor informaționale ale utilizatorilor într-o organizație, pentru
un set definit de aplicaţii.
Există mai multe curente de idei în ceea ce privește proiectarea bazelor de date. Unul
dintre acestea împarte procesul de proiectare în două direcții: modelarea logică a datelor și
proiectarea bazelor de date relaționale, definind modelarea logică a datelor ca procedură pentru
reprezentarea cerințelor informaționale într-un format corect, consistent și stabil, iar proiectarea
BD relaționale drept procedură de transformare a modelului logic al datelor într-o schemă
relațională stabilă. Aici apare o inadvertență, considerându-se că o schemă relațională alcătuită
din tabele și restricțiile la care sunt supuse datele din tabele nu ar corespunde nivelului logic al
bazei de date, ci nivelului fizic. În această abordare, metodologia de modelare logica a datelor
(MLD) se deruleaza în 12 paşi:
1. identificarea entităților majore ;
2. determinarea relațiilor dintre entități;
3. determinarea cheilor primare şi alternative;
4. determinarea cheilor străine;
5. determinarea celor mai importante reguli organizaționale (key business rules) ;
6. adăugarea celorlalte atribute (atributele non-cheie) ;
7. validarea perspectivelor utilizatorului folosind normalizarea ;
8. determinarea domeniilor (restricțiilor asupra valorilor autorizate ale atributelor) ;
9
9. determinarea operațiunilor declanşatoare (regulile care guvernează efectele
modificărilor asupra atributelor şi entităților) ;
10. combinarea perspectivelor utilizatorului;
11. integrarea cu modelele de date existente ;
12. analiza stabilității şi dezvoltărilor ulterioare.
Este evident că, deşi se separă artificial proiectarea logică a bazei de date de proiectarea
bazei de date relaționale, o parte dintre paşii modelării logice sunt raportați explicit la modelul
relațional. Perspectiva poate fi explicată prin faptul că, la nivelul anilor ‘80, modelul suveran în
materie de gestiune a bazelor de date era cel relațional (suveranitate manifestată din plin şi
astăzi), iar SGBD-urile ce puteau exploata baze de date obiectuale erau ca şi inexistente.
Cea de a doua direcție, proiectare a bazei de date relaționale (PBDR), care continuă
operațiunile derulate în MLD, presupune următorii pași:
1. identificarea tabelelor ;
2. identificarea atributelor;
3. adaptarea structurii datelor la specificul SGBD-ului folosit ;
4. inventarierea regulilor organizaționale privind entitățile;
5. inventarierea regulilor organizaționale privind relațiile (asociațiile) dintre entități ;
6. inventarierea regulilor adiționale despre atribute ;
7. optimizarea structurii în vederea unui mecanism de acces cât mai eficient ;
8. definirea secvenţelor de "înmănunchiere" (clustering);
9. definirea cheilor pentru calcularea adreselor logice ale înregistrărilor în tabele (hash
keys) ;
10. adăugarea indexurilor;
11. adăugarea de date redundante;
12. redefinirea coloanelor;
13. redefinirea tabelelor.
1. analiza cerinţelor;
2. proiectarea logică, ce se materializează în schema globală ce conține datele și relațiile
dintre ele, fiind derulată astfel :
a) modelarea E-R;
10
b) integrarea perspectivelor utilizator;
c) conversia diagramelor E-R în tabele;
d) normalizarea tabelelor ;
3. proiectarea fizică: selectarea indexurilor, metodelor de acces, cluster-elor de date; tot
aici, se include și denormalizarea;
4. distribuirea datelor, materializată în schema de fragmentare și schema de alocare a
datelor ;
5. implementarea, monitorizarea și modificarea ulterioară a bazei de date. Și aici apar
dubii legate de modul de derulare a normalizării (2.d), o dată ce prin conversia
diagramelor E-R se obțin deja tabelele relaționale (2.c).
Ambele abordări sunt legate îndeosebi de paradigma relațională folosind în primele etape
modelul E-R, mai apropiat de lumea reală.
Mai nou, proiectarea bazelor de date este privită pornind de la cele trei modele în vogă
astăzi: relațional, obiectual şi relațional-obiectual. Din această perspectivă, procesul proiectării
bazelor de date este prin excelență unul iterativ, incremental, într-o măsura cu atât mai mare cu
cât ne apropiem de obiectual. Fiecare iterație se materializează într-o formă a schemei bazei,
pornindu-se de la modelare, apoi trecându-se de la proiectare la construcție (implementare). Cu
toate acestea, activitățile principale ale ciclului de viață al bazei de date nu diferă prea mult, cel
puțin la nivel general:
11
2.3 CONSTRUIREA DE DIAGRAME ENTITATE-RELAŢIE
Prima etapă pentru realizarea unei baze de date constă în analiza sistemului. Se cunosc
mai multe tehnici de analiză, dar cea mai des întâlnită este tehnica entitate-relaţie.
Prin tehnica entiate-relaţie (denumită şi entitate-asociere) se construieşte o diagramă
entiate-relaţie (notată E-R) prin parcurgerea următorilor paşi:
a) identificarea entităţilor (componentelor) din sistemul proiectului;
b) identificarea asocierilor (relaţiilor) dintre entităţi şi calificarea lor;
c) identificarea atributelor corespunzătoare entităţilor;
d) stabilirea atributelor de identificare a entităţilor.
a) Identificarea entităţilor
Prin entitate se înţelege un obiect concret sau abstract reprezentat prin proprietăţile sale.
Prin convenţie, entităţile sunt substantive, se scriu cu litere mari şi se reprezintă prin
dreptunghiuri. Într-o diagramă nu pot exista două entităţi cu acelaşi nume, sau o aceeaşi entitate
cu nume diferite.
Pentru o bază de date din domeniul imobiliar, se pot pune în evidenţă următoarele
entităţi:
- DATE_PERSOANĂ – entitate care stochează date personale ale ofertantului
(vânzătorului) sau ale clientului (cumpărătorului);
- CERERI_ OFERTE – conţine ofertele sau cererile imobiliare propuse de vânzători,
respectiv cumpărători;
- DESCRIERE_IMOBIL – stochează informaţiile referitoare la imobile;
- JUDEŢE – entitate ce conţine judeţele în care sunt amplasate imobilele;
- LOCALITĂŢI - entitate ce conţine localităţile în care sunt amplasate imobilele;
- STRĂZI - entitate ce precizează străzile în care sunt amplasate imobilele;
- FACTURI – formularul necesar unei tranzacţii de cumpărare-vânzare.
Figura următoare prezintă o primă formă a diagramei entitate-asociere (E-R).
DATE_ FACTURI
PERSOANA
LOCALITATI
CERERI_ OFERTE
JUDETE
DESCRIERE_IMO
STRAZI
BIL
12
b) Identificarea asocierilor dintre entităţi şi calificarea lor
(1,1) (0,1)
CERERI_OFERTE sunt finalizate FACTURI
prin
Sunt necesare precizarea câtorva notaţii şi noţiuni utilizate în exemplul de mai sus:
- legăturile (asocierile) se reprezintă prin arce neorientate între entităţi;
- fiecărei legături i se acordă un nume plasat la mijlocul arcului şi simbolizat printr-un
romb (semnificaţia legăturii);
- numerele simbolizate deasupra arcelor se numesc cardinalităţi şi reprezintă tipul
legăturii;
- cardinalitatea asocierilor exprimă numărul minim şi maxim de realizări a unei entităţi
cu cealaltă entitate asociată.
Exemplu: Cardinalitatea (1,1) ataşată entităţii CERERI_OFERTA înseamnă că o factură poate fi
rezultatul tranzacţionării a minim unei cereri/oferte şi a unui număr maxim de tot o cerere/ofertă.
Cardinalitatea (0,1) ataşată entităţii FACTURI înseamnă că o cerere se poate finaliza prin maxim
o factură sau prin nici una (0 facturi) . Această cardinalitate reiese din analiză:
CERERI_OFERTE FACTURI
• 1 • F1
• 2 • F2
• 3
Maximele unei cardinalităţi sunt cunoscute şi sub denumirea de grad de asociere, iar
minimele unei cardinalităţi, obligativitatea participării entităţilor la asociere.
Asocierile pot fi de mai multe feluri, iar odată cu asocierea, se impune stabilirea
calificării acesteia. Asocierea dintre entităţi se face în funcţie de
13
i) cardinalitatea asocierii;
ii) numărul de entităţi distincte care participă la asociere.
i. După cardinalitatea asocierii
În funcţie de maxima cardinalităţii (gradul de asociere), se cunosc trei tipuri de asocieri,
care, la rândul lor, sunt de două tipuri, în funcţie de minima cardinalităţii (gradul de obligativitate
al participării la asociere):
• asocieri de tip „unu la unu”;
o asocieri parţiale de tip „unu la unu”
o asocieri totale de tip „unu la unu”
• asocieri de tip „unu la mai mulţi”
o asocieri parţiale de tip „unu la mulţi”
o asocieri totale de tip „unu la mulţi”
• asocieri de tip „mulţi la mulţi”
o asocieri parţiale de tip „mulţi la mulţi”
o asocieri totale de tip „mulţi la mulţi”.
ii. După numărul de entităţi distincte care participă la asociere:
• asocieri binare (între două entităţi distincte);
• asocieri recursive (asocieri ale entităţilor cu ele însele);
• asocieri complexe (între mai mult de două entităţi distincte).
În continuare se descriu asocierile grupate după cardinalitatea ei.
E1 (...,1) A (...,1) E2
2. Asocieri de tip „unu la mai mulţi” sunt asocieri în care maxima cardinalităţii
unei entităţi este unu, iar a celeilalte entităţi are valoarea „mulţi”.
14
Exemplu:
A B
LOCALITATI CERERI_OFERTE
• L1 • 1
• L2 • 2
• L3 • 3
(1,1) îi (0,n)
LOCALITATI CERERI_OFERTE
corespunde
Fig. 2.8. Asociere de unu la mai mulţi între entităţile LOCALITĂŢI şi CERERI_OFERTE
E1 (...,n) A (...,n) E2
Exemplu:
DEPOZIT PRODUS
• D1 • P1
• D2 • P2
• D3 • P3
(0,n) (0,n)
În magazie PRODUS
DEPOZIT
nează
15
Observaţie: Uneori (în cazul utilizării unor SGBD), asocierea de tip „mulţi la mulţi” se
transformă în două asocieri de tipul „unul la mulţi” fiind, de regulă, mai uşor de implementat şi
de utilizat şi anume:
a) b)
Fig. 2.11. Transformarea unei asocieri de tipul mulţi la mulţi (a)
în asocieri de tipul unu la mulţi (b)
Exemplu: În cazul exemplului de mai sus (vezi figura 2.10), transformarea asocierii „mulţi la
mulţi” în asocieri de tipul „unu la mulţi” se poate realiza prin construirea unei noi entităţi
DEPOZIT_PRODUS astfel:
DEPOZIT_
PRODUS
DEPOZIT PRODUS
(0,1) (0,n) (0,n) (0,1) • P1
asociază
• D1-P1 asociază • P2
• D1
• D1-P3 • P3
• D2
• D2-P1 • P4
• D3
• D4 • D3-P4
Fig. 2.12. Transformarea asocierii de tipul mulţi la mulţi în asocieri de tipul unu la mulţi
a) b)
Fig. 2.13 Asocieri parţiale între entităţile E1 şi E2
16
Exemplu: Asocierea dintre entităţile CERERI_OFERTE şi FACTURI din fig. 2.5 reprezintă o
asociere parţială, deoarece participarea entităţii FACTURI nu este obligatorie, minima
caracteristicii corespunzătoare entităţii CERERI_OFERTE fiind 0.
O asociere este totală dacă toate entităţile au obligativitatea să participe la asociere, adică
minima cardinalităţii este mai mare decât zero.
(1,…) (1,…)
E1 A E2
a)
(n,…) (n,…)
E1 A E2
d)
CERERI_OFERTE FACTURI
• 1 • F1
• 2 • F2
• 3
CERERI_OFERTE DESCRIERE_IMOBIL
• 1 • I1
• 2 • I2
• 3 • I3
17
Exemplu: Asocieri parţiale de tip unu la mulţi
LOCALITATI CERERI_OFERTE
• L1 • 1
• L2 • 2
• L3 • 3
ELEVI
CLASE
• E1
• C1
• E2
• C2
• E3
• C3
• E4
DEPOZIT PRODUS
• D1 • P1
• D2 • P2
• D3 • P3
• D4
STUDENTI
CURSURI
• S1
• C1 • S2
• C2 • S3
• C3 • S4
18
În exemplul bazei de date AGENTIE_IMOBILIARA, tipurile de asocieri dintre entităţi
stabilite în funcţie de modul în care se desfăşoară activitatea modelată sunt:
- JUDETE-LOCALITATI 1:n – deoarece unui judeţ îi corespund mai multe
localităţi;
- LOCALITATI-STRAZI 1:n - deoarece unei localităţi îi corespund mai multe
străzi;
- STRAZI-CERERI_OFERTE 1:n – deoarece unei străzi îi pot corespunde mai
multe oferte/cereri;
- FACTURI-CERERI_OFERTE 1:1 – deoarece fiecare factură conţine doar câte o
ofertă/cerere;
- CERERI_OFERTE-DECRIERE_IMOBIL 1:1 – fiecărei cereri i se face o singură
descriere de imobil;
- FACTURI- DATE_PERSOANA 1:1 – o factură este încheiată de o singură
persoană;
- DATE_PERSOANA -CERERI 1:n – o persoană poate lansa mai multe cereri sau
oferte de imobil.
Atributele unei entităţi reprezintă proprietăţi ale acestora. Atributele sunt substantive, iar
pentru fiecare atribut i se va preciza tipul fizic (integer, float, char, string etc.)
Exemplu: Entitatea LOCALITĂŢI are următoarele atribute: codul localităţii, notat „cod_loc”,
simbolul de identificare al judeţului „simbol_judeţ” şi denumirea localităţii „nume_loc”.
a E a# E
(a) (b)
Exemplu: Ca atribut de identificare putem considera codul numeric personal „cnp” pentru
entitatea DATE_PERSOANĂ.
Pentru ca un atribut să fie atribut de identificare, acesta trebuie să satisfacă unele cerinţe:
- oferă o identificare unică în cadrul entităţii;
19
- este uşor de utilizat:
- este scurt (de cele mai multe ori, atributul de identificare apare şi în alte entităţi, drept
cheie externă).
Pentru o entitate pot exista mai multe atribute de identificare, numite atribute (chei)
candidate. Dacă există mai mulţi candidaţi cheie se va selecta unul, preferându-se unul cu valori
mai scurte şi mai puţin volatile.
(1,1)
se regăseşte
(1,n)
(1,1)
DATE_PERSOANA
CERERI_ (1,n) conţin
OFERTE (1,1)
incheie
(1,1) (0,1)
(1,1)
finisate (0,1) FACTURI
conţin
(1,1)
DESCRIERE
_IMOBIL
În cazul în care se doreşte o diagramă care să conţină şi atributele fiecărei entităţi însoţite
de precizarea atributelor de identificare (adică a cheilor primare), pentru a nu încărca imaginea,
diagrama proiectului se poate fragmenta pe mici domenii, după cum este cazul entităţii
OFERTE, prezentat în figura 2.18. (S-au considerat un număr relativ mic de atribute).
20
id_co#
tipul
cnp
data_inreg
cod_loc
CERERI_OFERTE
id_strada
nr_imobil
pret_min
pret_max
tip_solutionare
21
DATE_PERSOANA STRĂZI LOCALITATI JUDETE
tip tip_imobil
cnp etaj
FACTURI
data_inreg nr_camere
nr_factura#
tip_solutionare suprafata
id_oferta
cod_loc garaj
data_factura
id_strada centrala_termica
cnp
nr_imobil termopane
pret
pret_min
TVA
pret_max
total
22
Există două tipuri de constrângeri de participare (a unei entităţi într-o relaţie):
- participare totală sau obligatorie (reprezentată printr-o linie dublă)
- participare parţială sau opţională (reprezentată printr-o linie simplă).
Participarea unei entităţi într-o relaţie este totală, dacă existenţa unei entităţi necesită
(este condiţionată de) existenţa altei entităţi prin intermediul unei anumite relaţii. Altfel
participarea este parţială.
Exemplu. În relaţia binară FILIALA Este Alocat PERSONAL (fig. 2.20) o filială poate
exista, evident, numai dacă are alocat personal. Deci existenţa entităţii FILIALA este
condiţionată de existenţa entităţii PERSONAL. Ca urmare entitatea FILIALA va participa total
(obligatoriu) în relaţia Este Alocat, şi se va reprezenta cu linie dublă.
O reprezentare alternativă a
Nr. Filiala Nr. Personal
constrângerilor de
participare rezultă din fig.
2.21, unde pe liniile de
legătură sunt trecute
valorile minimă şi maximă
(5,N) (0,1) cu care pot participa
FILIALA Este Alocat PERSONAL
entităţile în relaţie.
În cazul exemplului, o filială poate avea minim 5 şi maxim nedefinit (N) angajaţi. Un
angajat poate să nu fie alocat unei filiale (valoare minimă 0) sau să fie alocat unei filiale, şi
numai uneia (valoare maximă 1).
23
2.3.2 Problemele modelului ER
SECŢIE
1 1 Capcanele în evantai apar când două sau mai multe
relaţii 1:M provin din aceeaşi entitate (fig. 2.22).
PERSONAL FILIALA
Examinăm modelul la nivel de apariţii individuale prin intermediul reţelei semantice (fig.
2.23).
r1 r4
SA1 F1
S1
r2 r5 F2
SA2
SA3 r3 S2 r6 F3
Se poate observa capcana în evantai: Angajatul SA1 este alocat secţiei S1, dar secţia S1
coordonând filialele F1 şi F3, nu se ştie la care dintre aceste două filiale este alocat SA1.
24
FILIALA
Capcana se rezolvă prin restructurarea modelului
M 1
ER, a.î. acesta să reprezinte corect asocierile dintre
entităţi (fig. 2.24).
Coordonează Este alocat Se observă care secţie coordonează care filiale, şi ce
personal este alocat fiecărei filiale.
1 M
SECŢIE PERSONAL
Reţeaua semantică a modelului restructurat (corect) este cea din fig. 2.25.
r4 r1
S1 F1 SA1
r5 r2
F2 SA2
S2 r6 r3 SA3
F3
25
Capcanele de întrerupere apar când în calea prin care sunt legate entităţile intervine o
entitate cu participare parţială.
- unei singure filiale îi sunt alocaţi mai mulţi angajaţi (relaţie 1:M)
- filiale există numai dacă are personal, fiecare membru al personalului este obligatoriu
alocat unei filiale (participări totale – linii duble de legătură).
PERSONAL
M 1 Din modelul din fig. 2.26 nu se poate deduce
ce proprietăţi sunt disponibile la care filiale.
1 M
FILIALA Proprietate
de închiriat
26
Entităţile
PROPRIETATE_
Entităţile Relaţia Entităţile Relaţia DE_ÎNCHIRIAT
FILIALA Este alocat PERSONAL Supervizează
r1 r4
SA1 P1
F1
F2 r2
SA2 P2
F3 r3 r5 P3
SA3
27
Entităţile
Entităţile Relaţia Entităţile Relaţia PROPRIETATE_
FILIALA Este alocat Supervizează DE_ÎNCHIRIAT
PERSONAL
r1 r4
F1 SA1 P1
F2 r2
SA2 P2
F3 r3 r5 P3
SA3
Relaţia Are
r1
r2
r3
Acum la nivelul apariţiilor individuale, adică din reţeaua semantică, se poate stabili că
proprietatea P2 este disponibilă la filiala F2 (fig. 2.29).
28