+ All Categories
Home > Documents > BDD_Prezentare

BDD_Prezentare

Date post: 06-Apr-2018
Category:
Upload: sergiu-alexandrov
View: 225 times
Download: 0 times
Share this document with a friend

of 446

Transcript
  • 8/3/2019 BDD_Prezentare

    1/445

    Capitolul 1. Modelul relaionalModelul relaional ca i orice alt model de date

    utilizat n proiectarea logic a bazelor de dateelibereaz utilizatorul de cunoaterea detaliilordespre structura fizici metodele de acces la date.

    El are dou avantaje suplimentare:

    - e simplu, structurile de date snt omogene nform de relaii tabelare. `- este riguros din punct de vedere matematicgraie faptului c se sprijin pe teoria matematic arelaiilorilogic de ordinul unu.- Modelul relaional a fost propus de E. Codd n1970.

  • 8/3/2019 BDD_Prezentare

    2/445

    Orice model de date, trebuie s se bazeze pe treicomponente: structuri de date, restricii de integritate

    i operatorii de manipulare a datelor.Structurile de date. Structurile sunt definite deun limbaj de definire a datelor (data definitionlanguage). Datele n modelul relaional sunt

    structurate n relaii bidimensionale. Elementeleprincipale ale structurii relaionale sunt relaiile,tuplurile, atributele, domeniile.

    Restriciile de integritate. Prin integritatea

    datelor se subnelege c datele rmn stabile, nsigurani corecte. Integritatea n modelul relaionaleste meninut de restricii interne.

  • 8/3/2019 BDD_Prezentare

    3/445

    -Manipularea datelor.Relaiile pot fi manipulateutiliznd un limbaj de manipulare a datelor (data

    manipulation language). n modelul relaional, limbajulfolosete operatorii relaionali bazai pe conceptulalgebrei relaionale.

    1.1. Structura relaional a datelor

    Unul din avantajele modelului relaional rezid nomogenitatea lui. Toate datele sunt structurate ntabele, fiecare linie ale crorare acelai format. Linia

    ntr-un tabel reprezint un obiect (sau o relaie dintreobiecte) din lumeanconjurtoare.

  • 8/3/2019 BDD_Prezentare

    4/445

    1.1.1. Atribute i domenii

    n modelul relaional fiecare coloan a unei linii dintr-untabel corespunde noiunii de cmp din fiiere. Cmpuleste cea mai mic unitate accesibil de date. Fiecarecmp poate conine un anumit tip de date (integer, real,

    character, string etc.), pentru care se specific numrulnecesar de octei de memorie.Definiia 1.1. Fie U o mulime nevid de elementeA1,A2,...,An, numite atribute. Mulimea U ={A1,A2,...,An} se numete universul unei baze de daterelaionale sau mulimeuniversal.

  • 8/3/2019 BDD_Prezentare

    5/445

    Definiia 1.2.Domeniul unui atribut Ai din U, 1 i n,

    notat cu dom(Ai), este o mulimefinit de valori de acelaitip care le poate primi atributul Ai.

    Domeniul este simplu, dac elementele sale sunt atomice

    (adic nu pot fi descompuse din punctul de vedere alSGBD-ului). Atributul ce are un domeniu de valori simpluse numeteatribut atomic. Domeniul unei submulimi R auniversului U , se noteaz dom(R), este uniunea tuturordomeniilor atributelor din R, adic dom(R) =AiRdom(Ai), unde dom() =, dac R=.

  • 8/3/2019 BDD_Prezentare

    6/445

    n modelul relaional fiecare tabel reprezint orelaie.

    Atributele sunt nite identificatori pentru adifereniai marca coloanele tabelului.

    Toate atributele ce apar ntr-un tabel trebuie sfie distincte is fie incluse n universul U.

    Atributele au un caracter global n baza de date:dac un nume denot dou coloane n tabele

    distincte n aceeai baza de date, atunci elreprezintacelai atribut.

  • 8/3/2019 BDD_Prezentare

    7/445

    Relaiatabelar cu i linii ij coloane are i*j elemente.Fiecare element este o valoare dintr-un domeniu simplu.

    Cu toate c atributele n universul U trebuie s fie distincte,domeniile acestor atribute nu trebuie neaprat s fiedisjuncte.

    De exemplu, managerul n acelai timp poate fi funcionar.Deci domeniile atributelor MANAGER iFUNCIONAR nu sunt disjuncte, adic MANAGER iFUNCIONARsunt definite pe acelai domeniu (cu toate

    c atributele respective pot avea i valori distincte).

  • 8/3/2019 BDD_Prezentare

    8/445

    Convenie. Mai departe vom utiliza urmtoarelenotaii. Universul U={A1,A2,...,An} i oricesubmulime a lui, R=(Ai1,.-.,Aik}, vor fi reprezentateca string-uri, adic

    U=A1...An,R = Ai1Aik.

    Vom folosi AiU, n loc de {AiU} pentru "Ai esteo submulime a mulimii U".Reuniunea YZ a dou mulimi Y i Z va fireprezentat de simbolul YZ, unde operaiabinar

    uniunea, "", este omis.Mulimile Y i Z pot fi i mulimi vide, fiindcZ=Z, Y=Y i =.

  • 8/3/2019 BDD_Prezentare

    9/445

    Cu litere majuscule de la nceputul alfabetuluilatin vom nota atributele singulare, iar cu cele de

    la sfritul alfabetului latin - mulimi de atribute.1.1.2.Tupluri

    n sistemele cu fiiere o mulime de cmpuri ce e

    conceput ca o unitate de salvare i cutare senumetenregistrare. nregistrarea are un formatspecific i depinde de tipurile de date ale

    cmpurilor. O linie dintr-o relaie tabelarcorespunde nregistrrii din fiiere i n teoriarelaional se numetetuplu.

  • 8/3/2019 BDD_Prezentare

    10/445

    Definiia 1.3. Fie R o submulime a universului

    U, RU, unde R i fie dom(R) domeniulmulimii R. Tuplu se numete o funcie,t:Rdom(R), din R n dom(R), adic

    t = {(Ai1,a1),...,(Aik,ak)}, Unde orice Aij, 1, j k, este un atribut n R i

    un argument al lui t, iar orice aj, 1 < j < k, este o

    valoare n dom(Aij).

  • 8/3/2019 BDD_Prezentare

    11/445

    Defniiia 1.4. Fie X=Bi...Bmo submulime

    proprie a mulimii R, XR, unde X. X-valoarea tuplului t, notat cu t[X], este

    t[X] = {(Bj, bj)|bj=t(Bj)=t(Aip),

    1 j m, p{1,...,k}}. Dac X=Aij, j{1,..,k}, atunci Aij-valoarea

    tuplului t se mai numete Aij-component a

    tuplului t.

  • 8/3/2019 BDD_Prezentare

    12/445

    Ultima definiie ne spune, c t(Aij)=t[Aij]=ajpentru ajdom(Aj). Deci nu vom difereniasimbolurile t(Aij) i t[Aij] pentru un atributsingular Aij din U.Pentru comoditate tuplul t i X-valoarea

    tuplului t vor fi notatet=

    i

    t[X]=,respectiv.

  • 8/3/2019 BDD_Prezentare

    13/445

    ns, dac coloanele tabelului ce corespund

    mulimilorR i X sunt marcate cu atribute dinR i X, iar ordinea atributelor ce marcheazcorespund ordinii atributelor n R i X, atunci

    notaiile tuplului t i X-valorii tuplului t pot fisimplificate respectiv

    t =

    i t[X]=.

  • 8/3/2019 BDD_Prezentare

    14/445

    Deci putem reprezenta printr-un string nunumai o mulime de atribute, dar i o mulimede valori. Dar permutarea atributelor ntr-untabel va trebui reflectat n tupluri,

    permutndu-le componentele. Cu toate cstring-urile ce reprezint tuplurile iniial ifinal vor fi diferite, vom considera c aceste

    tupluri sunt identice.

  • 8/3/2019 BDD_Prezentare

    15/445

    n tuplul t= distingem dou

    componente - string-ul de atribute Ai1...Aik,care este invariant n timp i string-ul de valoria1...ak, care este foarte dinamic. Partea

    invariant a tuplului vom numi-o schematuplului (uneori se noteaz sch(t)). ndat ceam definit schema tuplului, expresia "tuplulasupra R" devine clar i este echivalent

    expresiei "tuplul t cu schema R".

  • 8/3/2019 BDD_Prezentare

    16/445

    Pentru comoditate notaional, un tuplu cu

    numele t i schema R se va nota uneorit(R)=t(Ail)t(Ai2)...t(Aik).

    Deci putem concepe tuplul t(R) ca un tuplu

    variabil asupra R i fiecare component t(Aij),l < j < k, ca un domeniu variabil.Dac tuplult(R) are o formconstant,adic string-ul lui de

    valori este i aceste valori sunt ndom(R), el se numete tuplu constant asupraR.

  • 8/3/2019 BDD_Prezentare

    17/445

    1.1.3. Relaii i scheme Definiia 1.5. Fie R o submulime a

    universului U. Relaia r asupra R este omulimefinit de tupluri cu schema R.Aritatea

    relaiei r este egal cu cardinalitatea mulimiiR. Cardinalitatea relaiei r este numrul detupluri n ea.

  • 8/3/2019 BDD_Prezentare

    18/445

    Definiia 1.6. Fie RU i relaia r asupra R.Mulimea de atribute R se numete schemarelaiei r (notat cu sch(r)=R).

    Definiia 1.7.Baza de date relaional este omulimefinit de relaii,

    db = {r1,,rm},

    unde r, este o relaie cu schemaRi, 1 i m.

  • 8/3/2019 BDD_Prezentare

    19/445

    Definiia 1.8. Fie baza de date db = {r1,...,rm}.

    Schema bazei de date este mulimea schemelorrelaiilor ce formeaz baza de date, Db ={R1,...,Rm}, unde Ri = sch(ri)

  • 8/3/2019 BDD_Prezentare

    20/445

    Deci schema unei relaii este o expresie a

    proprietilor comune i invariante aletuplurilor ce compun relaia. Schema uneirelaii mai este cunoscut sub denumirea deintensia unei relaii. Relaia se mai numeteextensie.

    Extensia reprezint mulimea tuplurilor carecompun la un moment dat relaia,mulime care

    este variabil n timp.

  • 8/3/2019 BDD_Prezentare

    21/445

    Din definiiile de mai sus putem conchideurmtoarele:

    (1) ntr-o relaie nu exist coloane cu numeduplicate, fiindc atributele Aij, 1 j k, suntelemente ale mulimii R.

    (2) Relaia r, nu are tupluri identice, fiindc r,

    este o mulime de tupluri. (3) Ordinea tuplurilor n r, este

    nesemnificativ,fiindc r, este o mulime.

    (4) Ordinea coloanelor e nesemnificativ. (5) Valorile atributelor n r, sunt atomice

    fiindc domeniile sunt simple.

  • 8/3/2019 BDD_Prezentare

    22/445

    Relaiile care se stocheaz fizic i formeazbaza de date se numesc relaii de baza.

    Exist i relaii virtuale, cunoscute i subnumele de relaii derivate sau viziuni.

    Relaia este definit implicit prin mulimea

    tuplurilor componente a altor relaii. Relaiile de baza sunt proiectate de

    administratorul bazei de date, n timp ce

    viziunile sunt definite de utilizatorii bazei dedate.

  • 8/3/2019 BDD_Prezentare

    23/445

    Numele relaiei, de obicei, se scrie cuminuscule, de exemplu, relaiar.

    Exemplul 1.1. Baza de date "Universitatea"const din patru relaii:studeni,

    discipline,

    corp_dldactlc ,

    arj

    (vezi fig 1.1)

  • 8/3/2019 BDD_Prezentare

    24/445

    studeni NUME NOTA

    _MED

    FACULTATEA DECAN

    Vasilache 7,8 CIM Popovici

    discipline FACULTATE DISCIPLINA

    corp didac DISCIPLINA PROFESOR

    arja DISCIPLINA TIP ORE

    Fig.l.l. Baza de date Universitatea

  • 8/3/2019 BDD_Prezentare

    25/445

    Datele n fiecare relaie sunt atomice i sunt luate dindomeniile (simple) atributelor corespunztoare.

    Atributul FACULTATE n relaiile studeni idiscipline reprezintacelai atribut.

    Atributul DISCIPIN figureaz n trei relaiidiscipline, corp_didaciarj

    Cele opt atribute prezente n relaiile descriseconstituie universul U=NUME NOT_MEDFACULTATE DECAN DISCIPLINA PROFESOR

    TIP ORE. Aadar, atributele oricrei relaii formeaz o

    submulime a mulimii universale U.

  • 8/3/2019 BDD_Prezentare

    26/445

    Domeniul atributului NUME const dineventualele nume de familie, dar conine i

    valori active, adic numele studenilor ce ifac studiile la facultate.

    Domeniul atributului NOT_MED conine

    numere pozitive cu valoarea maxim 10. Celelalte domenii se definesc similar.

    Nu e exclus faptul c un decan s fie student la

    o alt facultate n cazul acesta domeniile activeale atributelor NUME i DECAN nu vor fidisjuncte.

  • 8/3/2019 BDD_Prezentare

    27/445

    Tuplurile relaiei studeni sunt definite pemulimea de atribute R= NUME NOTA_MEDFACULTATE DECAN.

    Ele sunt concepute ca tupluri constante-valoriale tuplului variabil t(R) =t(NUME)t(NOTA_MED) t(FACULTATE) t(DECAN).

    De exemplu, tuplul constant arat c Vasilache estestudent La facultatea Cibernetic a crei decaneste Popovici i are nota medie 7.8.

  • 8/3/2019 BDD_Prezentare

    28/445

    Considerm X=NUME DECAN. Tuplul variabil v

    fi t[X]=t(NUME) t(DECAN). Tuplul constantdefinit pe schema X este derivat din tuplul

  • 8/3/2019 BDD_Prezentare

    29/445

    Baza de date "Universitatea" const din patru relaii.

    db={studeni, discipline, corp_didactic,arj}.

    Schema bazei de date este mulimea schemelor celorpatru relaii Db= {NUMENOT_MED FACULTATEDECAN, FACULTATE DISCIPLIN, DISCIPLINPROFESOR, DISCIPLIN TIP ORE}.

    Relaiilestudeni, discipline, corp_didactic, arj auaritatea 4, 2, 2 i 3 respectiv. Ele formeaz relaiile debaza.

    Relaia definit pe atributele X= NUME DECAN e orelaie virtual.

  • 8/3/2019 BDD_Prezentare

    30/445

    1.2. Restricii de integritate

    1.2.1. Tipuri de restricii Restriciile de integritate definesc cerinele pe caretrebuie s le satisfac datele din baza de date pentru aputea fi considerate corecte, coerente n raport cu

    lumea real pe care o reflect. Restriciile sunt principalul mod de integrare a

    semanticii datelor n cadrul modelului relaional.

    Mecanismele de definire i verificare ale acestorrestricii reprezint instrumentele principale decontrol al semanticii datelor, n modelul relaional.

  • 8/3/2019 BDD_Prezentare

    31/445

    Restriciile sunt studiate mai ales sub aspectulputerii lor de modelare i al posibilitii deverificare a respectrii lor.

    Restriciile de integritate pot fi divizate n liniimari n dou grupuri:

    restricii de comportament

    i dependene ntre date.

  • 8/3/2019 BDD_Prezentare

    32/445

    Restriciile de comportament specificcaracteristicile independente ale unui atribut

    (sau domeniu). Ele exprim semanticaelementelor domeniilor. De exemplu, toate valorile atributului

    NOT_MED trebuie s fie mai mare dectzero, dar nu poate depi zece.

    Sau nici o persoan de vrsta 25 ani nu poateavea o vechime n munc de 30 ani.

    Deci, conform acestei restricii, valorileatributului trebuie s se ncadreze ntreanumite limite.

  • 8/3/2019 BDD_Prezentare

    33/445

    Al doilea tip de restricii specific legtura

    dintre atribute (sau domenii). Aici putemidentifica aa-numita dependen desubmulime. Considerm, de exemplu, relaia

    personaldefinit pe mulimea de atribute{ANGAJAT SALARIU DEPARTAMENTMANAGER}. n relaiapersonal, un managereste n acelai timp un angajat, dar nu orice

    angajat este manager. Deci avem c dom(MANAGER)

    dom(ANGAJAT).

  • 8/3/2019 BDD_Prezentare

    34/445

    Dac presupunem c angajatul are un singursalariu, se subordoneaz unui singur managerdirect, lucreaz ntr-un singur departament,atunci ANGAJAT-valorile determin n modunic toate tuplurile n relaiapersonal.

    Aceast restricie este numit dependenfuncional. Dependenele funcionale vor fistudiate detaliat n capitolul 3. Alte tipuri de

    dependene cum ar fi cele multivaloare idejonciune vor fi studiate n capitolul 4.

  • 8/3/2019 BDD_Prezentare

    35/445

    1.2.2. Chei ntruct relaiareprezint o mulime de tupluri,

    iar o mulime nu poate conine elementeleduplicate, relaia nu poate prezenta tupluriidentice.

    Deci tuplurile sunt unice i trebuie s existeposibilitatea identificrii lor n cadrul uneirelaii.

    Identificarea unui tuplu fr a consulta toate

    componentele tuplului a dus la apariianoiuniide cheie.

  • 8/3/2019 BDD_Prezentare

    36/445

    Definiia 1.9. Fie U mulimeauniversal de atribute, RU i

    R. Mulimea K de atribute, unde KR, se

    numete cheie pentru schema R (sau pentru

    relaia r cu schema R), dac ea posedurmtoareleproprieti: (1) pentru orice dou tupluri t1i t2 din r avem

    t1[K]t2|K]; (2) nici o submulime K' proprie a lui K nu

    posed proprietatea (1)

  • 8/3/2019 BDD_Prezentare

    37/445

    Definiia 1.10.Mulimea de atribute ce posedproprietatea (l) se numete supercheie. Deci cheia

    este o supercheie minimal. Orice cheie e i supercheie.

    Afirmaia invers nu e corect.

    Este evident c o mulime vid nu poate servi dreptcheie a unei relaii ce conine mai mult de un tupluorice relaie are celpuin o cheie.

    La limit cheia este constituit fie dintr-un singuratribut, fie din totalitatea atributelor din schemarelaiei respective.

  • 8/3/2019 BDD_Prezentare

    38/445

    ntr-o relaie pot exista mai multe chei. Sespune n acest caz crelaiaposed mai multechei candidate.

    n aceastsituaie administratorul bazei de datev stabili una din cheile candidate sserveascn mod efectiv la identificarea unic atuplurilor. Ea v primi numele de cheieprimar.

    Primare se vor numi i domeniile atributelor ceformeaz o cheieprimar.

  • 8/3/2019 BDD_Prezentare

    39/445

    Definiia 1.11. Cheia primar a unei relaii se

    numete cheie simpl, dac este constituit dintr-unsingur atribut, iar atunci cnd este format din maimulte atribute este denumitcheie compus.

    Remarc. Nu toate atributele unei chei compuse pot

    fi definite pe domenii primare. Definiia 1.12. O cheie extern reprezint un atribut

    (grup de atribute) dintr-o schema Ri definit (definite)pe acelai (aceleai) domeniu (domenii) ca i cheia

    primar a altei scheme Rj.

  • 8/3/2019 BDD_Prezentare

    40/445

    Relaia ri se numeterelaie care refer, iar rjpoart numele de relaie referent.

    Unele atribute pot avea aa numitele valorinedefinite sau necunoscute notate cu "null.

    Ins sunt bine cunoscute restriciile formulate

    prin urmtoarele reguli numite reguli deactualizare (inserare, modificare i eliminare) arelaiilor.

  • 8/3/2019 BDD_Prezentare

    41/445

    (1) Restricia entitii: cheia primar a uneirelaii de baza nu poate conine valori "null.

    (2) Restricia referirii:dac atributul A al uneichei a relaiei r, este definit pe un domeniuprimar, atunci trebuie s existe o relaie de

    baza r, cu o cheie primar B nct orice A-valoare din r, sapar n calitate de B-valoaren r.

  • 8/3/2019 BDD_Prezentare

    42/445

  • 8/3/2019 BDD_Prezentare

    43/445

    Considerm relaiile discipline (FACULTATEDISCIPLIN) i corp_dldac(DSCIPLIN

    PROFESOR) Fiindc la orice facultate se predcel puin o disciplini orice profesor pred celpuin o disciplin,i similar, orice disciplin se

    predmcar la o facultate i se pred cel puinde un profesor, cheile primare ale acestor relaiisunt compuse i constau din toate atributelecorespunztoarefiecreirelaii.

  • 8/3/2019 BDD_Prezentare

    44/445

    n relaiaarj(DISCIPLIN TIP ORE), orice

    disciplin poate fi de trei tipuri (prelegeri,practic, laborator) i poate avea diferite ore depredare, unele discipline pot avea acelai tip iacelainumrde ore. Epuin probabil ca cheia

    relaieiarjs fie simpl. Putem presupune ccheia ei este compus.

  • 8/3/2019 BDD_Prezentare

    45/445

    n acest exemplu, domeniul dom(NUME) esteprimar. Cheile compuse ale relaiilor

    discipline, corp_didac, arj nu sunt definitepe acest domeniu primar.

    Conform regulii (1) atributele celor patru chei

    nu pot avea valori "null" Dat fiind faptul cnici o cheie din cele trei compuse nu suntdefinite pe domeniul primar dom(NUME),

    exemplul dat nu ne demonstreaz regula (2).

  • 8/3/2019 BDD_Prezentare

    46/445

    Exemplul 1.3. Considerm relaiilestudeniifaculti din fig. 1.2.

    studeni NUME FACULTATE AN

    n1 f1 a1

    n2 f1 a2n f a

    faculti FACULTATE DECAN

    f1 d1f2 d2

    flg.1.2.

  • 8/3/2019 BDD_Prezentare

    47/445

  • 8/3/2019 BDD_Prezentare

    48/445

    Extensiile relaiilor se schimb pe parcursultimpului.

    S-ar preac pentru fiecare instan a relaieipot fi determinate cheile i supercheile. Darschemele relaiilor, adic intensiile, trebuie sfie invariante.

    Cheile trebuie s rmn chei pentru oriceeventuale extensii.

    Prin urmare determinarea cheii unei relaii

    necesit cunoaterea semanticii relaieirespective, nu numai celei din momentul ncare se stabilete cheia.

  • 8/3/2019 BDD_Prezentare

    49/445

    Convenie. Dac relaia posed o singur

    cheie sau dorim s evideniem numai cheiaprimar mai departe vom sublinia atributele ceformeaz aceast cheie. De exemplu, relaia rcu schema ABCD i cheia AC se scrie r(A,BC,D). n cazul c relaiaposed mai multechei, atunci le vom scrie explicit: relaiar(ABCD) are dou chei candidate k1=ac,

    K2=B.

  • 8/3/2019 BDD_Prezentare

    50/445

  • 8/3/2019 BDD_Prezentare

    51/445

  • 8/3/2019 BDD_Prezentare

    52/445

    Instruciuni pentru controlCREATE ASSERTIONDROP ASSERTIONGRANTREVOKE

    ALTER SESSION

  • 8/3/2019 BDD_Prezentare

    53/445

    Tipuri de date.Toate datele, care sunt stocate n baza de date suntcaracterizate prin tip i lungime. Aceast caracterizare estedefinit ca tipul de date al obiectului.Tabelele sunt dispozitive de stocare ntr-o baz de date

    relaional. Coloanele tabelului definesc caracteristiciledatelor i n acelai timp atribuie un nume datelor dincoloana respectiv.Coloanele, precum i variabilele, i constantele suntcaracterizate din tipul i lungimea datelor. Aceste proprietifac ca serverul s trateze n mod difereniat tipurile de datediferite.

  • 8/3/2019 BDD_Prezentare

    54/445

    Tipuri de date SQLcharacter [ varying ] (n) integer date

    bit [ varying ] (n) smallint time

    numeric (p,q) float (p) timestamp

    decimal (p,q) interval

    Tipurile interne de date ale programului Oracle sunt:Char; varchar2; varchar;

    number; date; raw;

    long raw; rowid; long; mlslabel

  • 8/3/2019 BDD_Prezentare

    55/445

    RESTRICII DE INTEGRITATEn baza de date relaional Oracle, exist

    urmtoarele tipuri de restricii de integritate adatelor:Null; Unique; Primary key;

    Referential; Check.

    Restricia de integritate pentru un tabel estestabilit atunci cnd tabelul este creat saumodificat. Pentru a stabili o restricie de integritate,putei include clauza constraint n comenzilecreate table sau alter table. Exemplul urmtorilustreaz sintaxa general a clauzei constraint:CONSTRAINT nume_restricie

    tip_restricie

  • 8/3/2019 BDD_Prezentare

    56/445

    Restricia de integritate nulln mod prestabilit, toate coloanele unui tabelaccept valori nule adic, este permisabsena uneivalori n coloan. Prin stabilirea restriciei notnuil, impunei coloanei specificate s posede o

    valoare pentru fiecare linie a tabelului.Pentru a afiarestriciilenull dintr-un tabel, folosiicomanda describe dup care urmeaz numeletabelului.

  • 8/3/2019 BDD_Prezentare

    57/445

    Restricia de integritate uniqueRestricie de integritate unique impune ca toate valorile dintr-o

    coloan s fie distincte, nu pot exista valori duplicate n coloanarespectiv. Oracle v permite s plasai aceast restricie pe mai multecoloane, definind astfel o aa numit restricie de unicitate compus. Orestricie de unicitate compus cere ca o combinaie a coloanei cu cheieunic s nu se repete. Instruciunea urmtoare creeaz o restricie deunicitate asupra coloanei marca_ang a tabelului ANG:

    create table ang(marca ang number(7)constraint s_ang_marca_ang_uk unique,

    nume varchar2(20)constraint s_ang_nume_nn not null,prenume varchar2 (20),nr_dept varchar2(5));

  • 8/3/2019 BDD_Prezentare

    58/445

    Restricia de integritateprimary key

    Restricia de integritate primary key desemneazo coloan sau o combinaie de coloane drept cheieprincipal a tabelului. Cheia principal identific n modunivoc fiecare linie a tabelului. De asemenea, aceastrestricie creeaz n mod implicit restriciile not nulli unique pe coloana respectiv. Dei Oracle nuimpune existena unei chei principale pentru fiecaretabel, este bine s v obinuii s o creai. De asemenea,este recomandabil s desemnai drept cheie principal ocoloana sau o combinaie de coloane ale cror valori nuse modific niciodat.

  • 8/3/2019 BDD_Prezentare

    59/445

    Instruciunea urmtoare creeaz o restricie primary keypentru cmpul marca_ang al tabelului ANG:

    create table ang(marca_ang number(7)constraint s_ang_marca_ang_pk primarykey,nume varchar2(20)constraint s ang nume nn not null,prenume varchar2 (2'0'),

    nr_dept varchar2(5));

    Pentru a crea restricii asupra tabelelor putei folosi o a

  • 8/3/2019 BDD_Prezentare

    60/445

    Pentru a crea restricii asupra tabelelor, putei folosi o adoua sintax, cunoscut sub numele de sintaxarestricie_tabel. Cu aceast sintax, restriciile sunt

    plasate la baza instruciunii create table. Exemplulurmtor creeaz acelai tabel ca n exemplul anterior,folosind sintaxa restricie_tabel:

    create table ang

    (marca_ang number(7),nume varchar2(20),

    prenume varchar2(20),

    nr_dept varchar2(5),

    constraint s_ang marca_ang_pk primarykey (marca ang));

  • 8/3/2019 BDD_Prezentare

    61/445

  • 8/3/2019 BDD_Prezentare

    62/445

    Restricia de integritate prin referinRestriciile de integritate prin referin sunt folosite pentru a

    impune regulile care dicteaz relaiile dintre coloanele diverselortabele, ntre tabele se creeaz o relaie printe-fiu. Tabelul printeconine cheia referit iar tabelul fiu conine cheia extern.

    Exemplul urmtor creeaz aceast restricie de integritate

    prin referin asupra tabelului de adrese:alter table adreseadd constraint fk cod statforeign key (cod _stat)references cod_stat(cod_stat);

  • 8/3/2019 BDD_Prezentare

    63/445

  • 8/3/2019 BDD_Prezentare

    64/445

    Restricia de integritate checkRestricia de integritate check definete n mod explicito condiie care trebuie s fie adevrat. Fiecare linie atabelului trebuie s respecte condiia. Condiia poate fievaluat i la valoarea Unknown pentru a permite

    prezena valorii null. Dac se ncearc executarea uneiinstruciuni care ar duce la nerespectarea condiiei,instruciunea este derulat napoi.

  • 8/3/2019 BDD_Prezentare

    65/445

  • 8/3/2019 BDD_Prezentare

    66/445

    O definiie n SQL a bazei de date Student i Curs.create table Student (

    IDSt char(4),numSt varchar2(4),

    anSt number(1) ,

    IDGrup char(3),

    constraint pk_etud primary key (IDSt));

    Table created.

  • 8/3/2019 BDD_Prezentare

    67/445

    create table Curs(

    IDC char(4),numC varchar2(2),

    punctC number(2),

    IDGrup char(3),

    constraint pk_Curs primary key (IDC)

    );

  • 8/3/2019 BDD_Prezentare

    68/445

    create table StudCurs (

    IDC char(4),IDSt char(4),

    Nrpunct number(2),

    notaStC number(2) null,

    constraint fk_Stud foreign key(IDSt) references

    Student (IDSt),constraint fk_Curs foreign key(IDC) references

    Curs (IDC),

    constraint pk_StudCurs primary key (IDC,IDSt))

    ;

  • 8/3/2019 BDD_Prezentare

    69/445

    linstrucia describe. Exemplu :

    describe Student;Name Null? Type

    ----------- -------- ------------

    IDST NOT NULL CHAR(4)

    NUMST VARCHAR2(3)ANST NUMBER(1)

    IDGRUP CHAR(3)

  • 8/3/2019 BDD_Prezentare

    70/445

    1.3. Operaii de actualizare

    Regulile de actualizare a bazei de date facparte din cele trei componente ale modeluluirelaional de date. Vom examina cele trei

    operaii de actualizare a datelor: Inserareadatelor, tergerea datelor i modificareadatelor.

  • 8/3/2019 BDD_Prezentare

    71/445

  • 8/3/2019 BDD_Prezentare

    72/445

    Rezultatul operaiei poate s eueze dinurmtoarele cauze:

    (1) tuplul de inserie e definit pe o mulime deatribute ce nu corespunde schemei relaiei;

    (2) valorile componentelor tuplului nu sunt

    luate din domeniile corespunztoare; (3) n relaie deja se gsete un tuplu cu

    asemenea componente cheie.

    n toate aceste cazuri operaia Add pstreazrelaia r intact.

  • 8/3/2019 BDD_Prezentare

    73/445

    Operaia de tergere a datelor se utilizeaz

    pentru eliminarea coninutuluirelaiilor. Pentrurelaia r de mai sus, operaia de tergere sereprezint:

    Del (r; ). n cazul cnd numele de atribute sunt sortate,poate fi utilizaturmtoareanotaiescurt:

    Del (r;).

  • 8/3/2019 BDD_Prezentare

    74/445

  • 8/3/2019 BDD_Prezentare

    75/445

  • 8/3/2019 BDD_Prezentare

    76/445

  • 8/3/2019 BDD_Prezentare

    77/445

    Instruciile SQL : insert, update, et delete.insert into Student values ('0001','St01',1,'002');

    insert into Student values ('0002','St02',2,'001');

    insert into Student values ('0003','St03','1,'001');insert into Student values ('0004','St04','3,'001');insert into Student values ('0005','St05','4,'001');

    insert into Student values ('0006','St06','2,'001');

    insert into Student values ('0007','St07',1,'002');insert into Student values ('0008','St08',3,'002');

    insert into Student values ('0009','St09',3,'003');insert into Student values ('0010','St10',3,'002');

    insert into Student values ('0011','St11',3,'003');

  • 8/3/2019 BDD_Prezentare

    78/445

  • 8/3/2019 BDD_Prezentare

    79/445

    insert into StudCurs values (5001','0001',20, null);

    insert into StudCurs values (5002','0001',30, null);

    insert into StudCurs values (5003','0001',50, null);

    insert into StudCurs values (5004','0001',60, null);

    insert into StudCurs values (5005','0001',70, null);

    insert into StudCurs values (5001','0002',20, null);

    insert into StudCurs values (5002','0002',30, null);

    insert into StudCurs values (5003','0003',50, null);insert into StudCurs values (5004','0003',60, null);

    insert into StudCurs values (5005','0005',70, null);

    insert into StudCurs values (5001','0003',20, null);

    insert into StudCurs values (5002','0005',30, null);

    insert into StudCurs values (5003','0006',50, null);insert into StudCurs values (5004','0007',60, null);

    insert into StudCurs values (5005','0008',70, null);

    Selectarea datelor din tabeleSintaxa general a instruciunii select este urmtoarea

  • 8/3/2019 BDD_Prezentare

    80/445

    Sintaxa general a instruciunii select este urmtoarea:select nume_coloana(e) from tabel (sau vedere sau instantaneu)

    select * from Student;

    IDST NOME ANET IDG

    ---- ---- ---------- ---

    0001 St01 1 002

    0002 St02 2 001

    0003 St03 1 001

    0004 St04 3 0010005 St05 4 001

    0006 St06 2 001

    0007 St07 1 002

    0008 St08 3 002

    0009 St09 3 003

    0010 St10 3 0020011 St11 3 003

    11 rows selected.

  • 8/3/2019 BDD_Prezentare

    81/445

    select * from Cours;

    IDC NO POINTC IDG---- -- ---------- ---

    5001 c1 10 001

    5002 c2 30 002

    5003 c3 20 003

    5004 c4 30 001

    5005 c5 20 003

  • 8/3/2019 BDD_Prezentare

    82/445

    select * from StudCurs

    IDC IDST NRPOINT NOTEETC

    ---- ---- ---------- ----------5001 0001 20

    5002 0001 30

    5003 0001 50

    5004 0001 60

    5005 0001 70

    5001 0002 205002 0002 30

    5003 0003 50

    5004 0003 60

    5005 0005 70

    5001 0003 20

    5002 0005 305003 0006 50

    5004 0007 60

    5005 0008 70

  • 8/3/2019 BDD_Prezentare

    83/445

  • 8/3/2019 BDD_Prezentare

    84/445

    Eliminarea datelorPentru a elimina date dintr-un tabel sau din tabelele debaz ale unei vederi, folosii comanda SQL delete.

    Instruciunea urmtoare elimin toate liniile din tabelulCALIFICARE_1:

    delete from calificare_l;Uneori doriiseliminai numai anumite linii ale unui tabel.Pentru a face acest lucru, folosii comanda delete cuclauza where. De exemplu, instruciuneaurmtoareelimin

    numai acele linii ale cror cantiti vndute sunt mai micidect 100:delete from comenzi

    where cant_vanzari < 100;

  • 8/3/2019 BDD_Prezentare

    85/445

  • 8/3/2019 BDD_Prezentare

    86/445

  • 8/3/2019 BDD_Prezentare

    87/445

  • 8/3/2019 BDD_Prezentare

    88/445

    2.1. Operaiile traditionale

    2.1.1. Scheme relaionale compatibile Operaiile binare asupra relaiilor: uniunea,

    intersecia i diferena, necesit ca

    operanzii (relaiile) s fie definii pescheme compatibile. Compatibilitatea schemelor se definete n

    felul urmtor.

    Definiia 2 1 Vom spune c dou relaii r(R)

  • 8/3/2019 BDD_Prezentare

    89/445

    Definiia 2.1.Vom spune c dou relaii r(R)i s(S) sunt compatibile (sau au scheme

    compatibile), dac ntre R i S exist ocoresponden biunivoc f:

    pentru orice atribut A din R, exist un atribut

    B n S nct dom(A)=dom(B), B=f(A) iA=f(B), unde f este funcia invers funciei f.

    Remarc.Dou relaii cu aceeai schem sunt

    compatibile.

    Exemplu 2.1. Schemele relaiilorvnzrii articolenuibil S h l l iil i i

  • 8/3/2019 BDD_Prezentare

    90/445

    sunt compatibile. Schemele relaiilor vnzri ifurnizorisunt compatibile.

    vnzri FIRMA ARTICO

    f1 a1

    f1 a2

    f2 a1

    f3 a1

    articole ARTICOL CULOAR

    E

    A1 c1

    a1 c2

    a1 c3a3 c2

    a2 c1

    urnizori ARTICOL FURNIZOR

    a1 f1a1 f3

    a2 f1

    a3 f3

  • 8/3/2019 BDD_Prezentare

    91/445

    Ultimele relaii sunt definite pe atribute ceprimesc valori din aceleai domenii.Valorile active sunt totui diferite, fiindc

    un furnizor poate s nu fie firm iviceversa.

    2 1 2 Uniunea

  • 8/3/2019 BDD_Prezentare

    92/445

    2.1.2. Uniunea

    Uniunea a dou relaii presupune c schemele

    lor sunt compatibile. Definiia 2.2. Uniuneaa dou relaii

    compatibile r(R) i s(S), notat cu r s, e o

    relaie definit pe schema R sau S i const dintuplurile ce aparin relaiilor r sau s, adic

    rs = {t|trts}.

    Exemplul 2.2. Fie relaiile r(A B C) i s(A BC) din fig.2.4. Relaia din fig.2.5 este

    q = r s.

  • 8/3/2019 BDD_Prezentare

    93/445

    r A B C

    a1 b1 c1

    a1 b2 c3a2 b1 c2

    s A B C

    a1 b1 c1

    a1 b1 c2a1 b2 c3

    a3 b2 c3

    Fig. 2.4. Relaiile r(A B C) i s(A B C)

    q A B C

    a1 b1 c1

    a1 b1 c2

    a1 b2 c3a2 b1 c2

    a3 b2 c3

    Fig.2.5. Relaia q = r s

    Operaia uniunea are dou proprieti. Ea e

  • 8/3/2019 BDD_Prezentare

    94/445

    Operaia uniunea are douproprieti. Ea ecomutativ, adic r s = s r. Ea este iasociativ, adic (r s) q = r(s q)pentru relaiile mutual compatibile r, s i q.

    Prin urmare, n expresiile ce conin o cascadde operaii uniunea, parantezele pot fi omise

    fr a provoca ambiguiti. Deci, dac avem krelaii compatibile r1,r2,...,rk, uniunea acestorrelaii poate fi notat cu (r1, r2,..., rk).

    Operaia uniunea are dou cazuri speciale.Pentru orice relaie r(R) au loc:r = r i rs = s, dac r s.

    2 1 3 Intersecia

  • 8/3/2019 BDD_Prezentare

    95/445

    2.1.3. Intersecia

    Similar uniunii, intersecia a dou relaii cere

    ca operanzii s fie relaii cu schemecompatibile.

    Definiia 2.3. Intersecia a dou relaii

    compatibile r(R) i s(S), notat cu r s, este orelaiedefinit pe schema R sau S iconst dintuplurile ce aparin concomitent relaiilorr i s,

    adic rs ={t|tr&ts}.

    Exemplul 2.3. Fie relaiile r(A B C) i s(A B C)

  • 8/3/2019 BDD_Prezentare

    96/445

    din fig. 2.4. Relaia q = r s este prezentat nfig. 2.6.

    q A B C

    a1 b1 c1a1 b2 c3

    fig.2.6.

    2 1 4 Diferena

  • 8/3/2019 BDD_Prezentare

    97/445

    2.1.4.Diferena

    Operaiadiferena presupune c operanzii sunt

    relaii cu scheme compatibile.

    Definiia 2.4. Diferena a dou relaiicompatibile r(R) i s(S), notat cu r \ s, este o

    relaiedefinit pe mulimea de atribute R sau Si are n calitate de tupluri, toate tuplurile dinrelaia r ce nu sunt n s, adic

    r\s ={t|tr & ts}.

    Exemplul 2.4. Fie relaiile r(A B C) i s(A B C)

  • 8/3/2019 BDD_Prezentare

    98/445

    Exemplul 2.4. Fie relaiile r(A B C) i s(A B C)din fig.2.4. Relaiile q1 = r \ s, i q2= s \ r sunt

    prezentate n fig.2.7.

    q1 A B Ca2 b1 c2

    q2 A B Ca1 b1 c2a3 b2 c3

    Fi .2.7.

  • 8/3/2019 BDD_Prezentare

    99/445

    Din exemplul de mai sus observm cdiferena nu se bucur de proprietateacomutativ,adic

    r \s s\ r.

    Totodat, nu e nici asociativ,adic

    (r \ s) \q r\ (s \ q),

    fiindc

    (r \ s) \ q = r \ (s q)pentru orice relaii mutual compatibile r, s, i q.

  • 8/3/2019 BDD_Prezentare

    100/445

    Diferena a dou relaii are patru cazuri

    speciale. Un caz este\r=,

    altul e

    r \ = rpentru orice relaie r(R).

    Celelalte cazuri le vom examina n urmtoareledouseciuni.

  • 8/3/2019 BDD_Prezentare

    101/445

    Exemplul 2.5. Fie relaia r(A B C) din fig.2,4

  • 8/3/2019 BDD_Prezentare

    102/445

    gi fie

    dom(A) = {a1,a2,a3},dom(B) = {b1,b2},

    dom(C) = {c1,c2,c3}.

    Atunci tup(A B C) i r sunt cele din fig. 2.8.

  • 8/3/2019 BDD_Prezentare

    103/445

    tup A B C

    a1 b1 c1

    a1 b1 c2

    a1 b1 c3a1 b2 c1

    a1 b2 c2

    a1 b2 c3

    a2 b1 c1

    a2 b1 c2

    a2 b1 c3a2 b2 c1

    a2 b2 c2

    a2 b2 c3

    a3 b1 c1

    a3 b1 c2

    a3 b1 c3a3 b2 c1

    a3 b2 c2

    a3 b2 c3

    r A B C

    a1 b1 c2

    a1 b1 c3

    a1 b2 c1a1 b2 c2

    a2 b1 c1

    a2 b1 c3

    a2 b2 c1

    a2 b2 c2

    a2 b2 c3a3 b1 c1

    a3 b1 c2

    a3 b1 c3

    a3 b2 c1

    a3 b2 c2

    a3 b2 c3

    Fig.2.8.

    Este clar c dac pentru un atribut A din R

  • 8/3/2019 BDD_Prezentare

    104/445

    Este clar c, dac pentru un atribut A din Rdomeniul dom(A) este infinit, atunci i r v fi

    infinit i deci nu v fi o relaie conformdefiniiei noastre.

    Pentru lichidarea acestui dezavantaj se

    introduce noiunea de complement activ.

  • 8/3/2019 BDD_Prezentare

    105/445

  • 8/3/2019 BDD_Prezentare

    106/445

    Exemplul 2.6. Fie relaia r(A B C) din fig.2.4.

    Atunciadom(A) = {a1,a2},

    adom(B) = {b1,b2},

    adom(C) = {c1,c2,c3}.

    Relaiile atup(A B C) i ~r sunt prezentate nfig.2.9.

    atup A B C

  • 8/3/2019 BDD_Prezentare

    107/445

    atup A B C

    a1 b1 c1

    a1 b1 c2

    a1 b1 c3

    a1 b2 c1

    a1 b2 c2

    a1 b2 c3

    a2 b1 c1a2 b1 c2

    a2 b1 c3

    a2 b2 c1

    a2 b2 c2a2 b2 c3

    ~r A B C

    a1 b1 c2

    a1 b1 c3a1 b2 c1

    a1 b2 c2

    a2 b1 c1

    a2

    b1

    c3

    a2 b2 c1

    a2 b2 c2

    a2 b2 c3

    Fig.2.9.

    2.1.7. Produsul cartezian

  • 8/3/2019 BDD_Prezentare

    108/445

    Definiia 2.7. Produsul cartezian a dourelaii

    r(A1...An) i s(B1...Bm), notat cu rs, este omulime de tupluri (i nu ntotdeauna o relaie)definite pe mulimea de atribute A1...AnB1...Bm.

    Tuplurile reprezint toate posibilele asociaiide tupluri din r i s: dac trr i tss, atunciconcatenaia tr ts este un tuplu n r s,

  • 8/3/2019 BDD_Prezentare

    109/445

  • 8/3/2019 BDD_Prezentare

    110/445

    Produsul cartezian q = rs arat ca n

  • 8/3/2019 BDD_Prezentare

    111/445

    fig 2 11

    q A B C D E

    a1 b1 c1d1e1

    a1 b1 c1 d1e2a1 b2 c3d1e1

    a1 b2 c3d1e2a2b1 c2d1e1

    a2 b1 c2d1e2Fig 2 11

    Produsul cartezian a dou relaii nevide nuntotdeauna produce o relaie Rezultatul e o

  • 8/3/2019 BDD_Prezentare

    112/445

    ntotdeauna produce o relaie. Rezultatul e orelaie,dac ambii operanzi sunt relaii cu scheme

    nevide i disjuncte (vezi exemplul 2.7). Dac, ns, relaiile operanzi au scheme vide sau

    nondisjuncte, atunci produsul cartezian nu este o

    relaie. Aceastproblem poate fi soluionat cu ajutorul

    operaiei atribuirea, care de fapt produce

    schimbarea numelor atributelor.

    Produsul cartezian nu este o operaie

  • 8/3/2019 BDD_Prezentare

    113/445

    comutativ n schimb sebucur de proprietatea

    asociativ. Prin urmare, dac avem o cascad de produsecarteziene

    r1( r2(...rk)), ea poate fi reprezentat n form de prefix

    (r1,r2,..., rk)

    Schemele relaiilorri, 1 i k, trebuie s fiedisjuncte dou cte dou. n caz contrarrezultatul nu v fi o relaie.

    2.1.8. Atribuirea

  • 8/3/2019 BDD_Prezentare

    114/445

    2.1.8. Atribuirea

    Fie r(R) i s(S) dou relaii cu scheme

    compatibile i R S. Pentru a aplica asupra lor operaiile binare

    tradiionale se face reatribuirea relaiilor pentru

    a redenumi diferena de atribute R\ S sau S \R.

    Atribuirea se utilizeaz i pentru pstrarea

    rezultatelor intermediare.

    Definiia 2.8. Fie r o relaie cu schema A1...An

  • 8/3/2019 BDD_Prezentare

    115/445

    Definiia2.8. Fie r o relaie cu schema A1...Ani {B1..,Bn,} o mulime de atribute

    compatibile, adic dom(Bi) = dom(Ai), 1 i n.

    O nou relaie s(B1.,.Bn) compatibil cu r se

    poate defini prin atribuirea: s(B1...Bn) = r(A1...An).

    Extensia relaiei s este extensia relaiei r: ts

    atunci i numai atunci, cnd trr, unde ts[Bi]= tr[Ai], 1in

    Exemplul 2.9. Fie relaia r(A B C) din fig.2.12. Atunci,

  • 8/3/2019 BDD_Prezentare

    116/445

    s(A D C): = r(A B C)

    r A B Ca1 b1 c1

    a1 b2 c3a2 b1 c2

    s A D Ca1 b1 c1

    a1 b2 c3a2 b1 c2

    Fig 2.12

    n urmtorul exemplu, operaia atribuirea se

  • 8/3/2019 BDD_Prezentare

    117/445

    folosete pentru pstrarea rezultatelor

    intermediare. Exemplul2.10. Fie relaiile r(A B C) i s(A BC) din fig. 2.l3.

    Atunci q : = (r s) \ (r s). Relaia q s-a construit aplicnd

    consecutivitatea de operaii:

    q1: = r s, q2: = r s, q= q1 \ q2.

  • 8/3/2019 BDD_Prezentare

    118/445

    2.2. Operaiile relaionale native

  • 8/3/2019 BDD_Prezentare

    119/445

    2.2.1. Proiecia

    Proiecia e o operaie unar.

    Definiia 2.9. Fie r o relaie cu schema R i X R.Proiecia relaiei r asupra mulimii de atribute X,

    notat cu x(r), e o relaie cu schema X ce const dinX-valorile tuturor tuplurilor din r:

    x(r)={t(Xl|tr}.

    Tupluri distincte din r pot deveni identice, cnd seproiecteaz pe o mulime de atribute. Tuplurileduplicate n relaia rezultat se elimina.

    Exemplul 2.11. Fie relaia r(A B C) din fig.2.14.

    A i ( )

  • 8/3/2019 BDD_Prezentare

    120/445

    Atunci s = A,C(r).

    r A B C

    a 10 l

    a 20 l

    b 30 l

    b 40 2

    s A C

    a l

    b lb 2

    Fig.2.14

    Existdou cazuri speciale:

    (1) X R At i ( )

  • 8/3/2019 BDD_Prezentare

    121/445

    (1) X = R. Atunci X(r) = r.

    (2) r=. Atunci X(r) = . Dac mulimea de atribute X = , atunciproiecia (r) este indefinit, fiindc schemaunei relaii nu poate fi o mulimevid. Schemaunei relaii,produs de operaiaproiecia, arecelpuin un atribut.

    Pentru cazul cnd RX operaia proiecia

  • 8/3/2019 BDD_Prezentare

    122/445

    Pentru cazul cnd RX, operaia proieciaiari este indefinit. Mulimea asupra creia

    se face proiecia nu poate fi mai larg dectschema relaieiiniiale.

    Fie relaia r(R) i Y X R.

    Atunci y(x(r)) = y(r).

    Dac X = Y, atunci

    x( (y(r)) = x(r) =y(r).

    2 2 2 Selecia

  • 8/3/2019 BDD_Prezentare

    123/445

    2.2.2. Selecia

    Selecia este o operaie unar. PentruSelectarea unor tupluri dintr-o relaie enecesar specificarea condiiilor de selectare.n rezultat se obine o relaie ce e o submulime

    de tupluri a relaieiiniiale.

    Fie c condiia de selecie se noteaz prinf l l l l i ii l F d fi it

  • 8/3/2019 BDD_Prezentare

    124/445

    formula calculului propoziional, F, definitrecursiv:

    (1) AB i Aa sunt formule, unde A i Bsunt atribute compatibile i adom(A), iar{=,, , }. Aceste formule suntatomice.

    (2) Dac G i H sunt formule, atunciconjuncia G&H, disjunctia GH, negaiile ~Gi ~H sunt formule.

    (3) Nimic altceva nu e formula.

    Definiia 2 10 Formula F e aplicabil relaiei

  • 8/3/2019 BDD_Prezentare

    125/445

    Definiia 2.10. Formula F e aplicabilrelaieir(R), dac orice constant c din F este ndom(R), i orice atribut A din F este n R.

    O relaie r satisface F (sau F e valid n r),dac F e aplicabilrelaieiri orice tuplu tr

    satisface formula F n sensul c formula Gobinut prin substituirea oricrui atribut A dinF cu A-valoarea tuplului t are valoarea adevr.

    D fi ii 2 11 S l i l i i (R) f

  • 8/3/2019 BDD_Prezentare

    126/445

    Definiia 2.11.Selecia relaiei r (R) conformformulei F, unde F e aplicabil relaiei r(R), eo submulime a relaiei r(R), notat cu F(r),ce const din toate tuplurile tr ce satisfac F,adic

    F(r)={t|tr&F(t)}.

    Exemplul 2.12. Fie r(A B C D) din fig. 2.l5. Atuncis=((a b) & (D>5))(r)

  • 8/3/2019 BDD_Prezentare

    127/445

    s=((a - b) & (D>5))(r)

    r A B C D

    a a l 7

    b b 5 5

    b b 12 3

    b b 23 10

    s A B C D

    a a l 7

    b b 23 10

    Fig.2.l5.

    E i t d i i l l l i i

  • 8/3/2019 BDD_Prezentare

    128/445

    Existdou cazuri speciale ale seleciei.

    (1) Dac F e o formul ce nu e compus nicidintr-o formul atomic, adic e o formulnul, atunci F(r) = r. n acest caz asupratuplurilor tr nu se impune nici o restriciepentru selecie.

    (2) Dac r(R) = , atunci F(r) = pentruorice formul F, fiindc F e valid n oricerelaievid.

    Este evident c

  • 8/3/2019 BDD_Prezentare

    129/445

    Este evident c

    G(F(r)) = G&F(r). ntruct conjuncia este comutativ,adic

    G&F(r) = F&G (r),

    atunci i compozitia a dou selecii estecomutativ.

    Deci

    G(F(r)) = F(G(r)).

    Operaia selecia este distributiv n raport cu

  • 8/3/2019 BDD_Prezentare

    130/445

    Operaia selecia este distributiv n raport cuoperaiile binare tradiionale pe mulimi. Fie r

    i s dou relaii compatibile i {,,\},atunci

    F(r s) = F(r) F(s).

    T b i i t l i t

  • 8/3/2019 BDD_Prezentare

    131/445

    Trebuie menionat c selecia nu comuteaz cu

    operaia complement. ns selecia comuteazcu proiecia, dac sunt respectate unelecondiii. Fie r o relaie cu schema R, XR, ifie F o formul ce e satisfcut de tuplurilet[X]. Atunci

    XF(r) = FX(r).

    2.2.3. -jonciunea

  • 8/3/2019 BDD_Prezentare

    132/445

    Definiia 2.12. Fie r(R) i s(S) dou relaii,RS=, AR, BS i fie un elementdin mulimea {=, ,, }. Presupunemc atributele A i B sunt compatibile, adicdom(A) = dom(B).

    -jonciunea relaiilor r(R) i s(S), notatcu r|X|ABs , este o mulime de tupluriconcatenate de forma trts, unde

    trr, tss

    i tr(A) ts(B),

  • 8/3/2019 BDD_Prezentare

    133/445

    Exemplul 2.13. Fie relaiile r(A B C) i s(D E) dinfig2 l6 unde dom(C) = dom(D) n fg 2 l7 relaia

  • 8/3/2019 BDD_Prezentare

    134/445

    fig2.l6, unde dom(C) = dom(D). n fg. 2.l7 relaiar|X|C>DS esteprezent.

    r A B C

    a1 b1 4

    a1 b2 2a2 b1 6

    s D E

    3 e1

    4 e1l e2

    q A B C D E

    a1 b1 4 1 e2

    a1 b1 4 3 e1a1 b2 2 1 e2

    a2 b1 6 3 e1

    a2

    b1

    6 4 e1

    a2 b1 6 1 e2Fig. 2.l6

    Fig. 2.l7

  • 8/3/2019 BDD_Prezentare

    135/445

    Operaia -jonciunea poate fi exprimat prinoperaiile produsul cartezian i selecia.Rezultatul unei -jonciuni este acelai cu

    rezultatul unei selecii operate asupra unuiprodus cartezian, adic

    r|X|ABs = AB(rs).

  • 8/3/2019 BDD_Prezentare

    136/445

    2.2.4. Jonciunea (Jonciunea natural)

  • 8/3/2019 BDD_Prezentare

    137/445

    Definiia2.13. Fie dou relaii r(R) i s(S)

    Jonciunearelaiilor r i s (notatia uzual r|X|s)este o relaie cu schema RS Tuplul t aparinerelaiei rezultat, dac exist tuplurile tri ts n r

    i s, respectiv, i satisfact[R]=tri t[S]=ts,

    adic

    r |X| s = {t | t[R] = tr& t[S] = ts & trr & tss}

  • 8/3/2019 BDD_Prezentare

    138/445

    Exemplul2.14. n fig 2 18 sunt afiate relaiiler(A B C), s(B C D) i q(A B C D),

    d |X|

  • 8/3/2019 BDD_Prezentare

    139/445

    unde q = r|X|s

    r A B Ca1 b1 c1

    a1 b2 c1

    a2 b1 c2

    s B C Db1 c1 d1

    b1 c1 d2

    b1 c2 d3

    b2 c2 d4

    q A B C Da1 b1 c1 d1

    a1 b1 c1 d2

    a2 b1 c2 d3

    Fig 2 18

    Dac R i S sunt disjuncte, RS=, atunci jonciunea relaiilor ri s este identic cu produsul cartezian al lor, adicr|X|s=rs

    Dac R S=i |RS| = k, atunci jonciunea poate firedat prm operanle proiecia, selecia i produsul

  • 8/3/2019 BDD_Prezentare

    140/445

    p p p pcartezian

    r|X|s = RS(F (rs)),undeF = (r.A1=s.A1)&(r.A2=s.A2)& &(r.Ak=s.Ak)

    pentru AiRS, lik.

    Dac R=S, atunci r|X|s = rs. Operaia jonciunea nu este comutativ, n schimb, ea

    se bucur de proprietatea asociativ. Prin urmare, ocascad de jonciuni (r1|X|(r2 |X|(... rk)) poate fi

    prefixat, adic |X|(r1,r2,...,rk Din exemplul 2.14 se vede c nu toate tuplurile

    relaiilor r i s particip la jonciune.

  • 8/3/2019 BDD_Prezentare

    141/445

    Exemplul 2.15. Fie relaiile S1(AB), S2(B C), S3(AC) i q(A B C) din fig 2 19,

  • 8/3/2019 BDD_Prezentare

    142/445

    ) q( ) g ,

    unde

    q=s1|X|s2|X|s3.Tuplurile

  • 8/3/2019 BDD_Prezentare

    143/445

    r(R), r1(R) i s(S).

    Atunci are loc urmtoarea egalitate(r1r)|X|s=(r|X|s)(r1|X|s).S cercetm acum legtura dintre proiecie i jonciune.Fie dou relaii

    r(R) i s(S).otm q=r|X|s(din definiia operaiei jonciunea, schema relaiei q esteRS).

    Proiectm relaia q asupra mulimii de atribute R:r

    1

    =R(q).n ce corelaie se afl r1 i r?

    Rspuns r1r.

    Exemplul 2.16. Fie relaiile r(A B) i s(B

  • 8/3/2019 BDD_Prezentare

    144/445

    p ( ) (C). Notm q=r|X|s i r1 = AB(q). n urma

    operaiilor, observm c tuplurile relaiei r1

    constituie o submulime proprie a relaiei r(vezi fig. 2.20.).

    r A B

    a1 b1a1 b1

    s B Cb1c1

    q A B C

    a1 b1 c1

    r A B

    a1 b1

    Fig. 2.20

    Exemplul 2.17. n acest exemplu r1 = r. Sunt daterelaiile r(R) i s(S) cu extensiile ca n fig. 2.21,

    q r|X|s i r1 = (q)

  • 8/3/2019 BDD_Prezentare

    145/445

    q = r|X|s i r = AB(q).

    Este evident, c semnul dintre relaiile r1 i r este "=",dac pentru orice tuplu tr din r exist un tuplu ts n s cesatisfac egalitatea tr[RS] = ts[RS]. Cu alte cuvinte,dac RS(r) = RS(s).

    r A B

    a1 b1

    a2 b2

    s B C

    b1 c1

    b2 c2

    q A B C

    a1 b1 c1

    a2 b2 c2

    r A Ba1 b1

    a2 b2

    Fig. 2.21

    S considerm acum legtura dintre proiecie

  • 8/3/2019 BDD_Prezentare

    146/445

    S considerm acum legtura dintre proiecie

    i jonciune, schimbnd ordinea de aplicare aacestor operaii. Fie relaia q este definit pemulimea de atribute RS. Notm

    r = R(q) i s = S(q).Fie q1 = r|X|s. Care e relaia dintre q1 i q?Rspuns: qq1.

    Exemplul 2.18. Relaia q din fig. 2.22 se

    d f i d i l i il d

  • 8/3/2019 BDD_Prezentare

    147/445

    descompune far pierderi pe mulimile de

    atribute AB i BC, fiindc q = q

    1

    , under = AB(q), s = BC(q), q1 = r|X|s.

    r A B

    a1 b1

    a2 b2

    s B C

    b1 c1

    b2 c1

    q A B C

    a1 b1 c1a2 b2 c2

    Fig. 2.22

    q A B C

    a1 b1 c1

    a1 b2 c1

    Acuma s continum procesul de

  • 8/3/2019 BDD_Prezentare

    148/445

    pdescompunere a relaiei q1.Fie

    r1 = R(q

    1),

    i

    s1= S(q1).Construim jonciunea q11= r1|X|s1.Care este corelaia dintre q1 i q11?

    Rspuns: q1

    = q11

    .

    2.2.5. Divizarea

  • 8/3/2019 BDD_Prezentare

    149/445

    Definiia 2.15. Fie r(R) i s(S) dou relaii i SR.

    otm Q = R\ S. Divizarea relaiei r la relaia s, notatcu rs, este o relaie definit pe mulimea de atribute Q:rs = {t| pentru tss(S)trr(R) ce satisface tr[Q]=t itr[S]=ts}.

    Remarc. Operaia divizareaea poate fi conceputdrept operaie invers produsului cartezian. Fie q= rs.Atunci qs produce o relaie cu schema R i relaia q vconine numrul maximal de tupluri ce ar satisfaceexpresia qsr.

    Teorema 2.1. Fie dou relaii q(Q) i s(S). Dac r=qs, atunci q=rs

  • 8/3/2019 BDD_Prezentare

    150/445

    rs.Exemplul 2.19. Fie relaia r(A B C) din fig.2.23. n fig.2.24 sunt

    prezentate relaiile s i q, unde q= rs. S se observe c qsr i cq conine un numr maximal de tupluri ce posed aceastproprietate.

    s C

    c1

    r A B C

    a1 b1 c1a2 b1 c1

    a1 b2 c1

    a1 b2 c2

    a2 b1 c2

    a1

    b2

    c3

    a1 b2 c4

    a1 b1 c5

    Fig. 2.23

    q A B

    a1 b1

    a2 b1

    a1 b2

    Fig. 2.24

    Teorema 2.2. Operaia divizarea poate fi

  • 8/3/2019 BDD_Prezentare

    151/445

    p pexprimat n termenii produsului cartezian,

    diferenei i proieciei:rs=Q(r)\Q((Q(r)s)\r).

    S subliniem c operaia divizarea nu este nicicomutativ, nici asociativ.Din definiia diviziunii i remarc urmeaz c,dac relaia r[R] este o submulime proprie deupluri a relaiei s(S), atunci rs este o relaieid.

    Dac S= atunci rs este indefniit, fiindcindefinit este s().

    2 2 6 Semijonciunea

  • 8/3/2019 BDD_Prezentare

    152/445

    2.2.6. Semijonciunea

    Semijonctiunea e o operaie binar. Eaconst n construirea unei relaii din cele doui e format numai din tuplurile unei singurerelaii ce particip la jonciune.

    Definiia 2.16. Fie dou relaii r(R) i s(S).Semijonciunea relaiei r i s, notat cu r|Xs,

    este o mulime de tupluri determinat deexpresia r|Xs = R(r|X|s).

    Exemplul 2 20 Fie relaiile r(A B) s(B C) i

  • 8/3/2019 BDD_Prezentare

    153/445

    Exemplul 2.20. Fie relaiile r(A B), s(B C) i

    q(A B) din fig.2.25. Relaia q = r|Xs.

    s B C

    b1 c1

    r A B

    a1 b1

    a1 b2a2 b1

    Fig. 2.25

    q A B

    a1 b1

    a2 b2

    IMPLEMENTAREA OPERATORILOR ALGEBREIRELATIONALE N SQL

  • 8/3/2019 BDD_Prezentare

    154/445

    1. Restricia

    A where Bselect * from StudCurs

    WHERE NRPOINT > 59;

    IDC IDST NRPOINT NOTEETC

    ---- ---- ---------- ----------5004 0001 60

    5005 0001 70

    5004 0003 60

    5005 0005 70

    5004 0007 605005 0008 70

    6 rows selected.

    2. Proiecia A[X,Y,...,Z]

    SELECT DISTINCT IDST

  • 8/3/2019 BDD_Prezentare

    155/445

    FROM StudCurs;

    IDST----

    0001

    0002

    00030005

    0006

    0007

    0008

    7 rows selected.

  • 8/3/2019 BDD_Prezentare

    156/445

    4. Jonciunea A times B where C

  • 8/3/2019 BDD_Prezentare

    157/445

    select Cours.IDC, Student.IDST, null

    from Student, Cours, dual

    whereStudent.anEt=1

    ;

    IDC IDST N

    ---- ---- -

    5001 0001

    5002 0001

    5003 0001

    5004 0001

    5005 0001

    IDC IDST N

    ---- ---- -

    5001 0003

    5002 0003

    5003 0003

    5004 0003

    5005 0003

    IDC IDST N

    ---- ---- -

    5001 0007

    5002 0007

    5003 0007

    5004 0007

    5005 0007

    5. Divizarea A(X,Y) devid by B(Y)

    SELECT IDST FROM StudCurs

  • 8/3/2019 BDD_Prezentare

    158/445

    GROUP BY IDST

    HAVING COUNT(*) = (SELECT COUNT(*) FROM Cours) ;

    StudCursIDC IDST NRPOINT NOTE

    ---- ---- ---------- ------

    -

    5001 0001 20

    5002 0001 30

    5003 0001 50

    5004 0001 60

    5005 0001 70

    5001 0002 20

    5002 0002 30

    5003 0003 50

    5004 0003 60

    5005 0005 70

    5001 0003 205002 0005 30

    5003 0006 50

    5004 0007 605005 0008 70

    CoursIDC NO POINTC IDG

    ---- -- ------- ---

    5001 c1 10 001

    5002 c2 30 002

    5003 c3 20 003

    5004 c4 30 0015005 c5 20 003

    IDST

    ----

    0001

    :

    Urmtoarele trei interogri cer ca tabelele s aibaceleai tipuri. Din acest motiv, vom construi doutabele virtuale numite vederi Student2 Student1

  • 8/3/2019 BDD_Prezentare

    159/445

    tabele virtuale numite vederi Student2 Student1din tabelul Student:

    create view Student1 ASselect IDST, nomSt, anSt, IDGrup

    FROM Student

    WHERE anSt

  • 8/3/2019 BDD_Prezentare

    160/445

    select IDST, nomSt, anSt, IDGroup

    FROM Student

    WHERE anSt >= 3;

    SELECT * FROM Student2;

    Student2

    IDST NOME ANST IDG---- ---- ---------- ---

    0004 St04 3 001

    0005 St05 4 001

    0008 St08 3 002

    0009 St09 3 003

    0010 St10 3 0020011 St11 3 003

    6. Uniune : A UnionB

  • 8/3/2019 BDD_Prezentare

    161/445

    SELECT *

    FROMStudent1

    UNIONSELECT *

    FROMStudent2;

    IDST NOME ANST IDG

    ---- ---- ---------- ---

    0001 St01 1 0020002 St02 2 001

    0003 St03 1 001

    0004 St04 3 001

    0005 St05 4 001

    0006 St06 2 001

    0007 St07 1 002

    0008 St08 3 002

    0009 St09 3 003

    0010 St10 3 002

    0011 St11 3 00311 rows selected.

    7. Diferena A Minus B

  • 8/3/2019 BDD_Prezentare

    162/445

    SELECT *

    FROM Student1MINUS

    SELECT *

    FROM Student2;

    IDET NOME ANET IDG---- ---- ---------- ---

    0001 St01 1 002

    0002 St02 2 001

    0003 St03 1 001

    0006 St06 2 001

    0007 St07 1 002

    8. Intersecia: A intersect B

  • 8/3/2019 BDD_Prezentare

    163/445

    SELECT *

    FROM Student1INTERSECT

    SELECT *

    FROM Student2;

    IDET NOME ANET IDG---- ---- ---------- ---

    0004 St04 3 001

    0008 St08 3 002

    0009 St09 3 003

    0010 St10 3 002

    0011 St11 3 003

    Capitolul 3

  • 8/3/2019 BDD_Prezentare

    164/445

    Capitolul 3

    DEPENDENE FUNCIONALEProiectarea logic a bazei de date presupunediminuarea redundanei i asigurareasecuritii datelor. Acest scop se poate atinge,

    dac se cunosc restriciile ce pot fi aplicateasupra datelor. Dependenele sunt restriciiimpuse datelor n baza de date. Mulimea dedependene este partea esenial a schemeiunei relaii, deci i a schemei bazei de date.

    3.1. Noiuni generaleS considerm relaia orar din fig 3 1

  • 8/3/2019 BDD_Prezentare

    165/445

    S considerm relaia orardin fig. 3.1.orar PROFESOR DISCIPLINA ZI ORA GRUPA SALA

    Petrescu Baze de date Luni 8:00 0941 402Petrescu Baze de date Mierc. 14:30 0941 216

    Petrescu Baze de date Mierc. 16:00 0941 216

    Vasilache Progr.logic Luni 9:30 0941 404

    Fig. 3.l. Relaia orarAceast relaie arat, care profesor pred disciplina dat,crei grupe, n ce zi a sptmnii, la ce or i n ce sal.Atributele ce formeaz schema acestei relaii nu pot primi

    orice valori. Atributele se afl ntr-o interdependen.

    n particular, se impun atributelor urmtoarele restricii:(1) di i li d i d di d

  • 8/3/2019 BDD_Prezentare

    166/445

    (1) o disciplina este predat unei grupe de studiu de un

    singur profesor;(2) profesorul, n ziua dat, la ora dat se gsete ntr-o

    singur sal;(3) n ziua dat, la ora dat, n sal dat se pred o

    singur disciplina.Aceste restricii, ce reflect o interdependen ntreatribute, sunt exemple de dependene funcionale.

    Dependena funcional este o generalizare a noiunii decheie.

    Restriciile de mai sus pot fi formulate:(1) DISCIPLINA GRUPA d i f i l

  • 8/3/2019 BDD_Prezentare

    167/445

    (1) DISCIPLINA GRUPA determin funcional

    PROFESOR sau, ce e echivalent PROFESOR e determinatfuncional de DISCIPLINA GRUPA;

    (2) PROFESOR ZI ORA determin funcional SAL;(3) ZI ORA SAL determin funcional DISCIPLINA;

    i notate respectiv:(1) DISCIPLINA GRUPA PROFESOR;(2) PROFESOR ZI ORA SALA;(3) ZI ORA SALA DISCIPLINA.

    Unica posibilitate de a determin

  • 8/3/2019 BDD_Prezentare

    168/445

    dependenele funcionale const ntr-o analizcu luare-aminte a semanticii atributelor. nacest sens dependenele sunt de fapt aseriunidespre lumea real. Ele nu pot fi demonstrate.

    Dar ele pot i trebuie s fie susinute deSGBD-uri. Majoritatea sistemelor susinnumai dependenele funcionale determinatede cheile relaiei. Dar sunt i sisteme ce susindependene funcionale arbitrare.

    T b i i d l d d l

  • 8/3/2019 BDD_Prezentare

    169/445

    Trebuie menionat c declararea dependenelor

    funcionale ntr-o baza de date este o decizie pe careo ia numai proiectantul bazei de date. Odatdeclarate SGBD-ul v susine aceste restricii. nafar de aceasta, dup cum se v vedea n celelalteseciuni, graie dependenelor, exist o structur maieficient de pstrare a datelor. Dependenelefuncionale vor servi la proiectarea schemelor

    bazelor de date cu anumite proprieti dezirabile.

    Definiia 3 1 Fi l i h R i

  • 8/3/2019 BDD_Prezentare

    170/445

    Definiia 3.1. Fie relaia r cu schema R i

    X,YR. Vom spune c dependena funcionalXY este valid n relaia r (sau relaia rsatisface dependena funcional XY), dac,

    pentru orice dou tupluri din r, fie t1 i t2 dincondiia c tuplurile au X-valori identice,urmeaz c au i Y-valori identice, adict1[X]=t2[X]t1[Y]=t2[Y].

    D X Y lid (R) X

  • 8/3/2019 BDD_Prezentare

    171/445

    Dac X Y e valid n r(R), vom spune c X

    determin funcional Y sau, c Y e determinatuncionalde X n aceast definiie (i mai departe)

    simbolul "" noteaz "implic".Deci dependenta funcional XY reprezint o

    restricie de integritate aplicat tuplurilor relaieir(R), n sensul c oricare dou tupluri din r care

    prezint o aceeai valoare pentru X trebuie sprezinte o aceeai valoare pentru Y.

  • 8/3/2019 BDD_Prezentare

    172/445

    Definiia 3.l poate fi interpretat i n felul urmtor:relaia r(R) satisface dependenta funcional XY, dacrelaia Y(X=x(r)) conine nu mai mult de un tuplupentru orice valoare x a atributului X.

    Partea stng a dependenei poart numele dedeterminant, iar partea dreapt a dependenei poartnumele de determinat Astfel n cadrul dependeneiXY, X este determinantul, iar Y determinatul.

    Exemplul 3.1. Considerm relaiile din fig.3.2 n elesunt valide urmtoarele dependente functionale n

  • 8/3/2019 BDD_Prezentare

    173/445

    sunt valide urmtoarele dependente functionale n

    relaia r1 AB, n relaia r2 AB, BA, n relaiar3 AB.

    r1 A B

    a1 b1a2 b2

    a3 b1

    a4 b1

    a5 b2

    a6 b2

    Fig. 3. 2. Relaiile r1, r2 i r3

    r2 A B

    a1 b1a2 b4

    a1 b1

    a3 b2

    a1 b4

    a4 b3

    r3 A B

    a1 b1a2 b4

    a1 b1

    a3 b2

    a2 b4

    a4 b4

    xemplul 3.1. Considerm relaiile din fig.3.2 n ele suntalide urmtoarele dependente functionale:n relaia r : AB

  • 8/3/2019 BDD_Prezentare

    174/445

    - n relaia r1: AB,

    - n relaia r2: AB, BA,- n relaia r3: AB.

    r1 A B

    a1 b1a2 b2

    a3 b1

    a4 b1

    a5 b2

    a6 b2

    Fig. 3. 2. Relaiile r1, r2 i r3

    r2 A B

    a1 b1a2 b4

    a1 b1

    a3 b2

    a1 b4

    a4 b3

    r3 A B

    a1 b1a2 b4

    a1 b1

    a3 b2

    a2 b4

    a4 b4

    Pentru a verifica dac o dependenta e valid ntr-o relaiedat, se utilizeaz urmtorul algoritm.Algoritmul SATISF (r XY)

  • 8/3/2019 BDD_Prezentare

    175/445

    Algoritmul SATISF (r, XY)

    Intrare: Relaia r(R), dependenta funcional XY, undeX,YR.Ieire: Adevr, dac relaia r satisface dependentafuncional XY,fals - n caz contrar.

    (1) Se sorteaz tuplurile relaiei r n aa fel, ca tuplurile cuX-valori egale s fie grupate mpreun.(2) Se verifica dac mulimea de tupluri cu X-valori egaleare i Y-valori egale, atunci la ieire obinem adevr, n cazcontrarfals.

    Menionm c nu ne intereseaz dependenele

  • 8/3/2019 BDD_Prezentare

    176/445

    funcionale ntmpltoare, dar numai acele cedecurg din semantica atributelor. De exemplu,

    n relaia orar e valid i dependentafuncional

    PROFESORDISCIPLIN

    Dar ea nu reprezint o restricie ce reflectlumea real, fiindc n realitate un profesor

    poate i, de regul, pred mai multe discipline.

    umai dependenele nentmpltoare, asigur integritateasemantic a bazei de date De exemplu, dac un utilizatord t i l i t l

  • 8/3/2019 BDD_Prezentare

    177/445

    dorete s insereze n relaia orarun tuplu

    dd(orar,

  • 8/3/2019 BDD_Prezentare

    178/445

    ntr-o relaie r(R) n orice moment sunt valide o

    mulime de dependente funcionale, s zicem F. Adic Feste o mulime de dependente satisfcut de relaia r(R).Aici apare aceeai problem ca i n cazul cheilor. Oextensie a relaiei satisface mulimea F de dependente

    funcionale, n timp ce alt extensie nu satisface. Pe noi neintereseaz numai dependenele ce sunt satisfcute deorice extensie a relaiei r(R). Dar pentru aceast suntnecesare cunotine asupra semanticii relaiei r(R).

    om considera c mulimea F de dependente

  • 8/3/2019 BDD_Prezentare

    179/445

    funcionale este definit pe mulimea R de

    atribute ce formeaz schema relaiei r i oriceextensie a relaiei r satisface mulimea F.Evident c mulimea de dependente valide n(R) este finit, fiindc finit este schema R.

    Prin urmare, s-ar putea verifica dac r satisfacedependenele din F, aplicnd algoritmulSATISF. ns astfel de soluie este foartelabonoas. Exist o alt cale. Dac sunt

    cunoscute nite dependente, din ele pot fideduse altele.

  • 8/3/2019 BDD_Prezentare

    180/445

    Definiia 3.2. Fie relaia r cu schema R, F - omulime de dependente funcionale i f odependenta asupra R.

    otm cu SAT(F) mulimea tuturor relaiilorasupra R ce satisface orice dependenta din F.

    Vom spune c F logic implic f, sau f esteconsecm logic a F. Scriem F|=f, dac oricerelaie r(R) ce satisface dependenele din Fsatisface i f, adic

    r(R) SAT(F) r(R) SAT(F{f})

  • 8/3/2019 BDD_Prezentare

    181/445

    O regul de inferen stabilete c, dac o

    relaie satisface anumite dependene, ea

    trebuie s satisfac i alte dependene. Vom

    considera ase reguli de inferen a

    dependenelor funcionale.

    Fie relaia r definit pe mulimea de atribute R

    i

    fie W,X,Y,ZR.

    DF1. Regul reflexivitii. Dac YX atunci

  • 8/3/2019 BDD_Prezentare

    182/445

    DF1. Regul reflexivitii. Dac YX, atunci

    XY.Definiia 3.3.0 dependen XY este trivialdac YX.

    Regul DF1 genereaz numai dependenetriviale i ea nu depinde de F, ntructXR, atunci X i RX suntdependene triviale.Deoarece XX, XX e dependen trivial.Dintre aceste dependene prima, X, nu arenici o aplicare practic.

  • 8/3/2019 BDD_Prezentare

    183/445

    DF2. Regul incrementrii. Dac XY iZW, atunci XWYZ.S observm c regul DF2 are mai multecazuri speciale.

    Dac Z= i XY, atunci XWY pentruorice submulime W din R.Dac W=Z i XY, atunci XWYW.Dac X=W, Z=X i XY, atunci XXXY,adic XXY.

    Exemplul 3.2. Considerm relaia din figura3.3. Relaia r(ABCD) satisface dependenfuncional AB. Confom regulii DF2 n

  • 8/3/2019 BDD_Prezentare

    184/445

    aceast relaie sunt valide i dependenele:

    ABB, ACB, ADB, ABCB,

    ABDB, ACD.B, ABCDB, ACBC,AD^BD, ABCBC, ABDBD, ACDBC,ACDBD, ACDBCD, ABCDBC,ABCDBD, ABCDBCD.

    r A B C D

    a1 b1 c1d1

    a2 b2 c1 d1

    a1b1 c1d2

    a3 b3 c2d3

    Fig3.3

    DF3. Regul aditivitii. Dac XY iXZ atunci XYZ

  • 8/3/2019 BDD_Prezentare

    185/445

    XZ, atunci XYZ.

    Exemplul. 3.3. Relaia r(ABCD)reprezentat n fig.3.3 satisface dependenelefuncionale AB i AC. Conform reguliiDF3, relaia r trebuie s satisfac i dependen

    ABC.DF4. Regul proiectivitii. Dac XYZ,atunci XY.

    Exemplul 3.4. Relaia din fig.3.3 satisfacedependen funcional ABC. Conformregulii DF4, ea satisface i dependenele ABi AC.

    DF5. Regul tranzitivitii. Dac XY iYZ atunci XZ

  • 8/3/2019 BDD_Prezentare

    186/445

    YZ, atunci XZ.

    Exemplul 3.5. Relaia r(ABCD),reprezentat n fig.3.4, satisface dependenelefuncionale AB i BC. Conform reguliitranzitivitii, relaia r satisface i dependenfiinctional AC.

    r A B C D

    a1 b1 c2d1

    a2 b2 c1 d2

    a3b1 c2d1

    a4 b1 c2d3

    Fig.3.4

  • 8/3/2019 BDD_Prezentare

    187/445

    DF6. Regul pseudotranzitivitii. DacXY i YWZ, atunci XWZ.S observm c proiectivitatea (DF4) este,ntr-un sens, regul invers regulii aditivittii

    (DF3). Regul DF3 se utilizeaz pentru a unidou dependene cu determinante egale n una,n timp ce regul DF4 - pentru descompunereaunei dependene.

    3.3. Axiomele Armstrong

  • 8/3/2019 BDD_Prezentare

    188/445

    3.3. Axiomele Armstrong

    Definiia 3.4. Fie F o mulime de dependeneasupra R i fie f o dependen funcionalasupra R. Derivaie a dependenei f din F,notat cu F|-f, este o consecutivitate finit de

    dependene funcionale f1,f2,.,.,fkunde:(1) orice dependen f1 poate fi dedusa din (osubmulime a mulimii) F{f1,f2,...,fi-l},aplicnd regulile de inferen DF1-DF6;(2) f este ultimul element, fk, nconsecutivitate.

    C di i (l) i fi f l

  • 8/3/2019 BDD_Prezentare

    189/445

    Remarc. Condiia (l) mai poate fi formulatn felul urmtor. Orice dependen f esteelement al mulimii F sau se deduce dinconsecutivitatea {f1, f2,..., fi-1}, aplicndregulile de inferen DFl-DF6.

    Dac F|-f, vom spune c F deriv f sau c f ederivabil din F. Dac G este mulime dedependene funcionale, atunci prin F|-G sesubnelege c orice dependen funcional

    din G e derivabil din F.

  • 8/3/2019 BDD_Prezentare

    190/445

    E clar c, dac n condiia (1) a definiiei 3.4mulimea de dependene funcionale F e vid,adic |-f, atunci f e dependen trivial,fiindc singura regula de inferen

    corespunztoare poate fi doar DF1.Cu ajutorul regulilor de inferen putemdeduce noi dependene funcionale din celedate.

  • 8/3/2019 BDD_Prezentare

    191/445

    Exemplul 3.4. Fie r o relaie cu schema R iX,Y,ZR. Presupunem c n r(R) sunt validedependenele XYZ i XY. Atunci,conform regulii DF6, relaia r satisface i

    dependen XXZ care se reduce La XZ.Pentru a combate o afirmaie desprevaliditatea unei dependene funcionale, esuficient de a aduce un exemplu de relaie cenu satisface afirmaia dat.

    Exemplul 3.5. S combatem afirmaia cd d XY ZW i li d d

  • 8/3/2019 BDD_Prezentare

    192/445

    dependen XYZW implic dependenXZ.Relaia r(ABCD) din fig.3.6 satisfacedependen funcional ABCD, dar nusatisface dependen AC.

    r A B C D

    a1 b1 c1d1

    a1 b2 c2d1

    Fig.3.6

  • 8/3/2019 BDD_Prezentare

    193/445

    Unele reguli de inferen pot fi deduse dinaltele.Armstrong a artat c regulile DFl, DF2 iDF5 formeaz o mulime de reguliindependente, iar regulile DF3, DF4 i DF6pot fi deduse din DF l, DF2 i DF5.Mulimea {DFl, DF2, DF5} de reguli deinferen este cunoscut sub denumirea deaxiome Armstrong.

    Teorema 3 1 Regulile DF3 DF4 i DF6 se

  • 8/3/2019 BDD_Prezentare

    194/445

    Teorema 3.1. Regulile DF3, DF4 i DF6 sededuc din regulile DFl, DF2, DF5.Definiia 3.5. Fie F o mulime de dependenefuncionale asupra schemei R i X,YR.nchiderea mulimii F, notat cu F+ se

    definete recursiv:(1) FF+;(2) Dac F1F i F1|-XY, atunci XYF+;(3) Nimic altceva nu e n F+.

  • 8/3/2019 BDD_Prezentare

    195/445

    Deci,F

    +=F{XY| F1|-XY pentru F1F i X,

    YR}.Cu alte cuvinte, nchiderea unei mulimi de

    dependene funcionale, F+ reprezintmulimea tuturor dependenelor funcionalecare se pot deriv din mulimea F, aplicndaxiomele Armstrong.

    Este clar c F+

    =(F+

    )+

    .

    Exemplul 3.6. Fie relaia r(ABC) iF={ABC, CB}.Atunci

  • 8/3/2019 BDD_Prezentare

    196/445

    Atunci

    F+= {AA, ABA, ACA, ABCA,BB, ABB, BCB, ABCB, CC,ACC, BCC, ABCC, ABAB,ABCAB, ACAC, ABCAC, BCBC,

    ABCBC, ABCABC, ABC, ABAC,ABBC, AQABC, CB, CBC, ACB,ACAB}.n F+ primele nousprezece dependene sunt

    triviale i se deriv din mulimea

    dedependene, aplicnd DF1, adic |-{XY|YXABC}.

    Alte dependene XY se deriv din ZY,

  • 8/3/2019 BDD_Prezentare

    197/445

    unde ZX, aplicnd regula incrementrii(DF2), adic {ZY} |-(XY|ZXR, YR,YX}. n F+ avem ase dependene deduse,aplicnd regula DF2 asupra F.

    Deci:ABC|-{ABAC, ABBC, ABABC} i{CB)|-{CBC, ACB, ACAB}.Regula tranzitivitii nu genereaz dependenenetriviale. n afar de aceasta, F+ conine cele

    dou dependene din F. n total F+ const dindouzeci i apte dependene.

    Din exemplul de mai sus, se observa cnumrul de dependene ce alctuiesc F+ este

  • 8/3/2019 BDD_Prezentare

    198/445

    numrul de dependene ce alctuiesc F este

    destul de mare n raport cu F.Dac F=, atunci F+ const numai dindependene triviale. Fiindc orice relaie r(R)satisface orice dependen trivial asupra R.

    Dependenele triviale, bineneles, nu seconsider restricii asupra relaiei. ntruct Rare 2

    [R] submulimi, numrul de dependenetriviale ntr-o relaie este exponenial. Nu vom

    consider de asemenea dependenele de formaX, fiindc ele nu au aplicare practic.

  • 8/3/2019 BDD_Prezentare

    199/445

    3.4. Completitudinea regulilor de inferenDefiniia 3.6. Fie R1 o mulime de reguli de inferenasupra mulimii de dependene F. Mulimea R1 de regulieste nchis, dac F|-f, utiliznd regulile din R1, implic

    F|=f. Mulimea de reguli de inferen R1 este complet,dac F|=f implic F|-f, utiliznd regulile din R1.

  • 8/3/2019 BDD_Prezentare

    200/445

    C mulimea de reguli DFl-DF6 este nchis,adic ele au loc n orice relaie, s-a demonstrat

    pentru fiecare regul n parte n seciunea 3.2.

    Pentru a arta c mulimea de reguli estecomplet, mai nti introducem noiunea denchidere a unei mulimi de atribute.

  • 8/3/2019 BDD_Prezentare

    201/445

    Definiia 3.7. Fie F o mulime dedependene asupra R i XR. nchidereamulimii de atribute X n raport cu mulimeade dependene F, notat cu X+ se defineteastfel:

    (1) XX+ (X e o submulime a nchiderii);

    (2) Dac ZX+ i ZYF, atunci YX+(3) Nici un alt atribut nu face parte din X

    +.

    Adic X+X{Y|ZX+ i ZYF}.

    Condiiedefiniia

    Comparare atribute,dependene

    (AB)+

  • 8/3/2019 BDD_Prezentare

    202/445

    3.6.

    p

    (l)(2)(2)(2)

    AB(AB)+ABAB i ABDEFDABDE i DCFCEABCDE i CE.GF

    ABABDEABCDEABCDEG

    Fig.3.7.

    Exemplul 3.7. Fie R=ABCDEG i F={DC,ABDE, CEG}. S se arate c (AB)+ = ABCDEG. n

    fg. 3.7 este reprezentat procesul de construire a (AB)+

    .

    Teorema 3.2. Mulimea de reguli de mferen DFl-DF6 este complet. Deci, dac F| =XY, atunci F|-XY

  • 8/3/2019 BDD_Prezentare

    203/445

    XY.

    Lund n consideraie c s-a demonstrat (ncompartimentul 3.2.) c mulimea de reguli estenchis, adic F|-XY implic F|=XY putem spunec mulimea de reguli de inferen DF1-DF6 este

    nchis i complet, adic F =XY, dac i numai dacF|-XY. Prin urmare, putem utiliza " |= " i " |-"deopotriv.Dat fiind faptul c regulile DFl-DF6 se deduc din

    axiomele Armstrong, vom spune c i axiomeleArmstrong sunt nchise i complete.

    3.5. Modele de derivriNoiunea de consecutivitate de derivare

  • 8/3/2019 BDD_Prezentare

    204/445

    introdus n seciunea 3.3 are o serie dedezavantaje. De regul, pentru o dependenpot exista o serie de derivri din mulimea dedependene date F. Aceste derivri, fiind nesen echivalente, difer prin ordinea i tipulregulilor aplicate pentru derivarea

    dependenelor din consecutivitate. n plus,consecutivitile de derivare pot coninedependene derivate redundante. Mai jos vom

    examina modele de derivri ce ntr-o msursau alta sunt lipsite de aceste dezavantaje.

  • 8/3/2019 BDD_Prezentare

    205/445

    3.5.1. RAP-consecutiviti de derivareAxiomele Armstrong sunt o submulimecomplet de reguli de inferen a mulimiiDF1-DF6. Exista, ns, mulimi complete de

    reguli de inferen ce nu sunt submulimi alemulimii DF1-DF6. Considerm o astfel demulime de reguli de inferen denumit B-axiome.

    Pentru relaia r(R), submulimile W, X, Y i Zale mulimii R i CR avem:

  • 8/3/2019 BDD_Prezentare

    206/445

    ale mulimii R i CR avem:B1. Regul reflexivitii. Dac YX, atunciXY.B2. Regul acumulrii. Dac XYZ iZCW, atunci XYZC.

    B3. Regul proiectivitii. Dac XYZ,atunci XY.Teorema 3.3. Mulimea de reguli B1-B3 esteo mulime nchis.

    Teorema 3.4. Mulimea de reguli B1-B3 estecomplet.

    Definiia 3.8. Consecutivitatea de dependenefuncionale se numete RAP-consecutivitate dederivare (dup primele litere ale denumirilor

  • 8/3/2019 BDD_Prezentare

    207/445

    B-axiomelor: Reflexivitate, Acumulare,Proiectivitate) a unei dependene XY dinmulimea de dependene F, dac:(l) prima dependen n consecutivitate eXX;(2) ultima dependen n consecutivitate eXY (obinut, aplicnd regula B3);(3) orice dependen din consecutivitate (nafar de prima i ultima) sau este o dependendin F, sau are forma XZ i e obinut,aplicnd regula B2 asupra dependenelorprecedente.

    Exemplul 3.8. Fie F=(ABE, G- J, BEI,EG, GIH}. Consecutivitatea de mai joseste RAP-consecutivitate de derivare a

  • 8/3/2019 BDD_Prezentare

    208/445

    este RAP consecutivitate de derivare a

    dependenei ABGH din F.f1 :=ABAB (B1),f2 :=ABE (dat),f3 :=ABABE (B2: f1, f2),

    f4 :=BEI (dat),f5 :=ABABEI (B2: f3, f4),f6 :=EG (dat),f7 := ABABEIG (B2:f5, f6),

    f8 :=GIH (dat),f9 :=ABABEIGH (B2: f7, f8),f10:=ABGH (B3: f9).

    3.5.2. DDA-grafuri de derivareDDA-graful (Derivation Directed Acyclic-

    graph) este o interpretare grafic a RAP-

    consecutivitii de derivare.

  • 8/3/2019 BDD_Prezentare

    209/445

    Fig 3.9

    Definiia 3.9. Fie F o mulime de dependenefuncionale asupra schemei R. DDA-graasupra F este un graf orientat far cicluri ce se

  • 8/3/2019 BDD_Prezentare

    210/445

    asupra F este un graf orientat far cicluri ce se

    definete recursiv:R1. O mulime de noduri notate cu atribute dinR este DDA-graf.R2. Dac H este DDA-graf i B1,.,.,Bn sunt

    noduri n H i dependen funcionalB1,...BnCZ este n F, atunci H

    1, obinut dinH prin adugarea nodului C (dac astfel de nodnu exist) i muchiilor (B1C) ... (BnC) orientate

    spre C, este DDA-graf.R3. DDA-graf este numai graful obinut prinaplicarea regulilor R1 i R2.

    Definiia 3.10. Nodul B al unui DDA-gra

    H se numete iniial, dac n el nu intr nici omuchie (Nodunle iniiale se adaug n H prin

  • 8/3/2019 BDD_Prezentare

    211/445

    muchie (Nodunle iniiale se adaug n H prinregula R1)

    Definiia 3.11. Fie H un DDA-graf asupra F

    Graful H se numete DDA-graf de derivare adependenei XY din F, dac:

    (1) X este mulimea de noduri iniiale n H,(2) orice atribut din Y este un nod n H.

    Definiia 3.12. Mulimea de dependene dinF, utilizate de regula R1 pentru construirea

    DDA-grafului H de derivare a unei dependeneXY din F se numete mulime utilizabil,notat cu U(H).

    Exemplul 3.9. n fig. 3.9 sunt prezentate

  • 8/3/2019 BDD_Prezentare

    212/445

    etapele de construire a DDA-grafului dederivare a dependenei ABCG din mulimeade dependene funcionale

    F={ABCD, AI, CE, DEGI}.Nodurile iniiale sunt A i B. Mulimea

    utilizabil U(H)={ABCD, CE, DEGI}Graful H obinut este DDA-graful de derivarea dependenei ABCG din F, fiindcmulimea de atribute AB formeaz nodurile

    iniiale din H, iar CG sunt noduri n H.

    3.5.3. Derivaia maximalModelele de derivare descrise mai sus

  • 8/3/2019 BDD_Prezentare

    213/445

    poart mai mult un caracter teoretic. Ele nusunt lipsite de neajunsul c pentru odependen dat exist mai multeconsecutiviti de derivare Aici vom consideraun model, numit derivare maximal, liber deacest dezavantaj. Acest model este foarte

    aproape de noiunea de nchidere a uneimulimi de atribute n raport cu o mulime dedependene funcionale Ei va fi utilizat ndemonstrarea diverselor rezultate privindacopennle de dependene funcionale.

    Definiia 3.13. Fie F o mulime dedependene funcionale asupra schemei R i feXR. Derivaia maximal a mulimii de

  • 8/3/2019 BDD_Prezentare

    214/445

    atribute X n raport cu mulimea dedependene funcionale F este oconsecutivitate de mulimi de atribute

    ,

    unde(1) X0=X,

    (2) Xi=Xi-1Z, li n, unde Z = iWj pentruorice dependen VjWjF ce satisface

    VjXi-1 i Wj X i-1.(3) n F nu exist nici o dependen VjWjpentru care V Xn i WiXn.

    nainte de a arta c derivaia maximal esteun instrument puternic de modelare a derivrii

  • 8/3/2019 BDD_Prezentare

    215/445

    dependenelor funcionale, considerm douproprieti ale ei.Lema 3.1. Dac XY i consecutivitile

    , sunt derivaiimaximale ale mulimilor X i Y,corespunztor, n raport cu F, atunci pentruorice Xi exist o mulime Yj nct XiYj i ji.

    Lema 3.2. Dac estedenvaia maximal a mulimii X n raport cu

    mulimea de dependene funcionale F, atunciXXiF

    +, 0in.

    n baza acestor dou proprieti se poatedemonstra.

  • 8/3/2019 BDD_Prezentare

    216/445

    Teorema 3.5. Fie derivaiamaximal a mulimii X n raport cu mulimeade dependene funcionale F Atunci XYF+dac i numai dac YXn.

    Definiia 3.14. Fie XY

    F

    +

    i denvaia maximal a mulimii X nraport cu F. Fie Xi este primul element din

    consecutivitate ce conine mulimea Y.Subconsecutivitatea se numetederivaia dependenei funcionale XY nraport cu F.

    Din teorema 3 5 i definiia 3.14 urmeaz:Consecina 3.1. XYF+ atunci i numai

    atunci cnd exist derivaia dependenei XY

  • 8/3/2019 BDD_Prezentare

    217/445

    p

    n raport cu F.Consecina 3.2. Dac XYF+ i

    dependen VWF e utilizat n construireadenvaiei dependenei XY n raport cu F,

    atunci XVF+.Trebuie menionat, c derivaia maximal

    este un model de derivare liber dedezavantajele menionate la nceputul acestei

    seciuni. Existena a unei singure derivaiipentru o dependen dat v fi util nexpunerea de mai departe a materiei.

    3.5.4. Algoritmi

  • 8/3/2019 BDD_Prezentare

    218/445

    Pentru a deternuna dac F|=XY, esuficient de verificat dac XYF+. ns, F+este excesiv de mare n raport cu F. Edezirabil o metod de verificare, dac XYaparine F+, fr a deduce toate dependenelefuncionale din F. Un astfel de algontm eprezentat mai jos. Nucleul algontmului constdin procedura de construire a nchideriimulimii de atribute X n raport cu F. Dup ce

    se gsete X+ se verific dac YX+.

  • 8/3/2019 BDD_Prezentare

    219/445

    Este evident c ultimul element, Xn, dinderivaia maximal nu este altceva dect X+ iarteorema 3.5 ne sugereaz c XY urmeaz

    logic din F, dac YX+

    . Deci, derivaiamaximal servete drept model teoretic pentruurmtorul algontm de deternunare a lui X+.

  • 8/3/2019 BDD_Prezentare

    220/445

    Algoritmul CLOSURE caut n F odependen funcional pentru caredeterminantul reprezint o submulime a luiXi, iar determinatul nu-este inclus n Xi. Dacse gsete o astfel de dependen funcional,atunci se adaug la Xi atributele, careconstituie determinatul dependenei. Dac nuse gsete, atunci nchiderea cutat, X+ estereprezentat de mulimea de atribute Xi.

    Algoritmul CLOSURE (F, X, X+)Intrare: F- o mulime de dependenefuncionale asupra schemei R; X - o mulimede atribute, XR.

  • 8/3/2019 BDD_Prezentare

    221/445

    Ieire: X+ - nchiderea mulimii X n raport cuF.begini:=0; Xi:=X;

    repeati:=i+l;Xi:= X i-1;For all VW in F

    if VXi then Xi:= X iW;until Xi:= X i-1;retum (X+:=X,);end.

    Exemplul 3.10. Fie F={BCD, ADE,BA}, X=B. S se calculeze X+.Iniial X0=B.n ciclul repeat:

  • 8/3/2019 BDD_Prezentare

    222/445

    pX1=B.n ciclul for:X1= BCD (aplicnd BCD),X1= ABCD (aplicnd BA).

    X2=ABCD.n ciclul for:X2=ABCDE (aplicnd ADE)X3=ABCDE.

    Dup ciclul forX3=X2.Rezultat: X+:=ABCDE.Deci nchiderea lui B n raport cu F este(B)+=ABCDE.

  • 8/3/2019 BDD_Prezentare

    223/445

    Algoritmul CLOSURE realmente

    construiete derivaia maximal a mulimii deatribute X n raport cu F. Apelnd laCLOSURE e uor de construit algoritmul deverificare a apartenenei unei dependenefuncionale la F+. Aceast verificare e realizatn algoritmul MEMBERSHIP.

    Algoritmul MEMBERSHIP(F, XY)Intrare: F- o mulime de dependene funcionale;

  • 8/3/2019 BDD_Prezentare

    224/445

    XY - o dependen funcional.Ieire: adevr, dac F | =XY, fals - n caz contrar.begin

    CLOSURE (F, X, X+);

    if YX+ then retum (adevr) else retum (fals);end.Corectitudinea algoritmilor CLOSURE iMEMBERSHIP rezult imediat din teorema 3.5.

  • 8/3/2019 BDD_Prezentare

    225/445

    3.6. Acoperirin aceast seciune se consider diverse

    moduri de reprezentare a mulimilor de

    dependene, cum ar fi mulimilenonredundante, reduse, canonice, minimale ioptimale.

    3.6.1. Mulimi echivalente de dependenefuncionale

    Definiia 3.15. Dou mulimi de dependenefuncionale F i G se numesc echivalente, notat cu

  • 8/3/2019 BDD_Prezentare

    226/445

    FG, dac F+=G+. Vom mai spune n acest caz c Facoper G (sau G acoper F).

    Dac FG, adic F+=G+, atunci orice dependenXY ce urmeaz logic din F unneaz i din G. Deci

    pentru a verifica dac F i G sunt echivalente se iaorice dependen XY din F i se verific dacG|=XY. Dac o oarecare dependen XY nuaparine lui G+ atunci F+G+. Apoi analogic se verific

    dac orice dependen VW din G se deduce din F.Dac toate dependenele se deduc, mulimile F i Gsunt echivalente.

  • 8/3/2019 BDD_Prezentare

    227/445

    Exemplul 3.11. Mulimile F={ABC,ACD, ADB, CB} i G={ADC,ABD, CB} sunt echivalente, ns F nu

    este echivalent mulimii G1

    ={ABC,ACD, ADB, ACB} (a se verifica ncalitate de exerciiu).

  • 8/3/2019 BDD_Prezentare

    228/445

    3.6.2. Acoperiri nonredundanteDefiniia 3.16. Mulimea de dependenefuncionale F este nonredundant, dac nuexist o submulime proprie F1a mulimii F iF

    1F. Dac o astfel de submulime exist,atunci F se numete redundant. Mulimea Feste acoperire nonredundant a mulimii G,dac F este acoperire pentru G i F estenonredundant.

  • 8/3/2019 BDD_Prezentare

    229/445

    Exemplul 3.12. Fie G={ABC, BC}.Mulimea F={AB, AC, BC} esteacoperire a mulimii G, dar nu e acoperirenonredundant, fiindc F1={AB, BC} eacoperire pentru G, ns F1F.S considerm o alt interpretare a noiunii demulime nonredundant.

    Definiia 3.17. Mulimea F de dependene

  • 8/3/2019 BDD_Prezentare

    230/445

    funcionale se numete nonredundant, dac n ea nuexist nici o dependen XY nct (F \ {XY})|=XY. n caz contrar, F se numete redundant.

    Aceast definiie este pus n baza urmtoruluialgoritm de construire a acoperirii nonredundante. E de

    menionat c rezultatul obinut n urma aplicriialgoritmului depinde de ordinea considerriidependenelor funcionale.

    Algoritmul NONREDUN (F,G)

    Intrare: F - o mulime de dependene

  • 8/3/2019 BDD_Prezentare

    231/445

    funcionale.Ieire: G - o acoperire nonredundant amulimii F.begin

    G:=F;for all XY in Gif MEMBERSHIP (G \ {XY}, XY) thenG:=G\{XY};

    retum (G);end.

  • 8/3/2019 BDD_Prezentare

    232/445

    Exemplul 3.13. Fie F = {AB, BA, BC,AC}. n rezultatul aplicrii algoritmului

    ONREDUN obinem acoperirea nonredundant G= {AB, BA, AC}. Dac mulimea F e

    prezentat n alt ordine {AB, AC, BA,BC} se obine rezultatul G = {AB, BA,BC}.

  • 8/3/2019 BDD_Prezentare

    233/445

    3.6.3. Acoperiri reduseDac F e o mulime nonredundant, atunci

    nu poate fi eliminat din F nici o dependenfuncional fr a afecta echivalent mulimiiobinute cu cea anterioar. n schimb poate fimicorat dimensiunea mulimii F, eliminndunele atribute din dependenele funcionale.

    Definiia 3.18. Fie F o mulime dedependene funcionale asupra schemei R iXYF. Atributul A este redundant n

  • 8/3/2019 BDD_Prezentare

    234/445

    dependen XY n raport cu F, dac:(1) AX, V=X \A i F\{XY}{VY}Fsau

    (2) AY,W=Y\A i F\{XY}{XW}F.

    Cu alte cuvinte, atributul A este redundantn dependen XY, dac el poate fi eliminatdin determinant sau determinat, fr a fischimbat nchiderea mulimii F. Procesul de

    eliminare a atributelor redundante se numete,corespunztor, reducere n stnga i reduceren dreapta a dependenelor.

  • 8/3/2019 BDD_Prezentare

    235/445

    Exemplul 3.14. FieF = {ACB, AC, ABD}.

    Atributul C este redundant n ACB,fiindc (AC)+ = A+ = ACBD. Adic AB este

    n F+

    . Deci dependen ACB poate finlocuit cu AB n mulimea de dependenefuncionale F. Atributul B este redundant n

    partea dreapta a dependenei ABD.

  • 8/3/2019 BDD_Prezentare

    236/445

    Definiia 3.19. Fie F o mulime de dependenefuncionale asupra schemei R. Mulimea F senumete redus n s