ALTE DOCUMENTE
|
|
Modele de descriere a datelor – baza de date
Generalitati
Numim model de date o colectie integrata de concepte pentru descrierea datelor, de relatii intre date si de restrictii asupra datelor, toate intr-o organizare unitara.
Un model de date este o abstractie, o reprezentare a 'lumii reale' cu evidentierea caracteristicilor esentiale care descriu atat 'obiectele' cat si relatiile dintre acestea. Un model de date are in principal rolul de a furniza conceptele de baza si notatiile care sa permita proiectantilor si utilizatorilor bazei de date sa comunice in mod neambiguu si acurat legat de modul de organizare a datelor.
Un model de date cuprinde trei parti:
o parte referitoare la structura, care consta intr-un set de reguli ce impun modul de alcatuire a bazei de date;
o parte referitoare la manipularea datelor, care defineste tipul de operatii care sunt permise asupra datelor. Sunt incluse aici operatiile care sunt utilizate pentru a actualiza sau a regasi datele in baza de date precum si operatiile pentru schimbarea structurii bazei de date;
o parte referitoare la integritatea datelor, parte care cuprinde reguli de integritate care asigura acuratetea datelor.
Modele de date se pot realiza pentru fiecare nivel de abstractizare. Astfel putem vorbi de:
model extern de date (care reprezinta asa-numitul univers al discursului, adica punctul de vedere al utilizatorului);
model de date conceptual (care reprezinta structura logica a bazei de date, independenta de sitemul de gestiune ales);
model de date intern (care reprezinta schema conceptuala intr-un mod in care poate fi perceputa de SGBD).
Dintre diversele modele propuse in literatura de specialitate mentionam aici: modelele de date bazate pe obiecte, modelele de date bazate pe inregistrare, ambele modele fiind utilizate pentru descrierea organizarii datelor la nivel extern si conceptual. Trebuie sa mentionam si modelele fizice de date, care descriu datele la nivel intern.
Modele de date bazate pe obiecte
Aceste modele utilizeaza concepte specifice modelului E-R prezentat in Sectiunea 2.2. si anume: entitati, atribute, relatii. Cele mai cunoscute modele de date sunt: modelul entitate-relatie, modelul semantic, modelul functional, modelul orientat obiect.
Modele de date bazate pe inregistrare
Intr-un astfel de model baza de date consta dintr-un numar de inregistrari de format fix de tipuri eventual diferite. Fiecare tip de inregistrare defineste un numar fix de campuri, fiecare fiind in general de lungime fixa. Exista trei tipuri importante de modele de date bazate pe inregistrare: modelul de date relational, modelul de date retea si modelul ierarhic de date.
Modelele ierarhic si retea au fost dezvoltate mai intai, modelul relational aparand cu o intarziere de un deceniu.
Modele fizice de date
Aceste modele descriu efectiv modul in care datele sunt memorate in calculator, la nivel fizic. Informatia furnizata de aceste modele este cea referitoare la inregistarile fizice, la cai de acces, la organizarea inregistrarilor, etc.
Se considera ca schema conceptuala sta la baza structurarii unei baze de date. O schema conceptuala completa si bine gandita permite o reprezentare interna eficienta si permite realizarea de view-uri utilizator fara dificultate.
Modelarea conceptuala sau proiectarea conceptuala a bazei de date este procesul de construire a unui model care sa reprezinte modul in care este utilizata informatia de catre beneficiar, reprezentare care este independenta de detaliile de implemetare cum ar fi programele de aplicatie, limbajele de programare, SGBD-ul utilizat sau orice alte consideratii fizice. Un astfel de model se numeste model de date conceptual sau model logic. Unii autori fac diferenta intre ce 535f59f le doua denumiri in sensul ca se considera ca modelul de date conceptual este intr-adevar independent de orice detalii fizice, pe cand modelul logic presupune cunoasterea modelului de date ce sta la baza SGBD-ului ce urmeaza a fi utilizat. In Capitolul 6 se va expune metodologia obtinerii unui model logic bazat pe modelul de date relational.
2.2. Modelare E-R (Entity-Relationship)
Modelul E-R (Entity-Relationship) este un model conceptual de nivel înalt, dezvoltat de Chen în 1976. Primele idei legate de utilizarea modelului E-R la proiectarea unei baze de date au fost expuse de Chen (1977) si au fost continuate de Sakai (1980). Conceptele de specializare si generalizare au fost introduse de Smith si Smith (1977) si au fost utilizate ulterior de Lenzerini si Santucci (1983) la definirea restrictiilor de cardinalitate. Modelul E-R constituie un mod de reprezentare a bazelor de date relationale si de aceea este un instrument util in proiectarea acestora. În acest capitol, vom descrie conceptele primare care stau la baza modelului E-R, dupa care vom identifica problemele care pot aparea prin utilizarea unui astfel de model. Vom discuta de asemenea problemele generate prin utilizarea modelul E-R la reprezentarea unor aplicatii. Având în vedere limitele modelului E-R, vom discuta un model mai complex, modelul EE-R si conceptul principal asociat acestuia, conceptul de specializare/generalizare.
2.2.1. Concepte de baza
Conceptele primare ale modelului E-R includ : tip de entitate (multime-entitate), tip de relatie (multime-relatie), atribute.
Numim entitate un obiect sau un concept ce se poate identifica in mod unic.
Notiunea de entitate este un concept de baza in cadrul modelului E-R. Ea reprezinta 'obiecte' concrete (cu existenta fizica) sau abstracte (cu existenta conceptuala).
Exemplu: Popescu Ion, posesor al buletinului de identitate seria ABC, numarul: 444555 este o entitate deoarece identifica in mod unic o persoana in acest univers. O entitate care reprezinta un obiect ceva mai abstract poate fi, de exemplu, un cont la banca identificabil in mod unic prin numarul sau si numele bancii.
Numim tip de entitate sau multime-entitate un set de entitati de acelasi tip.
Exemplu: Multimea tuturor persoanelor care sunt studenti ai Facultatii de Stiinte pot defini multimea-entitate sau tipul de entitate student.
Tipul de entitate reprezinta o multime de 'obiecte' ce apartin lumii reale si care sunt descrise de aceleasi proprietati.
Orice obiect care apartine unui tip de entitate si care este identificabil in mod unic este numit simplu entitate. (se mai intalnesc denumirile: aparitia unei entitati sau instanta unei entitati). Un tip de entitate contine mai multe entitati. O baza de date este o colectie de tipuri de entitate din care fiecare contine un numar neprecizat de entitati de acelasi tip.
Tipurile de entitate nu sunt neaparat disjuncte. Aceasta inseamna ca pot exista entitati care sa apartina mai multor tipuri de entitate.
Exemplu: Se pot defini urmatoarele tipuri de entitate: profesor, corespunzator tuturor cadrelor didactice ale Facultatii de Stiinte si student, corespunzator tuturor studentilor aceleiasi facultati. Se observa usor ca pot exista studenti care sunt in acelasi timp si cadre didactice (studenti la master care sunt preparatori sau asistenti).
Un tip de entitate se identifica printr-un nume si o lista de proprietati. O baza de date contine în general mai multe tipuri de entitati. Fiecare tip de entitate are propriul set de proprietati.
Numim atribute proprietatile atasate unui tip de entitate.
Exemplu: entitatea student poate fi descrisa de atributele: nume_student, prenume_student, data_nasterii, sex, adresa, telefon, numar_matricol, grupa.
Prin domeniul atributului intelegem multimea valorilor care pot fi atribuite unui atribut simplu.
Atributele unei entitati contin valorile care descriu fiecare entitate si cu ajutorul carora fiecare entitate se poate identifica in mod unic. Aceste valori reprezinta cea mai mare parte a datelor memorate intr-o baza de date.
Domeniul unui atribut nu se poate defini intotdeauna foarte exact. De exemplu, atributul nume_student trebuie sa fie un sir de caractere dar poate lua ca valori doar un nume de familie existent. Unele domenii se pot descompune în mai multe subdomenii. De exemplu data_nasterii se poate descompune in subdomeniile: an, luna, zi.
In general putem considera ca fiecare entitate este reprezentabila cu ajutorul unei multimi de perechi de forma (nume_atribut, valoare_atribut), cate o pereche pentru fiecare atribut atasat tipului de entitate corespunzator.
Exemplu: o entitate a tipului de entitate student poate fi reprezentata de multimea:
Atributele se pot clasifica în simple sau compuse; cu o singura valoare sau cu mai multe valori; respectiv derivate.
Numim atribut simplu orice atribut care are doar o singura componenta si o existenta independenta.
Aceste atribute nu se pot diviza în mai multe atribute distincte. Ele se mai numesc si atribute atomice.
Exemplu: atributul sex corespunzator tipului de entitate student.
Numim atribut compus orice atribut care are mai multe componente, fiecare cu o existenta independenta.
Aceste atribute se pot diviza în general in mai multe atribute simple.
Exemplu: atributul adresa se poate descompune în atributele: strada, numar, oras, cod_postal si judet. Decizia ca un atribut compus sa se descompuna în mai multe atribute simple este dependenta de modul în care se va utiliza acel atribut: pe componente, sau ca un întreg.
Numim atribut cu o singura valoare orice atribut care poate lua cate o singura valoare pentru fiecare entitate.
Majoritatea atributelor sunt atribute cu o singura valoare.
Numim atribut cu mai multe valori orice atribut care poate lua mai multe valori pentru fiecare entitate.
Pentru atributele cu mai multe valori trebuie precizate numarul minim si numarul maxim de valori pe care le poate lua atributul respectiv.
Exemplu: atributul telefon poate fi un atribut cu mai multe valori. In acest caz se poate limita de exemplu numarul numerelor de telefon la care poate fi gasit studentul la minim 0 si la maxim 3. Deci se pot stabili numarul minim si numarul maxim de valori pe care le poate lua atributul.
Numim atribut derivat orice atribut a carui valoare se poate calcula din unul sau mai multe alte atribute. Aceste atribute nu trebuie neaparat sa descrie entitatea careia ii corespunde atributul derivat.
Exemple: valoarea pentru atributul vârsta este derivata din valoarea atributului data_nasterii si din data curenta. Valoarea atributului numarul_total_de_entitati se poate calcula numarând entitatile înregistrate.
Reprezentare grafica - diagrame E-R
Intreaga structura logica a unei baze de date poate fi reprezentata grafic cu ajutorul diagramelor E-R. O astfel de diagrama contine elemente grafice cum ar fi:
dreptunghiuri, care reprezinta tipuri de entitate;
elipse, care reprezinta atribute;
linii, care au rolul de a evidentia legaturile intre elementele diagramei.
Dreptunghiurile si elipsele sunt etichetate cu numele 'obiectului' reprezentat. Acestea nu sunt singurele elemente grafice utilizate intr-o diagrama E-R. Pe masura ce vom defini noi concepte vom reveni cu precizari legate de modul de a le reprezenta.
Un atribut se reprezinta printr-o elipsa, legata de entitatea careia îi este asociat cu o linie si etichetata cu numele atributului. Elipsa este trasata cu linie punctata, daca atributul este un atribut derivat si respectiv cu linie dubla, daca atributul poate lua mai multe valori.
Daca un atribut este compus, atunci componentele atributului se reprezinta prin elipse legate cu cate o linie de atributul compus.
Figura 2.1. Reprezentarea cu diagrama E-R a entitatii locatari
În exemplul din Figura 2.1. entitatea locatari are urmatoarele atribute: numar_matricol, nume si adresa. Dintre aceste atribute, atributul adresa este atribut compus, care se descompune în numar_bloc, scara, etaj si apartament. Explicatia sublinierii atributului numar_matricol se va da in sectiunea care se ocupa de chei, tot in acest capitol.
Numim tip de relatie orice asociere între tipuri de entitati.
Numim relatie orice asociere între entitati, când asocierea include cate o entitate pentru toate tipurile de entitate participante.
Fie E1, E2, ..., En tipuri de entitate. Formal, un tip de relatie este o submultime a urmatoarei multimi:
ceea ce inseamna ca ( e1, e2, ..., en) reprezinta formal o relatie.
Exemplu: Intr-o aplicatie care ar servi unor evidente in cadrul asociatiilor de locatari putem considera tipul de entitate locatari descris de atributele: nume, adresa si numar_matricol si tipul de entitate scari descris de atributele numar_de_bloc si scara. Intre tipul de entitate scari si tipul de entitate locatari se poate stabili un tip de relatie numit este_locuita_de. Acest tip de relatie va contine relatii de tipul ('Scara A', 'Popescu Ion') care va fi interpretata: "Scara A este locuita de Popescu Ion".
Numim gradul relatiei numarul entitatilor participante în relatie. Asadar relatia reprezentata mai sus are gradul n. Entitatiile implicate intr-o relatie se numesc participanti. Daca intr-o relatie sunt doi participanti, atunci relatia se numeste binara.
Tipurile de relatii se reprezinta in diagramele E-R cu ajutorul romburilor care sunt etichetate cu numele tipului de relatie.
Figura 2.2. Reprezentarea cu diagrama E-R a relatiei este_locuita_de
Functia pe care o joaca o entitate intr-o relatie se numeste rolul entitatii. In general nu este necesar sa se specifice rolul entitatilor intr-o relatie, deoarece acesta este in general implicit.
Numim relatie recursiva orice relatie în care aceleasi entitati participa în roluri diferite. In acest caz este necesar sa se precizeze rolurile entitatilor implicate. În cazul relatiilor recursive, in diagrama E-R corespunzatoare, cele doua arce de la entitate la relatie si înapoi, primesc diferite etichete, care sunt importante în întelegerea corecta a relatiei.
Exemplu: Daca am considera entitatile lucratori si manageri care se refera la personalul aceleiasi intreprinderi, am face constatarea ca sunt descrise de aceleasi atribute deci apartin aceluiasi tip de entitate si anume angajati. Relatia binara lucreaza_pentru, stabilita intre lucratori si manageri este o relatie recursiva. Rolurile jucate de fiecare entitate se pot stabili recurgandu-se la perechi ordonate (muncitor, manager). Astfel relatia ('Popescu Ion', 'Ionescu Gheorghe') se interpreteaza "Popescu Ion lucreaza pentru (este subordonatul lui) Ionescu Gheorghe".
lucrator
manager
Figura 2.3. Reprezentarea cu diagrama E-R a relatiei recursive lucreaza_pentru
Unui tip de relatie i se pot asocia atribute descriptive in acelasi mod in care se pot asocia atribute unui tip de entitate.
Exemplu: Tipului de relatie este_locuita_de, care implica tipurile de entitate scari si locatari, i se poate asocia atributul data care sa retina data la care locatarul L s-a mutat pe scara S. Dupa cum se observa, acest atribut descrie exclusiv tipul de relatie si el nu mai are sens in afara ei.
Restrictii structurale
Este posibil sa se stabileasca diverse restrictii la care continutul unei baze de date trebuie sa se conformeze. Vom trata in continuare restrictiile care se pot impune entitatilor participante intr-o relatie. Aceste restrictii trebuie sa reflecte caracteristicile relatiilor asa cum se percep in 'lumea reala'. Doua tipuri importante de restrictii sunt de mentionat aici: restrictii de cardinalitate si restrictii de participare.
a) Restrictii de cardinalitate Numim cardinalitate (polaritate) numarul relatiilor posibile pentru o entitate participanta. Altfel spus, cardinalitatea exprima numarul entitatilor la care o alta entitate poate fi asociata prin intermediul unei relatii.
Observatie: Am utilizat in definitia de mai sus referiri la entitati si la relatii pentru a fi mai expliciti. Restrictiile structurale se refera insa in mod evident la tipurile de relatie si la tipurile de entitate asociate. Aceasta observatie ramane valabila si in consideratiile ce urmeaza.
Majoritatea tipurilor de relatie au gradul doi. Cardinalitatea in acest caz poate fi de tipurile: unu-la-unu (1:1), unu-la-mai-multe (1:M), sau mai-multe-la-mai-multe (M:N).
Relatiile unu-la-unu:
În relatiile unu-la-unu, o entitate, apartinand unui tip de entitate, este legata de cel mult o entitate din celalalt tip de entitate implicat in relatia respectiva. Implicarea fiecarei entitati intr-o relatie data este numita "participarea entitatii".
In diagrama E-R se eticheteaza arcul dintre relatie si fiecare tip de entitate cu cardinalul relatiei; in cazul relatiilor unu-la-unu fiecare din cele doua arce se eticheteaza cu 1.
Relatiile unu-la-mai-multe:
In relatia de tip unu-la-mai-multe orice entitate, apartinand primului tip de entitate, este legata de 0, 1, sau mai multe entitati apartinand celui de-al doilea tip de entitate participant la relatie. Exemplificam acest tip de relatie prin relatia este_locuita_de dintre tipurile de entitati scari, respectiv locatari. In reprezentarea grafica a acestui tip de relatie, arcul dinspre tipul de entitate scari se eticheteaza cu 1 iar arcul dinspre tipul de entitate locatari se eticheteaza cu M (asa cum s-a si realizat de fapt in Figura 2.2.). Modelul semantic din Figura 2.4. reprezinta relatia unu-la-mai-multe este_locuita_de.
Din exemplul de mai sus se observa usor ca daca relatia directa este de unu-la-mai-multe, atunci relatia inversa este de unu-la-unu.
Relatiile mai-multe-la-mai-multe:
Acest tip de relatie se deosebeste de relatia unu-la-mai-multe prin faptul ca relatia inversa nu este de unu-la-unu, ci de unu-la-mai-multe. Deci, daca si relatia directa si relatia inversa sunt de tipul unu-la-mai-multe, atunci relatia directa este de tipul mai-multe-la-mai-multe si se noteaza cu (N:M).
Figura 2.4. Reprezentarea cu retele semantice a relatiei 1:M este_locuita_de
b) Restrictii de participare
Numim restrictii de participare acele restrictii prin care se determina daca existenta unui tip de entitate depinde de faptul ca este legat sau nu de un alt tip de entitate prin intermediul relatiei in discutie.
Participarea unei entitati poate fi totala sau partiala. Participarea este totala daca existenta entitatii respective necesita existenta unei entitati asociate în relatia data. În caz contrar participarea se numeste partiala. Termenii participare totala si participare partiala pot fi inlocuiti cu participare obligatorie respectiv participare optionala. În diagrama E-R aceste tipuri de relatii se reprezinta prin arc cu linie dubla pentru participarea totala, respectiv cu linie simpla pentru participarea partiala. Pentru participarea partiala, exista un mod de notatie prin care se eticheteaza arcele relatiei cu perechea de numere ce reprezinta minimul, respectiv maximul entitatilor participante la relatie.
Exemplu: Daca se considera filialele unei firme oarecare ca entitati in tipul de entitate filiala si daca se considera tipul de entitate personal (unde entitatile reprezinta personalul firmei respective) se poate defini tipul de relatie are_alocat stabilit intre o filiala concreta si personalul firmei. In acest caz, daca se considera ca fiecare filiala are alocat personal al firmei atunci participarea tipului de entitate filiala in relatia are_alocat este totala. Daca insa admitem ca unii membri ai personalului (de exemplu vanzatorii) nu lucreaza in birourile nici unei filiale, atunci participarea tipului de entitate personal in relatia are_alocat este partiala.
c) Dependentele de existenta
Numim tip slab de entitate un tip de entitate, a carui existenta este dependenta de existenta unui alt tip de entitate.
Numim tip tare de entitate un tip de entitate, a carui existenta nu depinde de existenta nici unui alt tip de entitate.
Entitatile slabe se mai numesc existential dependente sau subordonate iar entitatile tari se mai numesc parinte sau dominante.
In diagrama E-R tipurile de entitate tari se reprezinta cu un dreptunghi trasat cu linie simpla. Pentru tipurile de entitate slabe conturul dreptunghiului este trasat cu linie dubla. De asemenea aceasta notatie se extinde si la relatii. Astfel: o relatie care leaga doua tipuri de entitate tari este reprezentata cu un romb trasat cu linie simpla iar relatia care leaga un tip de entitate tare de un tip de entitate slab este reprezentata cu un romb trasat cu linie dubla.
2.2.3. Chei
Conceptual este evident ca entitatile si relatiile individuale care participa la modelarea unei baze de date sunt distincte intre ele. Diferenta intre entitati sau diferenta intre relatii se exprima cu ajutorul atributelor care le descriu.
Numim supercheie asociata unui tip de entitate, orice submultime a multimii de atribute ce descriu tipul de entitate, submultime care poate duce la identificarea in mod unic a oricarei entitati in cadrul tipului de entitate luat in considerare.
Este evident ca, daca o submultime de atribute formeaza o supercheie, atunci orice multime de atribute care include supercheia este tot o supercheie.
Numim cheie candidat orice supercheie care contine un numar minim de atribute. Pentru o cheie candidat nici o submultime proprie nu mai este supercheie. Putem spune ca o cheie candidat este caracterizata de urmatoarele proprietati:
-unicitatea, deoarece valoarea cheii este unica pentru fiecare entitate in parte;
-ireductibilitatea, deoarece nici o submultime proprie de atribute ale cheii nu are proprietatea de unicitate.
Observatie: Faptul ca valorile unei chei candidat sunt unice pentru fiecare entitate nu poate fi determinat decat cu ajutorul informatiilor semantice referitoare la valorile atributelor ce formeaza cheia. Trebuie sa se cunoasca semnificatiile din lumea reala a atributelor ce formeaza cheia pentru a se stabili daca acestea vor avea valori unice. Doar faptul ca, pentru o multime oarecare de entitati concrete, valorile difera intre ele nu este de ajuns.
Pentru un tip de entitate este posibil sa se poata determina una sau mai multe chei candidat.
Dintre acestea, cheia primara este cheia aleasa ca mijloc principal de identificare a entitatilor in cadrul tipului de entitate respectiv.
Cheia primara este in general cea mai scurta dintre cheile candidat.
In diagrama E-R atributele care intra în componenta cheii primare, se evidentiaza prin sublinierea numelui atributului.
Numim cheie compusa orice cheie candidat care contine cel putin doua atribute.
Probleme se ivesc atunci cand trebuie sa identificam in mod unic entitatile unui tip de entitate slab. Sa observam ca un tip de entitate tare are intotdeauna o cheie primara, deci are intotdeauna cel putin o cheie candidat. Un tip de entitate slab nu are cheie primara.
Numim discriminatorul unui tip de entitate slab, un set de atribute care permite realizarea unei distinctii intre entitatile care depind de o anume entitate tare. Asadar, cheia primara a unui tip de entitate slab este formata din cheia primara a tipului de entitate tare de care este dependenta existential, la care se adauga multimea atributelor care compun discriminatorul tipului de entitate slab.
Si relatiile au chei. Cu ajutorul cheilor se pot identifica in mod unic relatiile individuale.
Cheia primara a tipului de relatie este formata din reuniunea multimilor de atribute care formeaza cheile primare ale tipurilor de entitate participante.
2.3. Modelul Enhanced Entity-Relationship (EE-R)
2.3.1. Problemele modelului E-R
Vom examina mai intai unele probleme ce pot aparea la proiectarea unui model conceptual de date de tipul E-R. Aceste probleme apar in general datorita interpretarii gresite a semnificatiei unor relatii si de aceea sunt cunoscute sub denumirea de capcane de conexiune (connection traps). Pentru a identifica o capcana de conexiune trebuie sa ne asiguram ca semnificatia oricarei relatii este pe deplin inteleasa si in mod clar definita. Mentionam aici doua tipuri importante de capcane de conexiune: de tip labirint (fan trap), respectiv de tip prapastie (chasm trap).
Numim capcana de tip labirint (fan trap) cazul în care modelul reprezinta o relatie între doua tipuri de entitate, dar calea intre unele entitati individualizate este ambigua.
Cu alte cuvinte, pornind de la o entitate, nu se stie (dupa parcurgerea caii relatiei), la ce entitate se ajunge în partea cealalta. Aceasta capcana se poate elimina prin rearanjarea ordinii relatiilor dintre cele doua tipuri de entitati.
Numim capcana de tip prapastie (chasm trap) situatia in care modelul sugereaza existenta relatiei între cele doua tipuri de entitate, dar calea dintre unele entitati individualizate nu exista.
O capcana de tip prapastie ar putea aparea in cazul relatiilor cu participare partiala. Problema se poate rezolva prin introducerea unei relatii directe.
Ramane sa revenim asupra acestor aspecte in sectiunea care trateaza proiectarea unei baze de date.
Modelul E-R, discutat în capitolele de mai sus, este adecvat pentru descrierea multor scheme de baze de date. Din anii '80 incoace s-au dezvoltat foarte mult noi aplicatii ale bazelor de date cum ar fi tools-urile: Computer Aided Design (CAD), Computer Aided Manufacturing (CAM), Computer Aided Software Engineering (CASE) si aplicatii multimedia. Modelul E-R s-a dovedit insuficient pentru aceste noi aplicatii cu cerinte deosebite impuse bazelor de date, cerinte care nu fusesera formulate in cazul aplicatiilor administrative traditionale. aplicatiile cu mult mai complexe au necesitat adaugarea de concepte noi la modelul E-R. S-au propus mai multe modele semantice noi de date, unele din conceptele noi fiind incorporate cu succes chiar in modelul E-R obtinandu-se in acest mod noul model Enhanced Entity-Relationship (EE-R).
Modelul EE-R include toate conceptele modelului E-R, plus alte completari devenite necesare. Aceste concepte nou introduse sunt: specializarea / generalizarea, categorisirea si agregarea. În acest capitol vom descrie conceptul de baza in modelul EE-R: specializarea / generalizarea.
Conceptul de specializare / generalizare este asociat cu modul de reprezentare a tipurilor de entitate utilizand superclase si subclase, si cu modul in care se realizeaza mostenirea atributelor.
2.3.2. Superclase si subclase ale tipurilor de entitate
Vom descrie aceste concepte, având ca exemplu tipul de entitate locatari.
Numim superclasa un tip de entitate ce include subclase distincte care necesita reprezentarea într-un model de date.
Numim subclasa un tip de entitate care are un rol distinct si care este de asemenea membru al unei superclase.
De exemplu superclasa locatari se divizeaza în doua subclase si anume: sef_de_scara si familii. Relatia dintre o superclasa si o subclasa se numeste relatie superclasa / subclasa. Aceasta relatie este de tip unu-la-unu. Relatia locatari / familii de exemplu, este o astfel de relatie.
Fiecare membru al unei subclase este membru si în superclasa, dar are un rol diferit. Exista subclase case se suprapun, adica exista membrii într-o subclasa care apar si în cealalta subclasa. Putem observa ca exemplul de mai sus este exact de acest tip, pentru ca seful de scara poate sa fie si cap de familie.
De ce se foloseste clasificarea în subclase? Raspunsul este simplu daca ne referim la exemplul dat. Daca nu am clasifica entitatiile din tipul de entitate locatari, atunci ar trebui sa memoram informatiile specifice sefului de scara si capului de familie pentru fiecare locatar. Deoarece majoritatea locatarilor nu apartine niciunei categorii, pentru acest grup informatiile de mai sus ar fi informatii vide, dar care însa ar ocupa mult spatiu pe suportul magnetic.
Fiecare subclasa are ca atribute comune, atributele superclasei de care apartine. Deci fiecare membru al unei subclase se caracterizeaza prin atributele superclasei plus alte atribute specifice subclasei. De exemplu subclasa familii se caracterizeaza prin toate atributele superclasei locatari (numar_matricol, numar_bloc, scara, etaj, apartament si nume), pe lânga care mai are si atributele specifice (numar_persoane, numar_persoane_prezente, etc.)
Fiecare subclasa poate sa aiba subclase, creîndu-se un arbore de clase, care se numeste ierarhie de tipuri. Aceasta ierarhie de tipuri include alte denumiri de ierarhii si anume: ierarhia de specializari (de exemplu, tipul de entitate familii este o specializare a tipului de entitate locatari) si ierarhia de generalizari (de exemplu, tipul de entitate locatari este o generalizare a tipului de entitate familii).
2.3.3. Specializarea
Numim specializare procesul de maximizare a diferentelor intre membrii unui tip de entitate prin identificarea caracteristicilor lor distincte.
Specializarea este o abordare top-down a definirii unor superclase, îmreuna cu subclasele lor. Relatia superclasa / subclasa se reprezinta grafic printr-un arc de la superclasa la un cerc, care la rândul lui este legat cu un arc de subclase. Pe arcele catre subclase se deseneaza un semn de incluziune de la subclasa la superclasa. Aceste semn de incluziune indica directia relatiei superclasa / subclasa.
Atributele specifice doar subclasei sunt atasate direct la dreptunghiul care reprezinta subclasa.
Toate aceste notatii se exemplifica în figura de mai jos:
Figura 2.5. Reprezentarea relatiei superclasa / subclasa in cazul tipului de entitate locatari
În exemplul de mai sus tipul superclasa locatari se compune din subclasele: sef_de_scara si familii. Superclasa locatari va avea ca membri pe toti locatarii unei scari. Dintre acesti locatari, unii sunt cap de familie iar altii sunt sef de scara. Acesti membri ai tipului de entitate locatari vor aparea ca membri si în subclasele sef_de_scara, respectiv familii.
Putem intalni mai multe specializari la acelasi tip de entitate daca se porneste de la caracteristici de diferentiere diferite.
Numim subclasa partajata subclasa care are mai multe superclase.
Membrii din subclasa partajata sunt membri în fiecare dintre superclase. De aceea ei mostenesc atributele fiecarei superclase. O astfel de mostenire se numeste mostenire multipla.
2.3.4. Generalizarea
Generalizare se numeste procesul de minimizare a diferentelor dintre entitati, pentru identificarea caracteristicilor comune.
Procesul de generalizare este o aproximare bottom-up a superclaselor, din subclasele originale. Deci generalizarea este inversa specializarii. De exemplu daca privim tipurile de entitati Familii si sef de scara, vom observa ca unele atribute ale lor caracterizeaza ambele tipuri. De aici rezulta necesitatea crearii unei superclase care sa contina toate atributele comune celor doua tipuri.
2.3.5. Conditii impuse specializarii si generalizarii
În acest capitol vom discuta despre restrictiile ce trebuie impuse în cazul specializarii sau al generalizarii.
Prima conditie se numeste regula disjunctiei. Aceasta regula specifica daca subclasele unei clase sunt disjuncte, adica daca un membru al superclasei apartine cel mult uneia dintre subclase. O specializare disjuncta se reprezinta cu un “d” înscris în cercul care leaga subclasele de superclase.
Daca subclasele nu sunt disjuncte, adica daca un membru al superclasei poate sa apartina la mai multe subclase, atunci subclasele respective se numesc non disjuncte si se noteaza cu “o” în cercul care leaga subclasele de superclase. În exemplul nostru, subclasele sef_de_scara si familii - care sunt subclasele clasei locatari - sunt non disjuncte.
A doua conditie (a specializarii) este regula participarii, care poate fi totala sau partiala. Participarea este totala daca toti membrii superclasei sunt si membri ai subclaselor. Pentru reprezentarea participarii totale, arcul de la superclasa la cercul dintre superclasa si subclasa se dubleaza.
În cazul participarii partiale nu toti membrii superclasei apartin unei subclase. Acest tip de participare se reprezinta cu linie simpla între superclasa si cerc. In exemplul nostru avem o participare partiala în cazul superclasei locatari, cu subclasele sef_de_scara si familii.
Cele doua reguli se aplica distinct la procesele de specializare, sau generalizare. De aceea putem avea, de exemplu, patru tipuri de specializari: disjuncta totala, disjuncta partiala, non disjuncta totala, sau non disjuncta partiala.
|