Documente Academic
Documente Profesional
Documente Cultură
DBCAP4
DBCAP4
Modelarea datelor logice este una din cele mai puternice metode de a stabili
şi a menţine controlul asupra resurselor de date. Există mai multe tehnici de
modelare a datelor logice. La sfârşitul capitolului vom enumera câteva dintre
ele. Pentru a ilustra proprietăţile datelor unei intreprinderi pe care un model
de date logice le poate captura, vom descrie o tehnică grafică, care va explica,
de asemenea, şi multe din celelalte abordări de modelare.
Modelele de date logice pot fi reprezentate atât prin diagrame cât şi
prin instrucţiuni de limbaj. Noi am ales diagramele.
4.1. Introducere
43
cercurile) reprezintă activităţi iar arcele între cutii reprezintă fluxul
activităţilor. Fig.3.5. reprezintă un model de activitate.
Un model de actvitate se focalizează pe procese mai mult decât pe
fluxul între procese. Modelele de date, pe de altă parte, se focalizează pe
semnificaţiile entităţilor, atributelor şi a relaţiilor de date. Tehnicile de
modelare a datelor reprezintă, uzual activitităţile care folosesc datele. Dacă
nu indicăm altfel, vom folosi termenul de model de date pentru a referi un
model de date logic (mai de grabă decât model de date fizic) ceea ce este
consistent cu terminologia general folosită în domeniul bazelor de date.
44
planificarea sistemelor de informaţii
proiectarea sistemelor informatice
integrarea resurselor de date
proiectarea şi implementarea bazelor de date
Înţelegerea datelor. Atunci când se dezvoltă modele de date, atât
personalul de prelucrare date cât şi utilizatorii care sunt experţi în domeniul
modelului, sunt necesari. Un model de date construit de personalul care
prelucrează date singuri şi făcut pentru a portretiza date despre produse este
diferit de unul făcut de ingineri, producători şi distribuitori. De fapt, modelul
de date construit numai de personalul de prelucrare date este incorect şi/sau
inexact. Astfel utilizatorii cruciali pentru dezvoltarea cu succes a modelelor
de date.
Documentarea datelor. Ca un vehicul de comunicaţii, un model de
date este adesea un bun mod de a explica documentat datele. Dacă tehnica de
modelare este capabilă şi clară, atunci modelele sale pot fi considerabil mai
valabile ca şi documentare decât limbajele naturale.
Evaluarea software-ului. Pe măsură ce pachetele software devin
mai populare, companiile se întreabă tot mai des: “ Se va potrivi acest
software în mediul nostru?”. Răspunsul depinde de ce face software-ul şi de
modelul de date rezultat. De exemplu, un pachet de contabilitate care
presupune un angajat este plătit dintr-un singur cont (al proiectului la care
lucrează) nu se va potrivi bine într-o companie ai cărei angajaţi sunt plătiţi
din mai multe conturi. Dacă pachetul de contabilitate a fost bine documentat
cu un model de date logice şi dacă cumpărătorul candidat este familiar cu
modelul de date logice şi dacă cumpărătorul poate prezice mai bine dacă un
pachet particular de contabilitate este sau nu alegerea potrivită.
Planificarea sistemelor informatice. Deoarece facilitează
comunicaţiile şi descoperirea, modele de date sunt instrumente puternice
pentru planificarea sistemelor informatice şi a bazelor de date. Modelele de
date sunt folosite în BSP (Business Systems Planning - IBM), SPM
(Strategic Planning Methodology - Janus Martin) şi RAP (Requirements
Analysis and Planning - DACOM) pentru a identifica ariile principale de date
ale unei intreprinderi.
Ca parte a procesului de planificare, entităţile de nivel înalt sunt apoi
mapate pe unităţi organizatorice (cine este responsabil pentru ce date?),
activitate (ce funcţii se fac pentru ce date?) şi fişiere şi sisteme existente
(unde sunt datele stocate şi gestionate?). Planificarea sistemelor informatice
poate include identifcarea proiectelor de implementare şi descrierea
domeniului datelor care se implementează de către fiecare proiect.
Proiectarea sistemelor informatice. Un proiect de implementare
poate adăuga la un model de planificare date de nivel înalt detalii despre
atribute, volume şi frecvenţe de acces pentru datele din domiul său. Modelul
detaliat rezultat poate fi transformat într-o proiectare de bază de date fizică.
45
Modelarea datelor poate fi folosită efectiv pentru a documenta mediul
pertinent existent de date şi de a ajuta la proiectarea viitorului mediu de
date. Modelarea datelor folosită pentru a captura mediul prezent este un
proces de descoperire, iar modelarea datelor folosită pentru a proiecta viitorul
mediu cere invenţie. De exemplu, fig.4.1. ilustrează în mod simplu modelele
prezent şi viitor. Fără a explica tehnica de diagramare în acest punct, figura
scoate în evidenţă un mediu nou descoperit în care un distribuitor vinde
numai un singur tip de produs (de ex. maşini de scris) şi un mediu în care
responsabilităţile distribuitorului au fost expandate pentru a include mai
multe tipuri de produse (de ex. maşini de scris, procesoare de texte,
calculatoare). În general, un model de date pentru viitor nu este o pură
invenţie ci el impărtăşeşte mult din modelul rădăcină al prezentului. Figura
4.2. arată un mediu existent în care studentii fără licenţa (undergraduate) nu
se pot înscrie la cursuri postuniversitare şi un mediu viitor în care cursurile
graduate au fost deschise pentru aceştia.
Produs Produs
Vânzător Vânzător
46
diferite structuri de baze de date fizice (scheme interne), aşa cum sunt ele
implementate şi pe vederi utilizator (scheme externe), aşa cum sunt ele
identificate. Poate fi dificil a integra resursele de date fără a folosi modele de
date. Structurile fizice, de exemplu, nu prezintă o imagine completă.
Structurile baze de dat fizice, ca şi structurile de fişiere convenţionale, sunt
proiectate pentru a se întâlni cu obiectivele de performanţă ale aplicaţiilor
particulare şi nu pentru a oglindi structurile logice. De exemplu în figura 4.3.
înregistrarea PARTE din fişierul A conţine un grup repretitiv cu distribuitorii
acelei părţi. Aplicaţiile care folosesc fişierul A accesează datele despre
distribuitori pentru părţi particulare. Fiecare parte are mai mulţi distribuitori
asociaţi. Din contră înregistrarea DISTRIBUITOR din fişierul B este într-o
structură de înregistrare care spune să fiecare distribuitor oferă mai multe
părţi. Aplicaţiile care folosesc fişierul B accesează date despre părţi pantru
distribuitori particulari. Fiecare distribuitor are mai multe părţi asociate.
47
Detectarea structurii logice adevărate a datelor din structurile fizice
devine chiar mai grea atunci când relaţiile inter-înregistrări sunt îngropate în
codul aplicaţiilor. De exemplu, dacă părţile din fişierul PARTI sunt legate de
distribuitorii din fişierul DISTRIBUITORI printr-o tabelă codificată
complicat într-o aplicaţie program, atunci descoperirea relaţiei logice între
părţi şi distribuitori depinde de descifrarea acelei tabele. O primă abordare în
proiectarea bazei de date este de a construi modelul de date şi apoi de a-l
folosi ca temelie pentru proiectarea şi implementarea bazei de date fizice.
Utilizatorii trebuie să contribuie la modelarea datelor, chiar dacă ei nu trebuie
să fie implicaţi în proiectarea bazei de date fizice.
Ar putea fi util, de asemenea, să se construiască un model de date
pentru un domeniu deja suportat de către fişierele şi bazele de date fizice.
Acest model de date poate fi apoi mapat pe structurile fizice; structurile fizice
sunt folosite pentru domeniu; modelul de date este folosit pentru
documentarea semanticii datelor; maparea este folosită pentru a documenta
modul de stocare al datelor. Modelul de date poate arăta cum sunt legate
datele din diferite baze de date fizice şi fişiere.
ia
este luat
48
de proiectare bază de date fizice se folosesc apoi pentru a asigura un acces
eficient la date.
49
date pentru planificarea sistemelor informatice de nivel înalt (la nivelul
companiei sau diviziei) trebuie să păstreze mai puţine detalii decât modelele
pentru proiectarea bazelor de date fizice. Tehnicile de modelare de date cele
mai flexibile suportă diferite nivele de detalii. De exemplu, ele pot fi folosite
pentru a construi modele care arată numai entităţile şi relaţiile de nivel înalt,
dar şi modele care arată toate entităţile, atributele detaliate şi relaţiile rafinate.
Independenţa DBMS-ului. O tehnică de modelare de date trebuie
să fie independentă de orice DBMS particular şi trebuie să fie capabilă să
reprezinte modele care pot fi suportate de o varietate de DBMS-uri. Multe
din tehnicile de modelare a datelor sunt independente de DBMS. Câte o dată,
tehnicile de modelare a datelor folosite cu un DBMS particular sunt
considerate de nivel general, aşa cum sunt modelul ierarhic, modelul reţea şi
modelul relaţional. Problema majoră a acestor trei tehnici este existenţa de
limitări în semantica datelor pe care le pot reprezenta.
Suport automatizat. Tehnica de modelare de date ideală are suport
automatizat pentru a desena diagrame, a găsi inconsistenţe şi redondanţă în
modele, a combina modele din mai multe surse, a raporta pe model
componente şi caracteristici, şi aşa mai departe. A avea suport automatizat
înseamnă, în general, a oferi atât un limbaj pentru modele specificae cât şi a
oferi interfeţe utilizator bazate pe grafică. Tehnicile de modelare de date
aflate astăzi în folosinţă sunt parţial automatizate.
4.6.Entităţi
50
Fiecare din obiectele abstracte au o semnificaţie reală dar ele nu sunt
obiecte fizice.
Tehnicile de modelare date nu disting între entităţi reale şi abstracte
ci le reprezintă în acelaşi mod. Noi vom folosi DMT - Data Modeling
Tehnique al D. Appleton Company, Inc. (DACOM). Ea se bazează pe
Logical Database Design Tehnique, creată de Robert G. Brown în 1984 într-
un produs numit Janus, dezvoltat de DACOM şi DBDG (Data Base Design
Group, Inc.) pentru Bank of America.
Aici, o entitate este întotdeuna reprezentată de o cutie
dreptunghiulară. Numele entităţii este scris deasupra cutiei şi entităţii îi poate
fi asigurat un număr de etichetă, care apare după nume, separat prin slash.
(fig. 4.4.a). Din punctul de vedere al gestiunii datelor, este împortant să
distingem între ocurenţe individuale de lucruri şi clase de lucruri care au
aceleaşi proprietăţi. Instanţele de entităţi individuale nu se reprezintă
niciodată într-un model de date, acesta fiind conceput pentru reprezentarea
claselor.
4.7. Atribute
Angajat / 49 Angajat / 49
Număr_buletin
Nume_Angajat
Marca_Angajat
Data_Naşterii
Locul_Naşterii
Greutatea
Data_Angajării
Funcţia
Compartimentul
51
sau chiar să şteargă una din apariţiile atributului. Dacă două apariţii nu par a
fi acelaşi atribut, atunci trebuie folosite nume de atribute mai precise. De
exemplu, se pot folosi LOCUL_ NASTERII în entitatea ANGAJAT şi
LOCUL_COMPARTIMENTULUI în entitatea DEPARTAMENT. Mai
încolo, vorbind despre atributele cheie străină vom arăta că uneori într-un
model, un atribut poate să apară în mai mult de o entitate. În aceste cazuri,
apariţiile multiple au o semnfifcaţie definită şi indică o relaţie între entităţile
în care apar.
Nuluri. Este important de ştiut când poate avea un atribut o valoare
nulă. Cu toate că s-a depus multă muncă în definirea tipurilor de valori nule,
este suficient pentru scopurile noastre să înţelegem că o valoare nulă este o
valoare “necunoscută” sau “inaplicabilă”, şi nu o valoare numerică egală cu
zero!
Un atribut cu o valoare nulă nu are o valoare cunsocută la un
moment dat dar ea există conceptual în modelul de date. În tehnica noastră de
modelare de date, un atribut care poate avea o valoare nulă este adnotat cu
(0). De exemplu, dacă un angajat poate sau nu poate avea o valoare pentru
atributul NUMAR_TELEFON_PRIVAT_# atunci atributul poate fi listat ca
NUMAR_TELEFON_PRIVAT _# (0).
Domenii. Valorile unui atribut sunt luate dintr-un domeniu care
determină mulţimea validă de valori pentru unul sau mai multe atribute.
Anumite atribute pot avea toate acelaşi domeniu. De exemplu, atributele
DATA_NASTERII, DATA_ANGAJARII, DATA_INTALNIRII sunt toate
luate din domeniul DATE iar PRET_VANZARE şi LISTA_PRETURI sunt
luate din domeniul BANI. Un domeniu arată domeniul de valori al unui
atribut. Un domeniu poate avea mai multe reprezentări alternative pentru
valorile sale. De exemplu, valorile din domeniul BANI pot fi reprezentate în
diverse monede (dolari, marci, lei, etc.), valorile din domeniul LUNGIMI pot
fi reprezentate în cm, metri, mile, etc. iar cele din domeniul DATE ca date în
diferite formate, american (luna-zi-an), european (zi-luna-an), etc. Pot exista
moduri de a converti valorile dintr-o reprezentare a domeniului în alta.
Domeniile pot fi deasemenea, compuneri de domenii. De exemplu, domeniul
DATE ar putea fi compus din trei subdomenii LUNA, ZI si AN şi la rândul
lui, domeniul LUNA ar putea avea mai multe reprezentări: numerice (1, ..,
12) şi alfabetice (“JAN”, .., “DEC” sau “Ianuarie”, .. ,“Decembrie”). Un
model de date complet dezvoltat implică domenii pentru fiecare din atributele
modelului.
Un model de date folosit pentru a ghida proiectarea bazei de date
fizice trebuie condus până la acest nivel. Domeniile:
1. determină operaţiile permise asupra unui atribut
2. determină care atribute pot fi comparate sau folosite în combinaţii
3. determină mulţimea permisă de valori pentru un atribut
4. pot fi folosite pentru a determina mărimile şi formatele pentru câmpurile
din baza de date fizică corespunzătoare.
52
4.8. Chei candidate
Instanţele unei entităţi se disting între ele prin valorile cheilor lor candidate.
O cheie candidată este pur şi simplu o mulţime de atribute ale căror valori
identifică unic instanţele unei entităţi. Pot exista mai multe chei candidate
pentru o entitate. De exemplu, cheile candidate pentru entitatea ANGAJAT
pot fi atributul MARCA_ANGAJAT sau colectiv NUME_ANGAJAT,
DATA_NASTERII, LOCUL_NASTERII. Oricare din aceste chei candidate
identifică unic instanţele entităţii ANGAJAT. Două instanţe diferite ale unei
entităţi nu pot avea aceaşi valoare a cheii candidate, deoarece astfel cheia
candidată nu ar fi un identificator unic.
Termenul cheie se foloseşte ca prescurtare pentru cheie candidată.
Să notăm că o cheie candidată nu trebuie să fie un unic atribut. Se pot folosi
mai multe atribute, ale căror valori formează împreună identificatorul unic. O
cheie candidată construită din mai mult de un atribut se numeşte cheie
compusă. O parte a unei chei candidate nu poate fi, de asemenea, cheie
candidată. Ce este şi ce nu este potrivit pentru o cheie candidată depinde de
domeniul de interes. De exemplu, dacă baza de date include angajaţi dintr-un
holding având în componenţă mai multe intreprinderi, atunci probabil
MARCA_ANGAJAT nu ar fi suficientă pentru o cheie candidată.
MARCA_ANGAJAT şi NUME_COMPANIE împreună ar putea fi cerute
pentru a forma identificatorul unic. Identificarea cheilor candidate depinde,
deci de datele care se modelează.
Angajat /49
NUMAR_BULETIN
MARCA_ANGAJAT(Ak1)
NUME_ANGAJAT(Ak2)
DATA_NAŞTERII(Ak2)
LOCUL_NAŞTERII(Ak2)
GREUTATE
DATA_ANGAJĂRII
FUNCŢIA
NUME_COMPARTIMENT
53
Chei primare şi chei alternate. Una din cheile candidate ale unei
entităţi este selectată ca fiind cheia primară. În exemplul cu entitatea
ANGAJAT, MARCA_ANGAJAT ar putea fi cheia primară. Celelalte chei
candidate sunt chei alternate. În exemplul nostru, DMT, cheile sunt afişate
în acelaşi mod ca şi celelalte atribute în cutia entităţii. Cheia primară apare
deaspura liniei, iar cheile alternate apar sub linie, sufixate de notaţia AK
(Alternate Key).
Specificaţie Proprietate
FILE# SUBDIVIZIE#
LOT#(Ak1)
DRAWING(Ak1) NUME_ORAª#(Ak1)
PART#(Ak1,Ak2)
SPEC#(Ak2)
NUME_SUBDIVIZIE(Ak1)
COD_ZONĂ
54
1. Instantele unei entităţi sunt distinse una de alta prin valorile cheilor lor
candidate.
2. O cheie candidată este o mulţime de unul sau mai multe atribute ale căror
valori împreună identifică în mod unic instanţele unei entităţi.
3. Nici o parte a unei chei candidate nu poate fi ea însăşi o cheie candidată.
4. Dacă două instanţe ale unei entităţi au aceaşi valoare a cheii candidate,
atunci ele sunt aceaşi instanţă.
5. Pentru o entitate pot exista mai multe chei candidate.
6. Una din cheile candidate este selectată ca fiind cheia primară.
7. Celelalte chei sunt cunoscute a fi chei alternate.
8. Fiecare instanţă de entitate trebuie să aibă una şi numai una valoare de
cheie primară.
9. Un atribut cheie primară nu poate avea niciodată valoare nulă.
10. Entităţi multiple pot avea aceaşi cheie primară.
4.9. Relaţii
Relaţiile într-un model de date sunt asociaţii între entităţi şi sunt reprezentate
în mod uzual prin linii între cutiile cu entităţi (fig.4.7.a). Alte tehnici de
modelare date folosesc un simbol special, ca un diamant, pentru a reprezenta
relaţiile (fig.4.7.b).
Departament
DEPARTAMENT
angajează Angajează
Angajat
ANGAJAT
55
Există două tipuri de relaţii, conectare şi categorie. O relaţie de
conectare asociază entităţi diferite, de exemplu, DEPARTAMENT şi
ANGAJAT. O relaţie de categorie asociază entităţi similare, de exemplu,
STUDENT, STUDENT_COLEGIU şi STUDENT_4ANI. Categoriile pot fi
gândite ca relaţii “este de tipul”. De exemplu:
studentul la învăţământ de lungă durată este un tip de student
studentul la colegiu este de asemenea un tip de student
un student poate fi înscris la colegiu sau la învăţământ de lungă durată.
Conectările, pe de altă parte, nu reprezintă relaţii de subtipuri. Interpretarea
lor ar fi:
departamentul angajează angajaţi
angajatul lucrează la un departament
studentul este înscris la un curs
cursul este frecventat de student.
O relaţie de conectare:
are un nume de verb
are o cardinalitate, care arată câte instanţe ale uneia din entităţi sunt
legate de câte instanţe ale celeilalte entităţi.
În plus, o relaţie de conectare între entităţile A şi B:
poate avea o dependenţă de existenţă, ceea ce înseamnă că entitatea B
nu poate exista dacă nu există entitatea A.
poate avea o dependenţă de identificator, ceea ce înseamnă că cheia
primară a entităţii B include cheia primară a entităţii A. Dependenţa de
identificator implică dependenţa de existenţă.
O relaţie de conectare cu dependenţă de existenţă trebuie să adere la regula
integrităţii referenţiale:
Instanţele entităţii B nu pot exista fără ca o instanţă a entităţii A să
existe de asemenea şi valorile atributelor particulare ale entităţii B
trebuie să se potrivească cu cheia primară din entitatea A.
În DMT, o relaţie de conectare este desenată prin “linie cu punct
mare”. Figura 4.7.a a prezentat o relaţie de conectare. Linia terminată cu un
punct mare la un capăt se citeşte: “O instanţă a entităţii DEPARTAMENT
este conectată prin relaţia ANGAJEAZA la mai multe instanţe ale entităţii
ANGAJAT”. Mai uzual, se citeşte: “Fiecare departament angajează mai mulţi
angajaţi”. Să notăm că interpretarea corectă a relaţiei este aceea că fiecare
angajat este conectat de un singur departament.
Figura.4.8. are o linie de conectare cu câte un punct mare la ambele
capete. Această relaţie poate fi citită ca “mai multe instanţe ale entităţii
DEPARTAMENT sunt conectate prin relaţia ANGAJEAZA la mai multe
instanţe ale entităţii ANGAJAT”. Dar, în mod uzual se va citi: “Fiecare
56
departament angajează mai mulţi angajaţi şi fiecare angajat poate fi angajat la
mai multe departamente” sau “Există o relaţie mai mulţi la mai mulţi între
departamente şi angajaţi”. Toate acestea sunt interpretări ale diagramei.
Există o diferenţă majoră între relaţiile de conectare unul-la-mai-
mulţi (fig.4.7.a) şi relaţiile de conectare mai-mulţi-la-mai-mulţi (fig.4.8.): ele
nu au aceaşi semnificaţie. Cea care reprezintă corect între departamente şi
angajaţi este determinată de către regulile de afaceri din lumea reală care se
modelează.
Cardinalitate. O tehnică de modelare de date care foloseşte linii
pentru a reprezenta relaţii într-o diagramă de model utilizează, în mod tipic,
un simbol le sfârşitul liniei pentru a reprezenta cardinalitatea relaţiei.
Cardinalitatea oricărei conectări date între entităţile A şi B este una din
următoarele:
o instanţă a lui A este conectată la mai multe instanţe ale lui B.
o instanţă a lui A este conectată la cel puţin o instanţă a lui B.
o instanţă a lui A este conectată exact la n instanţe ale lui B.
o instanţă a lui A este conectată la între n şi m instanţe ale lui B.
57
prezintă faptul că un student la DSA trebuie să aibă la dosar cel puţin o
scrisoare de recomandare. Punctul mare este acompaniat de p, indicând
pozitiv. În anumite relaţii de conectare, o instanţă a uneia din entităţi este
conectată la un anumit număr de instanţe ale celeilalte entităţi. În acest caz în
DMT punctul mare se adnotează cu numărul respectiv. De exemplu, în figura
4.10. linia de conectare este terminată cu un punct mare adnotat cu numărul
12, şi poate fi citită “o instanţă a entităţii DEPARTAMENT se conectează
prin relaţia ARE la 12 instanţe ale entităţii BUGET_LUNAR”. Mai uzual, ea
se poate citi “Fiecare departament are 12 bugete lunare”. Să notăm, din nou,
că fiecare buget lunar este pentru un singur departament. În anumite relaţii de
conectare, o instanţă a uneia din entităţi poate fi conectată la un domeniu de
număr de instanţe al altei entităţi şi în DMT se adnotează punctul mare cu
acel domeniu de numere.
Departament Luna
are are
12 28-31
Buget lunar Zi
58
maximum 7 cursuri”. A doua poate fi citită “Fiecare profesor ţine cel puţin
două cursuri şi fiecare curs este ţinut de câte un singur profesor”.
Manager Secretara
are
Z
<=7
inrolează Predă
<=45 >=2
Grupa
Student
59
Cardinalitatea unei relaţii este o aserţiune asupra instanţelor entităţii.
Această aserţiune poate fi aplicată atunci când baza de date este actualizată,
pentru a determina dacă actualizările violează sau nu regulile stabilite de
semantica datelor. De exemplu, să considerăm aserţiunile făcute de
cardinalitatea relaţiilor din fig.4.13. Şi 4.9. O actualizare care încearcă să
adauge al 46-lea student la un curs va fi respinsă, la fel ca una care încearcă
să adauge un al 8-lea curs la un student sau o actualizare care încearcă să
şteargă singura scrisoare de recomandare de la dosarul unui student.
Grupa Student
se înrolează în
are
<=7
<=45
Înrolare
60
Un alt exemplu de rezolvare a relaţiei mai-mulţi-la-mai-mulţi este
prezentat în fig.4.15. Aici conectarea mai-mulţi-la-mai-mulţi între entităţile
CONSILIER şi CURS este spartă în două relaţii unul-la-mai-mulţi care
partajează o aceaşi entitate ASISTENT. O instanţă a acestei entităţi de bază
reprezintă un sfat al consilierului unei clase particulare cu un asistent.
Entitatea de la un capăt al relaţiei unul-la-mai-mulţi (“unul”) se
numeşte uzual entitatea tată a relaţiei iar entitatea de la capătul “mai mulţi”
se numeşte entitate copil (sau fiu).
CONSILIER CURS
CONSILIER
Z are
supervizează
conduce
CURS ASISTENT
a) b)
61
străină. În fig.4.9. atributul cheie primară al lui STUDENT_DSA MATRIC#,
migrează în entitatea SCRISOARE_DE_RECOMANDARE, devenind acolo
un atribut de cheie străină. Cheile nu pot, totuşi, să migreze prin relaţia mai-
mulţi-la-mai-mulţi din fig.4.13.a.
Unul din testele de validitate ale atributului de cheie străină este:
O instanţă de entitate poate avea numai o singură valoare pentru
fiecare din atributele sale de cheie străină.
Aceasta indică direcţia în care migrează cheia într-o relaţie. De exemplu,
dacă cheia primară a lui CURS - CURS#, SECTIE# - trebuie să migreze în
PROFESOR, acolo devenind un atribut cheie străină, acest test nu va fi
satisfăcut. Fiecare profesor predă cel puţin două secţiuni de curs şi deci
fiecare instanţă a entităţii PROFESOR trebuie să aibă cel puţin două valori
pentru CURS#, SECTIE#.
Regula este:
Cheia primară migrează întotdeauna de la entitatea din “partea cu o
instanţă” la entitatea din “partea cu mai multe instanţe” ale unei
relaţii, devenind acolo o cheie străină.
Oraº Oraº
Cod_oraº
62
Nume de roluri. Când există mai mult de o relaţie între o pereche
de entităţi, atributelelor cheie străină li se asignează nume de roluri. Acestea
permit distincţia între diferitele apariţii ale unui nume de atribut cheie străină
într-o entitate. Deoarece entităţile migrează în diferite relaţii, ele au
semnificaţii diferite. De exemplu, fig.4.16.a modelează două relaţii găsite
într-o planificare de zboruri. Fiecare oraş poate să fie oraş de plecare pentru
mai multe segmente de zbor şi oraş de sosire pentru alte segmente de zbor.
Fiecare segment de zbor are exact un oraş de plecare şi un oraş de sosire.
Modelul prezintă două entităţi, ORAS şi SEGMENT_ZBOR de două ori.
Cheia primară a lui ORAS migrează în SEGMENT_ZBOR de două ori, o
dată prin relaţia ESTE_PUNCT_DE_PLECARE_PENTRU şi o dată prin
relaţia ESTE_PUNCT_DE_SOSIRE_PENTRU.
Pentru a distinge între cele două apariţii ale atributului cheie străină
COD_ORAS în entitatea SEGMENT_ZBOR, unei apariţii îi este dat numele
de rol COD_ORAS_PLECARE iar celeilalte îi este dat numele de rol
COD_ORAS_SOSIRE. Fără nume de roluri, COD_ORAS ar fi apărut de
două ori în SEGMENT_ZBOR. O ocurenţă ar fi fost eliminată de regula
“acelaşi nume, aceeaşi semnificaţie” şi una din relaţii ar fi fost pierdută în
proces. Fig.4.16.b prezintă mai complet numele de roluri asumate de către
atributul COD_ORAS în entitatea SEGMENT_ZBOR. DMT foloseşte
convenţia de “punctare” a numelui de rol, de exemplu
COD_ORAS_PLECARE.COD_ORAS pentru a arăta, de asemenea, numele
său sursă.
Dependenţa de existenţă. O relaţie de conectare poate avea
dependenţă de existenţă. Dacă există o dependenţă de existenţă între două
entităţi A şi B, atunci regula este:
Fiecare instanţă a entităţii B trebuie să aibă o instanţă
corespunzătoare a entităţii A.
Entitatea B se spune a fi dependentă în existenţă de entitatea A. Să notăm că
entitatea A trebuie să fie tatăl entităţii B în relaţia de conectare şi că o
dependenţă de existenţă apare când cheia străină pentru relaţie nu poate fi
nulă.
Dacă există o dependenţă de existenţă în fig.4.13.b asociată cu
relaţia “predă” atunci o instanţă de entitate GRUPA nu poate exista fără a fi
asociată cu o instanţă de entitate PROFESOR. Fiecare instanţă de entitate
GRUPA trebuie să aibă un non-nul FACULTATE# pentru profesorul său.
Dacă există o dependenţă de existenţă în fig.4.9. asociată cu relaţia
“are la dosar”, atunci o instanţă de entitate
SCRISOARE_DE_RECOMANDARE nu poate exista fără a fi asociată cu o
instanţă de entitate STUDENT_DSA. Fiecare instanţă de
63
SCRISOARE_DE_RECOMANDARE trebuie să aibă un non-nul MATRIC#
pentru studentul asociat cu ea.
Relaţiile de conectare mai-mulţi-la-mai-mulţi nu evidenţiază
dependenţe de exiatenţă. De exemplu, nu există nici o dependenţă de
existenţă asociată cu relaţia “inscrie” din fig.4.14. a. O grupă va exista chair
fără studenţi înscrişi în ea (cel puţin până când este ştearsă) şi un student va
exista chiar dacă nu este înscris în nici o grupă.
Să notăm, totuşi, că există dependenţă de existenţă în rezoluţia
acestei relaţii mai-mulţi-la-mai-mulţi din fig.4.14. O instanţă INSCRIERE nu
poate exista fără a fi asociată cu o instanţă GRUPA şi cu o instanţă student.
Un alt exemplu de relaţii de conctare fără dependenţă de existenţă
este prezentat în fig.4.15.a. Acest model poate fi citit astfel: “un consilier
poate conduce mai multe cursuri, dar un curs nu poate fi condus de mai mult
de un consilier”. Astfel, un curs există dacă este condus sau nu de un
consilier iar un consilier va continua să existe dacă conduce sau nu un curs.
Această relaţie poae fi rezolvată în două relaţii care au dependenţă de
existenţă, aşa cum se vede în fig.4.15.b. Aici entitatea ASISTENT este
dependentă de existenţa atât a entităţii CONSILIER cât şi de cea a entităţii
CURS. O persoană nu poate fi asistent dacă nu i se asignează un curs de către
consilier. Să notăm că procesul de rezoluţie folosit aici este acelaşi cu cel
folosit în obţinerea fig.4.14 din fig.4.13.a.
Relaţiile mai-mulţi-la-mai-mulţi şi relaţiile de conectare zero-sau-
unul-la-mai-mulţi sunt numite uneori relaţii nespecifice, deoarece ele
maschează dependenţele de existenţă.
Aceste relaţii sunt specificate prin rezoluţia unei relaţii nespecifice
în două relaţii specifice, transformând o conectare mai-mulţi-la-mai-mulţi în
două conectări unul-la-mai-mulţi. O conectare zero-sau-unu-la-mai-mulţi
devine o relaţie unu-la-mai-mulţi şi o relaţie unu-la-zero-sau-unu.
Notăm cu E1 entitatea tată a unei relaţii şi cu E2 entitata fiu. Cheia
primară a lui E1 este mulţimea de atribute A, care este deasemenea o cheie
străină în E2. Dacă atributele A din E2 nu pot fi nule, atunci E2 este
dependentă de existenţa lui E1. Dacă există o instanţă a lui E2, ea trebuie să
fie asociată cu o instanţă a lui E1. Pe de altă parte, dacă unul sau mai multe
atribute ale lui A în E2 pot fi nule, atunci E2 nu este dependent de existenţa
lui E1. O instanţă a lui E2 poate exista fără ca ea să fie asociată cu o instanţă
a lui E1.
Dependenţa de identificator. O relaţie de conectare poate avea
dependentă de identificator. Dacă există o relaţie între entităţile A şi B, atunci
entitatea B se zice dependentă de identificator de entitatea A, dacă şi numai
dacă: cheia primară a lui A, apărând ca un atribut de cheie străină în B, este
complet conţinută în cheia primară a lui B.
Cheia migratoare a entităţii A este astfel o parte esenţială a identificatorului
entităţii B. În DMT, distincţia între relaţiile care au dependenţă de
identificator şi cele care nu au, este făcută prin linie continuă şi linie punctată.
64
De exemplu, modelul din fig.4.14. cu atributele de chei este prezentat
fig.4.17. Ambele relaţii sunt relaţii de identificare iar cheile primare apar
ambele în cheia primară a relaţiei fiu.
GRUPA STUDENT
SECŢIE# MATRIC#
CURS#
INROLARE
SECŢIE#
CURS#
MATRIC#
65
De exemplu, dacă ANGAJAT este dependent de existenţă de
DEPARTAMENT în fig.4.7., integritatea referenţială spune că:
pentru orice instanţă a entităţii ANGAJAT, valoarea atributului de
cheie străină DEPARTAMENT# trebuie să se potrivească cu
valoarea de cheie primară DEPARTAMENT# din instanţa de
entitatea DEPARTAMENT asociată.
Similar, pentru relaţiile din fig.4.15.b. dacă ASISTENT este dependentă de
existenţa lui CONSILIER şi CURS, atunci integritatea referenţială spune că
pentru fiecare instanţă a entităţii ASISTENT, valoarea atributului de
cheie străină CONSILIER_ID trebuie să se potrivească cu valoarea
din cheia primară din instanţa de entitate CONSILIER asociată, şi
pentru fiecare instanţă a entităţii ASISTENT, valoarea atributului
CURS# trebuie să se potrivească cu valoarea din cheia primară din
instanţa de entitate CURS asociată
Po Part
Po# Part#
conţine apare în
Po_Line
Po#(Fk)
Line#
Part#(Fk)
Qty
66
Integritatea referenţială este o aserţiune despre instanţele entităţilor.
Această aserţiune poate fi aplicată atunci când baza de date este actualizată,
pentru a determina dacă actualizarea violează regulile semantice stabilite.
De exemplu, o actualizare a bazei de date modelată în fig.4.7. poate
fi rejectată dacă ea încearcă să adauge o instanţă ANGAJAT cu un
DEPARTAMENT# care încă nu există ca şi o cheie primară a unei instanţe
din DEPARTAMENT. Orice actualizare care leagă o instanţă de ANGAJAT
cu o instanţă de DEPARTAMENT, fără o potrivire de DEPARTAMENT# va
fi de asemenea rejectată. O actualizare va fi rejectată dacă ea încearcă să
şteargă o instanţă de DEPARTAMENT pentru care continuă să existe
instanţe de ANGAJAT. Instanţele de ANGAJAT nu pot să existe fără a fi
asociate cu instanţe de DEPARTAMENT. Să notăm că modificarea valorii
DEPARTAMENT# din instanţa ANGAJAT este o modalitate validă de a
asocia instanţă cu o altă instanţă DEPARTAMENT.
Angajat
Tip_compensaţie
67
legarea unei instanţe ASISTENT de o instanţă CURS sau CONSILIER
fără o potrivire în CURS# respectiv CONSILIER_ID.
ştergerea unei instanţe CURS pentru care există o instanţă ASISTENT.
ştergerea unei instanţe CONSILIER pentru care există instanţe
ASISTENT.
68
Angajat
Angajat
Status
69
birouri cât şi una rezidenţială, şi nici nu poate fi construită atât din cărămizi
cât şi din prefabricate. Dacă aceste reguli nu sunt adevărate, atunci modelul
nu reflectă corect realitatea. Acest model nu reprezintă o cladire care e parţial
de birouri, parţial rezidenţială şi parţial magazine.
Clădire
Tip construcţie
Tip folosire
70
corespunzătoare. DMT reprezintă o clasă totală de categorii desenând o linie
dublă sub cercul de relaţie de categorie.
Persoana Persoana
Status Status(>=0)
b) Relaxarea regulii de
a) Subtipuri mutual exclusivitate mutualã prin
exclusive adăugarea regulii >=0 pentru
atributul discriminator
71
instanţă dată de CLADIRE nu este nici din caramizi, nici din prefabricate.
Tipul de construcţie poate fi de asemenea necunoscut sau nedisponibil.
Student
Status
72
toate relaţiile de categorie a avea dependenţă de identificator atunci va fi
posibil să modelăm numai ierarhii de categorii şi nu reţele de categorii. Toate
exemplele prezentate au fost în fapt ierarhii.
Investiţie
Data
Sursa
Tip. investiţie
Prop_comercială Prop_rezidenţială
Locaţia(Fk) Locaţia(Fk)
73
de structuri de fişiere fizice, considerând structuri logice. Astăzi, el nu este
considerat în totalitate a fi o tehnică semantică de modelare a datelor
deoarece este puternic legat de capacităţile unui DBMS particular şi are
posibilităţi limitate de expresii semantice.
El lucrează cu tipuri de înrgistrări. item-uri de date şi tipuri de
mulţimi care sunt în mare analoage cu entităţi, atribute şi relaţii. Până la
sfârşitul anilor 70 exista un amestec puternic de parametri de bază de date
logică şi fizică într-un singur model reţea. Îl vom studia în detaliu în
capitolele 7 şi 12.
Modelul relaţional. Modelul relaţional a fost introdus de către E.F.
Codd de la IBM la începutul anilor 70 şi el oferă o abordare simplă şi totuşi
riguroasă matematic a modelării datelor. El lucrează cu datele în termeni de
tabele iar relaţiile în tabele se formează prin partajarea atributelor, uzual prin
atribute de cheie străină. Modelul relaţional a reţinut atenţia multor
cercetători în baze de date şi este încă în vogă prntre DBMS-uri comerciale.
Dar, în ciuda largii sale folosiri, astăzi modelul relaţional nu mai este în
general considerat o tehnică logică de modelare date, în primul rând datorită
posibilităţilor sale reduse de exprimare semantică. Îl vom studia în detaliu în
capitolele 5, 6 şi 11.
Modelul Entitate-Mulţime. Una din tehnicile de început în
modelarea logică a datelor a fost modelul entitate-mulţime introdus în 1973
de către cercetăţorii de la IBM. Acest model recunoaşte entităţile ca şi
colecţii de perechi nume-entitate = valoare-entitate. Ne există conceptul de
atribut, orice (de ex: nume, vârstă, departament) este o entitate. Relaţiile sunt
binare, adică orice relaţie poate asocia numai două entităţi. O dezvoltare a
acestei tehnici este produsul Information Analysis (IA) al lui Control Data
Corporation.
Modelul Entitate-Relaţie. A fost introdus în 1975 de către Peter
Chen ca o alternativă la modelele relaţional, reţea şi entitate-mulţime. El
desenează entităţi, atribute şi relaţii. Relaţiile sunt n-are, adică orice relaţie
dată poate asocia una, două sau mai multe entităţi iar un model poate
prezenta dependenţa de existenţă între entităţi.
Modelul abstractizării al lui Smith. Prima constribuţie a acestui
model publicat în 1977 este distincţia între relaţiile de agregare şi
generalizare, pe care noi le denumim relaţii de conectare şi de categorie.
Modelul introduce convenţia ca entităţile să aibă un nume de substantiv şi
include o notaţie grafică pentru reţelele agregare şi generalizare.
Modelul de date semantice. Modelul de date semantice publicat în
1978 introduce un alt nivel de explcitare în reprezentarea constructelor de
modelare date loghice, recunoscând trei tipuri de entităţi (numite clase):
obiecte concrete (fizice), abstractizări (generalizări) şi agregate (colecţii
omogene). Acest model introduce, de asemenea conceptul de evenimente,
care sunt acţiuni la care participă obiectele şi identifică trei tipuri de atribute.
74
IDEF1. IDEF1 (ICAM - Integrated Computer-Aided Manufacturing
- Definition Language -1) a fost dezvoltat la sfârşitul anilor 70 sub auspiciile
U.S.Air Force. El este un hibrid practic între modelul entitate-relaţie şi
modelul relaţional şi are metode companion pentru modelarea activităţilor
IDEF0 şi a dinamicii sistemelor IDEF2. O generaţie ulterioară a lui IDEF1
este IDEF1-Extended (IDEFIX) şi este derivată din DMT, care îşi are
rădăcinile în IDEF1.
Modelul de date funcţionale. Modelul de date funcţionale şi
limbajul său de modelare DAPLEX, publicate în 1981 oferă un cadru riguros
pentru a modela date ca entităţi. El exprimă relaţiile între entităţi ca funcţii
care pot fi imbricate, de exemplu Rang (Instructor (Curs)). Ca şi modelul
entitate-mulţime, aici nu există conceptul de atribut, mai mult, proprietăţile
unei entităţi rezultă aplicând funcţii entităţii. DAPLEX poate fi folosit pentru
a descrie modele de date, pentru a defini restricţii într-un model de date şi
pentru a pune întrebări modelelor de date.
Proiectantul de date (Data Designer). Este un produs comercial
sub licenţă Knowledgeware, Inc., fostul Database Design, Inc. (DDI). Este un
instrument de proiectare automată şi combină modelele de date cu vederi
utilizator. El se bazează pe tehnica diagramelor cu bule dezvoltată de James
Martin (bubble - charting), în care ovalele reprezintă entităţi, iar arcele
reprezintă relaţii. Proiectantul de date generează modele de date normalizate
(vezi cap.6) bazate pe dependenţe de intrare între atribute.
Gestionarul de proiectare (Design Manager). Este un produs
comercial sub licenţă MPS, Ltd. care lucrează în conjuncţie cu dicţionarul de
date MPS, Data Manager, pentru memorarea şi analiza modelelor de date.
Oferă suport automat pentru descrierea modelelor de date şi pentru
transformarea lor în proiectări de baze de date.
75
folosită, de asemenea, pentru a dezvolta proiecte modele de date şi pentru a
integra aceste modele într-o schemă conceptuală în dezvoltare, care este un
scop special al modelului de date logice. Rezultatele modelării datelor pot fi
apoi transformate în proiectări de baze de date fizice.
Memento
Bibliografie
76