5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

download 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

of 48

Transcript of 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    1/48

    BAZE DE DATE

    BAZE DE DATE CA SUPORT PENTRU SISTEME DE TIP ERP

    O multitudine din sistemele de baze de date de astzi sunt bazate pe modelul relaionalpropus de E.F. Codd n 1970 cu intenia de a pune la dispoziie elementele necesare pentru aasigura independena datelor. Un model relaional se bazeaz pe dou concepte (figura 1): relaiei tabel, care difer prin natura lor dar care au o puternic legtur prin aceea c:

    - noiunea de relaie este formal, formalitate dat de proveniena sa din teoria matematic amulimilor, care a permis definirea unei teorii suport a modelului;

    - noiunea de tabel care este simpl i intuitiv, conform provenienei sale din activitilecurente, oferind o nelegere natural inclusiv utilizatorilor finali.

    Prezena simultan a celor dou noiuni a contribuit la marele succes al modelului relaional.

    1. Domeniu, atribut, valoare

    Un sistem relaional este un sistem n care: datele sunt percepute de utilizatori ca tabele; operatorii utilizai pentru manipulare (de exemplu, regsire) sunt operatori care genereaz

    noi tabele pornind de la cele existente.Cea mai mic unitate de date manipulabil n modelul relaional este valoarea

    individual, adic valoarea considerat atomic prin faptul c este nedecompozabil. O valoare

    este considerat nedecompozabil dac nici unul din algoritmii care o prelucreaz nu utilizeazpri ale sale cu un neles anume. De exemplu dac avem valoarea 05051987 care este o datde natere (zi, lun, an) atunci aceast valoare este o dat atomic dac nu avem nevoie, pe

    parcursul utilizrii sale, numai de unul din elementele care o compun (de exemplu an) ci outilizm ca atare, ca un tot.

    Figura 1. Relaia ANGAJAT

    1

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    2/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    Definiia relaiei, prin teoria matematic a mulimilor pe care se bazeaz, face apel ladou concepte de baz: domeniu i atribut. Un domeniu (Di) este definit ca mulimea obiectelorde acelai tip. Semnificaia domeniului este urmtoarea: dac dou sau mai multe atribute

    primesc valori din acelai domeniu atunci sunt admise i au sens operaiile de comparare (i alteoperaii ca jonciune, proiecie etc.) ntre aceste atribute (despre atribute putem spune c suntsemnatic comparabile). Un atribut (Ai) reprezint o interpretare anume a obiectelor domeniului.Deoarece fiecare definire de atribut (Ai) trebuie s conin o referire la domeniul corespondent,la definirea bazei de date este necesar specificarea (ca parte component a definirii bazei dedate) tuturor domeniilor identificate n faza de analiz a sistemului.

    De exemplu, n figura 1 domeniile sunt MRCI, NUME, SEX, DATE, SALARII,FUNCII, LOCURI_DE_MUNC. Aceste domenii pot fi considerate domenii specifice alerelaiei. La aceste domenii avem asocierile de atribute evideniate n figur. Dintre acesteasocieri putem distinge atributele NR#, i SO i EF care iau valori din acelai domeniuMRCI. Denumirile diferite ale atributelor ne dau semnificaia valorilor din doemniul MRCI

    astfel:

    - NR#, este marca (sau codul numeric personal - CNP) unui ANGAJAT;- SO, n cazul n care n tabel (relaie) sunt nregistrate i datele soului (soiei) va conine

    marca acestuia (acesteia);- EF, marca efului fiecrui angajat.

    Domeniile identificate n figura 1 pot fi generalizate prin tipurile de mulimimatematice din care i iau valori astfel:- ntregi:MRCI, SALARII, LOCURI_DE_MUNC, EF;- iruri de caractere: NUME, SEX, FUNCIE;- Date calendaristice: DATE.

    n acest context fiecare domeniu este o mulime infinit, mulime care nu poate fi

    stocat n practic pe calculator care are resurse finite. Din aceste considerente domeniul de

    Figura 2 Relaia DJDP (Direcii Judeene de Drumuri i Poduri)

    2

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    3/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    definiie a atributelor poate fi considerat o submulime a domeniilor generalizante din care facparte. Specificarea practic a domeniilor generalizante este efectuat n practic prin asociereaunui tip de dat fiecrui atribut sau prin definirea subdomeniilor. Definirea practic adomeniilor specifice este efectuat prin asocierea la fiecare atribut a unor restricii sauconstrngeri cum ar fi apartenena la un interval de valori, list de valori posibile, datecalendaristice minime etc.

    n figura 2 domeniile sunt COD_UNITI, MNEMONICE_JUDEE,DENUMIRI_UNITI, ADRESE, TELEFOANE. La aceste domenii avem asocierile deatribute evideniate n figur. Dintre aceste asocieri putem distinge atributele JD i JUD care auaceeai interpretare semantic dar iau valori din domenii diferite.

    Domeniile diferite pe care sunt definite atributele introduc restricii de integritatediferite, la definire i utilizare, astfel:- JD este codul de identificare a unui JUDET i este cuprins n intervalul [01,47];- JUD este codul mnemonic al judeului care poate lua valori numai dac este unul dintre

    elementele listei: {AB, AR, AG, B, BR, BV, ..., VN}.

    n figura 3 este prezentat tabelul (relaia) Jurnal_Curent care conine nregistrarearulajelor (parial) contabile aferente lunii 10 a anului 1999 i n care coloanele definite ausemnificaia:- PozDoc:poziia nregistrrii n documentul justificativ;- Nota: numrul notei contabile n care se consemneaz nregistrarea;- NrDoc: numrul/felul documentului intern;- Zi, Luna, An: data nregistrrii (prinderii) n contabilitate a operaiei;- ContDB: simbolul contului care se debiteaz cu valoarea operaiei contabile;- ContCR: simbolul contului care se crediteaz cu valoarea operaiei contabile;- Valoare: valoarea (suma) nregistrat;Autorii

    Figura 3. Relaia Jurnal_Curent

    3

    SimboluriConturi

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    4/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    - Obs: explicaii privind operaia;- Proveniena: proveniena rulajului (subsistemul din care provine);- Datint: data operrii (introducerii) la calculator a operaiei;- NrDocExt: numrul documentului atribuit de ctre emitent;- TipDoc: felul/tipul documentului;- DataDoc: data emiterii documentului de ctre emitent.

    n acest tabel atributele (coloanele) ContDB i ContCR sunt definite n acelaidomeniu denumit "Simboluri Conturi" domeniu format din multitudinea simbolurilor de conturisintetice sau analitice ale unei ntreprinderi, simboluri care trebuie s se regseasc n "Planul deConturi" al acesteia. Combinaia ContDB-ContCRdefinete formula contabil a nregistrrii.Aceste atribute reprezint o interpretare semantic a domeniului, dat de poziia lor n formulacontabil, astfel:- ContDB reprezint simbolul contului care se debiteaz n cadrul operaiei contabile;- ContCRreprezint simbolul contului care se crediteaz n cadrul operaiei contabile.

    2. Relaie, tuplu

    O relaie Rpe domeniile D1,D2,...,Dn (nu neaprat distincte) const dintr-un cap de tabeli un corp de tabel. Capul relaiei (tabelului) const dintr-o mulime fix de atribute (coloane)A1,A2,...,An, astfel nct un atribut (o coloan) Ai corespunde exact unui singur domeniu Di, cui=1,2,...,n. Fiecrei relaii i se atribuie o .

    Definiie:

    Fiind dat un numr n 1 de domenii D1,D2,...,Dn (nu neaprat distincte) o relaie R

    definit pe aceste domenii este o submulime a produsului cartezian al acestor domenii, adic:

    R D1xD2x...xDn sau

    Asocierea denumirii de relaie cu denumirile atributelor componente se numete schemarelaiei (sau schem de definire) notat n mod uzual ca R(A1,A2,...,An) sau dac X estemulimea de atribute a lui R, adic X={A1,A2,...,An}, atunci relaia poate fi notat ca R(X). Dact este un tuplu pe X i A este un atribut al su, A X, atunci prin notaia t[A] sau t.A vomindica valoarea atributului A din tuplut t (A poate fi un singur atribut sau o mulime de atribute).

    De exemplu, n figura 3, vom nota cu t1 primul su tuplu, marcat n figur cu , i nconformitate cu notaiile anterioare vom avea t1[PozDoc]=298, t1[ContCr]=707 etc. n cele ceurmeaz prin notaiile de tipul R(X) vom desemna schema de relaie a relaiei Rpe mulimeaatributelorX.

    Pentru exemplul din figura 1 schema relaiei cu denumirea ANGAJAT este:ANGAJAT(NR#, SO, NUME_PRENUME, SEX, DATA_NATERII, SALARIU,FUNCIE, LOC_MUNC, EF),n parantez fiind indicat intensia (capul) relaiei. Relaia ANGAJAT este definit pe

    produsul cartezian al domeniilorMRCIxMRCIxNUMExSEXxDATExSALARIIxFUNCIIxLOCURI_DE_MUNCxMRCIsau, generaliznd, pe produsul cartezian

    NTREGIxNTREGIxIR_DE_CARACTERExIR_DE_CARACTERExDATExNTREGIxIR_DE_CARACTEREx

    DATExNTREGIxNTREGI.

    4

    i

    n

    i

    DR1=

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    5/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    Pentru exemplul din figura 2 schema relaiei cu denumirea DJDP este:DJDP(DRDP, JD, JUD#, DJDP, ADRESA, TELEFON).

    Pentru exemplul din figura 3 schema relaiei Jurnal_Curent este:Jurnal_Curent(PozDoc, Nota, NrDoc, Zi, Luna, An, ContDB, ContCR, Valoare, Obs,Proveniena, Datint, NrDocExt, TipDoc, DataDoc).

    Pentru orice relaie trebuie s facem distincie ntre intensia relaiei i extensia relaiei(sau instana relaiei) noiuni care vor fi detaliate n cele ce urmeaz. Schema relaiei reprezintintensia relaiei i dac facem paralel cu limbajele procedurale este similar cu definiiile tipde date.

    De exemplu schema relaiei (tabelei) pentru "Planul de Conturi" poate fi definit caPlan_de_Conturi(Simbol, Descriere, Func), cu:

    - Simbol: simbolul contului;- Descriere: denumirea contului;

    - Func: funcionalitea contului.Pentru "Balana curent" schema poate fi definit ca Balanta(An, Luna, Simbol,

    DbIan, CrIan, DbPrec, CrPrec, DbLuna, CrLuna) cu:

    - An: anul balanei;- Luna: luna balanei;- Simbol: simbolul contului;- DbIan: sold debitor la nceput de an fiscal (Ianuarie);- CrIan: sold creditor la nceput de an fiscal (Ianuarie);- DbPrec: sume debitoare precedente (sume debitoare cumulate ale perioadelor precedente

    adic ntre Ianuarie din anul An i luna curent Luna);- CrPrec: sume creditoare precedente (sume creditoare cumulate ale perioadelor precedente

    adic ntre Ianuarie din anul An i luna curent Luna);- DbLuna: sume debitoare n luna balanei;- CrLuna: sume creditoare n luna balanei.

    Corpul relaiei (tabelei) const dintr-o mulime de tupluri (rnduri, nregistrri, linii) variabiln timp (se pot aduga noi rnduri, se elimin sau modific cele existente). O instan arelaiei (sau simplu o relaie) pe schema R(X) este o mulime r de tupluri pe X. Prin notaiar(X) sau r vom desemna o instan a relaiei Rpe mulimea de atribute X (mulimea tuplurilor

    pe X la un moment dat). De exemplu pentru "Balana Curent" putem s adugm conturi noi

    analitice (este posibil de fapt adugarea oricrui tip de cont) sau putem s eliminm n oricemoment acele conturi care au sumele 0 (zero) timp de doi ani la rnd. n timp ce schemarelaiei reprezint structura logic a acesteia instana relaiei (sau extensia sa) const din datelestocate la un moment dat n tabel (relaie).

    Rndurile (tuplurile) constau dintr-o mulime de perechi de tipul(denumire_atribut:valoare), adic o mulime de forma {(Ai:Vi), i=1,2,...,n}. Pentru fiecareatribut (coloan) Ai din schema relaiei (capul de tabel) exist o astfel de pereche. Pentru fiecare

    pereche (Ai:Vi) aflat n mulime, Vi este o valoare din domeniul unic Di asociat cu atributul Ai.Altfel spus, un rnd (tuplu) t aparine relaiei r dac i numai dac v1DOM.A1,v2DOM.A2,...,vnDOM.An, unde prin DOM.Ai am notat domeniul la care este asociat

    atributul Ai (deoarece domeniile nu sunt obligatoriu distincte aceast notaie este mai sugestiv).Autorii

    5

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    6/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    Deoarece relaia r este o mulime de tupluri vom utiliza notaia matematic tr pentru aspecifica faptul c tuplul t este din relaia r.

    De exemplu, tuplul marcat n figura 2 este i

    ndeplinete condiia de apartenen a valorilor la domeniile de definire:03DOM.DRDP (CODURI_JUDEE),03DOM.JD (CODURI_JUDEE),AGDOM.JUD (MNEMONICE_JUDEE), etc.

    Numrul de atribute al unei relaii se numete gradul relaiei. De exemplu relaiaANGAJAT din figura 1 are gradul 9, relaia DJDP din figura 2 are gradul 6 iar relaiaJurnal_Curent are, conform schemei sale de relaie, gradul 15.

    Numrul de rnduri (tupluri) al relaiei se numete cardinalitatea relaiei.Cardinalitatea unei relaii r va fi desemnat prin |r|. De exemplu relaia ANGAJAT din figura 1are cardinalitatea 7 n timp ce relaia Jurnal_Curent din figura 3 are cardinalitatea 19 (veziindicaia Records).

    Corpul relaiei (tabelului) reprezint extensia relaiei.Prin aceste definiii am furnizat cadrul formal al noiunilor de relaie, tuplu i atribut,

    utilizate n modelul relaional.Utilizatorii, datorit diversitii lor, percep i folosesc aceste noiuni n urmtoarele

    accepiuni informale (exceptnd, eventual, utilizatorii speciali ca administratorul bazei de date -ABD - i programatorii de sistem): relaia este un tabel, tuplul este o nregistrare sau un rnd altabelului, iar atributul este un cmp din nregistrare sau o coloan a tabelului. n principiu,gradul relaiei este o mrime constant (adugarea de noi atribute la o schem de relaie seexecut foarte rar) pe cnd cardinalitatea este o mrime variabil n timp.

    Deoarece corpul tabelului (relaiei) este o mulime relaia (tabelul) are urmtoareleproprieti invariante n timp:

    1. Nu sunt admise rnduri (tupluri) duplicate (identice);2. Rndurile sunt neordonate;3. Coloanele (atributele) sunt neordonate;4. Toate valorile atributelor sunt atomice.

    Aceste proprieti pot fi interpretate, n cadrul sistemului finaciar-contabil, astfel:

    1. n "Balana de Verificare" sau "Planul de Conturi" nu trebuie s avem dou conturi cuacelai simbol; n "Jurnal" nu trebuie s nregistrm de dou (sau mai multe) ori operaiile

    (rulajele) aceluiai document;2. Adugarea de noi conturi n "Planul de Conturi" sau n "Balana de Verificare" nu necesit

    reorganizarea acesteia dei conturile trebuie s apar n liste n ordinea cresctoare a valoriisimbolurilor lor. Acestea vor fi adugate la sfritul tabelului iar la listare vor fi aranjate,

    prin posibilitatea de reordonare pus la dispoziie de limbajul de manipulare, conformcerinelor utilizatorului. Similar orice nregistrare n jurnal va fi efectuat n ordinea operriisale la calculator. Aceast proprietate ne asigur c nu putem s realizm intercalri sauinserri permind astfel respectarea interdiciei prevzute de legea contabilitii;

    6

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    7/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    3. Coloanele din tabel pot fi aranjate conform oricror necesiti tehnice iar la interogarea(consultarea) bazei de date acestea pot fi aranjate conform specificaiilor din lege sau aleutilizatorului;

    4. De exemplu data nregistrrii n contabilitate a rulajului este dat sub forma Zi, Luna, Anceea ce ne permite efectuarea direct de listri aferente unei zi anume lucru cerut n modexpres pentru "Registrul de Cas" i "Jurnal de Banc" prin legislaie.

    Descrierea n SQL a intensiei relaiilor este realizat prin intermediul comenziiCREATE TABLE a limbajului de definire. De exemplu crearea tabelei Plan_de_Conturi poatefi exprimat n SQL astfel:

    CREATE TABLE Plan_de_Conturi (Simbol TEXT(22) NOT NULL, DescriereTEXT(60), Func TEXT(1))

    3. Relaii i baza de date

    Relaiile pot fi utilizate pentru a organiza datele relevante ale unei aplicaii. n generalnu este suficient o singur relaie pentru a realiza acest lucru ci o mulime de relaii ale crortupluri (rnduri) conin valori comune necesare stabilirii corespondenei ntre acestea, mulimecare formeaz o baz de date (figura 4). Schema bazei de dateB const dintr-o mulime de

    scheme de relaii cu diverse denumiri, adic B={R1(X1), R2(X2),,Rn(Xn)}. O instan a bazeide date (sau baza de date database) pe schema B={R1(X1), R2(X2),,Rn(Xn)} este mulimeaextensiilor relaiilor b={r1,r2,,rn} unde fiecare ri, cu 1in, este o relaie pe schemacorespondent Ri(Xi). Conceptul de schem a bazei de date se refer la proiectul logic al bazeide date n timp ce conceptul de instan a bazei de date se refer la datele din baza de date la unmoment dat.

    Autorii

    Figura 4. Exemplu de instan a bazei de date

    7

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    8/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    Schema bazei de date, pe care o vom denumi SALARII, corespunztoare instanei dinfigura 4 este SALARII(ANGAJAT(CNP, Sot, Nume, Prenume, Sex, Profesia, Data naterii,Funcie, Telefon, ef, Salariu), PROFESII(Cod Profesie, Profesie), FUNCII(Cod Funcie,Funcie)). Caracteristica esenial a unei baze de date relaionale este reprezentat de faptul creferirile, adic coloanele comune care apar n mai multe tabele, dintre diversele relaii (tabele)sunt reprezentate prin semnificaia valorilor din domeniu care apar n tuplu (rnd). De exemplu,n relaia ANGAJAT valoarea atributului So din rndul trei a angajatei Ionescu Maria esteegal cu valoarea CNP a angajatului Ionescu Claudiu iar a acestuia cu cea a angajatei IonescuMaria definind astfel relaia de cstorie dintre cei doi angajai. Similar coloanele Funcie iProfesia din tabela ANGAJAT iau valori din coloana Cod Funcie a tabelei Funcii, respectivcoloana Cod Profesie a tabelei Profesii.

    Structura modelului relaional se dovedete, prin prisma celor prezentate anterior, foartesimpl i puternic. n acelai timp acesta impune un anumit grad de rigiditate: informaiatrebuie reprezentat prin tupluri de date adic ni se impune, n fiecare relaie, s reprezentm

    numai tupluri care corespund schemei sale. Dac analizm relaia ANGAJAT din figura 4 aiciavem un atribut SO ale crui valori sunt luate din domeniul CNP i reprezint faptul c unangajat este cstorit cu un alt angajat. Dar, pe de o parte nu toi angajaii sunt cstorii iar, pede alt parte chiar dac sunt cstorii nu este obligatoriu s avem toate cuplurile printre angajaiceea ce ne duce la ideea c acest informaie nu este disponibil pentru toi angajaii. DomeniulCNP din care ia valori atributul SO conine numai coduri numerice peronale, deci valoriconcrete.

    Pentru a putea reprezenta informaiile indisponibile conceptul de relaie a fost extinspentru a include posibilitatea ca un tuplu s accepte pentru fiecare atribut fie o valoare dintr-undomeniu fie o valoare special denumit valoare nul (null value). Valoarea nul (nu zero)specific absena informaiei i reprezint o valoare adiional oricrui domeniu (nu este inclus

    printre valorile domeniului) i este simbolizat cu NULL (sau cu Null) n cele ce urmeaz.Pentru tratarea valorilorNull tabelele de adevr ale funciilor logice de baz i (And), Sau (Or)i Nu (Not) sunt prezentate n tabela 1.

    Tabela 1. Tabelele de adevr ale funciilor logice cu tratarea valorii NullNot And A N F Or A N F

    F A A A N F A A A AA N N N N F N N N FN F F F F F F F F F

    Unde:A Adevrat (True);F Fals (False);

    N Nul (cu sensul de Null, indisponibil - Unavailable, nedefinit Undefined).

    Pe baza acestor tabele de adevr au fost definite dou noi forme de condiii atomice careverific dac valoarea specificat este Null astfel:

    - A Is Null este evaluat la Adevrat pe un tuplu t dac valoarea lui t pe atributul A este Null(adic t[A]=Null) i la Fals n caz contrar;

    - A Is Not Null este evaluat la Adevrat pe un tuplu t dac valoarea lui t pe atributul Aprovine din domeniul lui A (adic t[A]Dom.A) i la Fals dac valoarea este Null.

    4. Restricii de integritate

    8

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    9/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    Restriciile (constrngerile) de integritate reprezint proprieti care trebuie s fiesatisfcute de ctre toate instanele corecte ale bazei de date. O constrgere trebuie perceput caun predicat care are are valoarea Adevrat sau Fals pentru fiecare instan. Ele sunt definite ngeneral sub form de expresii logice (simple sau complexe) dar nu sunt excluse nici definirilecare implic calcule complexe exprimate pe mai multe coloane. n general unei scheme de bazde date i se asociaz o colecie de constrngeri iar instanele bazei de date care le satisfac suntconsiderate corecte. n funcie de elementele bazei de date crora li se asociaz constrngerile

    pot fi clasificate n:

    - constrngeri intra-relaie dac respectarea lor implic numai o relaie (tabel) a bazei dedate. Acest gen de constrngeri pot fi clasificate astfel:

    restricii la nivel de tuplu care sunt evaluate independent pentru fiecare tuplu isunt definite pe valorile fiecrui tuplu independent de altele; restricii asociate valorilor sau restricii de domeniu date pentru a impune

    restricii pe domeniul atributului; restricii la nivel de tabel care se aplic pe valori care apare n mai multe tupluriale relaiei;

    - constrngeri inter-relaie dac acestea implic mai mult de o relaie.

    5. Chei

    Deoarece corpul unei relaii este o mulime, iar prin definiie mulimile nu coninelemente duplicate (linii sau coloane dublate), rezult faptul c nu avem, la orice moment, dousau mai multe rnduri (tupluri) identice. Acest lucru ne permite s tragem concluzia c exist unatribut sau o combinaie de atribute ale crui (cror) valori identific n mod unic rndurile

    (tuplurile). Aceast proprietate trebuie ndeplinit cel puin de combinaia atributelor carecompun ntreg rndul (tuplul). Evident nu este exclus nici posibilitatea existenei mai multoratribute sau combinaii de atribute care s realizeze identificarea unic a fiecrui rnd (tuplu).Fie R(X) o schem de relaie. Dac despre submulimea Kde atribute din R(X) spunem c este

    supercheie (superkey)pentru R(X) atunci definim de fapt o restricie pentru orice instan a sar(X) prin care specificm faptul c nu trebuie s existe dou tupluri distincte din r care s aibaceeai valoare pe toate atributele din K, adic dac t1 i t2 sunt tupluri din r i t1 t2 atuncit1[K] t2[K].

    Definiie:

    Dac r este o relaie cu atributele A1,A2,...,An atunci mulimea de atributeC=(Ai,Ak,...,Am) este candidat la cheie (candidate key) a lui Rdac i numai dac satisfaceurmtoarele dou proprieti independente de timp:

    a). Unicitate care precizeaz c nu exist, n orice moment, dou rnduri (tupluri)distincte din r care s aib aceeai valoare pentru C;

    b). Minimalitate care precizeaz c nu putem elimina nici unul din atributeleAi,Ak,...,Am ale lui C fr a pierde proprietatea de unicitate.

    Not !. Indicii i,k,,m sunt definii n intervalul [1,n] iar prin acest succesiune se sugereazfaptul c atributele care particip la formarea cheii pot fi plasate n orice poziie n schema derelaie, ordinea lori,k,,m fiind cea care asigur ordinea de parcurgere a lor.

    Autorii

    9

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    10/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    O definiie alternativ a conceptului de cheie folosete noiunea de supercheie:- o mulime de atribute K=(Ai,Ak,...,Am) este supercheie pentru o relaie r dac r nu poate

    conine dou tupluri t1 i t2 pentru care t1[C]=t2[C];- o mulime de atribute K=(Ai,Ak,...,Am) ale unei relaii r este o cheie pentru pentru r dac

    este o supercheie minimal (adic dac nu exist o alt supercheie K' a lui r care esteconinut ca submulime n K).

    Cu aceast definiie putem concluziona c fiecare relaie are cel puin un candidat lacheie deoarece cel puin combinaia tuturor atributelor rndului (tuplului) are proprietatea deunicitate.

    Pentru exemplul din figura 1 avem dou chei candidat NR# (care reprezint marcaangajatului) i cheia format din combinarea atributelor (NUME_PRENUME, SEX,DATA_NATERII).

    Pentru exemplul din figura 2 avem trei chei candidat DRDP, JD i JUD.

    Pentru exemplul din figura 3 avem cheia candidat format din combinaia de atribute:(PozDoc, Nota, NrDoc, Zi, Luna, An, ContDB, ContCR, NrDocExt, TipDoc, DataDoc).Pentru fiecare relaie un candidat la cheie va fi desemnat pentru a fi cheia primar

    (primary key). Pentru modelul relaional cheia primar este un element extrem de importantdeoarece reprezint modul de adresare la nivel de rnd (tuplu).

    innd cont de faptul c n general o cheie joac un rol extrem de important n sistemulrelaional ca model bazat pe date (valori) i de faptul c SGBD-urile comercializate cerimperativ specificarea cheii primare pe care construiesc, pentru un acces rapid la date, structuriauxiliare, denumite indeci, este necesar s se decid ce atribute vor forma cheia. Deciziaalegerii unuia sau altuia trebuie s in cont de urmtoarele criterii:

    - atributele care pot avea valori nule nu pot face parte din cheie deoarece ele nu garantezaccesul la toate realizrile entitii corespondente;

    - unul sau ct mai puine atribute este (sunt) preferabil(e) mai multor atribute (minimalitate)deoarece ne asigur c indecii vor fi de dimensiune limitat i vor necesita mai puin spaiude memorie extern la crearea legturilor logice dintre diversele relaii (entiti) iaroperaiile de jonciune vor fi facilitate;

    - din aceleai considerente un identificator intern cu mai puine atribute este preferabil unuiaextern care poate implica mai multe entiti;

    - un identificator utilizat de mai multe operaii pentru accesarea realizrilor unei entiti estepreferabil altora deoarece n acest mod cererile bazate pe acetia vor putea fi efectuateeficient i datorit faptului c SGBD construiete n mod automat indeci pe acesta.

    Pentru exemplul din figura 1 atributul NR# (marca) a fost desemnat pentru a fi cheie primar iar pentru cel din figura 2 JUD# (indicativ judet). Pentru exemplul din figura 3singurul su candidat la cheie va fi desemnat drept cheie primar. n cazul n care aceasta nuconvine se poate introduce o coloan suplimentar de tip autoincrementabil (COUNTER,AUTONUMBER) care poate forma cheia primar numai dac capacitatea sa de reprezentare(de regul este implementat de SGBD-uri la capacitatea de 231-1) este acoperitoare pentrunecesarul de rulaje ale unei luni.

    10

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    11/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    Pentru Balana i Plan_de_Conturi candidatul la cheie este reprezentat de atributulSimbol i cheia primar devine acest atribut, care ndeplinete restriciile de unicitate iminimalitate. Restricia de unicitate a simbolului de cont este definit expres de LegeaContabilitii numrul 82/1991. De exemplu la crearea tabelei Plan_de_Conturi declaraia decheie primar se poate exprima n SQL astfel:

    CREATE TABLE Plan_de_Conturi (Simbol TEXT(22) CONSTRAINTcheie_plan_conturi PRIMARY KEY, Descriere TEXT(60), Functionalitate TEXT(1))

    O baz de date relaional poate fi definit, n intensie, printr-o schem relaional careconst din una sau mai multe scheme de relaie. n extensie, baza de date relaional este

    perceptibil ca o colecie de tabele, fiecare tabel fiind compus din rnduri (denumite i liniisau nregistrri) i coloane (denumite i atribute sau cmpuri) conform modului ilustrat nfigura 1, 2 i 3. n aceste condiii schema relaional nu reflect, explicit, toate asocierile ntre

    relaiile din baza de date. Anumite tipuri de asocieri sunt coninute numai implicit prinpropagarea cheii de la o schem de relaie la alta.

    Pentru materializarea asocierilor dintre schemele de realie se utilizeaz noiunea decheie extern(foreign key), definit ca un atribut (cmp) sau combinaie de atribute (cmpuri)dintr-o relaie (tabel) ale crei (cror) valori sunt definite pe aceleai domenii cu cele ale cheii

    primare din alt tabel (sau acelai tabel). De exemplu, n figura 1 avem cheile externe SO iEF, care i iau valori din domeniile MRCI din care ia valori cheia primar NR

    Tabela Jurnal_Curent (figura 3) conine dou chei externe ContDB i ContCRambele putnd lua valori din domeniul format din valorile coloanei Simbol din tabela Balana.Acest proprietate a simbolului de cont debitor (ContDB) i a celui de cont creditor (ContCR)

    este dat de modul de definire a formulelor contabile: o formul simpl debiteaz un cont icrediteaz, n acelai timp, un alt cont ambele conturi trebuind s existe n balana curent antreprinderii (i de altfel n Planul su de conturi).

    Pentru a face distincie ntre relaiile stocate n baza de date i cele obinute prinaplicarea operatorilor relaionali primele tipuri de relaii se numesc relaii de baz iar cel de-aldoilea relaii derivate. De exemplu, pentru sistemul financiar-contabil tabelele Plan_de Conturi,Balana i Jurnal_Curent reprezint tabele de baz n timp ce o tabel cu rulajele unei notecontabile anume, cum ar fi nota Casa, extras din Jurnal_Curent, reprezint o tabel derivatutilizat temporar.

    Definiie:

    Fie Ro realie de baz cu cheia primar C=(A1,A2,...,An), n>0. Fie S o relaie de baz(R i S nu neaprat distincte) i fie B1,B2,...,Bn atribute din S care satisfac restriciile deindependen de timp. Pentru orice nregistrare s a lui S n care este ndeplinit una dincondiiile:

    - s.B1,s.B2,...,s.Bn sunt toate nule;- exist o nregistrare r a lui Rastfel nct r.A1=s.B1,r.A2=s.B2,...,r.An=s.Bn;

    combinaia (B1,B2,...,Bn) este o cheie extern (foreign key) n S care este identic cu cheiaprimar (A1,A2,...,An) din R.

    Autorii

    11

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    12/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    Not!. Prin construciile de forma r.Ai am desemnat valoarea atributului Ai din relaiar.

    De exemplu declararea asocierii unui cont din Balana curent cu contul dinPlan_de_Conturi poate fi realizat astfel:

    CREATE TABLE Balanta(An SHORT, Luna BYTE, Simbol TEXT (22) CONSTRAINTeste_contul REFERENCES Plan_de_Conturi (Simbol), DbIan DOUBLE, CrIanDOUBLE, DbPrec DOUBLE, CrPrec DOUBLE, DbLuna DOUBLE, CrLuna DOUBLE)

    6. Restricii de integritate

    Fiecare cheie primar i cheie extern din relaiile (tabelele) bazei de date trebuie ssatisfac urmtoarele restricii de integritate [DATE87]:

    1). integritatea entitii (entity integrity);Nici-un atribut care particip la formarea cheii primare a unei relaii de baz nu poateprimi valori nule*);

    2). integritatea referenial (referential integrity) [DATE81]:Dac o relaie r2 include o cheie externCepe cheia primarCp a relaiei r1 (r1

    i r2 nu neaprat distincte) atunci fiecare valoare a cheii Ce din r2 trebuie s fie egalcu valoarea lui Cp dintr-un tuplu al lui r1 sau s fie nul. n acest context relaia r2 esteo relaie care refer (fiu sau membru-"member"), iar relaia r1 este o relaie referit(tat sau posesor-"owner").

    *) Not!. Termenul nul, conform celor expuse n paragrafele anterioare, nu definete

    valoarea zero (0) ci o valoare special considerat de sistem Null (cum ar fi zero binar).

    Declaraia restriciilor de integritate, n SQL, este efectuat prin asocierea la definiia decoloan a clauzei NOT NULL sau prin asocierea unor clauze CONSTRAINT fie la nivel decoloan fie la nivel de tabel (pentru coloane multiple). Conform celor expuse n 4constrngerile (restriciile) pot fi clasificate intra-relaie sau inter-relaii.

    Restricii intra-relaie. Cele mai simple restricii intra-relaie sunt declaraiile de nenul (NotNull), de unicitate (unique) i cheie primar ( primary key). Acestea nu exclud prezenarestriciilor declarate cu clauze CONSTRAINT care sunt generale. Prezentarea lor este efectuataici deoarece ele au o semnificaie aparte:- Not Null indic faptul c nu sunt admise valori nule n coloana creia i este asociat sau,

    altfel spus, trebuie s specificm ntotdeauna o valoare pentru atribut;- Unique este o restricie aplicat unui atribut (sau unei mulimi de atribue) prin care se

    impune cerina c atributul (sau mulimea de) este (super)cheie. Prin aceast declaraie suntadmise valori nule (dac nu se specific i Not Null) fr a viola restricia deoarece fiecarevaloare nul reprezint o valoare necunoscut dintr-un tuplu anume i este tratat ca i cumar diferi de celelalte valori nule;

    - Primary key este extrem de important deorece prin ea se specific cheia primar. Aceastrestricie poate fi specificat o singur dat pentru o tabel. Nici-unul din atributele cheii

    primare nu poate primi valori nule (conform restriciei integritatea entitii) i putemconsidera c exist o declaraie implicit Not Null pe atributele care particip la formarea sa.

    12

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    13/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    De exemplu, dac ne referim la tabela Jurnal a crei cheie primar este format dinurmtoarea combinaie de atribute (PozDoc, Nota, NrDoc, Zi, Luna, An, ContDB,ContCR, NrDocExt, TipDoc, DataDoc) atunci crearea tabelei Jurnal ar trebui s arateastfel:

    CREATE TABLE Jurnal(PozDoc COUNTER, Nota SHORT NOT NULL, NrDocTEXT(16) NOT NULL, Zi BYTE NOT NULL, Luna BYTE NOT NULL, An SHORTNOT NULL, ContDB TEXT(22) NOT NULL, ContCR TEXT(22) NOT NULL, ValoareDOUBLE, Obs TEXT(60), Proveniena TEXT(6), Datint DATETIME, NrDocExtTEXT(16) NOT NULL, TipDoc TEXT(16) NOT NULL, DataDoc DATETIME NOTNULLCONSTRAINT cheie_jurnal Primary Key (PozDoc, Nota, NrDoc, Zi, Luna, An,ContDB, ContCR, NrDocExt, TipDoc, DataDoc))

    Restricii inter-relaii. Cele mai importante restricii inter-relaii sunt restriciile integritiirefereniale. O restricie referenial este asociat cheii externe prin care se realizeaz legturintre valorile atributelor unei tabele i valorile atributelor unei alte tabele (cele dou tabele nutrebuie s fie neaprat distincte). n conformitate cu acest restricie tabelele implicate nasociere pot fi ncadrate n dou categorii, interne i externe, iar restricia specific faptul c

    pentru orice rnd din tabela intern valoarea unui atribut (diferit de nul) din cheia externtrebuie s se regsesc printre valorile atributului din rndurile care se afl n tabela extern.Singura cerin pentru atributul din tabela intern este aceea de a avea minim o declaraie deunicitate. Legtura n sine este specificat, n SQL, prin declaraii foreign key i references carevor fi tratate n extenso n capitolul dedicat limbajului SQL.

    Justificarea primei reguli de integritate este urmtoarea:- relaiile (tabelele) corespund entitilor din lumea real;- entitile din lumea real sunt distincte (ele sunt identificate n mod unic ntr-unanume fel);- cheia primar realizeaz funcia de identificare unic n cadrul modeluluirelaional;- pentru a-i realiza funcia cheia primar nu poate avea valoare nul.

    n ceea ce privete cea de a doua regul de integritate justificarea este urmtoarea:- dac un tuplu t2 refer un tuplu t1, atunci tuplul t1 trebuie s existe (de exemplu,dac un rulaj refer conturi din balan atunci aceste conturi trebuie s existe);-

    dac valoarea unei chei externe nu este nul atunci ea trebuie s se regseascprintre valorile cheii primare din tabela referit.

    7. Baz de date relaional o descriere formal

    Formal un sistem relaional este compus din:

    - o baz de date relaional;- o colecie de operatori relaionali;- dou reguli de integritate;- o mulime (set) de asocieri.

    Autorii

    13

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    14/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    Definiie:

    O baz de date relaional const dintr-o mulime de domenii i o mulime de relaiipeste care se aplic o mulime de asocieri.

    Utiliznd notaia BNF putem descrie formal baza de date relaional astfel:

    (1) ::= (, )

    (2) ::=| (3) ::= |(4) ::=

    Fiecare relaie, din mulimea de relaii, este un rezultat al asocierii atributelor la atributul(sau grupul de atribute) desemnat cheie primar a relaiei. De fapt, atributele care nu particip laformarea cheii primare, referite ca atribute noncheie, nu reprezint altceva dect caracterizaniai cheii primare.

    Prin asocierile dintre relaii () se pun n eviden legturile deinterdependen/intercondiionare a fenomenelor sau obiectelor modelate.

    Definiie:

    O asociere ntre dou relaii r i s (nu neaprat distincte) se definete ntr-o direcie dat(de la ...| la...) i ofer un mecanism de acces prin care pornind de la o realizare (un tuplu) t al

    lui r avem acces la realizrile (tuplurile) t1, t2, ..., tn ale lui s care i sunt asociate. Deci asociereaeste o realie binar ntre dou mulimi (relaii) r i s, nu neaprat distincte.

    Vom nota asocierea, sub form funcional, prin sGF

    r n care Fi G sunt funcii, n

    general multivaloare i inverse una alteia. Asocierea este caraterizat de tipul fiecrei funcii.Asocierea poate fi, n funcie de:1) rezultatul evalurii:

    - monovaloare: dac evaluarea sa produce o singur valoare;- multivaloare: dac evaluarea sa produce o mulime de valori.Pentru aceste funcii un element caracterizant important este reprezentat de

    cardinalitatea minimal i maximal (numrul minim i respectiv maxim de valori produse).2) completitudinea asocierii:

    - parial: dac exist elemente (tupluri) n mulimea de plecare care nu au oimagine n mulimea destinaie;- total: dac toate elementele (tuplurile) mulimii de plecare au o imagine nmulimea destinaie.

    La o baz de date relaional [AVRAM93] local asocierile, n funcie de modulperceperii lor, pot fi de tipul :

    1. implicite, n cazul asocierilor binare ale atributelor la entitatea/relaia creia ii descrie

    proprietile;

    14

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    15/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    2. explicite, n cazul n definirii relaiilor de asociere (ca relaii independente sau ca relaiinormale) prin mecanismul - ;

    3. transparente/virtuale, n cazul n care realizarea unei asocieri este determinat la"moment" i n general urmeaz unui proces de transformare a datelor. Dup realizareaasocierii i efectuarea operaiilor care o solicit, asocierea nu va avea materializare n bazade date. Realizarea asocierii, la alt moment de timp dar cu pstrarea condiiilor iniiale,

    presupune parcurgerea acelorai transformri ale datelor. Acest gen de asocieri au uncaracter dinamic imperativ ceea ce face ca ele s nu poat fi consemnate ca valori ale unoratribute de tip . Acest lucru nu nseamn c asocierile de tip nu au un dinamism propriu. Diferena const n faptul c asocierile de tip au un caracter relativ stabil, iar materializarea este realizat prin existena uneivalori pentru un atribut sau combinaie de atribute care definete . Acesteasocieri sunt materializabile numai prin tipul de legtur 1-1 sau 0-1.

    Primele dou tipuri de asociere sunt materializate n relaii (asocieri reale) care pot fi de

    oricare din tipurile identificate i pot avea existen real sau virtual.Referitor la asocierile enunate se pot formula urmtorele observaii pentru cazulorganizrii datelor n baze de date distribuite:- toate tipurile de asocieri ale unei baze de date locale pot

    fi identificate i n baza de date global i deci implicitpot face obiectul descompunerii;

    - asocierile de tip virtual pot fi realizate la distan iardescompunerea se refer la faptul c decompozabile suntnumai relaiile ntre care apar;

    - asocierile explicite care au asociat un index (o cale deacces definit pe cheia extern i o modalitate de

    specificare a restriciilor de integritate) impun restriciaca acest index sa fie descompusorizontal n raport cu cheia extern(nu este admis descompunereavertical a cheii externe formatedin combinaie de atribute).Indexul definit reprezint calea

    prin care o cheie externmultiatribut este vzut ca unntreg.

    Specificnd la fiecare funcie F i G cardinalitatea maximal (n) (notat cu F(n),respectiv G(n) vom avea urmtoarele tipuri de asocieri [TSICHRITZIS]:

    - "unu_la_unu" (1-1): aceast asociere (one_to_one) se reprezint grafic (Bachman) ca nfigura 5. O asociere de tip 1-1 poate fi vzut i ca 0-1. De exemplu, dac ne referim laasocierea dintre relaiile Plan_de_Conturi i Balana care este de tip 1-1 atunci putem aveaconturi n relaia Plan_de_Conturi care nu se regsesc n Balana. De exemplu, dac

    presupunem c avem un client care nu mai desfoar timp de doi ani activitate cu noi iarsoldurile aferente analiticului alocat lui sunt 0 putem s-l eliminm din Balana dar s-l pstrmn Plan_de_Conturi. Sau un alt exemplu, Plan_de_Conturi conine "Planul de Conturi General"

    Autorii

    Figura 6. Asociere de tip 1-1

    Figura 5. Asociere 1-1

    15

    1 (0)

    1

    Plan_de_Conturi

    Balana

    are_soldurile

    este_contul

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    16/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    n care se regsesc i conturi privind mprumuturilede la bnci iar firma nu face nici-un mprumut ideci ele nu apar n Balana.

    Reprezentarea acestei asocieri dintrePlan_de_Conturi i Balana este ilustrat n figura6.

    n tabela Plan_de_Conturi este definitcheia primar Simbol prin declaraia SimbolTEXT(22) CONSTRAINT cheie_plan_conturiPRIMARY KEY iar n balan coloana Simbol este declarat cheie extern care refer cheia

    primar din Plan_de_Conturi cu declaraia Simbol TEXT (22) CONSTRAINT este_contulREFERENCES Plan_de_Conturi (Simbol).

    - "unu_la_mai_muli" (1-n): aceast asociere (one_to_many) se reprezint grafic (Bachman) can figura 7. O asociere de tip 1-n poate fi vzut i ca 0-n. De exemplu, dac ne referim laasocierea dintre relaiile Balana i Jurnal vom avea dou asocieri de tip 1-n (figura 8) dat defaptul c un cont din balan este debitat de una sau mai multe nregistrri din jurnal i creditatde una sau mai multe nregistrri.

    Uncont din

    balanacurent, deexemplu al

    unui clientcare n lunarespectivnurealizeazafaceri cu

    firma, poate s nu aib rulaje asociate n jurnal.Schimbnd ordinea de plecare (de la S la R, figura 7 ) asocierea poate fi privit i

    interpretat ca "mai_muli_la_unu" (many_to_one).

    n tabela Balanta este definit cheia primar Simbol prin declaraia Simbol TEXT(22)CONSTRAINT cheie_balanta PRIMARY KEY iar n Jurnal coloana ContDb este declaratcheie extern care refer cheia primar din Balanta cu declaraia ContDb TEXT (22)CONSTRAINT debiteaza_pe REFERENCES Balanta (Simbol) iar coloana ContCr estedeclarat cheie extern prin ContCr TEXT (22) CONSTRAINT crediteaza_peREFERENCES Balanta (Simbol).

    Notatia "1" din asocierile descrise poate desemna "0" ("nici-un") sau "1" ("exact un")element.

    - "mai_muli_la_mai_muli" (n-m): aceast asociere (many_to_many) se reprezint grafic(Bachman) ca n figura 9.

    Figura 7. Asociere 1-n

    Figura 8. Asocierile dintre Jurnal i Balana (curente)

    16

    1 (0)

    n

    Balana

    Jurnal

    este_creditat_de

    crediteaz_pe

    1 (0)

    n

    este_debitat_de

    debiteaz_pe

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    17/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    n general, n tipurile de SGBD clasice (inclusiv n Access), aceast asociere nu poate fireprezentat ca atare ci trebuia descompus n asocieri de tip (1-n). Modelul relaional introduce

    posibilitatea descrierii directe asocierii (n-m), dar prin aplicarea normalizrii se obine de reguldescompunerea n asocieri (1-n). Aceast descompunere se obine introducnd o relaiesuplimentar, notat cu RxS, pentru a materializa asocierea conform modului ilustrat n figura10.

    La implementarea acestor tipuri de asocieri acestea pot fi:- statice, caz n care se realizeaz prin mecanismul ;- virtuale, caz n care se realizeaz la moment i sunt n general precedate de un calcul.

    Revenind la descrierea n BNF a bazei de date relaionale avem:(5) ::=[](6) ::= (7) ::=|(8) ::= | (9) ::= DA | NU

    Fiecrui domeniu i se atribuie o denumire distinct, carereprezint o generalizare a atributelor care i iau valori din domeniu.

    Denumirea atribuit domeniului este un format

    conform specificaiilor limbajului de definire a datelor (sau componentei care realizeazdefinirea datelor). n cazul n care aceast denumire nu este suficient de explicit este indicatdescrierea sa n dicionarul bazei de date (sub form de comentarii, sub form de linii de text nrelaii caracterizante din baza de date etc.). n cazul SGBD-urilor existente descrierea poate fifcut ca un alias asociat coloanei la interogare (clauza AS) sau n modul "Design" modificnd

    proprietatea "Caption".Prin sunt desemnate toate valorile admisibile pentru acel

    domeniu ( care verific ). Acestevalori care compun domeniul pot fi eventual ordonate (::= DA). Dac secere ordonarea atunci aceast ordonare va fi efectuat conform specificaiilor unei relaii deordine ntre valori (,

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    18/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    Prin condiiile de apartenen la domeniu am desemnat cel puin informaiile caredefinesc natura i lungimea datelor (tipul, de exemplu, ntreg, real etc.; lungimea, de exemplu,trei caractere, cinci ntregi i dou zecimale etc.) la care se pot aduga, eventual, alte elementecare precizeaz diverse restricii.

    (10) ::= |(11) ::= |(12) ::= (13) ::= (14) ::= < denumire de relaie>[]

    [][](15) < denumire de relaie>::= (16) ::= | (17) ::= < denumire atribut> < denumire domeniu>[]

    (18) < denumire atribut>::= (19) ::= (20) ::= [](21) ::= (22) ::= (23) ::= | (24) ::= (25) ::= < denumire domeniu>[]

    Relaiile din baza de date pot avea un nume n cazul n care sunt sau sau nu dac sunt .

    Diferena dintre o i o este dat de faptul c o are extensia stocat n spaiul fizic asociat bazei de date relaionale (subforma perceptibil de tabel) pe cnd se obin ca urmare a aplicrii unei pe relaiile de baz sau alte relaii virtuale.

    O (denumit i vedere sau viziune) este obinut la momentulsolicitrii utilizatorului i este disponibil, dup obinere, pentru aplicarea unor alte eventuale de ctre ali utilizatori.

    O este un rezultat al aplicrii unei pe i/sau i este disponibil, n general, pentru un singurutilizator. i sunt definite n (schema bazei de date relaionale).

    Relaiile de baz pot fi grupate formal n urmtoarele tipuri:- nucleu;- asociere;- caracterizante;- utilitare.Relaiile de tip nucleu sunt entitile (tabelele) fundamentale ale microlumii de interes(universul lumii reale modelate). Ele reprezint de fapt "despre ce este vorba n baza de date sauce poriune din realitate se modeleaz".Relaiile de asociere sunt relaiile (tabelele) care permit materializarea asocierii dintre dou saumai multe relaii (entiti). Fiecare participant la asociere poate fi o relaie de tip nucleu,

    asociere sau caracterizant.

    18

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    19/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    Relaiile caracterizante sunt entiti (tabele) al cror rol este de a califica, descrie sau"caracteriza" alte entiti (de orice tip). Existena relaiei (entitii) caracterizante estedependent de existena relaiei (entitii) pe care o caracterizeaz: "O entitate R estedependent de entitatea S dac este imposibil s existe o realizare a lui R dac nu exist orealizare corespondent a lui S". Relaiile de asociere i cele caracterizante nu au o existenindependent ci presupun existena altor relaii n baza de date.

    n general acest mod de grupare pe aceste trei tipuri de relaiii este dependent deaplicaie. Un tabel (o relaie) poate fi privit() de unii utilizatori ca asociere, de alii ca nucleuetc. De exemplu, ntr-o baz de date care cuprinde date despre angajai i locuri de munc,entitile care se refer la locul de munc sunt tratate de ctre utilizatorul "compartimentulresurse umane" drept caracterizante n timp ce utilizatorul "compartimentul de organizare a

    produciei i a muncii" le poate trata ca nucleu. n descrierea formal a relaiei de baz au fostevideniate att intensia ct i extensia sa.

    Relaiile utilitare sunt destinate stocrii unor informaii utilitare (cum ar fi descrierearestriciilor de integritate, help-uri asociate sistemului, documentaie etc).

    Pentru intensie au fost specificate clasele de atribute care o formeaz astfel: : sunt atribute considerate "ordinare" prin faptul c nu particip la

    formarea cheilor; : ca element unic de identificare i desemnare a rndurilor (nregistrrilor,

    tuplurilor) reprezentnd calea principal de acces la rnd (tuplu); : pentru eventuala definire a unor ci de acces suplimentare la rnd

    (tuplu) din considerente care privesc optimizarea timpilor de rspuns ai unor aplicaii: : ca elemente de importan major n materializarea asocierilor dintre

    rndurile (tuplurile) relaiilor. Aceste pot avea (i au n general) asociaterestricii care s asigure coerena logic a asocierilor.

    La utilizarea fiecrei (definire, manipulare etc.) pentru se vor utiliza urmtoarele reguli [DATE86]:1o. pentru fiecare atribut care particip la formarea cheii se va specifica faptul c nu sunt admisevalori nule (NOT NULL);2o. se va crea un index care admite numai valori unice pe combinaia tuturor atributelor careformeaz cheia primar (declaraia de cheie primar este, n majoritatea imlementrilormodelului relaional, echivalent). Declaraia index-ului va fi fcut fie declarnd cmpuriledrept cheie primar cu clauza CONSTRAINT denumire_restricie PIMARY KEY sau cu

    comanda CREATE UNIQUE INDEX denumire_index ON denumire_tabela(denumire_coloana [ASC|DESC] [, ... ]);3o. se va testa existena combinaiei de valori ntre intrrile acestui index la inserarea oricruituplu (rnd) n tabel sau la modificarea valorii unei chei primare;4o. specificaiile pentru definirea cheii primare i a restriciilor asociate vor fi trecute sub formde comentariu n textul de definire sau ntr-o relaie caracterizant definit n acest scop.

    Similar, pentru fiecare , se vor utiliza urmtoarele reguli:1o. pentru fiecare atribut care particip la formarea cheii se va specifica faptul c nu admitevalori nule dac i numai dac cheia extern nu admite valori nule (NOT NULL);

    Autorii

    19

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    20/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    2o. se analizeaz dac este oportun i imperioas crearea unui index (n acest caz probabil c vaadmite valori duplicate) pe aceast cheie extern;3o. se va utiliza mecanismul de autorizare al SGBD-ului pentru a interzice operaiile on-linecapabile s violeze restriciile aplicate acestor chei externe. Aceste operaii pot fi:

    - tergere n tabela referit;- modificare a cheii primare a tabelei referite;- adugare n tabela care refer;- modificare pe cheia extern n tabela care refer.

    4o. Restriciile cheii externe vor fi incluse n specificaiile pentru programele de ntreinere abazei de date. Ideal este construirea unui singur program sau a unor primitive care smanipuleze cheia extern i care s fie apelate parametric de ctre toi utilizatorii;5o. specificaiile pentru cheia extern i restriciile asociate vor fi conservate sub form decomentarii n textul de definire sau ntr-o relaie caracterizant definit n acest scop.

    La aceste reguli vom aduga urmtoarele:6o deoarece o cheie extern materializeaz o asociere, asocierea reprezentnd o proprietatecalitativ a modelului datelor, este indicat scrierea unor programe (eventual parametrizate) detestare i verificare a coerenei logice care s semnalizeze orice violare a restriciilor. Aceste

    programe vor fi rulate periodic n conformitate cu strategia impus de administratorul bazei dedate;7o pentru cheile alternative pe care se presupune c vom crea indeci se vor utiliza aceleaireguli ca la cheile externe.

    Fiecare are o care nu trebuie, neaprat, s fie identic cu a domeniului pe care este definit. Aceast reprezinto interpretare semnatic a i poate avea (conform acestei interpretri semnatice)asociat o restricie prin care se specific care valori din suntconsiderate valide (deci i acceptate) pentru interpretarea semnatic dat.

    Extensia unei relaii este o . Aceasta are ocardinalitate care variaz n timp (se elimin/adaug tupluri).

    20

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    21/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    6. Algebra relaional

    Partea manipulativ a modelului relaional const dintr-un set de operatori cunoscui subnumele de algebra relaional mpreun cu un operator relaional de atribuire. Operatorul deatribuire asigneaz (atribuie) o expresie arbitrar a algebrei unei alte relaii.

    Algebra relaional a fost conceput de ctre E.F.CODD ca o colecie de operaiiformale asupra relaiilor (tabelelor) [CODD70, CODD72]. Fiecare operaie a algebreirelaionale are una sau mai multe relaii ca operatori i produce ca rezultat o nou relaie.Aceast relaie poate fi la rndul su subiectul unor viitoare operaii algebrice. Operanziioricrei operaii pot fi sau relaii simple sau expresii cu relaii. Codd a definit o mulime deastfel de operaii i a artat c acestea sunt complet relaionale, n sensul c ele au cel puin

    puterea de regsire a calcului relaional.Algebra relaional utilizeaz dou grupe de operatori: operatori tradiionali pe mulimi

    i operatori relaionali speciali. Aceste grupe de operatori permit efectuarea operaiilor

    corespunztoare lor.6.1. Operaii tradiionale pe mulimi

    n categoria operaiilor tradiionale pe mulimi includem reuniunea, intersecia,diferena i produsul cartezian.

    Aceste operaii au fost modificate pentru a opera mai degrab pe relaii dect pe mulimi.Pentru operaiile enumerate, cu excepia produsului cartezian, cele dou relaii operand trebuies fie compatibile cu reuniunea, adic, s fie de acelai grad i atributele lor s aparin aceloraidomenii (nu este absolut necesar ca atributele corespunztoare s aib aceeai denumire, acestlucru fiind cerut de platforma SQL utilizat). n situaiile reale operaiile algebrei relaionale nu

    sunt utilizate singular. De cele mai multe ori ele implic o combinaie de astfel de operaii. Deexemplu, operaia de reuniune, necesit dou selecii (identice ca structur a tabelelor rezultat)ntre care se efectueaz efectiv reuniunea.

    SGBD-urile actuale care implementeaz limbajul standard de manipulare a bazelor dedate SQL, n una din versiunile sale, nu pun la dispoziie n mod obligatoriu comenzi distincte

    pentru realizarea operaiilor relationale, ci o singur fraz cu structura general:SELECT ce_coloane_dorim_s_apar_n_rspunsFROM din_ce_tabele[WHERE ce_condiii_trebuiesc_ndeplinite_de_rnduri_pentru_a_fi_luate_n_considerare]

    care poate fi exprimat astfel:

    select r1.A1,...,r1.An,r2.B1,...,r2.Bm,E1(),E2(),En(),...,rn.W1,...,rn.Wnfrom r1,r2, ... ,rn[where []][clauze opionale];

    unde:- prin Ai, Bi,,Wi am desemnat atribute din schemele de relaie corespondente ri;- prin Ei() am desemnat expresii definite pe mai multe coloane din relaii r1,r2, ... ,rn sau orice

    alte expresii coninnd referiri la funcii definite de SGBD sau utilizator, constante, expresiiaritmetice sau logice etc;

    - prin r1,r2, ... ,rn specificm relaiile din care sunt citate coloane, direct sau n formulaexpresiilor, n rspuns;

    Autorii

    21

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    22/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    - prin construciile de forma ri.Ai am specificat faptul c atributul Ai este unul din atributeledin schema de relaie a relaiei ri.

    Reuniunea relaiilor. Reuniunea a dou relaii r1(X) i r2(X), cu aceeai schem de definire X,reprezint mulimea tuturor rndurilor (tuplurilor) t aparinnd lui r1 sau lui r2 sau ambelor.

    Rezultatul reuniunii este o nou relaie r3 , cu r3(X)=r1(X)r2(X). Pentru a putea realizareuniunea relaiile r1(X) i r2(X) trebuie s ndeplineasc condiiile:- s aib acelai grad;- domeniul atributului i al relaiei r1(X) i al atributului i al relaiei r2(X) trebuie s fie

    acelai.Sub form grafic reuniunea poate fi

    sugerat ca n una din figurile 11 a) sau b).n figura 11 b) relaia rezultat r3 este

    reprezentat grafic ca partea din relaiile de

    origine r1 i r2 care au aceeai schem dedefinire.Pentru exemplificare considerm

    relaiile R1 i R2 cu schemele de definire

    { }CBAYX ,,== cu extensiile

    =

    121

    1111 cba

    cbar , ( )1222 cbar = . Aplicnd operatorul de

    reuniune a celor dou relaii va rezulta o nou relaie r3 cu aceeai schem de definire Z= {A, B,

    C} cu

    ==

    122

    121

    111

    213

    cba

    cba

    cba

    rrr ceea ce poate fi exprimat n SQL astfel:

    SELECT r1.* FROM r1UNIONSELECT r2.* FROM r2

    unde prin * s-au desemnat toate atributele schemei de definire a relaiei specificate.

    Exemple:

    1.Reuniunea datelor din balana curent (Balanta) cu datele aferente balanelor arhivate nvederea analizei evoluiei conturilor, adic BalantaIstoric_Balante, ceea ce poate fiexprimat n SQL astfel:

    Select Balanta.* From BalantaUNIONSelect Istoric_Balante.* From Istoric_Balante;

    Not. Prin construcia Balanta.* am desemnat toate coloanele din tabela balana, Balanta.nefiind altceva dect specificaia prin care se spune de ce tabel aparin coloanele respective.

    a) b)Figura 11. Reuniunea relaiilor

    22

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    23/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    2. Reuniunea datelor din jurnalul curent cu cele din jurnalul arhivat n vederea vizualizriifiei unui cont (n cerere nu se specific acum filtrul de selecie):

    Select Jurnal.* From JurnalUnionSelect Istoric_Jurnal.* From Istoric_Jurnal;

    Intersecia relaiilor. Intersecia relaiilor r1(X) i r2(X) este mulimea tuturor rndurilor(tuplurilor) ce aparin att lui r1 ct i lui r2.

    Acest tip de operaiepermite gruparea ntr-o alt relaier3 a tuturor elementelor comunecelor dou relaii r1 i r2, ceea ce

    grafic este sugerat n figura 12 a)sau b).

    Fie

    =122

    121111

    1

    cba

    cbacba

    r i ( )1222 cbar = , intersecia relaiilor r1 cu r2 apare astfel:

    r3=r1 r2 adic ( )1223 cbar =

    Exemplu:

    Lista drumurilor internaionale care se regsesc descrise n drumuri naionale conformdefiniiei din subschema bazei de date din figura 13 poate fi obinut cu fraza:

    Autorii

    a) b)Figura 12. Intersecia relaiilor

    Figura 13. Exemplu de Subschema

    23

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    24/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    SELECT r1.dr, r1.drum, r1.kmi, r1.mi, r1.kms, r1.ms FROM drumint r1INTERSECT

    SELECT r2.dr, r2.drum, r2.kmi, r2.mi, r2.kms, r2.ms FROM drumnat r2;

    Diferena a dou relaii. Diferena dintre dou relaii r1 i r2 cu aceeai schem de definireX1=X2, reprezint mulimea tuturor rndurilor (tuplurilor) ce aparin lui r1, dar nu aparin luir2. Relaia rezultat va avea aceeai schem de definire X3=X1=X2.

    Reprezentarea grafic a diferenei poate fi sugerat ca n figura 14 a) sau b).

    Fie

    =

    122

    121

    111

    1

    cba

    cba

    cba

    r i

    ( )1222 cbar = , diferena dintre r1

    i r2 este:

    = 121

    1113 cba

    cbar

    Exemplu:

    Pentru subschema din figura 8 lista poriunilor de drum care nu au drenuri:

    SELECT i.dr, i.drum, i.km, i.mi, i.kms, i.ms FROM drumuri iMINUSSELECT d.dr, d.drum, d.km, d.mi, d.kms, d.ms FROM drenuri d

    Redenumirea coloanelor (atributelor). Aa cum am enunat n paragrafele anterioareoperatorii de reuniune, intersecie i diferen nu pot fi aplicai dect asupra relaiilorcompatibile cu reuniunea, adic tabele cu acelai numr de atribute, cu atributele corespondentedefinite pe aceleai domenii, denumite la fel i date n aceeai ordine. Dac atributeleindeplinesc celelate condiii exceptnd ordinea (se afl n poziii diferite) acest caz poate firezolvat simplu prin specificarea lor n frazele SQL n aceeai ordine. n cazul n care atributelecorespondente au denumiri diferite dar ndeplinesc celelalte criterii compatibilizarea lor cureuniunea poate fi realizat precednd operaia respectiv cu o operaie de redenumire a lor. Deexemplu dac dorim s vedem prin ce conturi s-au consemnat operaiunile firmei n lunacurent ar trebui s utilizm relaia Jurnal_Curent i s efectum o reuniune a coloanelorContDB i ContCR. Pentru a rezolva acest cerere vom utiliza un operator de redenumire

    (introdus n SQL prin clauza AS) a crui aplicare va precede realizarea efectiv a operaiei dereuniune, astfel:

    Select Distinct ContDB AS Simbol From Jurnal_CurentUNIONSelect Distinct ContCR AS Simbol From Jurnal_Curent;

    Operatorul de redenumire, pe care l vom nota cu , poate fi definit astfel:Fie r(X) o relaie definit pe mulimea de atribute Xi Yo alt mulime de atribute cu aceeaicardinalitate cuX. FieA1,A2,...,Ak o ordonare a atributelor din XiB1,B2,...,Bk o ordonare a

    a) b)Figura 14. Diferena relaiilor

    24

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    25/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    atributelor din Ycare asigur faptul cAiiBi (i=1,2,,k) sunt definite pe acelai domeniu. naceste condiii redenumirea, notat

    prin

    conine un tuplu t'pentru fiecare tuplu tdin r, definit astfel: t'este un tuplu din Yi t'[Bi]= t[Ai]pentru i=1,2,,k. Aceast definiie confirm faptul c schimbrile care au loc suntschimbri ale denumirii atributelor, valorile acestora rmnnd nealterate i asociindu-senoilor atribute.

    Exemplu:

    Dorim s reprezentm relaiile paterne i materne ale unui arbore genealogic prinrelaiile:

    Dac dorim s obinem o relaie care conine prinii i copii acesta ar fi o reunuiune acelor dou relaii definite anterior i instinctiv am avea pentru ea coloanele (Printe,Copil).Coloana Printe este denumit n una din relaii Tat iar n cealalt Mam fcnd astfelimposibil reuniunea prin faptul c nu au acelai nume. Aplicarea operatorului de redenumireva face posibil reuniunea lor conform modului ilustrat n figura 15.

    Aceast operaie poate fidescris n SQL astfel:

    Select Tat As Printe,Patern.Copil From PaternUnionSelect Mam As Printe,

    Matern.Copil From Matern

    Autorii

    PaternTat CopilAdam CainAdam AbelAbraham IsacAbraham Ismael

    MaternMam CopilEva CainEva SetSara IsacHagar Ismael

    Printe CopilAdam CainAdam AbelAbraham IsacAbraham IsmaelEva CainEva SetSara IsacHagar Ismael

    Figura 15. Utilizarea operatorului de redenumire

    25

    )(

    21,...,, ,...,,A21r

    kkBBBAA

    )()( Matern Patern Mam teinParTat teinPar

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    26/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    Produsul cartezian a dou relaii.Produsul cartezian a dou tabele (relaii) r1(X1) i r2(X2),notat prin r1xr2, reprezint mulimea rndurilor (tuplurilor) t, astfel nct un rnd (tuplu) t este

    concatenarea unui rnd (tuplu) t1

    r1 cu un rnd (tuplu) t2

    r2, adic t[r1]=t1[r1] i t[r2]=t2[r2].Schema relaiei rezultat X3 este reprezentat de concatenarea schemelor relaiilor implicate,adic X3= X1X2 , n condiiile n care intersecia schemelor este vid X1 X2=. Dacintersecia celor dou scheme operand nu este vid atunci schema rezultatului va coninecoloanele comune luate o singur dat i toate coloanele diferite care apar n relaiile operand.

    Implementarea practic a SGBD-urilor relaionale moderne realizeaz concatenareaschemelor relaiilor operand asigurnd unicitatea denumirilor de coloane prin calificareaacestora cu numele relaiei din care fac parte astfel nct restricia de disjunctivitate a

    schemelor s nu mai aib importan iar schema rezultatului s fie reprezentat de reuniuneaschemelor operanzilor.

    S considerm relaiile r1 cu schema de definire X={A} i r2 cu schema de definire

    Y={B}. Se poate obine o nou relaie r3 ca produs al celor dou, cu condiia ca: XY=.Astfel relaia r3 = r1 x r2 = {(ai, bi) | ai r1 i bi r2} cu schema Z dat de reuniunea schemelorde relaie r1 i r2, adic Z=XY. n exemplul din figura 16 b) elementele relaiei rezultat suntmulimea perechilor [(a,b), (x,y,z)], iar schema de definire pentru r3 va fi dat de reuniuneschemelor relaiilor r1 i r2, adic Z={A, B}.

    n general, aceasta operaie se utilizeaz destul de rar singular. Ea este o operaie depregtire a datelor n vederea realizrii operaiilor speciale ale algebrei relaionale. Utilizarea sasingular este uzual n cazuri similare urmtoarelor exemple.

    Reprezentarea grafic a produsului cartezian a dou relaii r1 i r2 este sugerat n figura16 a) sau b).

    Exemple:

    1. Considerm dou relaii cu denumirile de MATERIALE (alias M) i FURNIZORI (aliasF), avnd schemele de definire:M(CODM, DEMAT, UM, PRE_LIVR) iF(CODF, DENFURNIZOR, LOCALITATEA) care au urmtoarele instane:

    Tabela 2. MATERIALECODM DENMAT UM PRET_LIVR

    1111 CABLU COAXIAL Ml 10

    1112 CABLU ELECTRIC Ml 15

    zb

    yb

    xb

    za

    ya

    xa

    z

    yx

    b

    a

    b)

    a)Figura 16. Produsul cartezian alrelaiilor

    26

    PRODUCT

    R1

    R2

    x R3

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    27/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    Tabela 3. FURNIZORICODF DENFURNIZOR LOCALITATEA

    100 COMPUTERLAND BUCURESTI

    101 LASER CSI CONSTANTASe observ c MF = , ceea ce nseamn c are sens efectuarea produsului dintre cele

    dou relaii MxF, obinndu-se o nou relaie cu denumirea MATERIALE-FURNIZORI (tabela4):

    Tabela 4. MATERIALE-FURNIZORICODM DENMAT UM PRET_LIVR CODF DENFURNIZOR LOCALITATEA

    1111 CABLU COAXIAL Ml 10 100 COMPUTERLAND BUCURSTI

    1111 CABLU COAXIAL Ml 10 101 CSI CONSTANTA

    1112 CABLU ELECTRIC Ml 15 100 COMPUTERLAND BUCURSTI

    1112 CABLU ELECTRIC Ml 15 101 CSI CONSTANTA

    Deci, semnificaia practic a produsului cartezian corespunde generrii unei tabele(relaii) din dou tabele (relaii) prin combinarea fiecrui rnd (tuplu) din prima relaie cufiecare rnd (tuplu) al celei de a doua tabele (relaii).

    Produsul cartezian al cele doua relaii se exprim n SQL astfel:

    SELECT * FROM MATERIALE, FURNIZORI;

    2. O fabric productoare de automobile produce toate automobilele sale ntr-o gamunitar de culori. Dac dorim s meninem o eviden a acestora sub forma (AUTO1):

    AUTO1Marca Tip_auto Cilindree Culoare

    Dacia SuperNova Berlin 1400 Alb

    Dacia SuperNova Berlin 1400 Rou

    Dacia SuperNova Berlin 1400 Verde

    Dacia 1310 Break 1300 Rou

    Dacia 1310 Break 1300 Verde

    Dacia 1310 Break 1300 Alb

    atunci valorile atributelor Marca, Tip_Auto, Cilindree se vor duplica de attea ori cte culoriavem.

    Pentru a evita aceast situaie n baza de date vor fi meninute dou tabele:

    AUTO CULOARE

    Marca Tip_auto Cilindree Culoare

    Dacia SuperNova Berlin 1400 Alb

    Dacia 1310 Brek 1300 Rou

    Verde

    Autorii

    27

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    28/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    Obinerea unei liste cu toate tipurile de automobile i culorile n care se produc, poate firealizat prin produsul cartezian dintre:

    AUTO x CULOAREceea ce permite obinerea relaiei iniiale AUTO1 printr-o fraz de genul:

    SELECT AUTO.*, CULOARE.* FROM AUTO, CULOARE;

    6.2. Operaii relaionale speciale

    n aceast categorie de operaii vom include selecia, proiecia, jonciunea (join) idiviziunea.

    Operaia de selecie. Operatorul algebric de selecie produce o subrelaie r' (subset,

    submulime) "orizontal" a unei relaii r date, supuse operaiei de selecie. Subrelaia obinutva conine multitudinea rndurilor relaiei supuse seleciei care satisfac un predicat Pspecificat. Relaia rezultat va avea aceeai schem de definire ca i relaia operand.

    Fie o relaie r cu schema X, A un atribut aparinnd lui X,a un element al atributului Ai t multitudinea rndurilor (tuplurilor) ce satisfac o anumit condiie. Operaia de selecie poatefi exprimat astfel:

    r' (X) = {tr | t[A] = a}.Reprezentarea grafic a operaiei de selecie este redat n figura 17.

    Predicatul P poate fi o expresie logic care poate combina condiii simple cu ajutorulconectivelor logice AND (), OR() i NOT().

    Operaia de selecie poate fi notat astfel )(rF , unde Feste funcia (expresia) caredescrie predicatul iarreste relaia. Mai precis, fiind dat o relaie r(X), o formul propoziional(expresia predicatului)FpeXeste o formul obinut combinnd condiii atomice de tipulABsauAc cu ajutorul conectivelor(I - And), (SAU - Or) i (Nu Not), unde:- este un operator de relaie (=, >,

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    29/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    n figura 17 b) se sugereaz faptulc din multitudinea rndurilor tabeleise extrag numai acelea haurate.

    Numrul de tupluri din relaiarezultat (cardinalitatea tabeleirezultat) este mai mic dect (sau celmult egal cu) cel al relaiei operand.

    Exemplu:

    1. Presupunem o relaie MATERIALE cu schema de definireX={CODM,DENMAT,UM,PU,STOC_EXISTENT,STOC_NORMAT}

    i valorile asociate conform tabelei 5.Tabela 5 MATERIALE

    CODM DENMAT UM PU STOC_ EXISTENT

    STOC_NORMAT

    1111 CABLU COAXIAL Kg 10 12000 11000

    1113 CABLU ELECTRIC Kg 15 15000 18000

    1115 CONECTOR MAMA BUC 50 500 300

    1116 CAPSE BUC 1.5 12 11

    1120 CONECTOR TATA BUC 1 80 80

    .... ...............................

    Presupunem c dorim s selectm toate materialele ale cror coduri sunt mai mici dect1116 i au stocul existent mai mare dect stocul normat, adic:

    n urma operaiei de selecie va rezulta subrelaia redat n tabela 6.

    Tabela 6. MATERIALE_SELECTATECODM DENMAT UM PU STOC_

    EXISTENTSTOC_

    NORMAT

    1111 CABLU COAXIAL Kg 10 12000 11000

    1115 CONECTOR MAMA BUC 50 500 300

    Exemple:

    1) Se solicit listarea tuturor drumurilor judeene din judeul Arge (figura 13). n acestcaz tabela implicat, la nivel instituiei CESTRIN-AND, este DNJUD, iar condiia (predicatul)de selecie este JUD = "AG". Prin acest predicat vor fi selectate din tabel numai acele rnduricare conin n coloana JUD valoarea "AG", adic )("" DNJUDAGJUD= ceea ce se exprim nSQL astfel:

    Autorii

    a) b)

    Figura 17. Operaia de Selecie

    29

    )()__()1116( MATERIALENORMATSTOCEXISTENTSTOCCODM >>

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    30/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    SELECT * FROM DNJUD WHERE JUD='AG';

    2) Se solicita listarea tuturor autostrazilor din judeul Arge (figura 13). Este implicattabela DNJUD, iar predicatul de selecie implic coloanele JUD (judeul) i DR (categoriedrum) astfel: JUD = "AG" i DR = "A", adic )("""" DNJUDADRAGJUD == ceea ce poate fiexprimat n SQL astfel:

    SELECT * FROM DNJUD WHERE JUD='AG' AND DR='A ';

    3) Se solicit extragerea din jurnal a tuturor operaiilor prin Casa n Lei. Este implicattabela Jurnal iar condiia de selecie este ca fie ContDb fie ContCr s fie egale cu 5311, adic

    )("5311""5311" JurnalContCrContDb == ceea ce se exprim n SQL prin:

    Select * From Jurnal Where ContDb="5311" Or ContCr="5311";

    4) Se solicit extragerea din balan a conturilor din clasa de cheltuieli (6). Va fi implicattabela Balanta iar condiia de selecie este dat de prezena, pe prima poziie din simbol, a

    codului clasei (6). Aceast cerere poate fi exprimat prin )('6')1,1),(( BalanaSimbolTrimSubstr = ,unde Trim() este o funcie care elimin eventualele spaii din faa valorii pentru Simbol iarSubstr(c,i,l) extrage din irul de caractere c subirul din poziia i pe lungime l. Aceast cerere

    poate fi exprimat n SQL astfel:Select * From Balanta Where Simbol Like "6*";unde expresia format cu operatorul Like, Simbol Like 6* este echivalent cuSubstr(Trim(Simbol),1,1).

    Operaia de proiecie. Proiecia unei relaii r cu schema X=(A1,A2,....,An ) pe atributeleA1,A2,.....,Am (unde m

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    31/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    se extrag numai acelea haurate, proiecia producnd o descompunere vertical a tabelei deorigine.

    Exemple:

    1) Considernd relaia MATERIALE_CONTRACTATE cu valori asociate conformtabelei 7.

    Tabela 7. MATERIALE_CONTRACTATENRC# CODM# PU CANT_CONTR

    100 1111 10 10000

    101 1112 15 20000110 1111 10 30000

    115 1113 20 10000

    120 1112 15 5000

    Prin aplicarea operatorului de proiecie asupra atributului CODM# aparinnd relaieiMATERIALE_CONTRACTATE, deci

    CODM(MATERIALE_CONTRACTATE) se obine:CODM#-----------

    111111121113

    Se observ c s-a obinut lista materialelor contractate, din care dublurile au fostexcluse. Acest operaie poate fi descris n SQL astfel:Select Distinct CODM From MATERIALE_CONTRACTATE;

    2) Se cere indicativul drumului public i lungimea pentru drumurile care leag localitileBUCURESTI-PITESTI (vezi schema din figura 13).

    La rezolvarea acestei cereri se va utiliza tabela DRUMURI din care vor fi selectateatributele (coloanele) DRUM i LUNGIME la care se aplic condiia (predicatul) de selecie(INCEPUT="BUCURESTI" i Sfrit="PITESTI") sau (INCEPUT="PITESTI" i

    Sfrit="BUCURESTI"). Partea marcat n condiie, permite definirea oricruia din sensurileunui DRUM:SELECT DISTINCT DRUM, LUNGIME FROM DRUMURI WHERE(UPPER(INCEPUT)='BUCURESTI' AND UPPER(Sfrit)='PITESTI') OR(UPPER(SfritT)='BUCURESTI' AND UPPER(INCEPUT)='PITESTI')

    3) Selecia din Jurnal a formulelor Contabile i sumelor aferente poate fi obinut cu fraza:SELECT Jurnal.ContDB As [Cont Debitor], Jurnal.ContCR As [Cont Creditor],Jurnal.Valoare FROM Jurnal;a crei execuie produce un tabel de tipul:

    Cont Debitor Cont Creditor ValoareAutorii

    31

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    32/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    321 5311 1606267

    4013 5311 1615500

    421 5311 1831458

    5311 581 9130000

    6012 5311 3903152

    6018 5311 1473567

    604 5311 1018852

    607 371 992061780

    707 121 1168997903

    766 121 50101

    Operaia de jonciune. Operaia de jonciune (JOIN) este una din cele mai importante operaiiale algebrei relaionale. Aceasta ne permite s stabilim conexiuni ntre datele coninute ndiverse relaii, s comparm valorile coninute n ele i astfel s utilizm caracteristicilefundamentale ale modelului reieite din bazarea sa pe valori. Operaia de jonciune este oderivaie a produsului cartezian (n anumite situaii este redundant cu acesta). n generalrealizarea produsului cartezian este o operaie laborioas i costisitoare. Operaia de jonciune

    presupune utilizarea unui calificator care s permit compararea valorilor diferitelor (sauacelorai) atribute din dou relaii (sau dintr-o singur relaie).

    Operaia de jonciune are sens i i gsete o larg aplicabilitate n situaia n careintersecia schemelor relaiilor este diferit de zero (adic au cel puin un atribut comunaparinnd aceluiai domeniu, fr s fie obligatoriu ca denumirea acestora s fie identic), ceeace poate fi exprimat astfel:

    r1 r2 pentru X1X2#.

    Notaiile consacrate pentru operaia de jonciune sunt:- r1r2;- JOIN (r1,r2/);- r1 x r2 []

    unde este un calificator multi-atribut care permite compararea atributelor relaiei r1 cuatributele relaiei r2. Operatorii de comparaie atribuii lui pot fi: , , i .

    A treia notaie sugereaz faptul c operaia de jonciune este un produs cartezian asupracruia se aplic o restricie .

    Reprezentarea grafic a operaiei de jonciune este similar celei a produsului cartezian.n general, jonciunea combin dou sau mai multe relaii, nu neaprat distincte, pe toate

    atributele comune lor. Deci, se poate spune c operaia de jonciune a dou relaii r1 i r2, care au

    cte un atribut aparinnd aceluiai domeniu, produce o nou relaie r3 ale crei rnduri (tupluri)se formeaz prin concatenarea rndurilor (tuplurilor) celor dou relaii care satisfac restricia asupra valorilor asociate atributelor ce se compar, urmat de eliminarea unuia dintre atributelecomune. Atributele pe care se face jonciune se numesc "atribute de jonciune".

    n activitatea practic pot apare mai multe cazuri particulare de jonciune pe care le vomevidenia n cele ce urmez.

    Jonciunea natural. Jonciunea natural (natural join), notat cu simbolul , estejonciuneabazat pe egalitatea atributelor de jonciune ale relaiilor implicate. Dac relaiile r1(X1) i r2(X2)au egale atributele AiX1 i respectiv BjX2 atunci jonciunea natural este jonciunea dup

    calificarea Ai=Bj iar rezultatul jonciunii este o relaie r3 cu schema definit pe reuniuneamulimilor de atribute ale operanzilor dar cu atributele comune luate o singur dat, adic pe

    32

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    33/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    mulimea (X1X2)-(X1X2). Atributele comune n relaiile operand le vom nota cu X1,2 i suntreprezentate de intersecia schemelor X1 cu X2, adic X1,2=(X1X2) iar t1[X1,2]=t2[X1,2]. Cuaceste precizri jonciunea natural r1r2 a lui r1(X1) cu r2(X2) este o relaie definit pe (X1X2)

    astfel:r1r2={t(X1X2) | t1r1 i t2r2 cu t[X1]=t1 i t[X2]=t2} sau, mai concisr1r2={t(X1X2) | t[X1]r1 i t[X2]r2}

    Dac pentru fiecare tuplu t1 din X1 exist un tuplu t n r1r2 astfel nct t[X1]=t1 isimilar pentru fiecare tuplu t2 din X2 exist un tuplu t n r1r2 astfel nct t[X2]=t2 vom spune c

    jonciunea estejonciune complet (adic fiecare tuplu din operanzi contribuie la formarea acelpuin un tuplu n rezultat). Dac exist tupluri n r1 sau r2 care nu contribuie la rezultatul r1r2vom spune c avem tupluri balansate (dangling tuples) n relaiile joncionate. Numrul detupluri ale jonciunii r1r2 va fi cuprins ntre 0 i produsul cardinalitilor |r1|x|r2| relaiiloroperand cu urmtoarele precizri:- dac jonciunea lui r1 cu r2 este complet atunci numrul su de tupluri va fi cel puin egal

    cu Max(|r1|,|r2|);- dac X1X2 conine o cheie a lui r2 jonciunea lui r1 cu r2 conine cel mult |r1| tupluri;- dac X1X2 este o cheie primar a lui r2 atunci vom avea o restricie referenial ntre

    X1X2 n r1 i acest cheie a lui r2 iar jonciunea conine exact |r1| tupluri.Operatorul de jonciune natural este:

    - comutativ, adic r1r2 este ntotdeauna egal cu r2r1 ;- distributiv, adic r1(r2r3)= (r1r2)r3.Dac X1#X2 atunci rezultatul jonciunii este definit ntotdeauna pe reuniunea X1X2 i conine catupluri produsul cartezian alr1 cu r2, adic r1xr2. Acest produs cartezian poate produce tuplurinesemnificative n rezultat. Pentru a elimina acest inconvenient a fost introdus un operator de

    jonciune derivat, denumit tetha-join (jonciune teta), definit ca produs cartezian urmat deselecie, astfel: r1F r2 = F (r1r2). Dac condiia F este o conjuncie de expresii atomiceformate cu operatorul de egalitate atunci operatorul de jonciune este denumit equi-join.

    Exemple:

    1) Din relaia descris n tabela 5 (MATERIALE) i relaia descris n tabela 7(MATERIALE_CONTRACTATE) dorim s extragem cantitile contractate din fiecarematerial astfel pentru a obine o tabel cu schema :SELECT m.codm, m.denmat, m.um, m.pu, c.cant_contr

    FROM materiale m, materiale_contractate cWHERE m.codm=c.codm;

    unde m i c sunt aliasuri ale tabelelor dup care apar.

    2) Considerm relaiile r 1 i r2 cu schemele X1 = {A,B,C} i respectiv X2={B,C,D}. nurma operaiei de jonciune natural a lui r1 cu r2 va rezulta r3 cu X3={A,B,C,D} redat n figura19.r1

    A B C r3 = r1r2a1 b1 c1a2 b2 c2 A B C D

    a3 b1 c2 a1 b1 c1 d1Autorii

    33

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    34/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    a4 b2 c3 a1 b1 c1 d2

    r2 a2 b1 c1 d1B C D a2 b1 c1 d2b1 c1 d1 a4 b2 c3 d3b1 c1 d2b2 c3 d3

    Figura 19. Jonciunea natural a lui R1 cu R2 pe coloanele B i C

    3) Se dorete listarea tuturor drumurilor naionale pe judee, din subschema prezentat nfigura 13, astfel:

    DJDP ADRESA DRUM KMI MI KMS MS Lungime

    Coloanele (atributele) DJDP i ADRESA apar n tabela (relaia) DJDP (DireciiJudeene de Drumuri i Poduri) iar restul coloanelor (DRUM, KMI, MI, KMS, MS,LUNGIME) apar n tabela DNJUD (Reea Drumuri Naionale pe Judee). Pentru a rspunde la

    aceast cerere se va efectua o jonciune natural ntre tabelele DJDP i DNJUD pe atributulJUD.

    Predicatul jonciunii este:DJDP.JUD = DNJUD.JUD

    n situaia n care operatorul de comparaie este > avem de a face cu "jonciune maimare dect...". n mod asemntor jonciunea mai poate avea i alte denumiri n funcie deoperatorul de comparaie luat n considerare.

    Autojonciunea. Autojonciunea relaiei r dup atributul Ai este jonciunea relaiei r cu ea nsidup predicatul Ai=Aj, ceea ce se poate exprima astfel: JOIN(r,r/A i=Aj).

    Exemplu:

    Se dorete listarea drumurilor pe judeele pe care le parcurg cu poriunile de drumaferente pentru toate drumurile naionale (subschema din figura 13). Tronsoanele de drum vorfi listate n ordinea natural de continuitate. Pentru rezolvarea acestei cereri va fi implicattabela DNJUD creia i se va aplica o autojonciune pe coloana DRUM. Deoarece operaia de

    jonciune implic dou relaii (tabele) la intrare vom conveni faptul c tabelei implicate DNJUDi se vor atribui dou supranume (alias): DNJUD alias R1 i DNJUD alias R2. Coloaneleselectate vor fi: . n acest caz predicatul va arta astfel:

    R1.DRUM = R2.DRUM mpreun cu relaia de ordine dintre rndurile (tuplurile) rezultate:R2.KMI Ascendent, R2.MI Ascendent, R2.KMS Ascendent, R2.MS Ascendent. Deoareceasocierea implicat n aceast cerere este definit recursiv (DNJUD la DNJUD prin DRUM) vatrebui s introducem n cerere i condiia ca rezultatul s fie format din tupluri distincte(DISTINCT).

    Exemplu:

    Dorim s obinem din relaia Angajat, lista cu Nume Angajat, Prenume Angajat, NumeSo(ie), Prenume So(ie) ceea ce implic o autojonciune a relaiei Angajat cu ea nsi. RelaiaAngajat este:

    34

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    35/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    AngajatCNP Sot Nume Prenume

    1500223010017 Ion Ion

    1520110402345 2531017337581 Ionescu Claudiu

    2531017337581 1520110402345 Ionescu Maria

    iar cererea SQL care realizeaz autojonciunea poate arta astfel:

    SELECT Angajat.Nume, Angajat.Prenume, Angajat_1.Nume, Angajat_1.PrenumeFROM Angajat INNER JOIN Angajat AS Angajat_1 ON Angajat.CNP = Angajat_1.Sot;

    iar rezultatul este:Angajat.Nume Angajat.Prenume Angajat_1.Nume Angajat_1.Prenume

    Ionescu Claudiu Ionescu Maria

    Ionescu Maria Ionescu Claudiu

    Pentru relaia Angajat SGBD-ul utilizat a creat un alias (Angajati AS Angajati_1) pentru aputea utiliza numele su la calificarea atributelor (de jonciune, de regul, dar nu are importandac se calific i alte tipuri).

    Jonciune extern (outer join). n rezultatul tipurilor de jonciune prezentate pn acumapreau numai rndurile care se obineau din jonciunea rndurilor celor dou relaii operand(conform condiiei de jonciune). Rndurile dintr-o relaie operand fr corespondent n cealaltrelaie operand nu apreau n rezultatul jonciunii. Exist totui numeroase cazuri n care esteutil s apar n rezultatul jonciunii i astfel de rnduri dintr-o relaie operand fr corespondentde jonciune n cealalt relaie operand. Jonciunea care ofer aceast posibilitate a fost numit

    jonciunea extern [DATE86]. Operatorul de jonciune extern are trei variante. Pentru definireaacestor variante vom considera dou relaii r1 i r2 pe care se aplic operandul de jonciune.Pentru exemplificare vom considera dou relaii astfel:

    r1 Nume Loc_de_Munc r 2 Loc_de_Munc efAnton Vnzri Producie AdamBarbu Producie Achiziie Radu

    Costea Achiziie

    Cu aceste precizri operatorul de jonciune extern este definit astfel:- r1 LEFTr2 care include n rezultat toate tuplurile din relaia r1 i numai acele tupluri din r2

    care au corespondent n r1, conform modului ilustrat n relaia:r1 LEFTr2 Nume Loc_de_Munc ef Anton Vnzri NullBarbu Producie AdamCostea Achiziie Adam

    - r1 RIGHTr2 care include n rezultat toate tuplurile din relaia r2 i numai acele tupluri din r1care au corespondent n r2, conform modului ilustrat n relaia:

    r1 RIGHTr2 Nume Loc_de_Munc ef Barbu Producie AdamCostea Producie AdamNull Achiziie Radu

    Autorii

    35

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    36/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    - r1 FULLr2 care include n rezultat toate tuplurile din relaia r1 i r2 care au corespondent ituplurile din ambele care nu au corespondent, conform modului ilustrat n relaia:

    r1 FULLr2 Nume Loc_de_Munc ef Anton Vnzri NullBarbu Producie AdamCostea Producie AdamNull Achiziie Radu

    Exemple:

    1) n rezultatul (obinut prin jonciune) care ofer date despre clienii i produselecomandate de acetia se dorete s apar i date despre produsele fabricate dar care nu au fostnc solicitate de nici un client. Produsul fabricat dar necomercializat nc nu are corespondentn relaia beneficiari.

    Fie relaiile BENEFICIARI i PRODUSE din figura 20.

    BENEFICIARICOD DENUMIRE ADRESA COD_PRODUS

    101 CESTRIN SOVEJA 115 40542

    102 ASE CSIE DOROBANTI 40521

    PRODUSECOD_PRODUS DENP CARACTERISTICI

    40521 Coprocesor 66 MHz

    40542 486;DX2 66 Mhz; 4Mb

    41736 Statie lucru IBM Compatibil

    Figura 20. Relaiile BENEFICIARI i PRODUSERezultatul solicitat mai sus se obine prin jonciunea extern a celor dou relaii pe

    atributul COD_PRODUS i arat astfel:

    COD DENUMIRE ADRESA COD_PRODUS DENP CARACTERISTICI

    101 CESTRIN Soveja 115 40542 Coprocesor 66 MHz

    102 ASE DOROBANI 40521 AT486;DX2 66 MHz; 4 Mb41736 Staie lucru IBM compatibil

    Se observ faptul c pentru produsul "Staie lucru" nu exist n rspuns valori ncoloanele corespunztoare relaiei BENEFICIARI.

    2) Obinerea liniilor necesare pentru balana curent utilizeaz subschema bazei de dateilustrat n figura 21 pentru care condiia de jonciune specific includerea n rezultat a tuturorrndurilor din Balanta i numai a acelor rnduri din tabela Plan_de_Conturi pentru care valoareadin coloana Simbol este egal cu o valoare Simbol din Balanta.Fraza SQL care realizeaz jonciunea este:SELECT DISTINCT Balanta.[An Balanta], Balanta.[Luna Balanta], Balanta.Simbol,Plan_de_Conturi.Descriere, Plan_de_Conturi.DescrExt, Format(Balanta.[DbIan], "#,#00.00")

    AS DbIan, Format(Balanta.[CrIan],"#,#00.00") AS CrIan, Format(Balanta.[DbPrec],"#,#00.00")AS DbPrec, Format(Balanta.[CrPrec], "#,#00.00") AS CrPrec, Balanta.DbLuna,

    36

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    37/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    Balanta.CrLuna, (Balanta.DbIan+ Balanta.DbPrec+ Balanta.DbLuna) AS DbTotal,(Balanta.CrIan+Balanta.CrPrec +Balanta.CrLuna) AS CrTotal,(IIf((Balanta.DbIan+Balanta.DbPrec+ Balanta.DbLuna)>Balanta.CrIan+ Balanta.CrPrec+Balanta.CrLuna), (Balanta.DbIan+Balanta.DbPrec+Balanta.DbLuna)-(Balanta.CrIan+

    Balanta.CrPrec+Balanta.CrLuna),0)) AS SoldDB, (IIf((Balanta.DbIan+Balanta.DbPrec+Balanta.DbLuna)

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    38/48

    BAZE DE DATE RELAIONALE. IMPLEMENTAREA CONCEPTELOR N SQL

    SELECT DISTINCT Balanta.[An Balanta], Balanta.[Luna Balanta], Balanta.Simbol,Plan_de_Conturi.Descriere, Plan_de_Conturi.DescrExt, Format(Balanta.DbIan, "#,#00.00") ASDbIan, Format(Balanta.CrIan,"#,#00.00") AS CrIan, Format(Balanta.DbPrec, "#,#00.00") AS

    DbPrec, Format(Balanta.CrPrec, "#,#00.00") AS CrPrec, TotalDB.DbLuna, TotalCR.CrLuna,(Balanta.DbIan+ Balanta.DbPrec+ Balanta.DbLuna) AS DbTotal, (Balanta.CrIan+Balanta.CrPrec+ Balanta.CrLuna) AS CrTotal, (IIf((Balanta.DbIan+ Balanta.DbPrec+Balanta.DbLuna)>(Balanta.CrIan+Balanta.CrPrec+Balanta.CrLuna),(Balanta.DbIan+Balanta.DbPrec+Balanta.DbLuna)-(Balanta.CrIan+Balanta.CrPrec+Balanta.CrLuna),0)) AS SoldDB, (IIf((Balanta.DbIan+ Balanta.DbPrec+ Balanta.DbLuna)20 Or [Angajat]![Cod_Loc]=101));

    b) ca reuniune de seleciiSELECT Angajat.CNP, Angajat.Nume, Angajat.VrstaFROM AngajatWHERE (([Angajat]![Salariu]>20))UNIONSELECT Angajat.CNP, Angajat.Nume, Angajat.VrstaFROM AngajatWHERE (([Angajat]![Cod_Loc]=101));

    ambele exprimri producnd acelai rezultat:CNP Nume Vrsta

    151 Ion PREDA 51

    150 Adi ADAM 52

    149 Nicu STEFAN 53

    148 Ion RADU 54

    250 Mara CUCU 52

    2. O selecie pe predicatul F1F2 pe relaiaR este echivalent cu o intersecie de selecii peF1i respectivF2 pe relaiaR: )()()( 2121 RRR FFFF ;

    3. O selecie pe predicatulF1F2 pe relaiaR este echivalent cu o diferen de selecii pe F1

    i respectivF2 pe relaiaR: )()()( 2121 RRR FFFF .

    42

  • 8/3/2019 5. Baze de Date CA Suport Pentru Sisteme de Tip ERP

    43/48

    SISTEME INFORMATICE FINANCIAR-CONTABILE

    Exemple:

    Considerm schema bazei de dateAngajat(CNP, Nume, Vrsta, Salariu, Cod_Loc)Loc_de_Munc(Cod, Denumire, ef)Cu extensiile relaiilor din figura 25.

    a) Dorim s obinem lista CNP, Nume, Vrsta cu angajaii care au salariul mai mare de25 milioane. Acest cerere este formulat n termenii algebrei relaionale ca o

    proiecie pe CNP, Nume, Vrsta din selecia din relaia Angajat dup pred