Capitolul 2: Niveluri şi modele de reprezentare a datelor în bazele de date

În demersul realizării unei baze de date există trei niveluri de percepţie a acesteia :

Determinarea structurii unei baze de date se poate aborda ascendent, realizându-se descrierea schemelor externe, urmată de elaborarea schemei conceptuale, sau descendent, definind mai întâi schema conceptuală şi deducând ulterior schemele externe posibil de obţinut.

2.1 Nivelul extern (schema externă)

La nivel extern, fiecare grup de utilizatori care manipulează datele posedă o anumită descriere a acestora. Această descriere corespunde felului în care grupul vede baza de date în programele lui de aplicaţii.

Modelul extern este cel mai apropiat de utilizator. Modelul extern corespunzător unui utilizator sau grup de utilizatori reprezintă ceea ce vede acesta din baza de date.

Modelul extern este derivat din modelul conceptual, putând prezenta deosebiri substanţiale faţă de acesta. Astfel un model extern cuprinde o parte a elementelor din modelul conceptual, dar poate conţine şi elemente care nu există în modelul condeptual şi nu au corespondent în baza de date fizică.

Fiecare schema externă trebuie să se regăsească în modelul conceptual.

2.2 Nivelul conceptual (modelul conceptual)

Modelul conceptual integrează viziunile tuturor utilizatorilor asupra bazei de date. De asemenea acest tip de model este o descriere a conţinutului de informaţie al bazei de date şi nu cuprinde nici un fel de referire la modul de memorare al datelor sau al strategiei de acces la aceste date. Prin modelul conceptual este realizată independenţa fizică a datelor. Modelului conceptual i se asociază o transformare care defineşte modul în care structura logică de date este transpusă în structura fizică de memorare. Aceasta este interfaţa dintre modelul intern şi cel conceptual.

Nivelul conceptual este nivelul central care reflectă datele structurate astfel încât acestea să poată fi preluate şi prelucrate cu ajutorul unui SGBD.

Schema conceptuală stă la baza modelului conceptual care va permite definirea proprietăţilor elementare ale obiectelor care interesează dintr-o întreprindere (de exemplu: model de pantof, culoare, mărime etc.), gruparea acestora, în funcţie de criterii de omogenitate stabilite, în scopul descrierii obiectelor lumii reale (comanda, articole de încălţăminte, livrare) şi a relaţiilor dintre ele (cantitatea şi preţul fiecărui articol livrat). Sunt definite regulile de care trebuie să se ţină seama în manipularea datelor existente.

În proiectarea bazelor de date, la nivel conceptual, se pot utiliza mai multe modele, dintre care cel mai frecvent utilizat în ultima vreme este modelul Entitate-Atribut-Corespondenţă(EAC).

Modelul EAC abstractizează lumea reală şi o transpune, pe de o parte, în agregări de date elementare, numite entităţi, iar pe de altă parte, în legături între entităţi, denumite corespondenţe (sau asocieri). Aşadar, o entitate corespunde unui obiect din lumea reală, identificat, în general, printr-un nume (o factură, un produs finit, un furnizor, un client etc.). Un tip de entitate desemnează un ansamblu de entităţi constituite din date de acelaşi fel. Tipurile de date agregate sunt denumite generic atribute şi definesc proprietăţile obiectelor studiate.

O entitate este un model de obiect identificat în lumea reală - material (o persoană, un lucru etc.), imaterial (un eveniment) sau abstract - al cărui tip este definit de un nume şi de o listă de proprietăţi (atribute).

Un atribut se defineşte ca fiind o proprietate a unei entităţi sau a unei corespondenţe, caracterizată printr-un nume şi un tip. Fiecare atribut care a fost selecţionat la definirea conţinutului unei entităţi este o caracteristică semnificativă pentru domeniul studiat. Mulţimea realizărilor (valorilor) unui atribut se numeşte domeniu.

Realizare a unei entităţi se numeşte mulţimea formată din câte o valoare pentru fiecare atribut al entităţii.

Există atribute care necesită valori „nule” ale altor atribute cu care sunt relaţionate, fapt care trebuie să fie luat în considerare la proiectarea bazei de date. Valorile fiecărui atribut component a ceea ce numim generic entitate alcătuiesc o realizare (instanţiere) a entităţii respective.

Identificatorul unei entităţi este atributul (sau grupul de atribute şi roluri) a cărui realizare (valoare) caracterizează în mod unic o realizare a entităţii. În reprezentarea grafică, de regulă, identificatorul se subliniază cu o linie continuă.

Regulă (minimalitatea identificatorilor): în cazul identificatorilor compuşi dintr-un grup de atribute sau roluri, trebuie să nu existe un subgrup care să poată îndeplini rolul de identificator, adică numărul de elemente componente ale identificatorului să fie minim. Aceasta se poate asigura prin verificarea dependenţelor funcţionale dintre componentele identificatorului respectiv.

O corespondenţă sau asociere reprezintă o legătură logică între două sau mai multe realizări de entităţi. La nivelul limbajului natural, este definită printr-un verb. O corespondenţă (asociere) poate avea proprietăţi particulare, date de atribute specifice.

Rolul unei entităţi este un nume care desemnează modul de participare a entităţii la o asociere. Identificarea asocierilor se realizează prin rolurile entităţilor participante, deci, concret, cu ajutorul identificatorilor entităţilor participante.

Mulţimea entităţilor care participă la o asociere formează colecţia acesteia; numărul acestora dă gradul sau dimensiunea asocierii.

O corespondenţă între realizări diferite ale aceleiaşi entităţi se numeşte asociere reflexivă , caz în care este recomandată precizarea rolurilor fiecărei entităţi în cadrul asocierii.

Cardinalitatea minimală/maximală exprimă modul de participare al realizărilor fiecărei entităţi la asociere (valori uzuale: 0,1; 1,1; 0,n; 1,n). Pentru fiecare tip de entitate care participă la o asociere trebuie precizat câte o cardinalitate minimală şi una maximală.

O entitate poate participa la mai multe corespondenţe; în acelaşi timp, pot exista mai multe asocieri între aceleaşi entităţi. Un subansamblu de entităţi ale aceluiaşi tip de entitate formează un subtip al entităţii respective cu proprietăţi specifice. De exemplu, în baza de date a unei societăţi care tranzacţionează autovehicule, entitatea Autovehicul poate avea subtipurile De_închiriat şi De_vânzare, fiecare cu date referitoare la felul tranzacţiei la care participă un autovehicul (preţ de vânzare, respectiv tarif de închiriere etc.).

Reguli:

În exemplul urmator este ilustrată abstractizarea unui ansamblu de date, extras din limbajul natural, aplicând modelul EAC.

Produsele finite ale unei fabrici, repreyentând articole de încălţăminte sunt livrate clienţilor. La livrare se întocmesc facturi care conţin data livrării ş articolele de ţncălţăminte, fiecare dintre ele într-o anumită cantitate şi la un anumit preţ unitar, cota TVA corespunzătoare articolului respectiv. O asemenea situaţie s-ar putea repreyenta prin urm[toarea schemă EAC:

La realizarea modelului conceptual este necesar să se ţină seama şi de regulile pe care datele trebuie să le respecte permanent. Acestea se numesc restricţii de integritate (RI).

Exemple de RI:

Exemplu:

Asemănător se stabilesc şi restricţiile de incluziune, excluziune şi egalitate de asocieri – dacă există – care vizează atât asocierea (toate rolurile dintr-o asociere), cât şi toate entităţile participante.

2.3 Nivelul logic (modelul relaţional)

Definirea modelului relational

Modelul relaţional are la bază conceptul de relaţie definit în teoria matematică a mulţimilor ca fiind o submulţime a produsului cartezian al mai multor mulţimi: R M1×M2×…×Mn

Familia de mulţimi pe care este definită relaţia se numeşte domeniu, iar dacă M1 = M2 = … = Mn, relaţia este omogenă. Numărul n se numeşte gradul relaţiei (aritatea relaţiei), un element al relaţiei t = (m1, m2, … , mn) este numit tuplu, iar numărul de tupluri indică cardinalul relaţiei.

Domeniul este o noţiune mai cuprinzătoare decât atributul, reprezentând mulţimea tuturor valorilor posibile care definesc o anumită proprietate a unui obiect, spre deosebire de atribut, care reprezintă mulţimea valorilor existente la un moment dat în coloana pe care o desemnează în cadrul relaţiei. Într-o relaţie pot exista mai multe atribute care iau valori în aceleaşi domenii.

Relaţiile se reprezintă într-o formă simplă prin tabele, supuse următoarelor restricţii:

Prelucrarea relaţiilor se face prin algebra relaţională sau calculul relaţional pe tuplu sau domeniu.

Algebra relationala

Operatorii relaţionali se pot grupa în operatori de bază, care pot genera toată clasa operatorilor relaţionali, şi operatori auxiliari. Operatorii relaţionali de bază se împart în operatori de asamblare şi operatori unari.

Operatorii de asamblare sunt operatori binari, care primesc la intrare două relaţii şi generează la ieşire o singură relaţie. Aceştia sunt: reuniunea, diferenţa şi produsul cartezian, care au aceeaşi semnificaţie ca şi în teoria mulţimilor. Operatorii unari se aplică asupra unei relaţii şi generează o altă relaţie. Din această clasă fac parte proiecţia şi selecţia.

Proiecţia. Prin intermediul proiecţiei, dintr-un tabel cu un anumit număr de coloane se obţine unul cu un număr mai mic de coloane.

Selectia. Prin operatorul de selecţie, dintr-un tabel cu un anumit număr de coloane se obţine unul cu aceleaşi coloane, dar cu un număr mai mic de rânduri.

Operatorii auxiliari pot fi deduşi din setul de operatori de bază şi sunt: compunerea (Join), intersecţia şi împărţirea (diviziunea). Aceştia joacă un rol foarte important în interogarea bazelor de date relaţionale. Spre exemplu, realizarea produsului cartezian este foarte costisitoare, ceea ce face ca acesta să fie înlocuit cu operatorul de Join.

Compunerea condiţională (Join) a două relaţii R1 şi R2 după calificatorul multiatribut Q este relaţia E ale cărei tupluri sunt cele ale produsului cartezian R1 x R2 care satisfac calificatorul Q. În funcţie de calificatorul Q se disting mai multe tipuri de compuneri:

Compunerea naturală este o echicompunere pe R1 şi R2 după toate atributele având acelaşi nume în R1 şi R2, urmată de o proiecţie care permite conservarea unuia dintre aceste atribute, egale ca nume.

Intersecţia o dau relaţiile R1 şi R2 cu aceeaşi schemă, aceasta este o relaţie E care conţine tuplurile comune celor două relaţii.

Diviziunea relaţiei R1 (A1, A2 … An) de grad (p+m) prin relaţia R2 (Ap+1, …, Am) de grad m este relaţia E (A1, A2, …, Ap) de grad p, formată din toate tuplurile care, concatenate cu fiecare tuplu din R2, dă totdeauna un tuplu din R1.

Privită prin prisma modelului relaţional, baza de date apare ca o colecţie de relaţii (tabele) normalizate, în care fiecare coloană reprezintă un atribut distinct, iar fiecare rând, un tuplu distinct. Tuplurile unei relaţii se pot identifica în mod unic prin intermediul valorilor unuia sau mai multor atribute (eventual toate atributele), care joacă rol de cheie primară a relaţiei respective. Se numeşte domeniu primar un domeniu pe care este definit un singur atribut drept cheie primară. Dându-se două relaţii R1 şi R2 cu atributele A1 şi A2 chei primare definite pe acelaşi domeniu primar D, spunem că A1 este cheie externă, dacă, utilizând o parte din valorile ei sau toate, putem regăsi tuplurile relaţiei R2. Altfel spus, un atribut al unei relaţii este cheie externă, dacă se regăseşte pe post de cheie primară într-o altă relaţie.

Deoarece relaţiile reflectă un anumit aspect din realitate, acestea se supun unor restricţii care sunt de două tipuri:

Normalizarea relatiilor

E. F. Codd a arătat că într-o anumită formă relaţiile posedă proprietăţi nedorite, pe care le-a numit anomalii de actualizare:

Pentru a înlătura aceste anomalii, Codd a stabilit trei forme normale pentru relaţii şi a introdus procesul de normalizare care se bazează pe noţiunea de dependenţă funcţională (FD) ca relaţie între atributele unei entităţi ce are un caracter invariant.

Procesul de normalizare a relaţiilor se realizează în mai mulţi paşi, începând cu forma normală unu (1NF) şi ajungând (după ultimele cercetări) la forma normală cinci (5NF). Acesta constă în descompunerea unei relaţii în conformitate cu mulţimea dependenţelor funcţionale F, într-o colecţie de relaţii care să conserve informaţiile şi dependenţele funcţionale din relaţia iniţială (descompunerea fără pierderi). Pentru exemplificarea procesului de normalizare a relaţiilor vom face apel la o relaţie R definită pe atributele: cod produs (P#), unitatea de măsură (U), preţul unitar (P), cantitatea (Q), cod beneficiar (B#), localitatea beneficiarului (L), codul poştal (C) şi prefixul telefonic al localităţii (T).

O relaţie este în forma normală 1 (1NF), dacă şi numai dacă toate atributele ei conţin numai valori atomice.

O relaţie este în forma normală 2 (2NF) dacă şi numai dacă este în 1NF şi orice atribut noncheie este complet dependent funcţional de cheia primară.

O relaţie este în forma normală 3 ( 3NF ) dacă şi numai dacă este în 2NF şi fiecare atribut noncheie nu este dependent tranzitiv pe cheia primară.

2.4 Nivelul intern (fizic)

Nivelul intern (modelul fizic) este cel ce corespunde structurii în care sunt stocate datele în interiorul maşinii. Sunt specificate tabelele (fişierele) care le conţin (nume, organizare, localizare etc.), componentele fiecărui fişier (lungime, câmpuri, plasare a acestora în cadrul fişierului), căile de acces la componentele tabelelor (indecşi, relaţii, legături între tabele).

De exemplu, o factură poate fi accesată direct datorită unui index realizat pe numărul acesteia, iar cantităţile facturate pot fi cunoscute creând o legătură între tabelele 'Factura_livrare' şi 'Produse_facturate', prin intermediul asocierii 'Se_facturează'.

Se vor avea în vedere cerinţele privind asigurarea protecţiei datelor, atât din punct de vedere al conţinutului câmpurilor din tabele (verificarea şi validarea valorilor câmpurilor la introducere, evitarea ştergerii, din greşeală sau din rea-voinţă, a datelor importante, cu secvenţe de program special concepute), cât şi în ceea ce priveşte accesul utilizatorilor la baza de date (stabilirea drepturilor de acces trebuie să se facă ţinând cont de rolul, funcţia şi sarcinile fiecărui utilizator).

2.4 Proiectarea bazei de date

Proiectarea unei baze de date presupune realizarea modelelor conceptual, logic şi fizic, prin trecerea de la MCD la MLD, apoi, de la MLD la MFD.

Corespondenţele între entităţi care se caracterizează prin cardinalităţi 1,1 (interesează cardinalitatea maximă egală cu 1) şi care, de regulă, nu au proprietăţi specifice, se concretizează în restricţii de integritate funcţională (RIF), iar asocierile sunt denumite ierarhice. Cele pentru care cardinalităţile maxime au valori egale cu n (sau mai mari ca 1) sunt restricţii de integritate multiplă (RIM); asocierile, în acest caz, se numesc non-ierarhice. Acestea din urmă se recunosc uşor fiindcă, de cele mai multe ori, au proprietăţi (atribute) specifice, în timp ce asocierile ierarhice nu au, în general, caracteristici proprii.

În vederea facilitarii întelegerii modului în care se creeaza o aplicatie în Microsoft ACCESS 2000, vom folosi un studiu de caz practic.

Vom alege pentru aceasta o întreprindere cu activitate de productie. Managementul acestei întreprinderi doreste realizarea unui sistem informatic de gestiune a materialelor. Se doreste ca în cadrul acestui sistem sa se evidentieze furnizorii, facturile, magaziile, tipurile de materiale si bonurile de consum.

Pentru a micsora gradul de dificultate a aplicatiei propuse, vom considera ca toate materialele cuprinse pe o anumita factura sunt destinate unei singure magazii. Materialele sunt receptionate de o magazie pe baza facturii si sunt eliberate sectiilor de productie pe baza bonurilor de consum. Vom presupune, de asemenea, ca materialele au un pret unitar de achizitie fix, care nu depinde de furnizor.

Pe baza intrarilor (facturi) si a iesirilor (bonuri de consum) se doreste determinarea nivelului stocurilor de materiale.

Conform teoriei proiectarii bazelor de date trebuie sa definim mai întâi modelul conceptual al datelor (modelul entitate-atribut-corespondenta). În etapa a doua acest model trebuie transformat în modelul logic (relational) si apoi în modelul fizic (ACCESS).

Modelul conceptual al datelor:

În urma analizei problemei rezulta urmatoarele entitati: Furnizor, Factura, Material, Magazie si Bon de consum.

Identificarea corespondentelor:

Stabilirea cardinalitatilor:


Modelul conceptual al datelor

Modelul logic (relational) al datelor:

În figura urmatoare se prezinta transformarea modelului relational într-o baza de date ACCESS (modelul fizic):

Modelul conceptual poate fi completat cu datele privind evidenta anilor si a lunilor din fiecare an, relationate cu cele privind clientii si produsele comandate de acestia.

Trecerea de la MLD la MFD se face utilizând facilitatile si instrumentele oferite de SGBD-ul ales.

Deoarece SGBD Access implementeaza în totalitate teoria modelului relational, trecerea de la MLD la MFD se face foarte simplu, dupa cum urmeaza:

Crearea structurii bazei de date in Access 2000 este prezentata in capitolul următor.