an army of lions led by a sheep. Arab Proverb Information necessitating a change of design will be conveyed to the designer after and only after the design is complete. (Often called the 'Now They Tell Us' Law) Fyfe's First Law of Revision The difference between theory and practice is that in theory, there is no difference between theory and practice, but in practice, there is. Jan van de Sneptscheut Proiectarea logic a bazelor de date Capitolul III 2 1. Locul modelrii logice a datelor n CVS Aplicarea principiului abstractizarii in modelarea datelor Nivelul conceptual al datelor (modelul entitate-relatie) Nivelul logic al datelor (modelul relational pur) Nivelul fizic al datelor (modelul fizic al datelor) Cerintele functionale ale sistemului Regulile modelului relational Cerintele de calitate (flexibilitate, stabilitate) Cerintele nefunctionale si de performanta Facilitatile SGBD-ului 1. Locul modelrii logice a datelor n CVS Criterii de calitate ale modelului logic al datelor Completitudine - s conin toate datele necesare prelucrrilor Neredundan - s fie format dintr-un set de tabele normalizate Stabilitate schimbarea cerinelor funcionale s nu determine modificarea structurii logice a datelor Flexibilitate - uurina extinderii structurii logice a datelor pentru nglobarea unor noi cerine Simplitate i elegan - s ofere o clasificare natural i elegant a datelor (de exemplu, s nu existe dou tabele FURNIZOR i CLIENT) 3 2. Modelul relaional Concepte utilizate Baz de date relaional - un ansamblu de relaii (tabele) aflate n legtur Relaie (tabel) - este identificat printr-un nume propriu - este format din linii (tupluri) i coloane (atribute) - la intersecia crora se introduc valori atomice (date elementare) Domeniu - mulimea tuturor valorilor pe care le poate lua o dat elementar 2. Modelul relaional Concepte utilizate (cont.) Cheie - ansamblul minimal de atribute prin care se poate identifica n mod unic orice tuplu dintr-o relaie Cheie candidat - un atribut sau o combinaie de atribute care s joace rolul de cheie Cheie primar o cheie candidat aleas special Cheie secundar o cheie candidat care nu a fost aleas cheie primar Cheie strin (extern) - un atribut care apare ntr-o tabel i care este cheie primar n alt tabel. Ea este utilizat pentru stabilirea legturilor ntre tabele. Restricie de integritate referenial - pentru cheia strin se admite orice valoare nenul care se regsete ntre valorile cheii primare din tabela-printe 4 Strategii de proiectare a schemei bazei de date 1. strategia bottom-up, reprezint abordarea tradiional i presupune constituirea relaiei generale analiza relaiilor de dependen dintre atribute i parcurgerea pailor normalizrii 2. strategia top-down, presupune urmtoarele activiti: analiza cerinelor funcionale i ntocmirea modelului ER transformarea modelului ER prin aplicarea unui set de reguli analiza tabelelor obinute din perspectiva normalizrii 3. Demersul de proiectare a bazei de date Strategii de proiectare a schemei bazei de date (cont.) 3. Demersul de proiectare a bazei de date Avantajele strategiei top down: DER reprezint un instrument util de comunicare ntre analiti i utilizatori DER este uor de neles i conceput Utilizeaz conceptul de abstractizare - se reduce considerabil numrul obiectelor analizate. Numrul entitailor de date este mult mai mic dect numrul datelor elementare din sistem. Existena unui set complet de reguli de transformare a DER n schema logic a bazei de date - suport pentru generarea automat a bazei de date 5 1. Construirea unor modele logice ale datelor corespunzatoare perspectivelor diferitelor categorii de utilizatori 2. Contopirea tuturor perspectivelor normalizate ale utilizatorilor 3. Transformarea DER intr-un set de tabele normalizate 4. Obinerea modelului logic final prin compararea modelului logic consolidat (pasul2) cu modelul obinut prin transformarea DER (pasul 3) Paii demersului 3. Demersul de proiectare a bazei de date Activitile specifice transformrii DER 4. Transformarea diagramelor entitate-relaie Reprezentarea entitilor - se vor obine tabele din prima categorie Reprezentarea relaiilor dintre entiti - vor rezulta tabele din categoriile a doua i a treia Reprezentarea atributelor multivaloare - se vor obine tabele din categoria a patra Normalizarea relaiilor - tabelele obinute n paii 1 i 2 pot conine redundane nedorite 6 4.1 Transformarea entitilor 4. Transformarea diagramelor entitate-relaie Reguli de transformare: fiecare entitate din DER este reprezentat ca o relaie (tabel) n modelul logic identificatorul entitii devine cheie primar a relaiei celelalte proprieti ale entitii devin atribute non-cheie ale relaiei NUME MARCA ANGAJ AT ADRESA ANGAJAT (MARCA, NUME, ADRESA) ANGAJAT : MARCA, NUME, ADRESA Marca Nume Adresa 1111 Ion Ion Arini, 28, Iasi 1122 Ion Ionel Anini, 120, Blaj ANGAJAT (a) (b) (c) (d) Exemplu 4.2 Transformarea legturilor 4. Transformarea diagramelor entitate-relaie Se ia n considerare cardinalitatea legturilor dintre entiti: maximul cardinalitii indic tabela care va conine cheia strin ea se va numi entitate slab (tabel copil) minimul cardinalitii descrie caracterul obligatoriu/facultativ al legturii indic dac pentru cheile strine sunt permise valorile nule sau nu 7 4.2.1 Transformarea legturii binare de tipul 1:1 4. Transformarea diagramelor entitate-relaie Reguli de transformare: 1. Tabela printe este cea aflat de partea cu cardinalitatea minim 1 a legturii 2. Exist patru variante posibile de transformare: adugarea cheii primare a entitii A la entitatea B ca cheie strin adugarea cheii primare a entitii B la entitatea A ca cheie strin combinarea cazurilor 1 i 2, dac cerinele de acces la date o cer unirea celor dou entiti ntr-o singur tabel Factura Fact_id Fact_nr Fact_data Receptie Rec_id Rec_nr Rec_data Coresp- unde (1,1) (0,1) Factura Fact_id Fact_nr Fact_data Receptie Rec_id Rec_nr Rec_data Fact_id [FK] NOT NULL Fiecrei facturi i va corespunde cel mult o recepie sau nici una, iar o recepie are la baz exact o factur. 4.2.1 Transformarea legturii binare de tipul 1:1 (cont.) 4. Transformarea diagramelor entitate-relaie 8 Departament Dep_id Dep_nume Raport Rap_id Rap_den Dep_id [FK] NULL Fiecare departament public unul sau mai multe rapoarte, ns nu este obligatoriu ca un raport s fie publicat de un anumit departament. 4.2.2 Transformarea legturilor 1:N (participarea entitii de partea unu este facultativ) (0,1) Departament Dep_id Dep_nume Raport Rap_id Rap_den Public (1,M) 4. Transformarea diagramelor entitate-relaie Reguli de transformare: entitatea aflat de partea M va conine cheia strin se admit valori nule pentru cheia strin Furnizor Furn_id Furn_nume Factura Fact_nr Fact_data Furn_id [FK] NOT NULL Fiecare factura este emis de un singur furnizor, n timp de un furnizor poate emite mai multe facturi sau nici una. Furnizor Furn_id Furn_nume Emitere (0,M) (1,1) Factura Fact_nr Fact_data 4.2.2 Transformarea legturilor 1:N (participarea entitii de partea unu este obligatorie) 4. Transformarea diagramelor entitate-relaie Reguli de transformare: entitatea aflat de partea M va conine cheia strin NU se admit valori nule pentru cheia strin 9 4.2.3 Transformarea legturilor binare de tip M:N 4. Transformarea diagramelor entitate-relaie Reguli de transformare: se creeaz cte o tabel aferent celor dou entiti se creeaz a treia tabel, aferent legturii M:N, numit entitate asociativ conine cheile primare ale celor dou entiti i eventualele atribute ale legturii M:N cheia primar este format, de regul, prin combinarea celor dou chei strine sunt situaii cnd n compoziia cheii primare trebuie introduse i alte atribute, pe lng cele dou chei strine nu se admit valori nule pentru cheile strine Fiecare factura poate contine mai multe produse, iar un produs se poate regasi pe mai multe facturi Produs Prod_id Prod_den Factura Fact_nr Fact_data Articol_factura Prod_id [FK] Fact_nr [FK] Cantitate Pret 4.2.3 Transformarea legturilor binare de tip M:N Produs Prod_id Prod_den Contine (1,M) (0,M) Factura Fact_nr Fact_data Cantitate Pret 4. Transformarea diagramelor entitate-relaie 10 4.2.4 Transformarea legturilor recursive de tip 1:M 4. Transformarea diagramelor entitate-relaie ANGAJAT Marca_angajat Nume Alte_date Conduce (0,M) (1,1) ANGAJAT Marca_angajat Nume Alte_date Conduce (0,M) (1,1) ANGAJAT Marca_angajat Nume Alte_date Conduce Conduce (0,M) (1,1) ANGAJAT Marca_angajat Nume Alte_date Marca_manager [FK] Un angajat poate conduce mai muli angajai sau nici unul, iar fiecare angajat are un manager i numai unul ARTICOL Cod_articol Denumire Cost Contine (0,M) (0,M) Cantitate ARTICOL Cod_articol Denumire Cost Contine (0,M) (0,M) ARTICOL Cod_articol Denumire Cost Contine (0,M) (0,M) ARTICOL Cod_articol Denumire Cost Contine Contine (0,M) (0,M) Cantitate Cantitate ARTICOL Cod_articol Denumire Cost ARTICOL_COMPONENT Cod_articol Cod_componenta [FK] Cantitate Un articol poate conine mai multe articole, iar un articol poate intra n fabricaia mai multor alte articole. 4.2.4 Transformarea legturilor recursive de tip M:N 4. Transformarea diagramelor entitate-relaie 11 Reguli de transformare: se creeaz cte o tabel aferent celor trei entiti se creeaz a patra tabel, aferent legturii ternare, numit entitate asociativ (tabel copil) tabela copil conine cheile primare ale celor trei entiti, ce vor fi chei strine, i eventualele atribute ale legturii ternare 4.2.5 Transformarea legturilor ternare 4. Transformarea diagramelor entitate-relaie 4.2.5 Transformarea legturilor ternare 4. Transformarea diagramelor entitate-relaie Reguli de transformare (continuare): formarea cheii primare a tabelei copil: dac toate entitile prezint cardinalitatea maxim unu, cheia primar se formeaz prin combinarea oricror dou din cele trei chei strine dac dou dintre entiti prezint cardinalitatea maxim unu, cheia primar se formeaz prin combinarea cheii entitii din partea multe i una dintre cheile entitilor situate de partea unu dac o singur entitate prezint cardinalitatea maxim unu, cheia primar va fi format prin combinarea cheilor celor dou entiti situate de partea multe dac toate cele trei entiti au cardinalitatea maxim multe, cheia primar va fi format din cheile tuturor celor trei entiti 12 Tehnician Ang_id Ang_nume Proiect Pr_id Pr_den Documentatie Doc_nr Doc_termen Intocmeste 1 1 1 Tehnician Ang_id Ang_nume Proiect Pr_id Pr_den Documentatie Doc_nr Doc_termen Doc_proiect Pr_id [FK] Doc_nr [FK] Ang_id [FK] Un tehnician poate lucra la mai multe proiecte insa el intocmeste o singura documentatie pentru fiecare proiect in parte; fiecare documentatie este intocmita de un singur tehnician pentru un singur proiect; un proiect poate avea mai multe documentatii, dar fiecare documentatie va fi intocmita de un singur tehnician. In tabela Doc_proiect exista trei variante pentru stabilirea cheii: Pr_id si Doc_nr; Pr_id si Ang_id; Doc_nr si Ang_id. 4.2.5 Transformarea legturii ternare (tipul unu-la-unu-la-unu) 4. Transformarea diagramelor entitate-relaie Profesor Prof_id Prof_nume Disciplina Disc_id Disc_den Student Stud_id Stud_nume Examen Stud_id [FK] Disc_id [FK] Exam_data Prof_id [FK] Exam_nota Fiecare student sustine un examen cu un singur profesor, insa el poate fi examinat de acelasi profesor la mai multe discipline. De asemenea, un profesor examineaza la o disciplina mai multi studenti. 4.2.5 Transformarea legturii ternare (tipul unu-la-multe-la-multe) Profesor Prof_id Prof_nume Disciplina Disc_id Disc_den Student Stud_id Stud_nume Examin eaza 1 M N Exam_nota Exam_data 4. Transformarea diagramelor entitate-relaie 13 Angajat Ang_id Ang_nume Formatie Form_id Form_nrang Loc_munca Locm_id Locm_den Pontaj Ang_id [FK] Form_id[FK] Locm_id [FK] Nr_ore Fiecare angajat poate lucra in mai multe locuri de munca in formatii de lucru diferite, o formatie este formata din mai multi angajati si poate lucra in mai multe locuri de munca, iar intr-un loc de munca pot lucra mai multe formatii alcatuite din mai multi angajati. 4.2.5 Transformarea legturii ternare (tipul multe-la-multe-la-multe) Angajat Ang_id Ang_nume Formatie Form_id Form_nrang Loc_munca Locm_id Locm_den Lucreaza P M N Nr_ore 4. Transformarea diagramelor entitate-relaie Carte ISBN Titlu Copie Cota Stare ISBN [FK] Atributele multivaloare Cota si Stare sunt separate ntr-o tabel distinct. Ea se mai numete i entitate atributiv. 4.3 Transformarea atributelor multivaloare 4. Transformarea diagramelor entitate-relaie Carte ISBN Titlu Cota Stare 14 1. Utilizarea conventiilor in atribuirea de nume CamelCase 2. Stabilirea unui prefix unic pt fiecare tabela, care sa fie utilizat ca parte a numelor atributelor 3. Pastrarea numelor pt atributele cheie straina ramane cu prefixul de la tabela parinte 4. Evitarea cheilor primare compuse sau chiar a celor cu semnificatie pentru utilizator (utilizatorul ar putea sa modifice valoarea). Numele atributului cheie primara PrefixTabelaID, cu valori atribuite automat ca secventa. 5. Recomandri privind proiectarea BD 6. Mecanismul tranzacional al BD Tranzacie ansamblu de operaiuni executate mpreun asupra bazei de date o unitate logic de prelucrare care garanteaz consistena bazei de date Mecanismul tranzacional trebuie s rezolve urmtoarele dou probleme: Controlul concurenei - mecanismele de blocare Rezistena la defecte, tolerana sistemului la defecte i capacitatea de recuperare a acestuia O baz de date este ntr-o stare consistent dac datele respect toate restriciile de integritate definite asupra lor 6.1 Definirea mecanismului tranzacional 15 6. Mecanismul tranzacional al BD 6.2 Exemplu tranzacie Adugare factur Se decrementeaz valoarea atributului Stoc cu cantitatea vndut, pentru fiecare produs n parte. Identificarea nregistrrilor actualizate se face pe baza codului produsului. Update PRODUS Actualizare stocuri Se incrementeaz valoarea atributului Sold, cu valoarea facturii, preluat din ecranul de culegere a datelor. Identificarea nregistrrii se face n funcie de codul clientului pentru care s-a introdus factura. Update CLIENT Actualizare sold client Toate datele se preiau din ecranul pentru culegerea datelor. Insert ARTICOLFACTURA Adugare articole factur DataFactura ia valoarea datei din sistem, iar celelalte valori sunt preluate din ecranul de culegere a datelor. Insert FACTURA Adugare factur Explicaii Tip acces Nume tabel accesat Denumire operaiune 6. Mecanismul tranzacional al BD 6.3 Proprietile tranzaciilor Atomicitate -o tranzactie este considerata o unitate elementara de prelucrare, adica executia unei tranzactii se face pe principiul totul sau nimic Consistena - se refera la corectitudinea tranzactiei din punctul de vedere al consistentei datelor Izolarea - presupune ca orice tranzactie sa aiba acces doar la starile consistente ale bazei de date Durabilitatea - odata ce tranzactia este validata, efectele sale devin permanente si vor fi nscrise n baza de date