SlideShare une entreprise Scribd logo
1  sur  74
Télécharger pour lire hors ligne
Ioan MOCIAN




          BAZE DE DATE
             Lucr ri de laborator




UNIVERSITATEA PETRU MAIOR TÂRGU MURE

                2008
Cuvânt înainte
Prezentul îndrum tor de lucr ri de laborator pentru baze de date vine s completeze cursul de
baze de date cu aspectele practice care trebuie testate în cadrul laboratorului i proiectului.
Acest îndrum tor urm re te structura cursului predat i se compune din 5 lucr ri de laborator
care se vor executa pe durata mai multor edin e.

Lucr rile de laborator propuse vor trebui efectuate consecvent, deoarece ele sunt gândite ca
un proces continuu, adic rezultatele lor vor fi folosite de lucr rile care urmeaz . Prin urmare,
acestea nu se pot face decât în ordinea lor fireasc . Cu cât ve i lucra mai con tiincios, cu atât
ve i avea satisfac ii mai mari i mai pu in timp irosit.

Trebuie s ave i în vedere c bazele de date, trebuie s aib date coerente pentru a putea s
test m func ionarea formularelor, interog rilor i rapoartelor. Fiecare student va trebui s
implementeze proiectul biblioteca cu propriile date introduse, parcurgând toate etapele de
proiectare i implementare a unei baze de date.

Proiectul „Biblioteca” implementat corect v asigur nota de trecere a examenului prin
sus inerea lui în cadrul colocviului.

Con inutul celor 4 lucr ri, sau mai corect spus, 3 lucr ri de laborator i un proiect, este
urm torul:

Lucrarea 1 con ine studierea conceptelor bazelor de date rela ionale. La sfâr itul lucr rii sunt
enumera i termenii pe care studentul îi are de clarificat. În Excel ca trebui sa dea exemple din
cele 3 tipuri de rela ii existente 1:1, 1:N i N:N.

Lucrarea 2 este dedicat studierii etapelor de proiectare a unei baze de date, vor fi studiate
cele 7 etape ale unui proiect, cu exemplificare proiectul „Biblioteca”. La sfâr itul lucr rii,
studen ii vor avea create structura tabelelor, diagrama de rela ii i completate 10 formulare cu
specifica ii de câmp.

Lucrarea 3 este dedicat studierii limbajului SQL, con inând exemple cu instruc iunile de
baz . Studen ii trebuie s în eleag func ionarea expresiilor prezentate, s le explice i poat
concepe alte exemple. Aceste expresii vor fi reluate, pe viu, în cadrul programului Access.

Lucrarea 4 cuprinde ini ierea în utilizarea programului Access cu finalitate în implementarea
proiectului „Biblioteca”. Se întinde pe durata a mai multor laboratoare, iar în final fiecare
student va avea propria aplica ie de baz                  de date în Access numit
Biblioteca_nume_prenume.mdb.

Lucrarea 5 este dedicat elementelor de performan ale programului Access, în care se vor
crea macro-uri i se va particulariza aplica ia „Biblioteca”, pentru a ar ta ca o aplica ie
profesional .

Aplica ia „Biblioteca” prezentat în acest îndrum tor poate fi un bun exemplu pentru aplica ii
proprii.



      Târgu Mure , 20 ianuarie 2008                                         Autorul




                                               3
Cuprins
Cuvânt înainte .............................................................................................................. 3
Lucrarea 1. Terminologia bazelor de date rela ionale ............................................. 6
      Defini ii .............................................................................................................. 6
      Desf urarea lucr rii ........................................................................................ 15
Lucrarea 2. Elemente de proiectare a bazelor de date rela ionale .......................                                    16
      Considera ii teoretice ………………………………………………………..                                                                        16
      Studiu de caz. Proiectarea bazei de date „Biblioteca” ………………………                                                       16
      Desf urarea lucr rii .......................................................................................          17
Lucrarea nr. 3. Ini iere în limbajul SQL ................................................................ 18
      Opera iuni simple folosind limbajul SQL ………………………………….. 18
              Reg sirea datelor …………………………………………………… 18
              Sortarea datelor …………………………………………………….. 19
              Filtrarea datelor …………………………………………………….. 20
              Operatorii clauzei WHERE ………………………………………… 20
              Filtrare avansat …………………………………………………… 21
              Opera iuni avansate folosind limbajul SQL ………………………. 25
                      Câmpuri calculate …………………………………………. 25
              Desf urarea lucr rii ......................................................................... 26
Lucrarea nr. 4. Studiu de caz: Baza de date ” Biblioteca” ................................. 27
      Considera ii generale despre programul Access …………………………... 27
              Interfa a programului ACCESS …………………………………… 27
              Crearea tabelelor …………………………………………………… 28
              Rela ii între tabele …………………………………………………. 30
              Crearea rela iilor cu Lookup Wizard ……………………………… 31
              Crearea tabelelor bazei de date ”Biblioteca” ……………………… 34
              Crearea formularelor pentru introducerea datelor ………………… 36
              Testarea expresiilor SQL de la lucrarea nr. 3 ……………………… 42
      Crearea interog rilor ………………………………………………………. 44
              Vederea ”C r ile din bibiotec ” ……………………………….…… 44
              Vederea ”C r ile împrumutate” ……………………………………. 46
              Vederea ”Situa ie cititor” ………………………………………….. 46
      Crearea formularelor pentru vizualizarea informa iilor …………………… 47
              Crearea formularului de vizualizare a c r ilor
              din bibliotec ………………………………………………………. 49
              Crearea formularului de vizualizare a situa iei
              unui cititor …………………………………………………………. 51
      Rapoartele bazei de date „Biblioteca” …………………………………….. 55
      Finalizarea lucr rii nr.4 ………………………………………………….… 59
Lucrarea nr. 5. Particularizarea bazei de date ” Biblioteca” ............................. 61
      O scurt prezentare a Macro-urilor ……………………………………….. 61
      Crearea macro-urilor cu singur ac iune …………………………………. 62
      Rularea unei macrocomenzi din fereastra Database ……………………… 63
      Macrocomenzi ata ate evenimentelor …………………………………….. 64
      Utilizarea macrocomenzilor AutoExec i AutoKeys …………………….. 64
      Metod rapid de pornire a aplica iilor …………………………………… 65
      Desf urarea lucr rii ……………………………………………………… 66
              Crearea macro-rilor aplica iei ”Biblioteca” ……………………… 66


                                                                    4
Crearea formei de start pentru aplica ia ”Biblioteca” ……..….…. 68
             Adaptarea formularelor aplica iei ”Biblioteca” …………………. 72
             Configurarea formularului de start ……………………………… 73

Anexe
        Anexa A. Teme de proiect propuse …………………………………….. 74
        Anexa B. Comenzile SQL ……………………………………………… 76
        Anexa C.Formulare de proiectare a bazelor
        de date rela ionale …………………………………………………..….. 78




                                          5
Baze de date – Îndrum tor de lucr ri de laborator                                           Lucrarea nr.1




                      Lucrarea nr. 1. Terminologia bazelor de date rela ionale

În aceast lucrare se vor clarifica principalele no iuni i concepte care vor fi folosite în studiul bazelor
de date rela ionale.



      Defini ii
Baz de date (Database) – O colec ie de date înrudite, stocate în mod organizat, care se
refer la un anumit subiect sau obiectiv, împreun cu instrumentele folosite pentru
manipularea lor.

Date – Valorile care se stocheaz în baza de date. Acestea sunt statice în sensul c r mân
acelea i pân nu intervine o modificare manual sau automat .

Informa ii - Reprezint date pe care le prelucr m într-un mod care le confer semnifica ie i
utilitate pentru noi atunci când lucr m cu respectivele date. Informa iile sunt dinamice, în
sensul c se modific în permanen dup cum se modific datele din baza de date, dar i în
sensul c pot fi prelucrate într-un num r nelimitat de moduri. Ideea care trebuie re inut este
c trebuie s prelucr m datele pentru a le putea transforma în informa ii cu sens.

Valoare nul - Reprezint o valoare care lipse te sau care nu este cunoscut . Deseori,
valoarea nul se confund cu un zero sau unul sau mai multe spa ii albe, ceea ce este total
gre it, din urm toarele motive:
           •   Un zero poate avea mai multe semnifica ii cum ar fi nivelul stocului unui anumit
               produs, num rul de apari ii a unui cod etc.
           •   De i un ir text format din unul sau mai multe spa ii albe nu înseamn nimic pentru cei
               mai mul i dintre noi, reprezint categoric semnifica ie pentru un limbaj de interogare
               cum ar fi SQL. Un spa iu alb este un caracter ca oricare altul cum ar fi “a”.
           •   Un ir de lungime zero – adic dou ghilimele consecutive f r spa iu între ele “”, este
               de asemenea o valoare acceptabil pentru limbaje precum SQL i poate fi semnificativ
               în anumite circumstan e.

Tabel (Table) - Reprezint structurile esen iale dintr-o baz de date, iar fiecare tabel
reprezint întotdeauna un singur subiect concret, cum ar fi studen i, produse, vânz ri etc.
Ordinea logic a înregistr rilor i a câmpurilor din cadrul unui tabel nu are nici o importan ,
iar fiecare tabel con ine cel pu in un câmp – cunoscut sub numele de cheie primar – care
identific în mod unic fiecare înregistrare a tabelului. Un exempu de tabel:

          StudentID       Nume          Prenume     Sectia   <<alte câmpuri>>
          5001            Pop           Mariana     TCM
          5002            Ban           Ioan        TCM
          5012            Laz r         Ana         IEI                              Înregistr ri
          5065            Ban           Lucia       IMPI
          5032            Pop           Dorin       MEC

                              Câmpuri


                                                     6
Baze de date – Îndrum tor de lucr ri de laborator                                            Lucrarea nr.1

Datele dintr-o baz de date rela ional pot exista independent de modul în care sunt stocate
fizic în calculator, datorit acestor ultime dou caracteristici ale unui tabel. Pentru utilizator
acest lucru este foarte bun, deoarece acesta nu mai trebuie s cunoasc loca ia fizic a unei
înregistr ri pentru a putea reg si datele.

Subiectul pe care îl reprezint un tabel dat poate fi un obiect sau un eveniment. Când subiectul
este un obiect, tabelul reprezint o cantitate palpabil , precum o persoan , un produs sau un
lucru oarecare. Indiferent de tipul s u, un obiect are caracteristici care pot fi stocate sub form
de date, care vor putea fi prelucrate ulterior într-un num r mare de moduri.

Când subiectul unui tabel este un eveniment, înseamn c tabelul reprezint ceva care se
produce la un anumit moment de timp i care are caracteristici pe care dori i s le înregistra i.
Exemplul clasic care se poate da aici este tabelul cu consulta iile inute de un medic de
familie.

Tabelele pot fi, într-o alt clasificare, de dou tipuri:
           •   Tabele de date care furnizeaz date folosite pentru furnizarea de informa ii i reprezint
               tipul de tabel cel mai frecvent întâlnit într-o baz de date. Datele din acest tip de tabel
               sunt dinamice deoarece se pot manipula (modificare, tergere) i converti în informa ii
               într-o anumit form sau manier . Cu astfel de tabele ve i lucra foarte frecvent în
               decursul lucrului cu baza de date.
           •   Tabele de validare care stocheaz date pe care le ve i folosi cu scopul precis de a
               implementa integritatea datelor. De obicei, un tabel de validare con ine nume de
               localit i, coduri de produse, categorii de activit i etc. Datele din acest tip de tabel sunt
               statice, adic se modific foarte rar.

Câmp (Field) - Reprezint cea mai mic structur din baza de date i reprezint o
caracteristic a subiectului tabelului c ruia îi apar ine. Câmpurile sunt structurile care
stocheaz efectiv datele, care apoi pot fi reg site i prezentate ca informa ii în aproape orice
configura ie pe care o pute i imagina. Fiecare câmp dintr-o baz de date corect proiectat
con ine singur valoare, iar numele s u va identifica tipul de valoare admis. Astfel, procesul
de introducere a datelor devine foarte intuitiv.

Înregistrare (Record) - Reprezint o instan unic a subiectului unui tabel. Înregistrarea
este alc tuit din întregul set de câmpuri dintr-un tabel, indiferent dac respectivele câmpuri
con in sau nu valori. Datorit modalit ii de definire a unui tabel, fiecare înregistrare este
definit în baza de date prin intermediul unei valori unice a câmpului cheie primar a
înregistr rii respective. Astfel, dac avem un tabel de persoane, o înregistrare din tabel trebuie
s identifice fiecare persoan din tabel, care este un unicat.

Înregistr rile reprezint un element cheie pentru în elegerea rela iilor dintre tabele, deoarece
va trebui s cunoa te i rela ia dintre o înregistrare a unui tabel i alte înregistr ri din alt tabel.

Vedere (Query) - Este un tabel “virtual” compus din câmpuri dintr-unul sau mai multe tabele
ale bazei de date; tabelele care alc tuiesc vederea sunt cunoscute sub numele de tabele de
baz . Modelul rela ional îi atribuie unei vederi atributul de virtual deoarece î i preia datele
din tabele de baz , nu- i stocheaz propriile sale date. De fapt, singurele informa ii referitoare
la o vedere care sunt stocate în baza de date se refer la structura vederii respective.
Numeroase programe SGBDR principale lucreaz cu vederi, dar unele (precum Microsoft
Access) le denumesc interog ri salvate.




                                                    7
Baze de date – Îndrum tor de lucr ri de laborator                                              Lucrarea nr.1

Cheie (Key) - sunt acele câmpuri speciale care îndeplinesc roluri foarte bine determinate în
cadrul unui tabel, iar tipul cheii define te rolul acesteia în interiorul tabelului. Un tabel poate
con ine numeroase tipuri de chei, dar cele mai importante sunt cheia primar i cheia extern .

O cheie primar este un câmp sau un grup de câmpuri care identific în mod unic fiecare
înregistrare din cadrul unui tabel; dac o cheie primar este compus din dou sau mai multe
câmpuri, este cunoscut sub numele de cheie primar compozit . O valoare a unei primare
identific o anumit înregistrare din întreaga baz de date. Cheia primar impune integritatea
la nivel de tabel i faciliteaz stabilirea rela iilor cu alte tabele din baza de date.

O cheie extern dintr-un tabel este acea cheie care este cheie primar în alt tabel. Ea nu
trebuie s fie unic dup cum ve i observa în urm torul exemplu, rolul ei este, în special, de a
asigura leg tura cu alt tabel. În figura 1.2 se pot vedea o cheie primar i o cheie extern .


                                                    Impresari
                           Cheie primar              ImpresarID   Nume          Prenume       Telefon
                                                     100          Becali        Ioan          0745-655482
                                                     101          Popescu       Gic           0745-658312
                           Cheie primar
                                                     102          Becali        Victor        0744-547212

                           Sportivi
                              SportivID     ImpresarID    Nume sportiv      Telefon        <<alte câmpuri>>
                              8001          100           Mutu Adrian       0745-657329
                              8002          101           Neaga Ioan        0744-768432
                              8003          100           Chivu Cristian    0723-546291

                                                                  Cheie extern
                         Fig.1.2. Exemplu de câmpuri cheie primar i cheie extern




Se observ cum câmpul ImpresarID este cheie primar pentru tabelul Impresari i cheie
extern pentru tabelul Sportivi. Acolo unde este cheie extern , valoarea ei se poate repeta,
ceea ce este firesc, deoarece un impresar poate avea mai mul i sportivi. Câmpul ImpresarID
din cele dou tabele asigur leg tura dintre ele, asigurând în acela i timp i integritatea
datelor, adic fiecare sportiv are un impresar valabil.

Când determina i c între dou tabele exist o rela ie, în mod caracteristic stabili i rela ia
respectiv preluând o copie a cheii primare din primul tabel i încorporând-o în structura celui
de-al doilea tabel, unde devine cheie extern . Numele de „cheie extern ” deriv din faptul c
al doilea tabel are deja o cheie primar proprie, iar cheia primar pe care o introduce i din
primul tabel este „extern ” pentru al doilea tabel.

Index - Este o structur pe care un program SGBDR o pune la dispozi ie pentru îmbun t irea
procesului de prelucrare a datelor. Un index nu are nici o leg tur cu structura logic a bazei de date.
Unicul motiv pentru care discut m despre termenul index în acest capitol este faptul c oamenii îl
confund deseori cu termenul cheie.

Index i cheie reprezint o alt pereche de termeni folosi i eronat în mod frecvent i pe scar larg în
industria bazelor de date. (Mai ine i minte deosebirile dintre date i informa ii?). Ve i sesiza
întotdeauna diferen a dintre cei doi termeni dac re ine i c , în timp ce cheile sunt structuri logice pe
care la identificarea înregistr rilor dintr-un tabel, indec ii reprezint structuri fizice utilizate la
optimizarea procesului de prelucrare a datelor.

Prin folosirea indec ilor, sort rile i filtr rile unei baze de date se face într-un timp mult mai scurt.

                                                      8
Baze de date – Îndrum tor de lucr ri de laborator                                           Lucrarea nr.1




Rela ii (Relationships) - Între dou tabele exist o rela ie atunci când înregistr rile din primul
tabel pot fi asociate cu înregistr rile din al doilea tabel. Rela ia se poate stabili prin
intermediul unui set de chei primare i chei externe sau cu ajutorul unui al treilea tabel, numit
tabel de leg tur (cunoscut i sub numele de tabel asociativ).

Figura 1.3 ilustreaz rela ii stabilite prin intermediul cheilor primare i al cheilor externe.


        Studenti
         StudID    Nume         Prenume        OrasStudent           <<alte câmpuri>>
         6001      Pop          Remus          Reghin                        ........
         6002      Szabo        Zoltan         Oradea                        ........
         6003      Costea       Florian        Zalau                         ........
         6004      Timocea      Sebastian      Brasov                        ........
         6004      Mocean       Vasile         Fagaras                       ........

        Orar student(table de leg tur )        Cursuri
        StudID     CursID                   CursID Denumire          Credite   ProfesorID
        6001       C001                     C001    PUC              5         25461
        6002       C213                     C213    Baze de date     5         25461
        6002       C001                     C032    SIM              4         56821
        6001       C213                     C015    GD               5         12843
        6002       C015                     G001    AutoCAD          4         32584
        6003       C001                     G004    Inventor         5         3212
        6003       C213                     G007    Intellicad       4         25461
        6001       C015
        6003       G001
        6001       G001


                                    Fig .1.3. Rela ii între tabele

O rela ie este o component important a unei baze de date rela ionale. O rela ie permite
crearea de vederi din tabele multiple i este crucial pentru integritatea datelor, întrucât
contribuie la cantit ii de date redundante i la eliminarea datelor duplicate. Pute i caracteriza
o rela ie în trei moduri: în func ie de tipul rela iei dintre tabele, de maniera în care fiecare
tabel particip la rela ie i de gradul de participare al fiec rui tabel.

Rela ii ”unu cu unu” - Dou tabele au o rela ie unu cu unu când o singur înregistrare din
primul tabel este corelat cu o singur înregistrare din al doilea tabel i o singur înregistrare
din al doilea tabel este corelat cu o singur înregistrare din primul tabel. În figura 2.10 este
reprezentat o astfel de rela ie.

Într-o asemenea rela ie, un tabel serve te ca “tabel p rinte”, iar cel lalt îndepline te rolul de
“tabel copil”. Rela ia se stabile te prin preluarea unei cópii a cheii primare a tabelului p rinte
 i încorporarea acesteia în structura tabelului copil, unde devine o cheie extern . Acesta este
un tip special de rela ie, deoarece este unicul în cadrul c ruia ambele tabele pot folosi efectiv
aceea i cheie primar .

În figura 1.4 este prezentat un exemplu clasic de rela ie unu la unu. În acest caz SALARIA I
este tabelul p rinte, iar SALARIU este tabelul copil. Se observ c fiecare salariat din primul
tabel are un singur corespondent din al doilea tabel.

                                                       9
Baze de date – Îndrum tor de lucr ri de laborator                                             Lucrarea nr.1




        Salaria i
         SalariatID    Nume          Prenume        Telefon         <<alte câmpuri>>
         100           Ban           Ioan           0745-646321            …..
         101           Pop           Dorin          0723-548211            …..
         102           Laz r         Liviu          0264-542138            …..
         103           Cri an        Ovidiu         0740-764282            …..



          Salariu
          SalariatID   Salar orar       Sporuri        <<alte câmpuri>>
          100              34.50           10%                 …..
          101              23.00            5%                 …..
          102              17.45           20%                 …..
          103              16.00           18%                 …..

                                    Fig. 1.4. Exemplu de rela ie „unu la unu”


Rela ia unu la unu poate fi imaginat ca o “rupere” în dou a tabelului. De i câmpurile din
aceste tabele pot fi combinate într-un singur tabel, proiectantul bazei de date a ales s plaseze
în tabelul SALARIA I câmpurile ce pot fi v zute de orice membru al organiza iei i în tabelul
SALARIU câmpurile ce pot fi v zute doar de personalul autorizat, tiut fiind c salariile sunt,
de obicei, confiden iale.

Rela ii „unu cu mai mul i” - Între dou tabele exist o rela ie unu cu mai mul i când o
înregistrare din primul tabel poate fi corelat cu una sau mai multe înregistr ri din al doilea
tabel, în timp ce o înregistrare din al doilea tabel poate fi corelat cu o singur înregistrare din
primul tabel. S studiem un exemplu generic pentru acest tip de rela ie.

Modelul p rinte/copil pe care l-am utilizat pentru a descrie o rela ie „unu cu unu” se aplic i
în acest caz, partea unu a rela iei este tabelul p rinte, iar tabelul din partea mai mul i este
tabelul copil. O rela ie de tipul unu cu mai mul i se stabile te prin preluarea unei cópii a cheii
primare a tabelului p rinte i încorporarea acesteia în structura tabelului copil, unde devine o
cheie extern .

Exemplul din figura 1.5 ilustreaz o rela ie de tip unu cu mai mul i caracteristic .
                                                                                Imprumuturi
   Clienti
                                                                                 ClientID   CarteID   Data
    ClientID    Nume       Prenume      <alte câmp.>                             9002       5648      ....
    9001        Pop        Dorin            .......                              9001       690423    ....
    9002        Ban        Ion              .......                              9004       6563      ....
    9003        Laz r      Ana              .......                              9003       65323     ....
    9004        Buzan      Maria            .......                              9003       09542     ....
    9005        Beldean    Vian             .......                              9003       64823     ....
                                                                                 9002       75001     ....
                                                                                 9005       10045     ....
                                                                                 9005       76100     ....
                          Fig. 1.5. Exemplu de rela ie „unu cu mai mul i”


                                                       10
Baze de date – Îndrum tor de lucr ri de laborator                                             Lucrarea nr.1

O singur înregistrare din tabelul CLIENTI poate fi corelat cu una sau mai multe înregistr ri
din tabelul IMPRUMUTURI, dar o înregistrare din tabelul IMPRUMUTURI este corelat cu
o singur înregistrare din tabelul CLIENTI. Dup cum probabil a i dedus, câmpul ClientID
este o cheie extern în tabelul IMPRUMUTURI.

Rela ia unu cu mai mul i este cea mai obi nuit rela ie care exist între dou tabele dintr-o
baz de date i este cea mai u or de identificat. Rela ia este extrem de important din punct de
vedere al integrit ii datelor, deoarece ea v ajut s elimina i datele duplicate.

Rela ii de tip ”mai mul i cu mai mul i” - Între dou tabele exist o rela ie de mai mul i cu
mai mul i când o înregistrare din primul tabel poate fi corelat cu una sau mai multe
înregistr ri din al doilea tabel i o înregistrare din al doilea tabel poate fi corelat cu una sau
mai multe înregistr ri din primul tabel. O rela ie din aceast categorie se stabile te cu ajutorul
unui tabel de leg tur . Un tabel de leg tur faciliteaz asocierea înregistr rilor dintr-un tabel
cu înregistr rile din cel lalt tabel i asigur lipsa oric ror probleme la opera iile de ad ugare,
 tergere sau modificare a datelor corelate.

Un tabel de leg tur se define te prin preluarea unor cópii ale cheii primare din fiecare tabel i
utilizarea lor pentru a forma structura noului tabel. În realitate, aceste câmpuri îndeplinesc
dou roluri distincte: împreun formeaz cheia primar compozit a tabelului de leg tur , iar
separat, fiecare poate fi asimilat unei chei externe.

O rela ie de tip mai mul i cu mai mul i care nu este stabilit în mod corespunz tor se nume te
„nerezolvat ”. Figura 1.6 prezint un exemplu clasic i clar de rela ie de tip mai mul i cu mai
mul i nerezolvat . În acest exemplu, o înregistrare din tabelul STUDENTI poate fi corelat cu
mai multe înregistr ri din tabelul CURSURI, în timp ce o singur înregistrare din tabelul
CURSURI poate fi corelat cu mai multe înregistr ri din tabelul STUDENTI.


              Studenti
               StudID    Nume            Prenume      OrasStudent          <<alte câmpuri>>
               6001      Pop             Remus        Reghin                       ........
               6002      Szabo           Zoltan       Oradea                       ........
               6003      Costea          Florian      Zalau                        ........
               6004      Timocea         Sebastian    Brasov                       ........
               6004      Mocean          Vasile       Fagaras                      ........



              Cursuri
               CursID     Denumire         Credite   ProfesorID     Sala   <<alte câmpuri>>
               C001       PUC              5         25461          208            ........
               C213       Baze de date     5         25461          208            ........
               C032       SIM              4         56821          209            ........
               C015       GD               5         12843          207            ........
               G001       AutoCAD          4         32584          207            ........
               G004       Inventor         5         3212           208            ........
               G007       Intellicad       4         25461          208            ........

                      Fig. 1.6. Un exemplu tipic de rela ie „mai mul i cu mai mul i”
                                               nerezolvat



Aceast rela ie este nerezolvat datorit particularit ii intrinseci a rela iei de tip mai mul i cu
mai mul i. Principala problem este urm toarea: cum se pot asocia cu u urin înregistr ri din
primul tabel cu înregistr rile din al doilea tabel? Pentru a reformula întrebarea folosind

                                                      11
Baze de date – Îndrum tor de lucr ri de laborator                                                Lucrarea nr.1

tabelele din figura 1.6, cum se asociaz un student cu mai multe cursuri sau un anumit curs cu
mai mul i studen i? Se insereaz câteva câmpuri Student în tabelul CURSURI sau mai multe
câmpuri Curs în tabelul STUDENTI? Oricare din aceste metode va îngreuna lucrul cu datele
 i va afecta în mod negativ integritatea datelor. Cea mai bun metod const în din crearea i
utilizarea unui tabel de leg tur , care va rezolva rela ia de tip mai mul i cu mai mul i în
maniera cea mai adecvat i mai eficient . Figura 1.7 prezint implementarea practic a cestei
solu ii.

Este important ca dumneavoastr s cunoa te i tipul de rela ie care exist între tabelele dintr-o
pereche, deoarece acesta determin modul în care sunt corelate tabelele, dac înregistr rile din
tabele sunt interdependente sau nu, precum i num rul minim i maxim de înregistr ri
corelate care pot exista în cadrul rela iei.



                StudID   Nume           Prenume       OrasStudent           <<alte câmpuri>>
                6001     Pop            Remus         Reghin                        ........
                6002     Szabo          Zoltan        Oradea                        ........
                6003     Costea         Florian       Zalau                         ........
                6004     Timocea        Sebastian     Brasov                        ........
                6004     Mocean         Vasile        Fagaras                       ........




                StudID    CursID                CursID     Denumire        Credite      ProfID
                6001      C001                  C001       PUC             5            25461
                6002      C213                  C213       Baze de date    5            25461
                6002      C001                  C032       SIM             4            56821
                6001      C213                  C015       GD              5            12843
                6002      C015                  G001       AutoCAD         4            32584
                6003      C001                  G004       Inventor        5            3212
                6003      C213                  G007       Intellicad      4            25461
                6001      C015
                6003      G001
                6001      G001


                      Fig. 1.7. Rezolvarea unei rela ii de tip mai mul i cu mai mul i
                                    cu ajutorul unui tabel de leg tur

Tipul de participare - Când stabili i o rela ie între dou tabele, fiecare tabel particip la
rela ie într-o manier particular . Tipul de participare pe care îl atribui i unui tabel dat
determin dac în respectivul tabel trebuie s existe o înregistrare înainte de a putea introduce
înregistr ri în tabelul corelat. Exist dou tipuri de particip ri:
             • Obligatorie - tabelul trebuie s con in cel pu in o înregistrare înainte de a putea
               introduce înregistr ri în tabelul corelat.
             • Op ional – nu este obligatoriu ca tabelul s con in vreo înregistrare înainte de a putea
               introduce înregistr ri în tabelul corelat.

Gradul de participare - Determin num rul minim de înregistr ri existente într-un tabel al
unei rela ii, asociate cu o singur înregistrare a unui tabel corelat, respectiv num rul maxim de
înregistr ri care pot exista într-un tabel al unei rela ii, asociate cu o singur înregistrare din
tabelul corelat.



                                                      12
Baze de date – Îndrum tor de lucr ri de laborator                                     Lucrarea nr.1

Specifica ie de câmp - Reprezint toate elementele unui câmp. Fiecare specifica ie de câmp
încorporeaz trei tipuri de elemente: generale, fizice i logice.
        • Elementele generale reprezint informa iile fundamentale referitoare la câmp i
          includ elemente precum numele câmpului, descrierea i tabelul p rinte.
        • Elementele fizice determin modul de construire a unui câmp i modul de
          reprezentare a acestuia pentru persoana care îl utilizeaz . Aceast categorie include
          elemente precum tipul de date, lungimea i formatul de afi are.
        • Elementele logice descriu valorile stocate într-un câmp i includ articole precum
          valoarea obligatorie, intervalul de valori i valoarea prestabilit .

Aceste specifica ii de câmp o s le completa i folosindu-v de ni te formulare, care vor fi
descrise în detaliu în capitolul urm tor.

Integritatea datelor - prin se în elege validitatea, consecven a i acurate ea datelor incluse
într-o baz de date. Nu pot accentua suficient faptul c nivelul de acurate e al informa iilor pe
care le reg si i din baza de date este direct propor ional cu nivelul de integritate al datelor pe
care îl impune i bazei de date.

Integritatea datelor reprezint unul dintre cele mai importante aspecte ale procesului de
proiectare a bazelor de date i nu v este permis s -l subestima i, s -l trece i cu vederea i nici
m car s -l neglija i par ial. Trebuie s fi i con tient de faptul c dac nu respecta i regulile de
integritate, sunte i pasibili de a ob ine informa ii cu grave erori, care sunt greu de depistat.
Gândi i-v numai la implica iile posibile atunci când baza dumneavoastr de date e folosit
pentru tranzac ii comerciale sau financiare.

Exist patru tipuri de integritate a datelor pe care le ve i implementa pe durata procesului de
proiectare a bazelor de date. Trei dintre acestea se bazeaz pe diferite aspecte ale structurii
bazei de date i sunt denumite în conformitate cu zona (nivelul) la care opereaz . Cel de-al
patrulea tip de integritate a datelor se bazeaz pe modul în care o organiza ie î i percepe i î i
utilizeaz datele.

În continuare vor fi prezentate descrierile fiec rui tip de integritate.
        • Integritatea la nivel de tabel asigur lipsa înregistr rilor duplicate în interiorul
          tabelului i faptul c acel câmp care identific fiecare înregistrare din tabel este unic
           i nu are niciodat valoare nul .
        • Integritatea la nivel de câmp asigur faptul c structura fiec rui câmp este solid , c
          valorile din fiecare câmp sunt valide, consecvente i precise, precum i c se asigur
          o definire consecvent , în întreaga baz de date, a câmpurilor de acela i tip (Cod
          postal, de exemplu).
        • Integritatea la nivel de rela ie (cunoscut i sub numele de integritate referen ial )
          asigur soliditatea rela iei dintre dou tabele, precum i faptul c înregistr rile din
          tabele sunt sincronizate ori de câte ori se introduc, se actualizeaz sau se terg date
          din oricare dintre cele dou tabele.
        • Reguli de desf urare a activit ii impun restric ii sau limit ri asupra anumitor
          aspecte ale bazei de date, pe baza modalit ilor în care o organiza ie î i percepe i î i
          actualizeaz datele. Aceste restric ii pot afecta aspecte ale proiect rii bazelor de date,
          precum i intervalul i tipurile de valori stocate într-un câmp, tipul i gradul de
          participare a fiec rui tabel în cadrul unei rela ii, precum i tipul de sincronizare
          utilizat pentru integritatea la nivel de rela ie, în anumite rela ii.


                                                    13
Baze de date – Îndrum tor de lucr ri de laborator                                           Lucrarea nr.1

Baza de date rela ional - A fost conceput în anul 1969 i este azi cel mai folosit model de
baze de date în gestiunea bazelor de date. Acest model este fundamentat pe dou ramuri ale
matematicii – teoria mul imilor i logica predicatelor de ordinul întâi. Într-adev r, numele
modelului provine de la termenul rela ie, care constituie o parte a teoriei mul imilor.

O concep ie gre it , larg r spândit , este aceea c modelul rela ional i-ar fi preluat numele de
la faptul c între tabelele unei baze de date rela ionale exist rela ii.

O baz de date rela ional stocheaz datele în rela ii, pe care un utilizator le percepe ca pe
ni te tabele. Fiecare rela ie este compus din înregistr ri i câmpuri, iar ordinea fizic a
înregistr rilor sau a câmpurilor dintr-un tabel este complet lipsit de importan , iar fiecare
înregistrare a tabelului este identificat , nu dup locul unde se afl , ci dup un câmp care
con ine o valoare unic . Prin urmare, utilizatorul nu este obligat s cunoasc loca ia fizic a
unei înregistr ri a a cum se întâmpl la celelalte modele de baz de date (ierarhic i re ea),
pentru reg sirea datelor.

Sistem de gestiune a bazelor de date rela ionale (SGBDR) - Este un program software folosit
pentru crearea, între inerea, modificarea i manipularea unei baze de date rela ionale. Numeroase
programe SGBDR furnizeaz i instrumentele necesare pentru a putea crea aplica ii destinate
utilizatorilor finali care lucreaz cu datele din baza de date. Numeroasele facilit i oferite de diferi i
produc tori evolueaz foarte rapid, devenind din ce în ce mai performante.

Primele SGBDR-uri au fost concepute pentru sisteme de tip desktop. Acestea presupun existen a unei
copii a bazei de date pe fiecare calculator care nu este un mare avantaj, în ceea ce prive te actualizarea
datelor. În acest context a ap rut necesitatea amplas rii în mod centralizat a întregii baze de date care
s fie accesat de to i utilizatorii. A a au ap rut SGBDR-urile de tip client-server în care bazele de
date se stocheaz pe un server de baze de date, iar utilizatorii interac ioneaz cu datele prin
intermediul unor aplica ii rezidente pe propriul calculator numit clientul bazei de date.

Creatorul de baze de date folose te programul client-server SGBDR pentru a crea i între ine
programele de aplica ie de baze de date i programele accesorii pentru utilizatorul final. Acesta
implementeaz integritatea i securitatea datelor din serverul de baze de date, având astfel posibilitatea
de a fundamenta o diversitate de aplica ii utilizator pe acela i set de date, f r a afecta integritatea i
securitatea datelor.

Cele mai cunoscute SGBDR-uri sunt:
      • Microsoft Access
      • Microsoft SQL Server
      • Oracle
      • MySQL
      • PostgreSQL

Microsoft Access este un SGBDR comercial de tip desktop, folosit pentru gestionarea bazelor de date
de dimensiuni mici i medii. Poate acoperi f r probleme segmentul firmelor mici i mijlocii. Este
sistemul de gestiune pe care îl vom studia i noi în aceast carte.

Microsoft SQL Server este un SGBDR de tip client-server care accept baze de date foarte mari i un
num r foarte mare de tranzac ii i ruleaz numai pe sistemele de operare Windows. Este solu ia ideal
pentru firmele mari, la un pre de cost relativ sc zut.

Oracle este liderul mondial al pie ei SGBDR-urilor de tip client-server. Oracle accept baze de date
enorme i un num r imens de tranzac ii. Oracle ruleaz pe numeroase sisteme de operare, este un
SGBDR complex a c rui operare i între inere trebuie f cute de un administrator special instruit pentru
acest scop. Se întâlne te la marile companii transna ionale, deoarece pre ul s u este pe m sura
performan elor.

                                                    14
Baze de date – Îndrum tor de lucr ri de laborator                                          Lucrarea nr.1

MySQL este un SGBDR din categoria open-source(codul surs este pus gratuit la dispozi ia
utilizatorilor) fiind unul din liderii pie ei. MySQL este rapid, stabil i accept baze de date de mari
dimensiuni, dar îi lipsesc câteva din caracteristicile importante ale limbajului SQL. Versiunile viitoare
î i propun includerea acestor caracteristici. Ruleaz pe mai multe sisteme de operare i este gratuit
pentru utilizarea în scopuri personale(care nu aduc un câ tig).

PostgreSQL este un SGBDR din categoria open-source, fiind unul din liderii pie ei. Accept baze de
date de mari dimensiuni, este recunoscut pentru setul s u bogat de caracteristici.


      Desf       urarea lucr rii
Lucrarea se consider efectuat dac :

1. Studentul i-a însu it termenii i a în eles conceptele de mai jos:
       Baz de date
       Date
       Informa ii
       Valoare nul
       Tabel
       Câmp
       Înregistrare
       Vedere
       Cheie
       Index
       Rela ii
       Rela ii ”unu cu unu”
       Rela ii „unu cu mai mul i”
       Rela ii de tip ”mai mul i cu mai mul i”
       Tipul de participare
       Gradul de participare
       Specifica ie de câmp
       Integritatea datelor
       Baza de date rela ional
       Sistem de gestiune a bazelor de date rela ionale (SGBDR)

2. Pe baza exemplelor prezentate, studentul va concepe câte un exemplu original cu cele 3
tipuri de rela ii între dou tabele, care vor fi prezentate în Excel.




                                                    15
Baze de date – Îndrum tor de lucr ri de laborator                                          Lucrarea nr.2




                     Lucrarea nr. 2. Elemente de proiectare a bazelor de date
                                                                  rela ionale

În aceast lucrare se vor parcurge cele 7 etape de proiectare a unei baze de date, având ca scop
familiarizarea studen ilor cu problemele intervenite în conceperea unei baze de date.



      Considera ii teoretice
Ca orice lucru inventat de om, i bazele de date au un scop bine definit. Este foarte important
s în elegem scopul pentru care e nevoie de o baz de date, pentru a alege cele mai optime
solu ii.

Înainte de a crea o baz de date, aceasta trebuie proiectat , la fel cum, pentru a construi o cas
avem nevoie de un proiect. Iat cele 7 etape care trebuie parcurse pentru a face un proiect:
        •     Etapa 1 – Definirea unei declara ii de inten ie i a obiectivelor misiunii;
        •     Etapa 2 – Analiza bazei de date curente;
        •     Etapa 3 – Crearea structurilor de date;
        •     Etapa 4 – Determinarea i instituirea rela iilor între tabele;
        •     Etapa 5 – Determinarea i definirea regulilor de desf urare a activit ii;
        •     Etapa 6 – Determinarea i definirea vederilor;
        •     Etapa 7 – Verificarea integrit ii datelor.

Studen ii vor studia din curs Capitulul 3, pentru a- i însu i cuno tin ele legate de fiecare etap
a procesului de proiectare. Pentru a în elege la modul concret, cum se face proiectarea unei
baze de date, vom aborda un studiu de caz.


      Studiu de caz. Proiectarea bazei de date „Biblioteca”
Declara ia de inten ie. Rolul bazei de date este de a ine la zi stocul de c r i din bibliotec          i
de a furniza informa ii despre cititori i împrumuturi.

Obiectivele misiunii:
            • Dorim s avem informa ii despre autorii care au c r i în bibliotec .
            • Dorim s avem informa ii despre editurile care au c r i în bibliotec .
            • Dorim s avem o clasificare a c r ilor pe domenii.
            • Dorim s avem informa ii despre cititorii bibliotecii.
            • Dorim s avem situa ii despre împrumuturi.
            • Dorim s    tim la un moment dat, unde sunt exemplarele unei anumite c r i.



                                                        16
Baze de date – Îndrum tor de lucr ri de laborator                                  Lucrarea nr.2

Studen ii vor încerca s formuleze alte versiuni ale declara iei de inten ie i s propun    i alte
obiective ale misiunii bazei de date.

Crearea structurilor de date i a rela iilor. Presupunem c dup analiza obiectivelor
misiunii i dup mai multe itera ii, am ajuns la structura prezentat mai jos.




Crearea foilor de specifica ii. Studen ii vor completa foi de specifica ii pentru cel pu in 10
câmpuri care s acopere toate tipurile de date. Formularele folosite sunt Specificatii camp.xls,
care se g se te pe server în directorul Baze de date.


      Desf       urarea lucr rii
În directorul Biblioteca al fiec rui student va trebui s se creeze un fi ier Word numit
Documentatie proiect Biblioteca.doc în care vor apare Declara ia de inten ie, Obiectivele
misiunii i Diagrama de rela ii. Diagrama se va executa în Word folosind comenzile Drawing.

De asemenea, în acela i director ve i crea fi ierul Specificatii camp.xls, care va con ine pe 10
foi, cele 10 specifica ii de câmp cerute.

Observa ie important ! Trata i cu mare grij cele 2 fi iere cerute, pentru c ele vor sta la
baza lucr rilor care urmeaz .




                                                    17
Baze de date – Îndrum tor de lucr ri de laborator                                         Lucrarea nr.3




                                                   Lucrarea nr. 3. Ini iere în limbajul SQL

Aceast lucrare de laborator const în parcurgerea exemplelor de expresii SQL pentru ca studen ii s
în eleag acest limbaj, care va fi folosit în lucr rile urm toatoare.



      Opera iuni simple folosind limbajul SQL

      Reg sirea datelor

Reg sirea datelor se face cu instruc iunea SELECT, folosit pentru a reg si una sau mai multe
coloane. Aceasta este cea mai folosit instruc iune din SQL.

Din tabelul tblStudenti prezentat în figura 3.1 ne propunem s extragem numele i prenumele
studen ilor.

  StudID     Nume           Init   Prenume          Sectia      An    Grupa     Stare
     1       Bogdan         P.     Mircea Florin      IEI       1        1311   Bugetar
     2       Meruta         I.     Cosmin             IEI       3        1332   Bugetar
     3       Pop            T.     Marius Traian      IEI       2        1321   Bugetar
     4       Bucur          P.     Mihaela            IEI       2        1321   Bugetar
     5       Chirila        I.     Laura              IEI       3        1331   Bugetar
     6       Cotirla        L.     Raluca Adina      TCM        1        1111   Bugetar
     7       Cotoara        G.     Ovidiu            TCM        1        1111   Bugetar
     8       Cozma          D.     Dumitru           TCM        2        1121   Bugetar
     9       Damian         N.     Daniel            MEC        4        1241   Bugetar
    10       Farcas         I.     Calin Florin      MEC        4        1241   Taxa

                                   Fig. 3.1. Tabelul tblStudenti simplificat

Expresie SQL:
      SELECT Nume, Prenume
      FROM tblStudenti;

Rezultat:

        Nume           Prenume
        Bogdan         Mircea Florin
        Meruta         Cosmin
        Pop            Marius Traian
        Bucur          Mihaela
        Chirila        Laura
        Cotirla        Raluca Adina
        Cotoara        Ovidiu
        Cozma          Dumitru
        Damian         Daniel
        Farcas         Calin Florin




                                                      18
Baze de date – Îndrum tor de lucr ri de laborator                                    Lucrarea nr.3

Observa i expresia SQL care se cite te astfel: selecteaz coloanele Nume i Prenume din tabelul
tblStudenti. S-a folosit i clauza FROM, a a cum se vede. Rezultatul ob inut este evident.

Dac dori i s selecta i toate coloanele tabelului se folose te expresia urm toare:

Expresie SQL:
      SELECT *
      FROM tblStudenti

În locul listei de coloane se pune acest simbol „ * ”.

      Sortarea datelor

Prin sortarea datelor se în elege aranjarea înregistr rilor unui tabel într-o anumit ordine, de
regul , alfabetic sau cresc toare/descresc toare. Sortarea datelor se face cu ajutorul clauzei
ORDER BY a instruc iunii SELECT.

La tabelul din figura 3.1 ne propunem s scoatem numai numele i prenumele studen ilor dar
în ordine alfabetic .

Expresie SQL:
      SELECT Nume, Prenume
      FROM tblStudenti
      ORDER BY Nume;

Rezultat:

        Nume          Prenume
        Bogdan        Mircea Florin
        Bucur         Mihaela
        Chirila       Laura
        Cotirla       Raluca Adina
        Cotoara       Ovidiu
        Cozma         Dumitru
        Damian        Daniel
        Farcas        Calin Florin
        Meruta        Cosmin
        Pop           Marius Traian



Observa i clauza ORDER BY care ordoneaz înregistr rile în ordine alfabetic dup valorile
din câmpul Nume. Se pune întrebare, ce ne facem dac vrem s ordon m invers alfabetic (de
la Z la A)? Sau dac avem un câmp numeric i dorim s ordon m descresc tor dup acest
câmp. Iat r spunsul:
        • Pentru a indica ordinea descresc toare de sortare se folose te cuvântul cheie DESC.
        • Dac câmpul dup care se face sortarea este alfanumeric, sortarea se face alphabetic,
          iar dac este numeric sau de dat calendaristic , sortarea se face
          cresc tor/descresc tor.
        • Dac nu se indic direc ia de sortare, se ia sortarea cresc toare care este implicit .
          (Cazul prezentat.)

Iat cum arat o expresie SQL în care apare i cuvântul cheie DESC:



                                                    19
Baze de date – Îndrum tor de lucr ri de laborator                                  Lucrarea nr.3

Expresie SQL:
      SELECT Nume, Prenume
      FROM tblStudenti
      ORDER BY Nume DESC

Re ine i c rezultatul sort rii datelor este un tabel care are acela i num r de înregistr ri ca i
originalul.

      Filtrarea datelor

Prin filtrarea datelor se în elege extragerea dintr-un tabel numai a anumitor înregistr ri de
care avem nevoie, de exemplu, din tabelul de studen i avem nevoie numai de cei din anul 2.
Pentru a executa aceast opera iune ve i folosi clauza WHERE a instruc iunii SELECT.

Reg sirea numai a înregistr rilor dorite, presupune includerea în expresia SQL a unui criteriu
de c utare a înregistr rilor dorite. Într-o instruc iune SELECT, datele sunt filtrate prin
specificarea criteriilor de c utare în clauza WHERE. Locul acesteia este imediat dup numele
tabelului (clauza FROM), ca în exemplul urm tor. Fie tabelul din figura 3.1.

Ne propunem s filtr m studen ii din anul 2. expresia SQL este urm toarea:

Expresie SQL:
      SELECT StudID, Nume, Init, Prenume, Sectia, Grupa
      FROM tblStudenti
      WHERE An = ”2”;

Rezultat:
 StudID     Nume    Init   Prenume         Sectia   Grupa
 3          Pop     T.     Marius Traian   IEI      1321
 4          Bucur   P.     Mihaela         IEI      1321
 8          Cozma   D.     Dumitru         TCM      1121


      Operatorii clauzei WHERE

Clauza WHERE pe care am examinat-o a testat egalitatea – determin dac o coloan con ine
valoarea specificat . Limbajul SQL accept mai mul i operatori condi ionali, dup cum
urmeaz :
       • =            Egalitate
       • <>           Non-egalitate
       • !=           Non-egalitate
       • <            Mai mic decât
       • <=           Mai mic sau egal cu
       • !<           Nu mai mic decât
       • >            Mai mare decât
       • >=           Mai mare sau egal cu
       • !>           Nu mai mare decât
       • BETWEEN Între dou valori specificate
       • IS NULL Este o valoare NULL



                                                    20
Baze de date – Îndrum tor de lucr ri de laborator                                          Lucrarea nr.3

Observa i c pentru non-egalitate exist dou simboluri, aceasta pentru c diversele SGBDR-
uri accept pe unul sau altul dintre ele.

Iat câteva cazuri concrete de folosire a operatorilor:

Interval de valori: WHERE Pret BETWEEN 2.5 AND 10; (afi eaz toate înregistr rile care au în
coloana „Pret” valori între 2.5 i 10).

Valoare NULL: WHERE Pret IS NULL; (afi eaz toate înregistr rile care nu au pre ).

Non-egalitate: WHERE Stare <> ”Bugetar”; (afi eaz toate înregistr rile din tabelul studen i,
folosit mai înainte, care nu sunt bugetari). Este evident c putem formula i altfel condi ia, dar
aici am folosit non-egalitatea.

Ceilal i operatori se folosesc la fel ca cel de egalitate prezentat pu in mai în fa .

      Filtrare avansat

Filtr rile prezentate mai sus se întâlnesc mai rar în practic deoarece sunt foarte simple.
Filtr rile pe care le ve i folosi în mod curent, sunt filtr ri mai complicate la care criteriile sunt
exprimate prin expresii complexe. Aceste criterii creeaz condi ii puternice de c utare. Vom
folosi al i operatori cum sunt AND, OR, NOT i IN.

De multe ori, filtrarea dup o coloan nu rezolv problema pe care o avem. Pentru a filtra
dup mai multe coloane se folose te operatorul AND. Fie tabelul din figura 3.2. Ne propunem
s facem diferite filtr ri.

  StudID     Nume           Init   Prenume          Sectia      An       Grupa   Stare
     1       Bogdan         P.     Mircea Florin      IEI       1         1311   Bugetar
     2       Meruta         I.     Cosmin             IEI       1         1312   Taxa
     3       Pop            T.     Marius Traian      IEI       2         1321   Bugetar
     4       Bucur          P.     Mihaela           IMPI       2         1321   Bugetar
     5       Pop            I.     Laura              IEI       3         1331   Taxa
     6       Cotirla        L.     Raluca Adina      TCM        1         1111   Bugetar
     7       Cotoara        G.     Ovidiu            TCM        1         1111   Bugetar
     8       Cozma          D.     Dumitru           TCM        2         1121   Bugetar
     9       Damian         N.     Daniel            MEC        4         1241   Bugetar
    10       Cozma          I.     Calin Florin      MEC        4         1241   Taxa

                                           Fig. 3.2. Tabel cu studen i

Operatorul AND. Prima filtrare ar fi studen ii de la IEI din anul 1. Iat expresia SQL:

Expresie SQL:
      SELECT Nume, Prenume, Grupa, Stare
      FROM tblStudenti
      WHERE Sectia=”IEI” AND An = ”1”;

Rezultat:
        Nume      Prenume          Grupa     Stare
        Bogdan    Mircea Florin    1311      Bugetar
        Meruta    Cosmin           1312      Taxa




                                                       21
Baze de date – Îndrum tor de lucr ri de laborator                                    Lucrarea nr.3

Urm ri i expresia SQL i verifica i rezultatul ob inut. Încerca i i alte filtr ri asem n toare.
Observa i folosirea operatorului AND. Cum ar trebui modificat expresia SQL, pentru a afi a
rezultatul în ordine alfabetic invers ?

Operatorul OR. O alt filtrare pe care ne-o propunem, este s filtr m studen ii din anul 2 de
la IEI sau TCM.

Expresie SQL:
      SELECT Nume, Prenume,Sectia, Grupa, Stare
      FROM tblStudenti
      WHERE (Sectia=”IEI” OR Sectia=”TCM”) AND An = ”2”;

Rezultat:
        Nume      Prenume         Sectia   Grupa    Stare
        Pop       Marius Traian   IEI      1321     Bugetar
        Cozma     Dumitru         TCM      1121     Bugetar

Observa i folosirea parametrilor OR i AND, respectiv apari ia celor dou paranteze. Aceste
paranteze au leg tur cu ordinea opera iilor OR i AND. În ordinea opera iilor, operatorul
AND se execut înaintea operatorului OR, ceea ce ar duce la rezultate eronate, de aceea a fost
pus operatorul OR în parantez , ca s -l execute primul, tiut fiind c parantezele au prioritate
la execu ie.

Operatorul IN. Folosirea acestui operator are ca scop specificarea unui domeniu de condi ii,
oricare dintre ele putând fi îndeplinite. Operatorul IN necesit o list de valori valide, care s
fie separate prin virgule i cuprinse între paranteze.

Ne propunem s alegem din tabelul din figura 3.2 to i studen ii care au numele Pop i Cozma.

Expresie SQL:
      SELECT Nume, Prenume,Sectia, Grupa, Stare
      FROM tblStudenti
      WHERE Nume IN (“Pop”, “Cozma”);

Rezultat:
        Nume      Prenume         Sectia   Grupa    Stare
        Pop       Marius Traian   IEI      1321     Bugetar
        Pop       Laura           IEI      1331     Taxa
        Cozma     Dumitru         TCM      1121     Bugetar
        Cozma     Calin Florin    MEC      1241     Taxa

Din analiza acestui exemplu, putem observa f r greutate c operatorul IN face cam acela i
lucru ca i operatorul OR, deci se poate scrie o expresie SQL cu acesta. Care este aceast
expresie?

Se pune, pe bun dreptate, întrebarea de ce mai avem nevoie de înc un operator dac avem
unul care face acela i lucru. R spunsul este c operatorul IN are unele avantaje care îl fac de
preferat fa de operatorul OR. Iat aceste avantaje:
        • Când lucra i cu liste lungi de op iuni valide, sintaxa operatorului IN este mai simpl
           i u or de citit, principalul avantaj.
        • Ordinea de evaluare este mai simplu de gestionat, când operatorul IN este folosit în
          asocia ie cu operatorii AND i OR.


                                                    22
Baze de date – Îndrum tor de lucr ri de laborator                                  Lucrarea nr.3

        • Aproape totdeauna, operatorii IN se execut mai rapid decât listele de operatori OR.
        • Un mare avantaj este c operatorul IN poate s con in o alt instruc iune SELECT,
           i astfel v permite s construi i clauze WHERE foarte dinamice. Acest aspect va fi
          reluat mai târziu.

Operatorul NOT. Acest operator al clauzei WHERE are o singur func ie – neag orice
condi ie care îl urmeaz . Deoarece NOT nu este utilizat niciodat în sine (totdeauna se
folose te în asocia ie cu alt operator), sintaxa lui e diferit de to i ceilal i operatori. Spre
deosebire de al i operatori, cuvântul cheie NOT poate fi utilizat înaintea coloanei dup care se
face filtrarea, nu imediat dup aceasta.

Iat un exemplu sugestiv, extragerea studen ilor nebugetari din tabelul din figura 3.2.

Expresie SQL:
      SELECT Nume, Prenume,Sectia, Grupa, Stare
      FROM tblStudenti
      WHERE NOT Stare=”Bugetar”;

Rezultat:
        Nume      Prenume        Sectia   Grupa     Stare
        Meruta    Cosmin         IEI      1312      Taxa
        Pop       Laura          IEI      1331      Taxa
        Cozma     Calin Florin   MEC      1241      Taxa

Dup cum se vede, acela i lucru îl puteam ob ine i cu operatorul „<>”. Iar i se pune
întrebarea de ce s folosim, totu i, operatorul NOT? Într-adev r, pentru clauzele WHERE
simple, cum e cea prezentat , nu se poate spune c ar exista un avantaj real în folosirea
operatorului NOT. Acesta este îns foarte util în clauzele mai complexe. De exemplu, dac
folosi i operatorul NOT în asocia ie cu un operator IN, va fi mult mai simplu s g si i toate
înregistr rile care nu corespund cu o list de criterii.

Operatorul LIKE. Aici ve i înv a ce sunt caracterele de înlocuire, cum se folosesc ele i
cum s face i c ut ri cu ajutorul lor. Pân acuma, to i operatorii, foloseau valori cunoscute, iar
ei se ocupau de c utarea coresponden elor dintre valori, dac sunt mai mari sau mai mici
decât altele, dac verific un domeniu de valori etc. De multe ori apare necesitatea filtr rii
înregistr rilor dup unele criterii care nu folosesc valori cunoscute în totalitate. De exemplu,
dori i s c uta i nume de persoane care încep cu o liter , care con in un grup de litere etc.
Acest lucru nu se poate face cu criterii simple comparare.

O solu ie, pe care ne-o propune SQL, este folosirea caracterelor de înlocuire. Caracterele de
înlocuire sunt caractere ce au în elesuri speciale în clauzele WHERE din SQL, iar limbajul
SQL accept diverse tipuri de caractere de înlocuire.

Pentru a utiliza caracterele de înlocuire în clauzele de c utare, trebuie utilizat operatorul
LIKE. Acesta anun sistemul de gestiune a bazei de date c în urm torul model de c utare se
va folosi o potrivire dup caractere de înlocuire, nu o simpl potrivire de egalitate.

C utarea cu caractere de înlocuire poate fi utilizat numai cu câmpuri de tip text. Re ine i
acest lucru!

În continuare vor fi prezentate caracterele de înlocuire folosite de programul ACCESS.




                                                      23
Baze de date – Îndrum tor de lucr ri de laborator                                         Lucrarea nr.3

Caracterul de înlocuire *. Este cel mai frecvent utilizat. Într-un ir de c utare,  „*”
înseamn „corespunde cu oricâte apari ii a oric rui caracter”. Exemplul care urmeaz v va
ajuta s în elege i acest caracter.




  StudID     Nume           Init   Prenume          Sectia       An     Grupa   Stare
     1       Bogdan         P.     Mircea Florin      IEI        1       1311   Bugetar
     2       Brustur        I.     Cosmin             IEI        1       1312   Taxa
     3       Popescu        T.     Marius Traian      IEI        2       1321   Bugetar
     4       Brucan         P.     Mihaela           IMPI        2       1321   Bugetar
     5       Pop            I.     Laura              IEI        3       1331   Taxa
     6       Cotirla        L.     Raluca Adina      TCM         1       1111   Bugetar
     7       Popa           G.     Ovidiu            TCM         1       1111   Bugetar
     8       Popovici       D.     Dumitru           TCM         2       1121   Bugetar
     9       Branea         N.     Daniel            MEC         4       1241   Bugetar
    10       Cozma          I.     Calin Florin      MEC         4       1241   Taxa

                                          Fig. 3.3. Tabel cu studen i

Ne propunem s filtr m toate înregistr rile în care numele studen ilor, din tabelul din figura
3.3, începe cu „Pop”.

Expresie SQL:
      SELECT Nume, Prenume,Sectia, Grupa, Stare
      FROM tblStudenti
      WHERE Nume LIKE ”Pop*”
      ORDER BY Nume;

Rezultat:
        Nume       Prenume          Sectia   Grupa     Stare
        Pop        Laura            IEI      1331      Taxa
        Popa       Ovidiu           TCM      1111      Bugetar
        Popescu    Marius Traian    IEI      1321      Bugetar
        Popovici   Dumitru          TCM      1121      Bugetar

Observa i ghilimelele care se pun i ordonarea rezultatului dup câmpul Nume. Încerca i i
alte filtr ri folosind aceast tehnic .

Caracterul de înlocuire „ ? ”. Acest caracter (semnul întreb rii) este utilizat la fel ca
simbolul „ * ”, dar nu asigur coresponden a mai multor caractere, ci numai a unuia singur.
Exemplul care urmeaz v ajut s în elege i folosirea lui.

Folosind tabelul din figura 3.3, scrie i expresii SQL care s ilustreze folosirea acestui caracter
de înlocuire.

Observa ie! În diferite SGBDR semnele de înlocuire ar putea s fie diferite. Astfel, în Oracle
„ * ” este înlocuit cu „ % ”, iar „ ? ” este înlocuit cu liniu a de subliniere „ _ ”. Pentru a nu
avea probleme este bine s studia i documenta ia SGBDR-ului pe care îl ve i folosi.




                                                      24
Baze de date – Îndrum tor de lucr ri de laborator                                               Lucrarea nr.3

      Opera iuni avansate folosind limbajul SQL

      Câmpuri calculate

Dup ti i de la proiectarea bazelor de date, o regul de baz ne spune c fiecare câmp trebuie
s fie independent, adic valoare sa s nu depind de valorile din alte câmpuri. Exemplul
clasic care se poate da aici este cel al câmpului Valoare care nu trebuie s apar într-un tabel
care are Pretul unitar i Cantitatea, dar avem nevoie de acest câmp care este rezultatul
înmul irii dintre pre i cantitate. Ei bine, acest câmp trebuie calculat.

Un alt exemplu este cel al adresei care se compune din concatenarea rezultatelor din mai
multe câmpuri.

În ambele exemple, datele stocate în tabele nu sunt exact ceea ce are nevoie aplica ia
dumneavoastr . În loc s reg si i datele a a cum sunt, pentru ca dup aceea s le reformata i
în aplica ia client sau în raport, dori i s reg si i datele transformate, calculate sau reformatate
direct din baza de date.

Aici intervin câmpurile cu valori calculate, pe care le vom numi în continuare câmpuri
calculate. Spre deosebire de toate coloanele de pân acum, câmpurile calculate nu exist , de
fapt, în baza de date. Un câmp calculat este creat din mers, în interiorul unei instruc iuni
SELECT din limbajul SQL.

De men ionat faptul c numai baza de date tie care coloane dintr-o instruc iune SELECT sunt
realmente coloane din tabele i care sunt câmpuri calculate. Din perspectiva unui client, datele
unui câmp calculat sunt returnate în acela i mod ca i datele din oricare coloan .

Cel mai simplu mod de a în elege crearea câmpurilor calculate este de a alege exemple
sugestive pe care s le coment m.

Câmpuri calculate prin concatenare. De multe ori apare necesitatea concaten rii valorilor
text din mai multe coloane. De exemplu, într-un raport trebuie s scriem identitatea unei
persoane format din numele complet, a a cum se obi nuie te în practic . S scriem expresia
SQL care face acest lucru pentru persoanele din tabelul din figura 3.3.

Expresie SQL:
      SELECT Nume + “ “ + Init + “ “ + Prenume AS Student, Sectia, An, Grupa, Stare
      FROM tblStudenti
      ORDER BY Nume;

Rezultat:

                 Student                              Sectia     An       Grupa       Stare
                 Bogdan P. Mircea Florin                IEI      1         1311       Bugetar
                 Branea N. Daniel                      MEC       4         1241       Bugetar
                 Brucan P. Mihaela                     IMPI      2         1321       Bugetar
                 Brustur I. Cosmin                      IEI      1         1312       Taxa
                 Cotirla L. Raluca Adina               TCM       1         1111       Bugetar
                 Cozma I. Calin Florin                 MEC       4         1241       Taxa
                 Pop I. Laura                           IEI      3         1331       Taxa
                 Popa G. Ovidiu                        TCM       1         1111       Bugetar
                 Popescu T. Marius Traian               IEI      2         1321       Bugetar
                 Popovici D. Dumitru                   TCM       2         1121       Bugetar



                                                    25
Baze de date – Îndrum tor de lucr ri de laborator                                     Lucrarea nr.3

Observa i sintaxa folosit i ceva nou a ap rut, cuvântul cheie AS dup care urmeaz cuvântul
Student, pe care îl reg sim în capul de tabel, ca nume a noului câmp, ob inut prin
concatenarea celor trei. Cuvântul cheie AS introduce un alias care este un nou nume dat unui
câmp. Re ine i aceast tehnic de creare a unor câmpuri.

Câmpuri calculate aritmetic. Aceste câmpuri calculate rezult dup efectuarea unor calcule
aritmetice asupra datelor reg site. Pentru a în elege mecanismul cre rii acestor câmpuri, vom
lua un exemplu practic. Presupunem c avem un tabel în care inem intr rile într-o magazie de
produse, al unei firme de comer cu piese auto. Tabelul se nume te tblProduse i are coloanele
Cod, Denumire, Furnizor, PU, Cantitate. Se cere un raport al intr rilor în magazie în care
apare i câmpul Valoare, ob inut prin produsul câmpurilor PU i Cantitate. În figura 3.4 este
prezentat acest raport.


 Cod     Denumire            Furnizor               PU     Cantitate        Valoare
 1001    Bujie DK1           Sinterom SA             12           30            360
 1023    Acumulator 56A      Rombat SA              124           25           3100
 1231    Parbriz VW          Cobra SRL              512           12           6144
 1089    Antigel -30         Promaxim SRL            5.2          50             26
 1904    Ulei PKT 1          Calota SRL              6.4          60            384

                                 Fig. 3.4. Raport cu câmpul valoare calculate

Expresie SQL:
        SELECT Cod, Denumire, Furnizor, PU, Cantitate, PU*Cantitate AS Valoare
        FROM tblProduse;

Observa i i re ine i sintaxa folosit pentru crearea noului câmp VALOARE.


        Desf     urarea lucr rii
Toate expresiile SQL studiate, se vor copia într-un fi ier Word cu numele Expresii SQL
studiate.doc care se va salva în directorul My Documents / Baze de date / Lucrarea 3.


Observa ie important ! Toate expresiile SQL care vor fi în fi ierul Word se presupune c au
fost studiate i în elese, studentul putând oricând s dea explica ii în leg tur cu ele, altfel va
suporta consecin ele. Aceste expresii vor vor fi testate în lucrarea nr. 4, pe viu, într-o baz de
date real .




                                                      26
Baze de date – Îndrum tor de lucr ri de laborator                                       Lucrarea nr.4




                   Lucrarea nr. 4. Studiu de caz: Baza de date ” Biblioteca”

Aceast lucrare de laborator const în implementarea în Access a bazei de date ”Biblioteca” pe care a i
proiectat-o în lucrarea nr. 2. Acum ve i folosi cuno tin ele acumulate despre bazele de date într-o
aplica ie concret , folosind programul Access.



      Considera ii generale despre programul Access

      Interfa a programului ACCESS

Pentru a lucra cu orice aplica ie informatic , primul lucru pe care trebuie s -l facem este s -i
cunoa tem interfa a de pornire. Pentru ACCESS interfa a de pornire apare dup lansarea
acestuia cu metoda general Start / Programs / Microsoft Access. Ve i g si repede programul
observând c iconi a sa con ine mic cheie de yal . Toate capturile i descrierile se refer la
versiunea Access 2003. Dac ave i alt versiune trebuie s ine i cont de diferen ele care ar
putea apare, care nu sunt, oricum, esen iale.

Spre deosebire de alte programe Microsoft, programul ACCESS începe cu o caset de dialog
în care vi se cere numele i s alege i directorul bazei de date pe care dori i s o deschide i,
chiar dac este una nou (Blank Database). Dup ce a i dat numele bazei de date noi, numit
aici „db1”, va apare interfa a din figura 4.1.




                       Fig. 4.1. Interfa a de pornire Access (fereastra Database)


Dup cum se vede, o baz de date ACCESS poate fi definit ca o colec ie de obiecte:
     • Tabele (tables)
     • Cereri de interogare (queries)
     • Formulare (forms)
                                                      27
Baze de date – Îndrum tor de lucr ri de laborator                                   Lucrarea nr.4

        •   Rapoarte (reports)
        •   Pagini Web (pages)
        •   Comenzi macro (macros)
        •   Module (modules)

În continuare vor fi prezentate, pe scurt, aceste obiecte, urmând s fie reluate atunci când le
vom folosi efectiv.

Tabele (tables) sunt obiecte definite de utilizator în care sunt stocate datele. Sunt obi nuitele
tabele ale bazelor de date.

Formulare (forms) sunt obiecte care permit introducerea datelor, afi area acestora sau
controlul întregii aplica ii. Acestea v permit s face i aplica ii performante chiar dac sunte i
un încep tor în baze de date.

Cereri de interogare (queries) sunt obiecte care permit vizualizarea informa iilor ob inute
prin prelucrarea datelor din una sau mai multe tabele i/sau alte cereri de interogare. Aici ve i
folosi din plin cuno tin ele dobândite despre limbajul SQL.

Rapoarte (reports) sunt obiecte care permit formatarea i tip rirea informa iilor ob inute în
urma consult rii bazei de date, sub form de documente pe hârtie.

Pagini Web (pages) reprezint un obiect care include un fi ier HTML i alte fi iere suport în
vederea furniz rii accesului la date prin intermediul Internet-ului.

Comenzi macro (macros) reprezint un obiect care con ine o defini ie structurat a uneia sau
mai multor ac iuni pe care ACCESS le realizeaz ca un r spuns la un anumit eveniment.

Module (modules) reprezint un obiect care con ine proceduri definite de utilizator, scrise în
limbajul Visual Basic. Iat o ocazie de a v etala cuno tin ele de Visual Basic.

Pe lâng obiectele prezentate, pe interfa a de pornire, mai exist câteva butoane (Open,
Design, New, un buton de tergere i câteva de afi are a obiectelor) a c ror în elegere i rol
este u or de dedus, de aceea nu vor mai fi prezentate.

Dup cum spuneam, ACCESS-ul are un instrument numit wizard care v va ajuta s construi i
mai u or tabele, formulare sau interog ri, dar un singur lucru nu poate face: s v suplineasc
lipsa cuno tin elor dobândite în capitolele precedente. Astfel, dac nu a i în eles mecanismul
leg turilor dintre tabele, e pu in probabil c ve i ajunge la rezultate mul umitoare, chiar dac
sunte i „monitoriza i” îndeaproape de instrumentul wizard.

      Crearea tabelelor

Înainte de a începe s crea i tabele, este de la sine în eles c ave i deja un proiect de baz de
date, sau dac sunte i la început de studiu, m car o diagram de rela ii i structurile tabelelor.
Spuneam la începutul acestui curs, cât de important e s ave i un proiect corect de baz de
date, pentru a nu avea probleme la faza de implementare.

Crearea structurii tabelelor se poate face în trei moduri:
        • Utilizând fereastra de proiectare (Create table in design view);
        • Utilizând instrumentul Wizard (Create table by using wizard);
        • Prin introducerea datelor (Create table by entering data).

                                                    28
Baze de date – Îndrum tor de lucr ri de laborator                                     Lucrarea nr.4

Consider c modul cel mai eficient de creare a tabelelor, care se potrive te utilizatorilor
români, îl reprezint primul mod (Create table in design view), motiv pentru care va fi
prezentat numai acesta. Pentru a v satisface curiozitatea nu ave i decât s le încerca i pe
celelalte dou , pentru a ajunge la o concluzie.

Revenind la primul mod de creare a unui tabel, da i un dublu clic pe Create table in design
view i pe ecran va apare fereastra Table din figura 4.2.




                                                                Fig. 4.2. Fereastra Table




În elegerea acestei ferestre nu e grea: sunte i invita i s da i numele câmpurilor (Field Name),
s alege i din combobox tipul de dat pentru câmpul respectiv (Data Type) i s introduce i o
scurt descriere, acolo unde este cazul, despre ce va con ine acel câmp (Description). Pentru
alegerea tipului de dat , revede i paragraful Anatomia unei specifica ii de câmp din capitolul 3
al cursului de baze de date.

În toolbar-ul de sub meniul din figura 4.2, exist mai multe butoane, unele cunoscute din alte
aplica ii Windows. Exist un buton (cel cu o chei ) pe care nu l-a i mai întâlnit pân acum.
Acest buton v ajut s stabili i cheia principal a tabelului pentru câmpul curent (cel cu
s geata din stânga), printr-un simplu clic pe el.

În func ie de tipul de dat ales pentru câmp, în partea de jos apare un subtabel în care pute i
seta propriet ile câmpului curent. Aceste propriet i sunt adaptate tipului de dat : num r,
text, data calendaristic etc. S lu m pe rând aceste propriet i, având ca reper tipul de dat
numeric:

Field Size este dimensiunea câmpului. Executarea unui clic pe s geata derulant va deschide
o list de op iuni privind dimensiunea câmpului.

Format este formatul sub care se prezint valoarea introdus în câmp. Executarea unui clic pe
s geata derulant va deschide o list de op iuni privind formatul câmpului.

Decimal Places este proprietatea care stabile te num rul de zecimale ce pot fi atribuite
câmpului. Se poate alege un num r între 0 i 15, sau Auto pentru determinarea automat a
num rului de zecimale.

Input Mask reprezint impunerea unui format de introducere pentru toate datele acelui
câmp. Formatul de introducere are o mare importan în cadrul câmpurilor ce con in date de
tip text sau dat calendaristic .



                                                    29
Baze de date – Îndrum tor de lucr ri de laborator                                     Lucrarea nr.4

Caption este eticheta pentru specificarea unui nume atribuit câmpului, în cazul în care acesta
este utilizat în cadrul formularelor sau când tabelul respectiv este afi at.

Default Value este o valoare care este atribuit automat, în momentul când utilizatorul nu
introduce nici o valoare în acel câmp.

Validation Rule este criteriul care va fi verificat înainte de validarea valorii introduse în acel
câmp. Criteriul este introdus sub form de expresii care folosesc:
      • Operatorii: =, +, -, *, /, <, >, <=, >=, AND, OR, BETWEEN, IN, IS NULL;
      • Identificatorii se dau în paranteze drepte [];
      • Func ii;
      • Constante;

Validation Text reprezint textul care va ap rea pe bara de mesaje în cazul în care valoarea
introdus nu respect criteriul impus de regula de validare.

Required este proprietatea care stabile te dac introducerea unei valori în acel câmp este
obligatorie. Acest câmp poate avea una din valorile Yes / No.

Indexed este proprietatea care stabile te dac acel câmp are un index care accept valori
duplicat sau numai valori unice. Dac nu dorim un index pentru acel câmp se alege valoare
No.

Propriet ile descrise mai sus se refereau la tipul de câmp Numeric. Pentru alte tipuri de câmp
vor apare i propriet i noi (cele mai multe r mân). Astfel, datele de tip Text i Memo au o
proprietate numit Allow Zero Length, adic admiterea lungimii zero. Aceast proprietate are
valoarea Yes sau No.

O proprietate important pentru câmpul care con ine date de tip Autonumber este New Values.
Op iunile Increment sau Random permit stabilirea modului în care câmpului respectiv i se vor
acorda valori automat de c tre sistem.

      Rela ii între tabele

Rela iile dintre tabele sunt lucruri cunoscute, deja, de c tre oricare dintre dumneavoastr , nu-i
a a? S vedem acum ce modalitate folose te ACCESS-ul pentru a face leg tura între tabele.
Din punct de vedere al momentului cre rii acestora, exist 2 tipuri de rela ii între tabelele unei
baze de date ACCESS i anume:
        • Rela ii permanente – se stabilesc dup definirea tabelelor i sunt cerute de modelul
          rela ional f când parte din structura bazei de date. Aceasta se realizeaz , de obicei,
          prin coresponden a cheie primar – cheie extern i sunt memorate în baza de date.
        • Rela ii temporare – se stabilesc între tabele cu ocazia definirii unor cereri de
          interogare, nefiind înregistrate în structura bazei de date.

Dup cum tim, între dou tabele între care exist o rela ie, datele nu pot fi introduse oricum.
De exemplu, dac într-o baz de date avem tabelele tblFacturiPrimite i tblFurnizori între
care exist o rela ie „unu cu mai mul i”, nu putem introduce date în tabelul tblFacturiPrimite
pân nu avem cel pu in un furnizor în tabelul tblFurnizori. Cum rezolv ACCESS-ul aceast
prevedere din proiectul bazei de date (tipul de participare)? Prin impunerea integrit ii
referen iale (Enforce Referential Integrity), dup cum se vede în figura 4.3.




                                                    30
Baze de date – Îndrum tor de lucr ri de laborator                                             Lucrarea nr.4




                                                                           Fig. 4.3. Stabilirea
                                                                           integrit ii
                                                                           referen iale




În urma acestei set ri, s-a f cut o leg tur unu cu mai mul i între cele dou tabele, a c rei
reprezentare se vede în figura 4.4.


                                                         Fig. 4.4. Diagrama de rela ie
                                                         între cele 2 tabele, a a cum
                                                         apare în ACCESS.




Stabilirea leg turilor între tabele se face, fie în faza de creare a tabelului (folosind Lookup
Wizard), fie în fereastra Relationship care se afi eaz cu butonul          , din toolbar-ul din
fereastra Database. Printr-un clic pe acest buton se deschide tabela Relationship prezentat în
figura 4.4.

Dac nu apar toate tabelele în fereastra Relationship, cu un clic-dreapta în interiorul acesteia
apoi alegând op iunea Show Table va fi afi at fereastra Show Table, cu care se pot ad uga i
celelalte tabele.

Leg tura dintre tabele se face „tr gând cu mouse-ul” câmpul de leg tur dintr-un tabel „peste”
câmpul corespunz tor din cel lalt tabel. Dup ce s-a f cut leg tura, putem face un clic-dreapta
pe leg tur , apar 2 posibilita i: Edit Relationship... i se deschide caseta de dialog pentru
stabilirea integrit ii referen iale ar tat în figura 4.3, respectiv Delete cu care putem terge
leg tura. Când citi i aceast secven , este bine s o face i cu calculatorul în fa , deoarece
altfel, aceste manevre sunt greu de în eles. Dac ceva nu a i în eles, întreba i profesorul care
v îndrum la laborator.

      Crearea rela iilor cu Lookup Wizard...

Cea mai comod cale de a crea rela ii permanente între dou tabele este folosirea facilit ii
Lookup Wizard, pus la dispozi ia noastr de programul ACCESS. Aceast metod const în
„legarea” tabelelor în faza de proiectare prin intermediul unei chei primare i a unei chei
externe. Prima dat de proiecteaz tabelul din partea „unu” a rela iei unu cu mai mul i. La cel
de-al doilea tabel, când se define te câmpul de leg tur , pentru tipul de dat (Data Type) se
alege op iunea Lookup Wizard... (ultima dintre op iuni). În urma acestei manevre se deschide
caseta de dialog din figura 4.6.




                                                    31
Baze de date – Îndrum tor de lucr ri de laborator                                       Lucrarea nr.4




                                                                     Fig. 4.6. Primul pas al
                                                                     procedurii Lookup Wizard




Se alege prima op iune, cea care ne spune c vom lega câmpul nostru cu un alt câmp dintr-un
tabel sau o interogare, I want the lookup.... Merit explicat i op iunea a doua I will type in
the values that I want, care ne spune c putem lega acest câmp cu o list de valori introduse
de noi chiar în aceast faz . Aceast op iune este indicat s o folosi i când ave i un num r mic
de valori pe care poate s le ia un anumit câmp. Încerca i i aceast variant pentru a-i
în elege rolul.

Cu butonul Next se avanseaz în pasul urm tor când vi se cere s alege i, dintr-o list , tabelul
cu care va fi legat. Dup alegerea tabelului, ve i alege cheia primar i un alt câmp pentru a
identifica înregistrarea (acest lucru îl ve i în elege când ve i introduce, efectiv, date în tabel).
Aceast manevr se vede în figura 4.7.




                                                                         Fig. 4.7. Alegerea
                                                                         câmpului de leg tur




În cazul nostru se vor selecta câmpurile TaraID i Denumire, care vor fi trecute în fereastra
din dreapta. Cu butonul Next se va trece la pasul urm tor (figura 4.8) care ne recomand s
face invizibil coloana cu cheia primar , pentru c la operare nu ne va ajuta cu nimic, fiind un
cod numeric f r semnifica ie pentru noi.




                                                    32
Baze de date – Îndrum tor de lucr ri de laborator                                     Lucrarea nr.4




                                                                     Fig. 4.8. Recomandarea
                                                                     pentru a face invizibil
                                                                     cheia primar




Cu butonul Next se trece la pasul urm tor care v cere s stabili i numele câmpului care va
apare în rapoarte, de regul se las cel implicit, propus de calculator. Dup aceast manevr se
alege butonul Finish care ne va avertiza c o rela ie a fost creat i c ar trebui salvat . Dac
nu s-a gre it nimic, se apas butonul Next.


                                                                     Fig. 4.9. Avertizarea de
                                                                     salvare a rela iei create.




Pentru a verifica rela ia creat se apas butonul      , care va deschide foaia Relationships. Cu
un clic-dreapta pe linia rela iei o pute i edita sau terge. Încerca i aceast manevr pentru a
în elege ce se întâmpl .

Diferen a între cele dou tipuri de leg turi permanente, legarea prin metoda ”tragerii” (drag
and drop) în fereastra Relationship i legarea prin metoda Lookup Wizard..., nu prea iese în
eviden decât la crearea formularelor de introducere a datelor. La prima metod Access-ul va
pune automat o caset de text (textBox) în care trebuie s introducem manual valori de la
tastatur , iar la a doua metod va apare în formular o caset combinat (comboBox), din care
putem alege elegant valoarea din lista afi at .

Dac a i reu it s în elege i aceste diferen e, înseamn c a i f cut un pas important spre a
putea crea aplica ii Access tot mai performante. Poate în acest moment nu sesiza i diferen ele
dintre cele dou metode, dar cu siguran , le ve i în elege atunci când ve i crea formulare,
pu in mai târziu.




      Crearea tabelelor bazei de date ”Biblioteca”
                                                    33
Baze de date – Îndrum tor de lucr ri de laborator                                          Lucrarea nr.4

Diagrama bazei de date este prezentat în figura 4.10.




                                            Fig. 4.10. Diagrama bazei
                                               de date ”Biblioteca”


Structura i propriet ile câmpurile tabelelor bazei de date sunt prezentate în tabelul urm tor:


 Tabel                   Cimp                Tip data           Constringeri   Observatii
 tblAutori               AutorID             AutoNumber         Not Null
                         Nume                Character(150)     Not Null
                         Prenume             Character(150)     Not Null
                         Nationalitate       Character(15)
                         DataN               Data/Time                         zz-lll-aa
                         DataD               Data/Time                         zz-lll-aa
 tblEdituri              EdituraID           AutoNumber         Not Null
                         Denumire            Character(150)     Not Null
                         Localitate          Character(150)
                         Tara                Character(50)
 tblCarti                CarteID             AutoNumber         Not Null
                         AutorID             Long Integer       Not Null
                         EdituraID           Long Integer       Not Null
                         Denumire            Character(250)     Not Null
                         DomeniuID           Long Integer       Not Null
                         AnAparitie          Integer
                         Pagini              Integer
                         Valoare             Single
                         Stoc                Integer
 tblDomenii              DomeniuID           AutoNumber         Not Null
                         Denumire            Character(50)      Not Null
                         Explicatii          Character(250)
 tblImprumuturi          ImprumutID          AutoNumber         Not Null
                         CarteID             Long Integer       Not Null
                         CititorID           Long Integer       Not Null
                         DataImprumut        Data/Time                         zz-lll-aa
                         Perioada            Integer
                         DataRestituire      Data/Time                         zz-lll-aa
 tblCititori             CititorID           AutoNumber         Not Null

                                                     34
Baze de date – Îndrum tor de lucr ri de laborator                                           Lucrarea nr.4

                         Nume                Character(150)   Not Null
                         Prenume             Character(150)   Not Null
                         ProfesiaID          Long Integer     Not Null
                         DataN               Data/Time                          zz-lll-aa
                         Adresa              Character(150)
                         Localitate          Character(150)
                         JudetID             Long Integer     Not Null
                         Observatii          Character(150)
 tblJudete               JudetID             AutoNumber       Not Null
                         Denumire            Character(75)    Not Null
                         Abreviere           Character(2)     Not Null
 tblProfesii             ProfesiaID          AutoNumber       Not Null
                         Denumire            Character(75)    Not Null
                         Explicatii          Character(200)




Dup crearea tabelelor, caseta Database arat ca în figura 4.11.




                                                                            Fig. 4.11. Tabele bazei de
                                                                                date ”Biblioteca”




În continuarea acestei lucr ri de laborator, urmeaz s crea i formularele de introducere a
datelor, care se v d în figura 4.12. Mai întâi vor fi create formularele de introducere a datelor.
Dup exemplele prezentate în curs pute i trece la crearea acestor formulare.




                                                    35
                                                                         Fig. 4.12. Formularele bazei
                                                                             de date ”Biblioteca”
Baze de date – Îndrum tor de lucr ri de laborator                                       Lucrarea nr.4




      Crearea formularelor pentru introducerea datelor

În figura 4.12 se v d formularele de introducere a datelor în tabele. Având în vedere rela iile
stabilite intre tabele, introducerea datelor nu poate fi f cut oricum. Astfel, nu putem
introduce o care dac numele autorului nu este în tabelul cu autori. Ca regul , în rela iile 1:N,
mai întâi se vor introduce date în tabelul din partea ”unu” a rela iei i numai apoi în tabelul
din partea ”mai mul i” a rela iei.

Formularul frmIntroducereAutori.

Pentru crearea formularului, parcurgem pa ii urm tori:

1. În caseta de dialog Database, d m comanda Forms – New – AutoForm:Columnar(vezi figura
4.13).




                                                              Fig. 4.13. Alegerea tipului de
                                                                 formular i a tabelului




Se alege tabelul tblAutori, care va fi completat de c tre viitorul formular. Se apas butonul
OK.



2. Va apare forma brut a formularului, a a cum apare în figura 4.14.




                                                           Fig. 4.14. Formularul brut

                                                    36
Baze de date – Îndrum tor de lucr ri de laborator                                   Lucrarea nr.4




Acest formular ar mai trebui pu in aranjat. De exemplu, pentru câmpul Nationalitate ar trebui
s avem un comboBox din care s alegem dintr-o list , nationalitatea autorului. Pentru
câmpurile cu date calendaristice DataN i DataD ar trebui s indic m sub ce form trebuie
introduse aceste date, stiut fiind c la acest tip de dat apar des probleme din cauza
introducerilor incorecte.

Modificarea formularului se poate face numai în modul Design view, care se ob ine ap sând
butonul       . Figura 4.15 arat cum trebuie s fie formularul în Design view.




                                                                      Fig. 4.15. Formularul în
                                                                        modul Design view




Pentru a transforma caseta de text Nationalitate, execut m clic-dreapta pe ea, alegem op iune
Change To, apoi op iunea Combo Box, dup care va trebui s introducem lista cu
na ionalit ile autorilor. Acest lucru se face prin completarea propriet ilor Row Source Type
(Value List) i Row Source (Romana; Maghiara; Straina), dup cum se poate vedea în figura
4.16.

De asemenea, s-au introdus 2 etichete (zz/lll/aa) care ne indic , cum s introducem data
calendaristic .

Pentru activarea tabelului cu propriet ile se apas butonul        din toolbar-ul din partea de
sus.




                                                    37
Baze de date – Îndrum tor de lucr ri de laborator                                                Lucrarea nr.4




                            Fig. 4.16. Atribuirea valorilor pentru propriet ile
                                    Row Source Type i Row Source

3. Prin ap sarea butonului       , se iese din modul Design i se activeaz formularul care
trebuie s arate ca în figura 4.17.




                                                                      Fig. 4.17. Forma final a
                                                                            formularului




Formularul frmIntroducereCarti.

Înainte de a începe crearea efectiv a formularului, trebuie s analiz m tabelul pe care îl va
completa. Acesta are 3 câmpuri care trebuie completate cu chei externe: AutorID, EditurID i
DomeniuID. Aceste chei sunt valori de tip AutoNumber care sunt greu de folosit pentru c
trebuie, de exemplu, introdus un autor printr-un num r. Ar fi mult mai potrivit pentru operator
s aleag dintr-o list un nume de autor cu care e obi nuit i nu un cod numeric care nu îi
sugereaz nimic. Este ceea ce ne propunem.

Pentru crearea acestui formular primii pa i sunt identici cu cel precedent, cu observa ia c
vom alege acum tabelul tblCarti.

Trecem în modul Design view, pentru a putea efectua modific rile în formular. În figura 4.18,
pute i vedea cum arat formularul înainte de setarea propriet ilor. Se observ c acesta are ca
surs tabelul tblCarti.




                                                                                       Fig. 4.18. Formularul în
                                                                                              stare brut




                                                      38
Baze de date – Îndrum tor de lucr ri de laborator                                             Lucrarea nr.4




În aceast stare, pe baza leg turilor dintre tabele, în casetele comboBox vor apare listele cu
cheile primare ale celor 3 câmpuri implicate. Pentru ca în aceste casete s apar denumirile,
cu care suntem obi nui i, trebuie s modific m unele propriet i ale celor 3 comboBox-uri,
care se g sesc în categoria Format (vezi primul buton).

Setarea surselor se pot deduce clar din figura 4.19.




                           Fig. 4.19. Setarea propriet ilor legate de sursa înregistr rilor

Observa i c sursele pentru cele 3 câmpuri de chei externe sunt ni te expresii SQL simple:

AutorID:
SELECT tblAutori.AutorID, tblAutori.Prenume+" "+tblAutori.Nume AS Expr1 FROM tblAutori ORDER
BY tblAutori.Nume;

EdituraID:
SELECT tblEdituri.EdituraID, tblEdituri.Denumire FROM tblEdituri ORDER BY Denumire;

DomeniuID:
SELECT tblDomenii.DomeniuID, tblDomenii.Denumire FROM tblDomenii ORDER BY Denumire;
                                                       39
Baze de date – Îndrum tor de lucr ri de laborator                                              Lucrarea nr.4

Fiecare din aceste expresii au ca rezultat câte 2 câmpuri, iar pe noi ne intereseaz numai al
doilea care ne spune ceva concret. Trebuie s afi m, deci, numai acest câmp. Pentru aceasta
trebuie s set m, din tab-ul Format, propriet ile Column Count(2) i Column Width(0;1.2”),
care ne spun c avem 2 coloane, care au l imea de 0, respectiv 1.2 inch. Asta înseamn c
prima coloan nu se vede, iar a doua are 1.2 inch l ime.

Setarea acestor propriet i se vede în figura 4.20.




                                      Fig. 4.20. Setarea propriet ilor Column Count i
                                                       Column Widths




Prin ap sarea butonului         , se iese din modul Design i se activeaz formularul care trebuie
s arate ca în figura 4.21.




                                                                     Fig. 4.21. Forma final a formularului




                                                     40
Baze de date – Îndrum tor de lucr ri de laborator                                Lucrarea nr.4




Dup modelele prezentate, crea i i celelalte formulare de introducere a datelor, prezentate
mai jos în figura 4.22.




                                      Fig. 4.22. Formulare care trebuie create




                                                     41
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian
baze-de-date-access-laborator-de-ioan-mocian

Contenu connexe

Tendances

46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...
46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...
46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...anaany2
 
Forta - marime vectoriala. Forte coliniare
Forta - marime vectoriala. Forte coliniareForta - marime vectoriala. Forte coliniare
Forta - marime vectoriala. Forte coliniareAlianta INFONET
 
Model de proiect de lectie
Model de proiect de lectieModel de proiect de lectie
Model de proiect de lectieeconsiliere
 
Efectul Radiatiilor Asupra Organismelor Vii
Efectul Radiatiilor Asupra Organismelor ViiEfectul Radiatiilor Asupra Organismelor Vii
Efectul Radiatiilor Asupra Organismelor Viiguest004ddb
 
Inducția electromagnetică
Inducția electromagneticăInducția electromagnetică
Inducția electromagneticăLau Laura
 
Fiziologia cordului
Fiziologia corduluiFiziologia cordului
Fiziologia corduluiElena Sabina
 
Celula. Structura, proprietati
Celula. Structura, proprietatiCelula. Structura, proprietati
Celula. Structura, proprietatiBors Diana
 
Proprietati ale triunghiurilor
Proprietati ale triunghiurilorProprietati ale triunghiurilor
Proprietati ale triunghiurilorBianca Barbu
 
Desenul familiei
Desenul familieiDesenul familiei
Desenul familieiBianca Trif
 
Modele de harti conceptuale
Modele de harti conceptualeModele de harti conceptuale
Modele de harti conceptualeangelica an
 
4 organizarea structurala
4 organizarea  structurala4 organizarea  structurala
4 organizarea structuralaalina costea
 

Tendances (20)

Metoda trierii(1)
Metoda trierii(1)Metoda trierii(1)
Metoda trierii(1)
 
46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...
46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...
46678951 sisteme-informationale-si-aplicatii-informatice-in-administrarea-afa...
 
Forta - marime vectoriala. Forte coliniare
Forta - marime vectoriala. Forte coliniareForta - marime vectoriala. Forte coliniare
Forta - marime vectoriala. Forte coliniare
 
Model de proiect de lectie
Model de proiect de lectieModel de proiect de lectie
Model de proiect de lectie
 
Calcul tabelar
Calcul tabelarCalcul tabelar
Calcul tabelar
 
Efectul Radiatiilor Asupra Organismelor Vii
Efectul Radiatiilor Asupra Organismelor ViiEfectul Radiatiilor Asupra Organismelor Vii
Efectul Radiatiilor Asupra Organismelor Vii
 
Inducția electromagnetică
Inducția electromagneticăInducția electromagnetică
Inducția electromagnetică
 
Fiziologia cordului
Fiziologia corduluiFiziologia cordului
Fiziologia cordului
 
Celula. Structura, proprietati
Celula. Structura, proprietatiCelula. Structura, proprietati
Celula. Structura, proprietati
 
Invitatie
InvitatieInvitatie
Invitatie
 
Proprietati ale triunghiurilor
Proprietati ale triunghiurilorProprietati ale triunghiurilor
Proprietati ale triunghiurilor
 
Acizi si baze
Acizi si bazeAcizi si baze
Acizi si baze
 
Desenul familiei
Desenul familieiDesenul familiei
Desenul familiei
 
Logica
LogicaLogica
Logica
 
Ppt matematica
Ppt matematicaPpt matematica
Ppt matematica
 
Modele de harti conceptuale
Modele de harti conceptualeModele de harti conceptuale
Modele de harti conceptuale
 
Functii derivabile
Functii derivabileFunctii derivabile
Functii derivabile
 
4 organizarea structurala
4 organizarea  structurala4 organizarea  structurala
4 organizarea structurala
 
Plumbul în chimie
Plumbul în chimiePlumbul în chimie
Plumbul în chimie
 
Tipuri de comunicare
Tipuri de comunicareTipuri de comunicare
Tipuri de comunicare
 

En vedette

Suport cls10-tic-cap01-01-baze de date în microsoft access 2007 - operatii el...
Suport cls10-tic-cap01-01-baze de date în microsoft access 2007 - operatii el...Suport cls10-tic-cap01-01-baze de date în microsoft access 2007 - operatii el...
Suport cls10-tic-cap01-01-baze de date în microsoft access 2007 - operatii el...George Brebenel
 
Microsoft+access+este+aplicatia+de+management+a+bazelor[1]
Microsoft+access+este+aplicatia+de+management+a+bazelor[1]Microsoft+access+este+aplicatia+de+management+a+bazelor[1]
Microsoft+access+este+aplicatia+de+management+a+bazelor[1]Claudia
 
Modulul 4 ecdl
Modulul 4 ecdlModulul 4 ecdl
Modulul 4 ecdlELENA NITA
 
Elaborarea+si+gestionarea+unei+baze+de+date[1]
Elaborarea+si+gestionarea+unei+baze+de+date[1]Elaborarea+si+gestionarea+unei+baze+de+date[1]
Elaborarea+si+gestionarea+unei+baze+de+date[1]Claudia
 
'Documents.tips curs baze-de-date-5642553eddb8c.doc'
'Documents.tips curs baze-de-date-5642553eddb8c.doc''Documents.tips curs baze-de-date-5642553eddb8c.doc'
'Documents.tips curs baze-de-date-5642553eddb8c.doc'Otilia-Loredana Tudor
 
Introducere baza de-date
Introducere baza de-dateIntroducere baza de-date
Introducere baza de-dateChelariu Mihai
 
Proiect Design Baze de Date
Proiect Design Baze de DateProiect Design Baze de Date
Proiect Design Baze de DateMadalin Blidaru
 
Instruire Asistata De Calculator Modul1a
Instruire Asistata De Calculator Modul1aInstruire Asistata De Calculator Modul1a
Instruire Asistata De Calculator Modul1aCella Buciuman
 
Baze+de+date 1
Baze+de+date 1Baze+de+date 1
Baze+de+date 1Claudia
 
Initiere operare pc
Initiere operare pcInitiere operare pc
Initiere operare pcELENA NITA
 
Game computing: gameplay & niveluri
Game computing: gameplay & niveluriGame computing: gameplay & niveluri
Game computing: gameplay & niveluriSabin Buraga
 
Prez scoala prof
Prez scoala profPrez scoala prof
Prez scoala profRazvan Vlad
 
Romanian Writers in Europe
Romanian Writers in Europe Romanian Writers in Europe
Romanian Writers in Europe budur eleonora
 
Baze de date- aplicatia Microsoft Access
Baze de date- aplicatia Microsoft AccessBaze de date- aplicatia Microsoft Access
Baze de date- aplicatia Microsoft Accessvazdoaga_gabriela
 

En vedette (20)

Suport cls10-tic-cap01-01-baze de date în microsoft access 2007 - operatii el...
Suport cls10-tic-cap01-01-baze de date în microsoft access 2007 - operatii el...Suport cls10-tic-cap01-01-baze de date în microsoft access 2007 - operatii el...
Suport cls10-tic-cap01-01-baze de date în microsoft access 2007 - operatii el...
 
Baze de date Access
Baze de date AccessBaze de date Access
Baze de date Access
 
Microsoft+access+este+aplicatia+de+management+a+bazelor[1]
Microsoft+access+este+aplicatia+de+management+a+bazelor[1]Microsoft+access+este+aplicatia+de+management+a+bazelor[1]
Microsoft+access+este+aplicatia+de+management+a+bazelor[1]
 
Modulul 4 ecdl
Modulul 4 ecdlModulul 4 ecdl
Modulul 4 ecdl
 
Windows Word Excel
Windows Word ExcelWindows Word Excel
Windows Word Excel
 
Elaborarea+si+gestionarea+unei+baze+de+date[1]
Elaborarea+si+gestionarea+unei+baze+de+date[1]Elaborarea+si+gestionarea+unei+baze+de+date[1]
Elaborarea+si+gestionarea+unei+baze+de+date[1]
 
'Documents.tips curs baze-de-date-5642553eddb8c.doc'
'Documents.tips curs baze-de-date-5642553eddb8c.doc''Documents.tips curs baze-de-date-5642553eddb8c.doc'
'Documents.tips curs baze-de-date-5642553eddb8c.doc'
 
Introducere baza de-date
Introducere baza de-dateIntroducere baza de-date
Introducere baza de-date
 
Lectie excel
Lectie excelLectie excel
Lectie excel
 
Proiect Design Baze de Date
Proiect Design Baze de DateProiect Design Baze de Date
Proiect Design Baze de Date
 
Instruire Asistata De Calculator Modul1a
Instruire Asistata De Calculator Modul1aInstruire Asistata De Calculator Modul1a
Instruire Asistata De Calculator Modul1a
 
Baze+de+date 1
Baze+de+date 1Baze+de+date 1
Baze+de+date 1
 
Carte C 2003
Carte C 2003Carte C 2003
Carte C 2003
 
Manual microsoft excel
Manual microsoft excelManual microsoft excel
Manual microsoft excel
 
Initiere operare pc
Initiere operare pcInitiere operare pc
Initiere operare pc
 
Game computing: gameplay & niveluri
Game computing: gameplay & niveluriGame computing: gameplay & niveluri
Game computing: gameplay & niveluri
 
Prez scoala prof
Prez scoala profPrez scoala prof
Prez scoala prof
 
Romanian Writers in Europe
Romanian Writers in Europe Romanian Writers in Europe
Romanian Writers in Europe
 
Baze de date- aplicatia Microsoft Access
Baze de date- aplicatia Microsoft AccessBaze de date- aplicatia Microsoft Access
Baze de date- aplicatia Microsoft Access
 
Violentainscoala.ppt3
Violentainscoala.ppt3Violentainscoala.ppt3
Violentainscoala.ppt3
 

Similaire à baze-de-date-access-laborator-de-ioan-mocian

Excel in mediul economic
Excel in mediul economicExcel in mediul economic
Excel in mediul economicAlice James
 
Tendinte in proiectarea si dezvoltarea aplicatiilor Web
Tendinte in proiectarea si dezvoltarea aplicatiilor WebTendinte in proiectarea si dezvoltarea aplicatiilor Web
Tendinte in proiectarea si dezvoltarea aplicatiilor WebSabin Buraga
 
Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...
Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...
Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...ivan ion
 
Date structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataDate structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataionut_ignatescu
 
Metode si tehnici de cercetare in stiintele sociale
Metode si tehnici de cercetare in stiintele socialeMetode si tehnici de cercetare in stiintele sociale
Metode si tehnici de cercetare in stiintele socialeLiviu Ginju
 
Lucrare grad i gidioi ionel cup e 15 iumie_bun-converted
Lucrare grad i gidioi ionel  cup e 15  iumie_bun-convertedLucrare grad i gidioi ionel  cup e 15  iumie_bun-converted
Lucrare grad i gidioi ionel cup e 15 iumie_bun-convertedGadioi Ionel
 
Graduation projects in Crispico
Graduation projects in CrispicoGraduation projects in Crispico
Graduation projects in Crispicostagiipebune
 
54912766 teoria-curriculum
54912766 teoria-curriculum54912766 teoria-curriculum
54912766 teoria-curriculumEmanuela Ioana
 
Plan Proiect E.Pausan
Plan Proiect E.PausanPlan Proiect E.Pausan
Plan Proiect E.PausanEmilia Pausan
 
02 teoria evaluarii_m.manolescu
02 teoria evaluarii_m.manolescu02 teoria evaluarii_m.manolescu
02 teoria evaluarii_m.manolescuClaudiu Buza
 
6752230 dan-potolea-marin-manolescu-teoria-si-practica-evaluarii-education-ale
6752230 dan-potolea-marin-manolescu-teoria-si-practica-evaluarii-education-ale6752230 dan-potolea-marin-manolescu-teoria-si-practica-evaluarii-education-ale
6752230 dan-potolea-marin-manolescu-teoria-si-practica-evaluarii-education-alelcosteiu2005
 
dan-potolea-marin-manolescu
dan-potolea-marin-manolescudan-potolea-marin-manolescu
dan-potolea-marin-manolescuRaluca Chirvase
 

Similaire à baze-de-date-access-laborator-de-ioan-mocian (20)

Word si excel
Word si excelWord si excel
Word si excel
 
Algoritmi
AlgoritmiAlgoritmi
Algoritmi
 
Excel in mediul economic
Excel in mediul economicExcel in mediul economic
Excel in mediul economic
 
Stroia_Laurentiu
Stroia_LaurentiuStroia_Laurentiu
Stroia_Laurentiu
 
Curs evaluare decee
Curs evaluare deceeCurs evaluare decee
Curs evaluare decee
 
Tendinte in proiectarea si dezvoltarea aplicatiilor Web
Tendinte in proiectarea si dezvoltarea aplicatiilor WebTendinte in proiectarea si dezvoltarea aplicatiilor Web
Tendinte in proiectarea si dezvoltarea aplicatiilor Web
 
Cuprins
CuprinsCuprins
Cuprins
 
diSparql
diSparqldiSparql
diSparql
 
Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...
Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...
Microarhitecturi de procesare a informatiei (Lucian Vintan _ Adrian Florea) (...
 
Date structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataDate structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked data
 
Info stand Nr. 2 / 2014
Info stand Nr. 2 / 2014Info stand Nr. 2 / 2014
Info stand Nr. 2 / 2014
 
Metode si tehnici de cercetare in stiintele sociale
Metode si tehnici de cercetare in stiintele socialeMetode si tehnici de cercetare in stiintele sociale
Metode si tehnici de cercetare in stiintele sociale
 
Lucrare grad i gidioi ionel cup e 15 iumie_bun-converted
Lucrare grad i gidioi ionel  cup e 15  iumie_bun-convertedLucrare grad i gidioi ionel  cup e 15  iumie_bun-converted
Lucrare grad i gidioi ionel cup e 15 iumie_bun-converted
 
Graduation projects in Crispico
Graduation projects in CrispicoGraduation projects in Crispico
Graduation projects in Crispico
 
54912766 teoria-curriculum
54912766 teoria-curriculum54912766 teoria-curriculum
54912766 teoria-curriculum
 
Limajul c
Limajul cLimajul c
Limajul c
 
Plan Proiect E.Pausan
Plan Proiect E.PausanPlan Proiect E.Pausan
Plan Proiect E.Pausan
 
02 teoria evaluarii_m.manolescu
02 teoria evaluarii_m.manolescu02 teoria evaluarii_m.manolescu
02 teoria evaluarii_m.manolescu
 
6752230 dan-potolea-marin-manolescu-teoria-si-practica-evaluarii-education-ale
6752230 dan-potolea-marin-manolescu-teoria-si-practica-evaluarii-education-ale6752230 dan-potolea-marin-manolescu-teoria-si-practica-evaluarii-education-ale
6752230 dan-potolea-marin-manolescu-teoria-si-practica-evaluarii-education-ale
 
dan-potolea-marin-manolescu
dan-potolea-marin-manolescudan-potolea-marin-manolescu
dan-potolea-marin-manolescu
 

baze-de-date-access-laborator-de-ioan-mocian

  • 1. Ioan MOCIAN BAZE DE DATE Lucr ri de laborator UNIVERSITATEA PETRU MAIOR TÂRGU MURE 2008
  • 2. Cuvânt înainte Prezentul îndrum tor de lucr ri de laborator pentru baze de date vine s completeze cursul de baze de date cu aspectele practice care trebuie testate în cadrul laboratorului i proiectului. Acest îndrum tor urm re te structura cursului predat i se compune din 5 lucr ri de laborator care se vor executa pe durata mai multor edin e. Lucr rile de laborator propuse vor trebui efectuate consecvent, deoarece ele sunt gândite ca un proces continuu, adic rezultatele lor vor fi folosite de lucr rile care urmeaz . Prin urmare, acestea nu se pot face decât în ordinea lor fireasc . Cu cât ve i lucra mai con tiincios, cu atât ve i avea satisfac ii mai mari i mai pu in timp irosit. Trebuie s ave i în vedere c bazele de date, trebuie s aib date coerente pentru a putea s test m func ionarea formularelor, interog rilor i rapoartelor. Fiecare student va trebui s implementeze proiectul biblioteca cu propriile date introduse, parcurgând toate etapele de proiectare i implementare a unei baze de date. Proiectul „Biblioteca” implementat corect v asigur nota de trecere a examenului prin sus inerea lui în cadrul colocviului. Con inutul celor 4 lucr ri, sau mai corect spus, 3 lucr ri de laborator i un proiect, este urm torul: Lucrarea 1 con ine studierea conceptelor bazelor de date rela ionale. La sfâr itul lucr rii sunt enumera i termenii pe care studentul îi are de clarificat. În Excel ca trebui sa dea exemple din cele 3 tipuri de rela ii existente 1:1, 1:N i N:N. Lucrarea 2 este dedicat studierii etapelor de proiectare a unei baze de date, vor fi studiate cele 7 etape ale unui proiect, cu exemplificare proiectul „Biblioteca”. La sfâr itul lucr rii, studen ii vor avea create structura tabelelor, diagrama de rela ii i completate 10 formulare cu specifica ii de câmp. Lucrarea 3 este dedicat studierii limbajului SQL, con inând exemple cu instruc iunile de baz . Studen ii trebuie s în eleag func ionarea expresiilor prezentate, s le explice i poat concepe alte exemple. Aceste expresii vor fi reluate, pe viu, în cadrul programului Access. Lucrarea 4 cuprinde ini ierea în utilizarea programului Access cu finalitate în implementarea proiectului „Biblioteca”. Se întinde pe durata a mai multor laboratoare, iar în final fiecare student va avea propria aplica ie de baz de date în Access numit Biblioteca_nume_prenume.mdb. Lucrarea 5 este dedicat elementelor de performan ale programului Access, în care se vor crea macro-uri i se va particulariza aplica ia „Biblioteca”, pentru a ar ta ca o aplica ie profesional . Aplica ia „Biblioteca” prezentat în acest îndrum tor poate fi un bun exemplu pentru aplica ii proprii. Târgu Mure , 20 ianuarie 2008 Autorul 3
  • 3. Cuprins Cuvânt înainte .............................................................................................................. 3 Lucrarea 1. Terminologia bazelor de date rela ionale ............................................. 6 Defini ii .............................................................................................................. 6 Desf urarea lucr rii ........................................................................................ 15 Lucrarea 2. Elemente de proiectare a bazelor de date rela ionale ....................... 16 Considera ii teoretice ……………………………………………………….. 16 Studiu de caz. Proiectarea bazei de date „Biblioteca” ……………………… 16 Desf urarea lucr rii ....................................................................................... 17 Lucrarea nr. 3. Ini iere în limbajul SQL ................................................................ 18 Opera iuni simple folosind limbajul SQL ………………………………….. 18 Reg sirea datelor …………………………………………………… 18 Sortarea datelor …………………………………………………….. 19 Filtrarea datelor …………………………………………………….. 20 Operatorii clauzei WHERE ………………………………………… 20 Filtrare avansat …………………………………………………… 21 Opera iuni avansate folosind limbajul SQL ………………………. 25 Câmpuri calculate …………………………………………. 25 Desf urarea lucr rii ......................................................................... 26 Lucrarea nr. 4. Studiu de caz: Baza de date ” Biblioteca” ................................. 27 Considera ii generale despre programul Access …………………………... 27 Interfa a programului ACCESS …………………………………… 27 Crearea tabelelor …………………………………………………… 28 Rela ii între tabele …………………………………………………. 30 Crearea rela iilor cu Lookup Wizard ……………………………… 31 Crearea tabelelor bazei de date ”Biblioteca” ……………………… 34 Crearea formularelor pentru introducerea datelor ………………… 36 Testarea expresiilor SQL de la lucrarea nr. 3 ……………………… 42 Crearea interog rilor ………………………………………………………. 44 Vederea ”C r ile din bibiotec ” ……………………………….…… 44 Vederea ”C r ile împrumutate” ……………………………………. 46 Vederea ”Situa ie cititor” ………………………………………….. 46 Crearea formularelor pentru vizualizarea informa iilor …………………… 47 Crearea formularului de vizualizare a c r ilor din bibliotec ………………………………………………………. 49 Crearea formularului de vizualizare a situa iei unui cititor …………………………………………………………. 51 Rapoartele bazei de date „Biblioteca” …………………………………….. 55 Finalizarea lucr rii nr.4 ………………………………………………….… 59 Lucrarea nr. 5. Particularizarea bazei de date ” Biblioteca” ............................. 61 O scurt prezentare a Macro-urilor ……………………………………….. 61 Crearea macro-urilor cu singur ac iune …………………………………. 62 Rularea unei macrocomenzi din fereastra Database ……………………… 63 Macrocomenzi ata ate evenimentelor …………………………………….. 64 Utilizarea macrocomenzilor AutoExec i AutoKeys …………………….. 64 Metod rapid de pornire a aplica iilor …………………………………… 65 Desf urarea lucr rii ……………………………………………………… 66 Crearea macro-rilor aplica iei ”Biblioteca” ……………………… 66 4
  • 4. Crearea formei de start pentru aplica ia ”Biblioteca” ……..….…. 68 Adaptarea formularelor aplica iei ”Biblioteca” …………………. 72 Configurarea formularului de start ……………………………… 73 Anexe Anexa A. Teme de proiect propuse …………………………………….. 74 Anexa B. Comenzile SQL ……………………………………………… 76 Anexa C.Formulare de proiectare a bazelor de date rela ionale …………………………………………………..….. 78 5
  • 5. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.1 Lucrarea nr. 1. Terminologia bazelor de date rela ionale În aceast lucrare se vor clarifica principalele no iuni i concepte care vor fi folosite în studiul bazelor de date rela ionale. Defini ii Baz de date (Database) – O colec ie de date înrudite, stocate în mod organizat, care se refer la un anumit subiect sau obiectiv, împreun cu instrumentele folosite pentru manipularea lor. Date – Valorile care se stocheaz în baza de date. Acestea sunt statice în sensul c r mân acelea i pân nu intervine o modificare manual sau automat . Informa ii - Reprezint date pe care le prelucr m într-un mod care le confer semnifica ie i utilitate pentru noi atunci când lucr m cu respectivele date. Informa iile sunt dinamice, în sensul c se modific în permanen dup cum se modific datele din baza de date, dar i în sensul c pot fi prelucrate într-un num r nelimitat de moduri. Ideea care trebuie re inut este c trebuie s prelucr m datele pentru a le putea transforma în informa ii cu sens. Valoare nul - Reprezint o valoare care lipse te sau care nu este cunoscut . Deseori, valoarea nul se confund cu un zero sau unul sau mai multe spa ii albe, ceea ce este total gre it, din urm toarele motive: • Un zero poate avea mai multe semnifica ii cum ar fi nivelul stocului unui anumit produs, num rul de apari ii a unui cod etc. • De i un ir text format din unul sau mai multe spa ii albe nu înseamn nimic pentru cei mai mul i dintre noi, reprezint categoric semnifica ie pentru un limbaj de interogare cum ar fi SQL. Un spa iu alb este un caracter ca oricare altul cum ar fi “a”. • Un ir de lungime zero – adic dou ghilimele consecutive f r spa iu între ele “”, este de asemenea o valoare acceptabil pentru limbaje precum SQL i poate fi semnificativ în anumite circumstan e. Tabel (Table) - Reprezint structurile esen iale dintr-o baz de date, iar fiecare tabel reprezint întotdeauna un singur subiect concret, cum ar fi studen i, produse, vânz ri etc. Ordinea logic a înregistr rilor i a câmpurilor din cadrul unui tabel nu are nici o importan , iar fiecare tabel con ine cel pu in un câmp – cunoscut sub numele de cheie primar – care identific în mod unic fiecare înregistrare a tabelului. Un exempu de tabel: StudentID Nume Prenume Sectia <<alte câmpuri>> 5001 Pop Mariana TCM 5002 Ban Ioan TCM 5012 Laz r Ana IEI Înregistr ri 5065 Ban Lucia IMPI 5032 Pop Dorin MEC Câmpuri 6
  • 6. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.1 Datele dintr-o baz de date rela ional pot exista independent de modul în care sunt stocate fizic în calculator, datorit acestor ultime dou caracteristici ale unui tabel. Pentru utilizator acest lucru este foarte bun, deoarece acesta nu mai trebuie s cunoasc loca ia fizic a unei înregistr ri pentru a putea reg si datele. Subiectul pe care îl reprezint un tabel dat poate fi un obiect sau un eveniment. Când subiectul este un obiect, tabelul reprezint o cantitate palpabil , precum o persoan , un produs sau un lucru oarecare. Indiferent de tipul s u, un obiect are caracteristici care pot fi stocate sub form de date, care vor putea fi prelucrate ulterior într-un num r mare de moduri. Când subiectul unui tabel este un eveniment, înseamn c tabelul reprezint ceva care se produce la un anumit moment de timp i care are caracteristici pe care dori i s le înregistra i. Exemplul clasic care se poate da aici este tabelul cu consulta iile inute de un medic de familie. Tabelele pot fi, într-o alt clasificare, de dou tipuri: • Tabele de date care furnizeaz date folosite pentru furnizarea de informa ii i reprezint tipul de tabel cel mai frecvent întâlnit într-o baz de date. Datele din acest tip de tabel sunt dinamice deoarece se pot manipula (modificare, tergere) i converti în informa ii într-o anumit form sau manier . Cu astfel de tabele ve i lucra foarte frecvent în decursul lucrului cu baza de date. • Tabele de validare care stocheaz date pe care le ve i folosi cu scopul precis de a implementa integritatea datelor. De obicei, un tabel de validare con ine nume de localit i, coduri de produse, categorii de activit i etc. Datele din acest tip de tabel sunt statice, adic se modific foarte rar. Câmp (Field) - Reprezint cea mai mic structur din baza de date i reprezint o caracteristic a subiectului tabelului c ruia îi apar ine. Câmpurile sunt structurile care stocheaz efectiv datele, care apoi pot fi reg site i prezentate ca informa ii în aproape orice configura ie pe care o pute i imagina. Fiecare câmp dintr-o baz de date corect proiectat con ine singur valoare, iar numele s u va identifica tipul de valoare admis. Astfel, procesul de introducere a datelor devine foarte intuitiv. Înregistrare (Record) - Reprezint o instan unic a subiectului unui tabel. Înregistrarea este alc tuit din întregul set de câmpuri dintr-un tabel, indiferent dac respectivele câmpuri con in sau nu valori. Datorit modalit ii de definire a unui tabel, fiecare înregistrare este definit în baza de date prin intermediul unei valori unice a câmpului cheie primar a înregistr rii respective. Astfel, dac avem un tabel de persoane, o înregistrare din tabel trebuie s identifice fiecare persoan din tabel, care este un unicat. Înregistr rile reprezint un element cheie pentru în elegerea rela iilor dintre tabele, deoarece va trebui s cunoa te i rela ia dintre o înregistrare a unui tabel i alte înregistr ri din alt tabel. Vedere (Query) - Este un tabel “virtual” compus din câmpuri dintr-unul sau mai multe tabele ale bazei de date; tabelele care alc tuiesc vederea sunt cunoscute sub numele de tabele de baz . Modelul rela ional îi atribuie unei vederi atributul de virtual deoarece î i preia datele din tabele de baz , nu- i stocheaz propriile sale date. De fapt, singurele informa ii referitoare la o vedere care sunt stocate în baza de date se refer la structura vederii respective. Numeroase programe SGBDR principale lucreaz cu vederi, dar unele (precum Microsoft Access) le denumesc interog ri salvate. 7
  • 7. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.1 Cheie (Key) - sunt acele câmpuri speciale care îndeplinesc roluri foarte bine determinate în cadrul unui tabel, iar tipul cheii define te rolul acesteia în interiorul tabelului. Un tabel poate con ine numeroase tipuri de chei, dar cele mai importante sunt cheia primar i cheia extern . O cheie primar este un câmp sau un grup de câmpuri care identific în mod unic fiecare înregistrare din cadrul unui tabel; dac o cheie primar este compus din dou sau mai multe câmpuri, este cunoscut sub numele de cheie primar compozit . O valoare a unei primare identific o anumit înregistrare din întreaga baz de date. Cheia primar impune integritatea la nivel de tabel i faciliteaz stabilirea rela iilor cu alte tabele din baza de date. O cheie extern dintr-un tabel este acea cheie care este cheie primar în alt tabel. Ea nu trebuie s fie unic dup cum ve i observa în urm torul exemplu, rolul ei este, în special, de a asigura leg tura cu alt tabel. În figura 1.2 se pot vedea o cheie primar i o cheie extern . Impresari Cheie primar ImpresarID Nume Prenume Telefon 100 Becali Ioan 0745-655482 101 Popescu Gic 0745-658312 Cheie primar 102 Becali Victor 0744-547212 Sportivi SportivID ImpresarID Nume sportiv Telefon <<alte câmpuri>> 8001 100 Mutu Adrian 0745-657329 8002 101 Neaga Ioan 0744-768432 8003 100 Chivu Cristian 0723-546291 Cheie extern Fig.1.2. Exemplu de câmpuri cheie primar i cheie extern Se observ cum câmpul ImpresarID este cheie primar pentru tabelul Impresari i cheie extern pentru tabelul Sportivi. Acolo unde este cheie extern , valoarea ei se poate repeta, ceea ce este firesc, deoarece un impresar poate avea mai mul i sportivi. Câmpul ImpresarID din cele dou tabele asigur leg tura dintre ele, asigurând în acela i timp i integritatea datelor, adic fiecare sportiv are un impresar valabil. Când determina i c între dou tabele exist o rela ie, în mod caracteristic stabili i rela ia respectiv preluând o copie a cheii primare din primul tabel i încorporând-o în structura celui de-al doilea tabel, unde devine cheie extern . Numele de „cheie extern ” deriv din faptul c al doilea tabel are deja o cheie primar proprie, iar cheia primar pe care o introduce i din primul tabel este „extern ” pentru al doilea tabel. Index - Este o structur pe care un program SGBDR o pune la dispozi ie pentru îmbun t irea procesului de prelucrare a datelor. Un index nu are nici o leg tur cu structura logic a bazei de date. Unicul motiv pentru care discut m despre termenul index în acest capitol este faptul c oamenii îl confund deseori cu termenul cheie. Index i cheie reprezint o alt pereche de termeni folosi i eronat în mod frecvent i pe scar larg în industria bazelor de date. (Mai ine i minte deosebirile dintre date i informa ii?). Ve i sesiza întotdeauna diferen a dintre cei doi termeni dac re ine i c , în timp ce cheile sunt structuri logice pe care la identificarea înregistr rilor dintr-un tabel, indec ii reprezint structuri fizice utilizate la optimizarea procesului de prelucrare a datelor. Prin folosirea indec ilor, sort rile i filtr rile unei baze de date se face într-un timp mult mai scurt. 8
  • 8. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.1 Rela ii (Relationships) - Între dou tabele exist o rela ie atunci când înregistr rile din primul tabel pot fi asociate cu înregistr rile din al doilea tabel. Rela ia se poate stabili prin intermediul unui set de chei primare i chei externe sau cu ajutorul unui al treilea tabel, numit tabel de leg tur (cunoscut i sub numele de tabel asociativ). Figura 1.3 ilustreaz rela ii stabilite prin intermediul cheilor primare i al cheilor externe. Studenti StudID Nume Prenume OrasStudent <<alte câmpuri>> 6001 Pop Remus Reghin ........ 6002 Szabo Zoltan Oradea ........ 6003 Costea Florian Zalau ........ 6004 Timocea Sebastian Brasov ........ 6004 Mocean Vasile Fagaras ........ Orar student(table de leg tur ) Cursuri StudID CursID CursID Denumire Credite ProfesorID 6001 C001 C001 PUC 5 25461 6002 C213 C213 Baze de date 5 25461 6002 C001 C032 SIM 4 56821 6001 C213 C015 GD 5 12843 6002 C015 G001 AutoCAD 4 32584 6003 C001 G004 Inventor 5 3212 6003 C213 G007 Intellicad 4 25461 6001 C015 6003 G001 6001 G001 Fig .1.3. Rela ii între tabele O rela ie este o component important a unei baze de date rela ionale. O rela ie permite crearea de vederi din tabele multiple i este crucial pentru integritatea datelor, întrucât contribuie la cantit ii de date redundante i la eliminarea datelor duplicate. Pute i caracteriza o rela ie în trei moduri: în func ie de tipul rela iei dintre tabele, de maniera în care fiecare tabel particip la rela ie i de gradul de participare al fiec rui tabel. Rela ii ”unu cu unu” - Dou tabele au o rela ie unu cu unu când o singur înregistrare din primul tabel este corelat cu o singur înregistrare din al doilea tabel i o singur înregistrare din al doilea tabel este corelat cu o singur înregistrare din primul tabel. În figura 2.10 este reprezentat o astfel de rela ie. Într-o asemenea rela ie, un tabel serve te ca “tabel p rinte”, iar cel lalt îndepline te rolul de “tabel copil”. Rela ia se stabile te prin preluarea unei cópii a cheii primare a tabelului p rinte i încorporarea acesteia în structura tabelului copil, unde devine o cheie extern . Acesta este un tip special de rela ie, deoarece este unicul în cadrul c ruia ambele tabele pot folosi efectiv aceea i cheie primar . În figura 1.4 este prezentat un exemplu clasic de rela ie unu la unu. În acest caz SALARIA I este tabelul p rinte, iar SALARIU este tabelul copil. Se observ c fiecare salariat din primul tabel are un singur corespondent din al doilea tabel. 9
  • 9. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.1 Salaria i SalariatID Nume Prenume Telefon <<alte câmpuri>> 100 Ban Ioan 0745-646321 ….. 101 Pop Dorin 0723-548211 ….. 102 Laz r Liviu 0264-542138 ….. 103 Cri an Ovidiu 0740-764282 ….. Salariu SalariatID Salar orar Sporuri <<alte câmpuri>> 100 34.50 10% ….. 101 23.00 5% ….. 102 17.45 20% ….. 103 16.00 18% ….. Fig. 1.4. Exemplu de rela ie „unu la unu” Rela ia unu la unu poate fi imaginat ca o “rupere” în dou a tabelului. De i câmpurile din aceste tabele pot fi combinate într-un singur tabel, proiectantul bazei de date a ales s plaseze în tabelul SALARIA I câmpurile ce pot fi v zute de orice membru al organiza iei i în tabelul SALARIU câmpurile ce pot fi v zute doar de personalul autorizat, tiut fiind c salariile sunt, de obicei, confiden iale. Rela ii „unu cu mai mul i” - Între dou tabele exist o rela ie unu cu mai mul i când o înregistrare din primul tabel poate fi corelat cu una sau mai multe înregistr ri din al doilea tabel, în timp ce o înregistrare din al doilea tabel poate fi corelat cu o singur înregistrare din primul tabel. S studiem un exemplu generic pentru acest tip de rela ie. Modelul p rinte/copil pe care l-am utilizat pentru a descrie o rela ie „unu cu unu” se aplic i în acest caz, partea unu a rela iei este tabelul p rinte, iar tabelul din partea mai mul i este tabelul copil. O rela ie de tipul unu cu mai mul i se stabile te prin preluarea unei cópii a cheii primare a tabelului p rinte i încorporarea acesteia în structura tabelului copil, unde devine o cheie extern . Exemplul din figura 1.5 ilustreaz o rela ie de tip unu cu mai mul i caracteristic . Imprumuturi Clienti ClientID CarteID Data ClientID Nume Prenume <alte câmp.> 9002 5648 .... 9001 Pop Dorin ....... 9001 690423 .... 9002 Ban Ion ....... 9004 6563 .... 9003 Laz r Ana ....... 9003 65323 .... 9004 Buzan Maria ....... 9003 09542 .... 9005 Beldean Vian ....... 9003 64823 .... 9002 75001 .... 9005 10045 .... 9005 76100 .... Fig. 1.5. Exemplu de rela ie „unu cu mai mul i” 10
  • 10. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.1 O singur înregistrare din tabelul CLIENTI poate fi corelat cu una sau mai multe înregistr ri din tabelul IMPRUMUTURI, dar o înregistrare din tabelul IMPRUMUTURI este corelat cu o singur înregistrare din tabelul CLIENTI. Dup cum probabil a i dedus, câmpul ClientID este o cheie extern în tabelul IMPRUMUTURI. Rela ia unu cu mai mul i este cea mai obi nuit rela ie care exist între dou tabele dintr-o baz de date i este cea mai u or de identificat. Rela ia este extrem de important din punct de vedere al integrit ii datelor, deoarece ea v ajut s elimina i datele duplicate. Rela ii de tip ”mai mul i cu mai mul i” - Între dou tabele exist o rela ie de mai mul i cu mai mul i când o înregistrare din primul tabel poate fi corelat cu una sau mai multe înregistr ri din al doilea tabel i o înregistrare din al doilea tabel poate fi corelat cu una sau mai multe înregistr ri din primul tabel. O rela ie din aceast categorie se stabile te cu ajutorul unui tabel de leg tur . Un tabel de leg tur faciliteaz asocierea înregistr rilor dintr-un tabel cu înregistr rile din cel lalt tabel i asigur lipsa oric ror probleme la opera iile de ad ugare, tergere sau modificare a datelor corelate. Un tabel de leg tur se define te prin preluarea unor cópii ale cheii primare din fiecare tabel i utilizarea lor pentru a forma structura noului tabel. În realitate, aceste câmpuri îndeplinesc dou roluri distincte: împreun formeaz cheia primar compozit a tabelului de leg tur , iar separat, fiecare poate fi asimilat unei chei externe. O rela ie de tip mai mul i cu mai mul i care nu este stabilit în mod corespunz tor se nume te „nerezolvat ”. Figura 1.6 prezint un exemplu clasic i clar de rela ie de tip mai mul i cu mai mul i nerezolvat . În acest exemplu, o înregistrare din tabelul STUDENTI poate fi corelat cu mai multe înregistr ri din tabelul CURSURI, în timp ce o singur înregistrare din tabelul CURSURI poate fi corelat cu mai multe înregistr ri din tabelul STUDENTI. Studenti StudID Nume Prenume OrasStudent <<alte câmpuri>> 6001 Pop Remus Reghin ........ 6002 Szabo Zoltan Oradea ........ 6003 Costea Florian Zalau ........ 6004 Timocea Sebastian Brasov ........ 6004 Mocean Vasile Fagaras ........ Cursuri CursID Denumire Credite ProfesorID Sala <<alte câmpuri>> C001 PUC 5 25461 208 ........ C213 Baze de date 5 25461 208 ........ C032 SIM 4 56821 209 ........ C015 GD 5 12843 207 ........ G001 AutoCAD 4 32584 207 ........ G004 Inventor 5 3212 208 ........ G007 Intellicad 4 25461 208 ........ Fig. 1.6. Un exemplu tipic de rela ie „mai mul i cu mai mul i” nerezolvat Aceast rela ie este nerezolvat datorit particularit ii intrinseci a rela iei de tip mai mul i cu mai mul i. Principala problem este urm toarea: cum se pot asocia cu u urin înregistr ri din primul tabel cu înregistr rile din al doilea tabel? Pentru a reformula întrebarea folosind 11
  • 11. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.1 tabelele din figura 1.6, cum se asociaz un student cu mai multe cursuri sau un anumit curs cu mai mul i studen i? Se insereaz câteva câmpuri Student în tabelul CURSURI sau mai multe câmpuri Curs în tabelul STUDENTI? Oricare din aceste metode va îngreuna lucrul cu datele i va afecta în mod negativ integritatea datelor. Cea mai bun metod const în din crearea i utilizarea unui tabel de leg tur , care va rezolva rela ia de tip mai mul i cu mai mul i în maniera cea mai adecvat i mai eficient . Figura 1.7 prezint implementarea practic a cestei solu ii. Este important ca dumneavoastr s cunoa te i tipul de rela ie care exist între tabelele dintr-o pereche, deoarece acesta determin modul în care sunt corelate tabelele, dac înregistr rile din tabele sunt interdependente sau nu, precum i num rul minim i maxim de înregistr ri corelate care pot exista în cadrul rela iei. StudID Nume Prenume OrasStudent <<alte câmpuri>> 6001 Pop Remus Reghin ........ 6002 Szabo Zoltan Oradea ........ 6003 Costea Florian Zalau ........ 6004 Timocea Sebastian Brasov ........ 6004 Mocean Vasile Fagaras ........ StudID CursID CursID Denumire Credite ProfID 6001 C001 C001 PUC 5 25461 6002 C213 C213 Baze de date 5 25461 6002 C001 C032 SIM 4 56821 6001 C213 C015 GD 5 12843 6002 C015 G001 AutoCAD 4 32584 6003 C001 G004 Inventor 5 3212 6003 C213 G007 Intellicad 4 25461 6001 C015 6003 G001 6001 G001 Fig. 1.7. Rezolvarea unei rela ii de tip mai mul i cu mai mul i cu ajutorul unui tabel de leg tur Tipul de participare - Când stabili i o rela ie între dou tabele, fiecare tabel particip la rela ie într-o manier particular . Tipul de participare pe care îl atribui i unui tabel dat determin dac în respectivul tabel trebuie s existe o înregistrare înainte de a putea introduce înregistr ri în tabelul corelat. Exist dou tipuri de particip ri: • Obligatorie - tabelul trebuie s con in cel pu in o înregistrare înainte de a putea introduce înregistr ri în tabelul corelat. • Op ional – nu este obligatoriu ca tabelul s con in vreo înregistrare înainte de a putea introduce înregistr ri în tabelul corelat. Gradul de participare - Determin num rul minim de înregistr ri existente într-un tabel al unei rela ii, asociate cu o singur înregistrare a unui tabel corelat, respectiv num rul maxim de înregistr ri care pot exista într-un tabel al unei rela ii, asociate cu o singur înregistrare din tabelul corelat. 12
  • 12. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.1 Specifica ie de câmp - Reprezint toate elementele unui câmp. Fiecare specifica ie de câmp încorporeaz trei tipuri de elemente: generale, fizice i logice. • Elementele generale reprezint informa iile fundamentale referitoare la câmp i includ elemente precum numele câmpului, descrierea i tabelul p rinte. • Elementele fizice determin modul de construire a unui câmp i modul de reprezentare a acestuia pentru persoana care îl utilizeaz . Aceast categorie include elemente precum tipul de date, lungimea i formatul de afi are. • Elementele logice descriu valorile stocate într-un câmp i includ articole precum valoarea obligatorie, intervalul de valori i valoarea prestabilit . Aceste specifica ii de câmp o s le completa i folosindu-v de ni te formulare, care vor fi descrise în detaliu în capitolul urm tor. Integritatea datelor - prin se în elege validitatea, consecven a i acurate ea datelor incluse într-o baz de date. Nu pot accentua suficient faptul c nivelul de acurate e al informa iilor pe care le reg si i din baza de date este direct propor ional cu nivelul de integritate al datelor pe care îl impune i bazei de date. Integritatea datelor reprezint unul dintre cele mai importante aspecte ale procesului de proiectare a bazelor de date i nu v este permis s -l subestima i, s -l trece i cu vederea i nici m car s -l neglija i par ial. Trebuie s fi i con tient de faptul c dac nu respecta i regulile de integritate, sunte i pasibili de a ob ine informa ii cu grave erori, care sunt greu de depistat. Gândi i-v numai la implica iile posibile atunci când baza dumneavoastr de date e folosit pentru tranzac ii comerciale sau financiare. Exist patru tipuri de integritate a datelor pe care le ve i implementa pe durata procesului de proiectare a bazelor de date. Trei dintre acestea se bazeaz pe diferite aspecte ale structurii bazei de date i sunt denumite în conformitate cu zona (nivelul) la care opereaz . Cel de-al patrulea tip de integritate a datelor se bazeaz pe modul în care o organiza ie î i percepe i î i utilizeaz datele. În continuare vor fi prezentate descrierile fiec rui tip de integritate. • Integritatea la nivel de tabel asigur lipsa înregistr rilor duplicate în interiorul tabelului i faptul c acel câmp care identific fiecare înregistrare din tabel este unic i nu are niciodat valoare nul . • Integritatea la nivel de câmp asigur faptul c structura fiec rui câmp este solid , c valorile din fiecare câmp sunt valide, consecvente i precise, precum i c se asigur o definire consecvent , în întreaga baz de date, a câmpurilor de acela i tip (Cod postal, de exemplu). • Integritatea la nivel de rela ie (cunoscut i sub numele de integritate referen ial ) asigur soliditatea rela iei dintre dou tabele, precum i faptul c înregistr rile din tabele sunt sincronizate ori de câte ori se introduc, se actualizeaz sau se terg date din oricare dintre cele dou tabele. • Reguli de desf urare a activit ii impun restric ii sau limit ri asupra anumitor aspecte ale bazei de date, pe baza modalit ilor în care o organiza ie î i percepe i î i actualizeaz datele. Aceste restric ii pot afecta aspecte ale proiect rii bazelor de date, precum i intervalul i tipurile de valori stocate într-un câmp, tipul i gradul de participare a fiec rui tabel în cadrul unei rela ii, precum i tipul de sincronizare utilizat pentru integritatea la nivel de rela ie, în anumite rela ii. 13
  • 13. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.1 Baza de date rela ional - A fost conceput în anul 1969 i este azi cel mai folosit model de baze de date în gestiunea bazelor de date. Acest model este fundamentat pe dou ramuri ale matematicii – teoria mul imilor i logica predicatelor de ordinul întâi. Într-adev r, numele modelului provine de la termenul rela ie, care constituie o parte a teoriei mul imilor. O concep ie gre it , larg r spândit , este aceea c modelul rela ional i-ar fi preluat numele de la faptul c între tabelele unei baze de date rela ionale exist rela ii. O baz de date rela ional stocheaz datele în rela ii, pe care un utilizator le percepe ca pe ni te tabele. Fiecare rela ie este compus din înregistr ri i câmpuri, iar ordinea fizic a înregistr rilor sau a câmpurilor dintr-un tabel este complet lipsit de importan , iar fiecare înregistrare a tabelului este identificat , nu dup locul unde se afl , ci dup un câmp care con ine o valoare unic . Prin urmare, utilizatorul nu este obligat s cunoasc loca ia fizic a unei înregistr ri a a cum se întâmpl la celelalte modele de baz de date (ierarhic i re ea), pentru reg sirea datelor. Sistem de gestiune a bazelor de date rela ionale (SGBDR) - Este un program software folosit pentru crearea, între inerea, modificarea i manipularea unei baze de date rela ionale. Numeroase programe SGBDR furnizeaz i instrumentele necesare pentru a putea crea aplica ii destinate utilizatorilor finali care lucreaz cu datele din baza de date. Numeroasele facilit i oferite de diferi i produc tori evolueaz foarte rapid, devenind din ce în ce mai performante. Primele SGBDR-uri au fost concepute pentru sisteme de tip desktop. Acestea presupun existen a unei copii a bazei de date pe fiecare calculator care nu este un mare avantaj, în ceea ce prive te actualizarea datelor. În acest context a ap rut necesitatea amplas rii în mod centralizat a întregii baze de date care s fie accesat de to i utilizatorii. A a au ap rut SGBDR-urile de tip client-server în care bazele de date se stocheaz pe un server de baze de date, iar utilizatorii interac ioneaz cu datele prin intermediul unor aplica ii rezidente pe propriul calculator numit clientul bazei de date. Creatorul de baze de date folose te programul client-server SGBDR pentru a crea i între ine programele de aplica ie de baze de date i programele accesorii pentru utilizatorul final. Acesta implementeaz integritatea i securitatea datelor din serverul de baze de date, având astfel posibilitatea de a fundamenta o diversitate de aplica ii utilizator pe acela i set de date, f r a afecta integritatea i securitatea datelor. Cele mai cunoscute SGBDR-uri sunt: • Microsoft Access • Microsoft SQL Server • Oracle • MySQL • PostgreSQL Microsoft Access este un SGBDR comercial de tip desktop, folosit pentru gestionarea bazelor de date de dimensiuni mici i medii. Poate acoperi f r probleme segmentul firmelor mici i mijlocii. Este sistemul de gestiune pe care îl vom studia i noi în aceast carte. Microsoft SQL Server este un SGBDR de tip client-server care accept baze de date foarte mari i un num r foarte mare de tranzac ii i ruleaz numai pe sistemele de operare Windows. Este solu ia ideal pentru firmele mari, la un pre de cost relativ sc zut. Oracle este liderul mondial al pie ei SGBDR-urilor de tip client-server. Oracle accept baze de date enorme i un num r imens de tranzac ii. Oracle ruleaz pe numeroase sisteme de operare, este un SGBDR complex a c rui operare i între inere trebuie f cute de un administrator special instruit pentru acest scop. Se întâlne te la marile companii transna ionale, deoarece pre ul s u este pe m sura performan elor. 14
  • 14. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.1 MySQL este un SGBDR din categoria open-source(codul surs este pus gratuit la dispozi ia utilizatorilor) fiind unul din liderii pie ei. MySQL este rapid, stabil i accept baze de date de mari dimensiuni, dar îi lipsesc câteva din caracteristicile importante ale limbajului SQL. Versiunile viitoare î i propun includerea acestor caracteristici. Ruleaz pe mai multe sisteme de operare i este gratuit pentru utilizarea în scopuri personale(care nu aduc un câ tig). PostgreSQL este un SGBDR din categoria open-source, fiind unul din liderii pie ei. Accept baze de date de mari dimensiuni, este recunoscut pentru setul s u bogat de caracteristici. Desf urarea lucr rii Lucrarea se consider efectuat dac : 1. Studentul i-a însu it termenii i a în eles conceptele de mai jos: Baz de date Date Informa ii Valoare nul Tabel Câmp Înregistrare Vedere Cheie Index Rela ii Rela ii ”unu cu unu” Rela ii „unu cu mai mul i” Rela ii de tip ”mai mul i cu mai mul i” Tipul de participare Gradul de participare Specifica ie de câmp Integritatea datelor Baza de date rela ional Sistem de gestiune a bazelor de date rela ionale (SGBDR) 2. Pe baza exemplelor prezentate, studentul va concepe câte un exemplu original cu cele 3 tipuri de rela ii între dou tabele, care vor fi prezentate în Excel. 15
  • 15. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.2 Lucrarea nr. 2. Elemente de proiectare a bazelor de date rela ionale În aceast lucrare se vor parcurge cele 7 etape de proiectare a unei baze de date, având ca scop familiarizarea studen ilor cu problemele intervenite în conceperea unei baze de date. Considera ii teoretice Ca orice lucru inventat de om, i bazele de date au un scop bine definit. Este foarte important s în elegem scopul pentru care e nevoie de o baz de date, pentru a alege cele mai optime solu ii. Înainte de a crea o baz de date, aceasta trebuie proiectat , la fel cum, pentru a construi o cas avem nevoie de un proiect. Iat cele 7 etape care trebuie parcurse pentru a face un proiect: • Etapa 1 – Definirea unei declara ii de inten ie i a obiectivelor misiunii; • Etapa 2 – Analiza bazei de date curente; • Etapa 3 – Crearea structurilor de date; • Etapa 4 – Determinarea i instituirea rela iilor între tabele; • Etapa 5 – Determinarea i definirea regulilor de desf urare a activit ii; • Etapa 6 – Determinarea i definirea vederilor; • Etapa 7 – Verificarea integrit ii datelor. Studen ii vor studia din curs Capitulul 3, pentru a- i însu i cuno tin ele legate de fiecare etap a procesului de proiectare. Pentru a în elege la modul concret, cum se face proiectarea unei baze de date, vom aborda un studiu de caz. Studiu de caz. Proiectarea bazei de date „Biblioteca” Declara ia de inten ie. Rolul bazei de date este de a ine la zi stocul de c r i din bibliotec i de a furniza informa ii despre cititori i împrumuturi. Obiectivele misiunii: • Dorim s avem informa ii despre autorii care au c r i în bibliotec . • Dorim s avem informa ii despre editurile care au c r i în bibliotec . • Dorim s avem o clasificare a c r ilor pe domenii. • Dorim s avem informa ii despre cititorii bibliotecii. • Dorim s avem situa ii despre împrumuturi. • Dorim s tim la un moment dat, unde sunt exemplarele unei anumite c r i. 16
  • 16. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.2 Studen ii vor încerca s formuleze alte versiuni ale declara iei de inten ie i s propun i alte obiective ale misiunii bazei de date. Crearea structurilor de date i a rela iilor. Presupunem c dup analiza obiectivelor misiunii i dup mai multe itera ii, am ajuns la structura prezentat mai jos. Crearea foilor de specifica ii. Studen ii vor completa foi de specifica ii pentru cel pu in 10 câmpuri care s acopere toate tipurile de date. Formularele folosite sunt Specificatii camp.xls, care se g se te pe server în directorul Baze de date. Desf urarea lucr rii În directorul Biblioteca al fiec rui student va trebui s se creeze un fi ier Word numit Documentatie proiect Biblioteca.doc în care vor apare Declara ia de inten ie, Obiectivele misiunii i Diagrama de rela ii. Diagrama se va executa în Word folosind comenzile Drawing. De asemenea, în acela i director ve i crea fi ierul Specificatii camp.xls, care va con ine pe 10 foi, cele 10 specifica ii de câmp cerute. Observa ie important ! Trata i cu mare grij cele 2 fi iere cerute, pentru c ele vor sta la baza lucr rilor care urmeaz . 17
  • 17. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.3 Lucrarea nr. 3. Ini iere în limbajul SQL Aceast lucrare de laborator const în parcurgerea exemplelor de expresii SQL pentru ca studen ii s în eleag acest limbaj, care va fi folosit în lucr rile urm toatoare. Opera iuni simple folosind limbajul SQL Reg sirea datelor Reg sirea datelor se face cu instruc iunea SELECT, folosit pentru a reg si una sau mai multe coloane. Aceasta este cea mai folosit instruc iune din SQL. Din tabelul tblStudenti prezentat în figura 3.1 ne propunem s extragem numele i prenumele studen ilor. StudID Nume Init Prenume Sectia An Grupa Stare 1 Bogdan P. Mircea Florin IEI 1 1311 Bugetar 2 Meruta I. Cosmin IEI 3 1332 Bugetar 3 Pop T. Marius Traian IEI 2 1321 Bugetar 4 Bucur P. Mihaela IEI 2 1321 Bugetar 5 Chirila I. Laura IEI 3 1331 Bugetar 6 Cotirla L. Raluca Adina TCM 1 1111 Bugetar 7 Cotoara G. Ovidiu TCM 1 1111 Bugetar 8 Cozma D. Dumitru TCM 2 1121 Bugetar 9 Damian N. Daniel MEC 4 1241 Bugetar 10 Farcas I. Calin Florin MEC 4 1241 Taxa Fig. 3.1. Tabelul tblStudenti simplificat Expresie SQL: SELECT Nume, Prenume FROM tblStudenti; Rezultat: Nume Prenume Bogdan Mircea Florin Meruta Cosmin Pop Marius Traian Bucur Mihaela Chirila Laura Cotirla Raluca Adina Cotoara Ovidiu Cozma Dumitru Damian Daniel Farcas Calin Florin 18
  • 18. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.3 Observa i expresia SQL care se cite te astfel: selecteaz coloanele Nume i Prenume din tabelul tblStudenti. S-a folosit i clauza FROM, a a cum se vede. Rezultatul ob inut este evident. Dac dori i s selecta i toate coloanele tabelului se folose te expresia urm toare: Expresie SQL: SELECT * FROM tblStudenti În locul listei de coloane se pune acest simbol „ * ”. Sortarea datelor Prin sortarea datelor se în elege aranjarea înregistr rilor unui tabel într-o anumit ordine, de regul , alfabetic sau cresc toare/descresc toare. Sortarea datelor se face cu ajutorul clauzei ORDER BY a instruc iunii SELECT. La tabelul din figura 3.1 ne propunem s scoatem numai numele i prenumele studen ilor dar în ordine alfabetic . Expresie SQL: SELECT Nume, Prenume FROM tblStudenti ORDER BY Nume; Rezultat: Nume Prenume Bogdan Mircea Florin Bucur Mihaela Chirila Laura Cotirla Raluca Adina Cotoara Ovidiu Cozma Dumitru Damian Daniel Farcas Calin Florin Meruta Cosmin Pop Marius Traian Observa i clauza ORDER BY care ordoneaz înregistr rile în ordine alfabetic dup valorile din câmpul Nume. Se pune întrebare, ce ne facem dac vrem s ordon m invers alfabetic (de la Z la A)? Sau dac avem un câmp numeric i dorim s ordon m descresc tor dup acest câmp. Iat r spunsul: • Pentru a indica ordinea descresc toare de sortare se folose te cuvântul cheie DESC. • Dac câmpul dup care se face sortarea este alfanumeric, sortarea se face alphabetic, iar dac este numeric sau de dat calendaristic , sortarea se face cresc tor/descresc tor. • Dac nu se indic direc ia de sortare, se ia sortarea cresc toare care este implicit . (Cazul prezentat.) Iat cum arat o expresie SQL în care apare i cuvântul cheie DESC: 19
  • 19. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.3 Expresie SQL: SELECT Nume, Prenume FROM tblStudenti ORDER BY Nume DESC Re ine i c rezultatul sort rii datelor este un tabel care are acela i num r de înregistr ri ca i originalul. Filtrarea datelor Prin filtrarea datelor se în elege extragerea dintr-un tabel numai a anumitor înregistr ri de care avem nevoie, de exemplu, din tabelul de studen i avem nevoie numai de cei din anul 2. Pentru a executa aceast opera iune ve i folosi clauza WHERE a instruc iunii SELECT. Reg sirea numai a înregistr rilor dorite, presupune includerea în expresia SQL a unui criteriu de c utare a înregistr rilor dorite. Într-o instruc iune SELECT, datele sunt filtrate prin specificarea criteriilor de c utare în clauza WHERE. Locul acesteia este imediat dup numele tabelului (clauza FROM), ca în exemplul urm tor. Fie tabelul din figura 3.1. Ne propunem s filtr m studen ii din anul 2. expresia SQL este urm toarea: Expresie SQL: SELECT StudID, Nume, Init, Prenume, Sectia, Grupa FROM tblStudenti WHERE An = ”2”; Rezultat: StudID Nume Init Prenume Sectia Grupa 3 Pop T. Marius Traian IEI 1321 4 Bucur P. Mihaela IEI 1321 8 Cozma D. Dumitru TCM 1121 Operatorii clauzei WHERE Clauza WHERE pe care am examinat-o a testat egalitatea – determin dac o coloan con ine valoarea specificat . Limbajul SQL accept mai mul i operatori condi ionali, dup cum urmeaz : • = Egalitate • <> Non-egalitate • != Non-egalitate • < Mai mic decât • <= Mai mic sau egal cu • !< Nu mai mic decât • > Mai mare decât • >= Mai mare sau egal cu • !> Nu mai mare decât • BETWEEN Între dou valori specificate • IS NULL Este o valoare NULL 20
  • 20. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.3 Observa i c pentru non-egalitate exist dou simboluri, aceasta pentru c diversele SGBDR- uri accept pe unul sau altul dintre ele. Iat câteva cazuri concrete de folosire a operatorilor: Interval de valori: WHERE Pret BETWEEN 2.5 AND 10; (afi eaz toate înregistr rile care au în coloana „Pret” valori între 2.5 i 10). Valoare NULL: WHERE Pret IS NULL; (afi eaz toate înregistr rile care nu au pre ). Non-egalitate: WHERE Stare <> ”Bugetar”; (afi eaz toate înregistr rile din tabelul studen i, folosit mai înainte, care nu sunt bugetari). Este evident c putem formula i altfel condi ia, dar aici am folosit non-egalitatea. Ceilal i operatori se folosesc la fel ca cel de egalitate prezentat pu in mai în fa . Filtrare avansat Filtr rile prezentate mai sus se întâlnesc mai rar în practic deoarece sunt foarte simple. Filtr rile pe care le ve i folosi în mod curent, sunt filtr ri mai complicate la care criteriile sunt exprimate prin expresii complexe. Aceste criterii creeaz condi ii puternice de c utare. Vom folosi al i operatori cum sunt AND, OR, NOT i IN. De multe ori, filtrarea dup o coloan nu rezolv problema pe care o avem. Pentru a filtra dup mai multe coloane se folose te operatorul AND. Fie tabelul din figura 3.2. Ne propunem s facem diferite filtr ri. StudID Nume Init Prenume Sectia An Grupa Stare 1 Bogdan P. Mircea Florin IEI 1 1311 Bugetar 2 Meruta I. Cosmin IEI 1 1312 Taxa 3 Pop T. Marius Traian IEI 2 1321 Bugetar 4 Bucur P. Mihaela IMPI 2 1321 Bugetar 5 Pop I. Laura IEI 3 1331 Taxa 6 Cotirla L. Raluca Adina TCM 1 1111 Bugetar 7 Cotoara G. Ovidiu TCM 1 1111 Bugetar 8 Cozma D. Dumitru TCM 2 1121 Bugetar 9 Damian N. Daniel MEC 4 1241 Bugetar 10 Cozma I. Calin Florin MEC 4 1241 Taxa Fig. 3.2. Tabel cu studen i Operatorul AND. Prima filtrare ar fi studen ii de la IEI din anul 1. Iat expresia SQL: Expresie SQL: SELECT Nume, Prenume, Grupa, Stare FROM tblStudenti WHERE Sectia=”IEI” AND An = ”1”; Rezultat: Nume Prenume Grupa Stare Bogdan Mircea Florin 1311 Bugetar Meruta Cosmin 1312 Taxa 21
  • 21. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.3 Urm ri i expresia SQL i verifica i rezultatul ob inut. Încerca i i alte filtr ri asem n toare. Observa i folosirea operatorului AND. Cum ar trebui modificat expresia SQL, pentru a afi a rezultatul în ordine alfabetic invers ? Operatorul OR. O alt filtrare pe care ne-o propunem, este s filtr m studen ii din anul 2 de la IEI sau TCM. Expresie SQL: SELECT Nume, Prenume,Sectia, Grupa, Stare FROM tblStudenti WHERE (Sectia=”IEI” OR Sectia=”TCM”) AND An = ”2”; Rezultat: Nume Prenume Sectia Grupa Stare Pop Marius Traian IEI 1321 Bugetar Cozma Dumitru TCM 1121 Bugetar Observa i folosirea parametrilor OR i AND, respectiv apari ia celor dou paranteze. Aceste paranteze au leg tur cu ordinea opera iilor OR i AND. În ordinea opera iilor, operatorul AND se execut înaintea operatorului OR, ceea ce ar duce la rezultate eronate, de aceea a fost pus operatorul OR în parantez , ca s -l execute primul, tiut fiind c parantezele au prioritate la execu ie. Operatorul IN. Folosirea acestui operator are ca scop specificarea unui domeniu de condi ii, oricare dintre ele putând fi îndeplinite. Operatorul IN necesit o list de valori valide, care s fie separate prin virgule i cuprinse între paranteze. Ne propunem s alegem din tabelul din figura 3.2 to i studen ii care au numele Pop i Cozma. Expresie SQL: SELECT Nume, Prenume,Sectia, Grupa, Stare FROM tblStudenti WHERE Nume IN (“Pop”, “Cozma”); Rezultat: Nume Prenume Sectia Grupa Stare Pop Marius Traian IEI 1321 Bugetar Pop Laura IEI 1331 Taxa Cozma Dumitru TCM 1121 Bugetar Cozma Calin Florin MEC 1241 Taxa Din analiza acestui exemplu, putem observa f r greutate c operatorul IN face cam acela i lucru ca i operatorul OR, deci se poate scrie o expresie SQL cu acesta. Care este aceast expresie? Se pune, pe bun dreptate, întrebarea de ce mai avem nevoie de înc un operator dac avem unul care face acela i lucru. R spunsul este c operatorul IN are unele avantaje care îl fac de preferat fa de operatorul OR. Iat aceste avantaje: • Când lucra i cu liste lungi de op iuni valide, sintaxa operatorului IN este mai simpl i u or de citit, principalul avantaj. • Ordinea de evaluare este mai simplu de gestionat, când operatorul IN este folosit în asocia ie cu operatorii AND i OR. 22
  • 22. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.3 • Aproape totdeauna, operatorii IN se execut mai rapid decât listele de operatori OR. • Un mare avantaj este c operatorul IN poate s con in o alt instruc iune SELECT, i astfel v permite s construi i clauze WHERE foarte dinamice. Acest aspect va fi reluat mai târziu. Operatorul NOT. Acest operator al clauzei WHERE are o singur func ie – neag orice condi ie care îl urmeaz . Deoarece NOT nu este utilizat niciodat în sine (totdeauna se folose te în asocia ie cu alt operator), sintaxa lui e diferit de to i ceilal i operatori. Spre deosebire de al i operatori, cuvântul cheie NOT poate fi utilizat înaintea coloanei dup care se face filtrarea, nu imediat dup aceasta. Iat un exemplu sugestiv, extragerea studen ilor nebugetari din tabelul din figura 3.2. Expresie SQL: SELECT Nume, Prenume,Sectia, Grupa, Stare FROM tblStudenti WHERE NOT Stare=”Bugetar”; Rezultat: Nume Prenume Sectia Grupa Stare Meruta Cosmin IEI 1312 Taxa Pop Laura IEI 1331 Taxa Cozma Calin Florin MEC 1241 Taxa Dup cum se vede, acela i lucru îl puteam ob ine i cu operatorul „<>”. Iar i se pune întrebarea de ce s folosim, totu i, operatorul NOT? Într-adev r, pentru clauzele WHERE simple, cum e cea prezentat , nu se poate spune c ar exista un avantaj real în folosirea operatorului NOT. Acesta este îns foarte util în clauzele mai complexe. De exemplu, dac folosi i operatorul NOT în asocia ie cu un operator IN, va fi mult mai simplu s g si i toate înregistr rile care nu corespund cu o list de criterii. Operatorul LIKE. Aici ve i înv a ce sunt caracterele de înlocuire, cum se folosesc ele i cum s face i c ut ri cu ajutorul lor. Pân acuma, to i operatorii, foloseau valori cunoscute, iar ei se ocupau de c utarea coresponden elor dintre valori, dac sunt mai mari sau mai mici decât altele, dac verific un domeniu de valori etc. De multe ori apare necesitatea filtr rii înregistr rilor dup unele criterii care nu folosesc valori cunoscute în totalitate. De exemplu, dori i s c uta i nume de persoane care încep cu o liter , care con in un grup de litere etc. Acest lucru nu se poate face cu criterii simple comparare. O solu ie, pe care ne-o propune SQL, este folosirea caracterelor de înlocuire. Caracterele de înlocuire sunt caractere ce au în elesuri speciale în clauzele WHERE din SQL, iar limbajul SQL accept diverse tipuri de caractere de înlocuire. Pentru a utiliza caracterele de înlocuire în clauzele de c utare, trebuie utilizat operatorul LIKE. Acesta anun sistemul de gestiune a bazei de date c în urm torul model de c utare se va folosi o potrivire dup caractere de înlocuire, nu o simpl potrivire de egalitate. C utarea cu caractere de înlocuire poate fi utilizat numai cu câmpuri de tip text. Re ine i acest lucru! În continuare vor fi prezentate caracterele de înlocuire folosite de programul ACCESS. 23
  • 23. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.3 Caracterul de înlocuire *. Este cel mai frecvent utilizat. Într-un ir de c utare, „*” înseamn „corespunde cu oricâte apari ii a oric rui caracter”. Exemplul care urmeaz v va ajuta s în elege i acest caracter. StudID Nume Init Prenume Sectia An Grupa Stare 1 Bogdan P. Mircea Florin IEI 1 1311 Bugetar 2 Brustur I. Cosmin IEI 1 1312 Taxa 3 Popescu T. Marius Traian IEI 2 1321 Bugetar 4 Brucan P. Mihaela IMPI 2 1321 Bugetar 5 Pop I. Laura IEI 3 1331 Taxa 6 Cotirla L. Raluca Adina TCM 1 1111 Bugetar 7 Popa G. Ovidiu TCM 1 1111 Bugetar 8 Popovici D. Dumitru TCM 2 1121 Bugetar 9 Branea N. Daniel MEC 4 1241 Bugetar 10 Cozma I. Calin Florin MEC 4 1241 Taxa Fig. 3.3. Tabel cu studen i Ne propunem s filtr m toate înregistr rile în care numele studen ilor, din tabelul din figura 3.3, începe cu „Pop”. Expresie SQL: SELECT Nume, Prenume,Sectia, Grupa, Stare FROM tblStudenti WHERE Nume LIKE ”Pop*” ORDER BY Nume; Rezultat: Nume Prenume Sectia Grupa Stare Pop Laura IEI 1331 Taxa Popa Ovidiu TCM 1111 Bugetar Popescu Marius Traian IEI 1321 Bugetar Popovici Dumitru TCM 1121 Bugetar Observa i ghilimelele care se pun i ordonarea rezultatului dup câmpul Nume. Încerca i i alte filtr ri folosind aceast tehnic . Caracterul de înlocuire „ ? ”. Acest caracter (semnul întreb rii) este utilizat la fel ca simbolul „ * ”, dar nu asigur coresponden a mai multor caractere, ci numai a unuia singur. Exemplul care urmeaz v ajut s în elege i folosirea lui. Folosind tabelul din figura 3.3, scrie i expresii SQL care s ilustreze folosirea acestui caracter de înlocuire. Observa ie! În diferite SGBDR semnele de înlocuire ar putea s fie diferite. Astfel, în Oracle „ * ” este înlocuit cu „ % ”, iar „ ? ” este înlocuit cu liniu a de subliniere „ _ ”. Pentru a nu avea probleme este bine s studia i documenta ia SGBDR-ului pe care îl ve i folosi. 24
  • 24. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.3 Opera iuni avansate folosind limbajul SQL Câmpuri calculate Dup ti i de la proiectarea bazelor de date, o regul de baz ne spune c fiecare câmp trebuie s fie independent, adic valoare sa s nu depind de valorile din alte câmpuri. Exemplul clasic care se poate da aici este cel al câmpului Valoare care nu trebuie s apar într-un tabel care are Pretul unitar i Cantitatea, dar avem nevoie de acest câmp care este rezultatul înmul irii dintre pre i cantitate. Ei bine, acest câmp trebuie calculat. Un alt exemplu este cel al adresei care se compune din concatenarea rezultatelor din mai multe câmpuri. În ambele exemple, datele stocate în tabele nu sunt exact ceea ce are nevoie aplica ia dumneavoastr . În loc s reg si i datele a a cum sunt, pentru ca dup aceea s le reformata i în aplica ia client sau în raport, dori i s reg si i datele transformate, calculate sau reformatate direct din baza de date. Aici intervin câmpurile cu valori calculate, pe care le vom numi în continuare câmpuri calculate. Spre deosebire de toate coloanele de pân acum, câmpurile calculate nu exist , de fapt, în baza de date. Un câmp calculat este creat din mers, în interiorul unei instruc iuni SELECT din limbajul SQL. De men ionat faptul c numai baza de date tie care coloane dintr-o instruc iune SELECT sunt realmente coloane din tabele i care sunt câmpuri calculate. Din perspectiva unui client, datele unui câmp calculat sunt returnate în acela i mod ca i datele din oricare coloan . Cel mai simplu mod de a în elege crearea câmpurilor calculate este de a alege exemple sugestive pe care s le coment m. Câmpuri calculate prin concatenare. De multe ori apare necesitatea concaten rii valorilor text din mai multe coloane. De exemplu, într-un raport trebuie s scriem identitatea unei persoane format din numele complet, a a cum se obi nuie te în practic . S scriem expresia SQL care face acest lucru pentru persoanele din tabelul din figura 3.3. Expresie SQL: SELECT Nume + “ “ + Init + “ “ + Prenume AS Student, Sectia, An, Grupa, Stare FROM tblStudenti ORDER BY Nume; Rezultat: Student Sectia An Grupa Stare Bogdan P. Mircea Florin IEI 1 1311 Bugetar Branea N. Daniel MEC 4 1241 Bugetar Brucan P. Mihaela IMPI 2 1321 Bugetar Brustur I. Cosmin IEI 1 1312 Taxa Cotirla L. Raluca Adina TCM 1 1111 Bugetar Cozma I. Calin Florin MEC 4 1241 Taxa Pop I. Laura IEI 3 1331 Taxa Popa G. Ovidiu TCM 1 1111 Bugetar Popescu T. Marius Traian IEI 2 1321 Bugetar Popovici D. Dumitru TCM 2 1121 Bugetar 25
  • 25. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.3 Observa i sintaxa folosit i ceva nou a ap rut, cuvântul cheie AS dup care urmeaz cuvântul Student, pe care îl reg sim în capul de tabel, ca nume a noului câmp, ob inut prin concatenarea celor trei. Cuvântul cheie AS introduce un alias care este un nou nume dat unui câmp. Re ine i aceast tehnic de creare a unor câmpuri. Câmpuri calculate aritmetic. Aceste câmpuri calculate rezult dup efectuarea unor calcule aritmetice asupra datelor reg site. Pentru a în elege mecanismul cre rii acestor câmpuri, vom lua un exemplu practic. Presupunem c avem un tabel în care inem intr rile într-o magazie de produse, al unei firme de comer cu piese auto. Tabelul se nume te tblProduse i are coloanele Cod, Denumire, Furnizor, PU, Cantitate. Se cere un raport al intr rilor în magazie în care apare i câmpul Valoare, ob inut prin produsul câmpurilor PU i Cantitate. În figura 3.4 este prezentat acest raport. Cod Denumire Furnizor PU Cantitate Valoare 1001 Bujie DK1 Sinterom SA 12 30 360 1023 Acumulator 56A Rombat SA 124 25 3100 1231 Parbriz VW Cobra SRL 512 12 6144 1089 Antigel -30 Promaxim SRL 5.2 50 26 1904 Ulei PKT 1 Calota SRL 6.4 60 384 Fig. 3.4. Raport cu câmpul valoare calculate Expresie SQL: SELECT Cod, Denumire, Furnizor, PU, Cantitate, PU*Cantitate AS Valoare FROM tblProduse; Observa i i re ine i sintaxa folosit pentru crearea noului câmp VALOARE. Desf urarea lucr rii Toate expresiile SQL studiate, se vor copia într-un fi ier Word cu numele Expresii SQL studiate.doc care se va salva în directorul My Documents / Baze de date / Lucrarea 3. Observa ie important ! Toate expresiile SQL care vor fi în fi ierul Word se presupune c au fost studiate i în elese, studentul putând oricând s dea explica ii în leg tur cu ele, altfel va suporta consecin ele. Aceste expresii vor vor fi testate în lucrarea nr. 4, pe viu, într-o baz de date real . 26
  • 26. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.4 Lucrarea nr. 4. Studiu de caz: Baza de date ” Biblioteca” Aceast lucrare de laborator const în implementarea în Access a bazei de date ”Biblioteca” pe care a i proiectat-o în lucrarea nr. 2. Acum ve i folosi cuno tin ele acumulate despre bazele de date într-o aplica ie concret , folosind programul Access. Considera ii generale despre programul Access Interfa a programului ACCESS Pentru a lucra cu orice aplica ie informatic , primul lucru pe care trebuie s -l facem este s -i cunoa tem interfa a de pornire. Pentru ACCESS interfa a de pornire apare dup lansarea acestuia cu metoda general Start / Programs / Microsoft Access. Ve i g si repede programul observând c iconi a sa con ine mic cheie de yal . Toate capturile i descrierile se refer la versiunea Access 2003. Dac ave i alt versiune trebuie s ine i cont de diferen ele care ar putea apare, care nu sunt, oricum, esen iale. Spre deosebire de alte programe Microsoft, programul ACCESS începe cu o caset de dialog în care vi se cere numele i s alege i directorul bazei de date pe care dori i s o deschide i, chiar dac este una nou (Blank Database). Dup ce a i dat numele bazei de date noi, numit aici „db1”, va apare interfa a din figura 4.1. Fig. 4.1. Interfa a de pornire Access (fereastra Database) Dup cum se vede, o baz de date ACCESS poate fi definit ca o colec ie de obiecte: • Tabele (tables) • Cereri de interogare (queries) • Formulare (forms) 27
  • 27. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.4 • Rapoarte (reports) • Pagini Web (pages) • Comenzi macro (macros) • Module (modules) În continuare vor fi prezentate, pe scurt, aceste obiecte, urmând s fie reluate atunci când le vom folosi efectiv. Tabele (tables) sunt obiecte definite de utilizator în care sunt stocate datele. Sunt obi nuitele tabele ale bazelor de date. Formulare (forms) sunt obiecte care permit introducerea datelor, afi area acestora sau controlul întregii aplica ii. Acestea v permit s face i aplica ii performante chiar dac sunte i un încep tor în baze de date. Cereri de interogare (queries) sunt obiecte care permit vizualizarea informa iilor ob inute prin prelucrarea datelor din una sau mai multe tabele i/sau alte cereri de interogare. Aici ve i folosi din plin cuno tin ele dobândite despre limbajul SQL. Rapoarte (reports) sunt obiecte care permit formatarea i tip rirea informa iilor ob inute în urma consult rii bazei de date, sub form de documente pe hârtie. Pagini Web (pages) reprezint un obiect care include un fi ier HTML i alte fi iere suport în vederea furniz rii accesului la date prin intermediul Internet-ului. Comenzi macro (macros) reprezint un obiect care con ine o defini ie structurat a uneia sau mai multor ac iuni pe care ACCESS le realizeaz ca un r spuns la un anumit eveniment. Module (modules) reprezint un obiect care con ine proceduri definite de utilizator, scrise în limbajul Visual Basic. Iat o ocazie de a v etala cuno tin ele de Visual Basic. Pe lâng obiectele prezentate, pe interfa a de pornire, mai exist câteva butoane (Open, Design, New, un buton de tergere i câteva de afi are a obiectelor) a c ror în elegere i rol este u or de dedus, de aceea nu vor mai fi prezentate. Dup cum spuneam, ACCESS-ul are un instrument numit wizard care v va ajuta s construi i mai u or tabele, formulare sau interog ri, dar un singur lucru nu poate face: s v suplineasc lipsa cuno tin elor dobândite în capitolele precedente. Astfel, dac nu a i în eles mecanismul leg turilor dintre tabele, e pu in probabil c ve i ajunge la rezultate mul umitoare, chiar dac sunte i „monitoriza i” îndeaproape de instrumentul wizard. Crearea tabelelor Înainte de a începe s crea i tabele, este de la sine în eles c ave i deja un proiect de baz de date, sau dac sunte i la început de studiu, m car o diagram de rela ii i structurile tabelelor. Spuneam la începutul acestui curs, cât de important e s ave i un proiect corect de baz de date, pentru a nu avea probleme la faza de implementare. Crearea structurii tabelelor se poate face în trei moduri: • Utilizând fereastra de proiectare (Create table in design view); • Utilizând instrumentul Wizard (Create table by using wizard); • Prin introducerea datelor (Create table by entering data). 28
  • 28. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.4 Consider c modul cel mai eficient de creare a tabelelor, care se potrive te utilizatorilor români, îl reprezint primul mod (Create table in design view), motiv pentru care va fi prezentat numai acesta. Pentru a v satisface curiozitatea nu ave i decât s le încerca i pe celelalte dou , pentru a ajunge la o concluzie. Revenind la primul mod de creare a unui tabel, da i un dublu clic pe Create table in design view i pe ecran va apare fereastra Table din figura 4.2. Fig. 4.2. Fereastra Table În elegerea acestei ferestre nu e grea: sunte i invita i s da i numele câmpurilor (Field Name), s alege i din combobox tipul de dat pentru câmpul respectiv (Data Type) i s introduce i o scurt descriere, acolo unde este cazul, despre ce va con ine acel câmp (Description). Pentru alegerea tipului de dat , revede i paragraful Anatomia unei specifica ii de câmp din capitolul 3 al cursului de baze de date. În toolbar-ul de sub meniul din figura 4.2, exist mai multe butoane, unele cunoscute din alte aplica ii Windows. Exist un buton (cel cu o chei ) pe care nu l-a i mai întâlnit pân acum. Acest buton v ajut s stabili i cheia principal a tabelului pentru câmpul curent (cel cu s geata din stânga), printr-un simplu clic pe el. În func ie de tipul de dat ales pentru câmp, în partea de jos apare un subtabel în care pute i seta propriet ile câmpului curent. Aceste propriet i sunt adaptate tipului de dat : num r, text, data calendaristic etc. S lu m pe rând aceste propriet i, având ca reper tipul de dat numeric: Field Size este dimensiunea câmpului. Executarea unui clic pe s geata derulant va deschide o list de op iuni privind dimensiunea câmpului. Format este formatul sub care se prezint valoarea introdus în câmp. Executarea unui clic pe s geata derulant va deschide o list de op iuni privind formatul câmpului. Decimal Places este proprietatea care stabile te num rul de zecimale ce pot fi atribuite câmpului. Se poate alege un num r între 0 i 15, sau Auto pentru determinarea automat a num rului de zecimale. Input Mask reprezint impunerea unui format de introducere pentru toate datele acelui câmp. Formatul de introducere are o mare importan în cadrul câmpurilor ce con in date de tip text sau dat calendaristic . 29
  • 29. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.4 Caption este eticheta pentru specificarea unui nume atribuit câmpului, în cazul în care acesta este utilizat în cadrul formularelor sau când tabelul respectiv este afi at. Default Value este o valoare care este atribuit automat, în momentul când utilizatorul nu introduce nici o valoare în acel câmp. Validation Rule este criteriul care va fi verificat înainte de validarea valorii introduse în acel câmp. Criteriul este introdus sub form de expresii care folosesc: • Operatorii: =, +, -, *, /, <, >, <=, >=, AND, OR, BETWEEN, IN, IS NULL; • Identificatorii se dau în paranteze drepte []; • Func ii; • Constante; Validation Text reprezint textul care va ap rea pe bara de mesaje în cazul în care valoarea introdus nu respect criteriul impus de regula de validare. Required este proprietatea care stabile te dac introducerea unei valori în acel câmp este obligatorie. Acest câmp poate avea una din valorile Yes / No. Indexed este proprietatea care stabile te dac acel câmp are un index care accept valori duplicat sau numai valori unice. Dac nu dorim un index pentru acel câmp se alege valoare No. Propriet ile descrise mai sus se refereau la tipul de câmp Numeric. Pentru alte tipuri de câmp vor apare i propriet i noi (cele mai multe r mân). Astfel, datele de tip Text i Memo au o proprietate numit Allow Zero Length, adic admiterea lungimii zero. Aceast proprietate are valoarea Yes sau No. O proprietate important pentru câmpul care con ine date de tip Autonumber este New Values. Op iunile Increment sau Random permit stabilirea modului în care câmpului respectiv i se vor acorda valori automat de c tre sistem. Rela ii între tabele Rela iile dintre tabele sunt lucruri cunoscute, deja, de c tre oricare dintre dumneavoastr , nu-i a a? S vedem acum ce modalitate folose te ACCESS-ul pentru a face leg tura între tabele. Din punct de vedere al momentului cre rii acestora, exist 2 tipuri de rela ii între tabelele unei baze de date ACCESS i anume: • Rela ii permanente – se stabilesc dup definirea tabelelor i sunt cerute de modelul rela ional f când parte din structura bazei de date. Aceasta se realizeaz , de obicei, prin coresponden a cheie primar – cheie extern i sunt memorate în baza de date. • Rela ii temporare – se stabilesc între tabele cu ocazia definirii unor cereri de interogare, nefiind înregistrate în structura bazei de date. Dup cum tim, între dou tabele între care exist o rela ie, datele nu pot fi introduse oricum. De exemplu, dac într-o baz de date avem tabelele tblFacturiPrimite i tblFurnizori între care exist o rela ie „unu cu mai mul i”, nu putem introduce date în tabelul tblFacturiPrimite pân nu avem cel pu in un furnizor în tabelul tblFurnizori. Cum rezolv ACCESS-ul aceast prevedere din proiectul bazei de date (tipul de participare)? Prin impunerea integrit ii referen iale (Enforce Referential Integrity), dup cum se vede în figura 4.3. 30
  • 30. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.4 Fig. 4.3. Stabilirea integrit ii referen iale În urma acestei set ri, s-a f cut o leg tur unu cu mai mul i între cele dou tabele, a c rei reprezentare se vede în figura 4.4. Fig. 4.4. Diagrama de rela ie între cele 2 tabele, a a cum apare în ACCESS. Stabilirea leg turilor între tabele se face, fie în faza de creare a tabelului (folosind Lookup Wizard), fie în fereastra Relationship care se afi eaz cu butonul , din toolbar-ul din fereastra Database. Printr-un clic pe acest buton se deschide tabela Relationship prezentat în figura 4.4. Dac nu apar toate tabelele în fereastra Relationship, cu un clic-dreapta în interiorul acesteia apoi alegând op iunea Show Table va fi afi at fereastra Show Table, cu care se pot ad uga i celelalte tabele. Leg tura dintre tabele se face „tr gând cu mouse-ul” câmpul de leg tur dintr-un tabel „peste” câmpul corespunz tor din cel lalt tabel. Dup ce s-a f cut leg tura, putem face un clic-dreapta pe leg tur , apar 2 posibilita i: Edit Relationship... i se deschide caseta de dialog pentru stabilirea integrit ii referen iale ar tat în figura 4.3, respectiv Delete cu care putem terge leg tura. Când citi i aceast secven , este bine s o face i cu calculatorul în fa , deoarece altfel, aceste manevre sunt greu de în eles. Dac ceva nu a i în eles, întreba i profesorul care v îndrum la laborator. Crearea rela iilor cu Lookup Wizard... Cea mai comod cale de a crea rela ii permanente între dou tabele este folosirea facilit ii Lookup Wizard, pus la dispozi ia noastr de programul ACCESS. Aceast metod const în „legarea” tabelelor în faza de proiectare prin intermediul unei chei primare i a unei chei externe. Prima dat de proiecteaz tabelul din partea „unu” a rela iei unu cu mai mul i. La cel de-al doilea tabel, când se define te câmpul de leg tur , pentru tipul de dat (Data Type) se alege op iunea Lookup Wizard... (ultima dintre op iuni). În urma acestei manevre se deschide caseta de dialog din figura 4.6. 31
  • 31. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.4 Fig. 4.6. Primul pas al procedurii Lookup Wizard Se alege prima op iune, cea care ne spune c vom lega câmpul nostru cu un alt câmp dintr-un tabel sau o interogare, I want the lookup.... Merit explicat i op iunea a doua I will type in the values that I want, care ne spune c putem lega acest câmp cu o list de valori introduse de noi chiar în aceast faz . Aceast op iune este indicat s o folosi i când ave i un num r mic de valori pe care poate s le ia un anumit câmp. Încerca i i aceast variant pentru a-i în elege rolul. Cu butonul Next se avanseaz în pasul urm tor când vi se cere s alege i, dintr-o list , tabelul cu care va fi legat. Dup alegerea tabelului, ve i alege cheia primar i un alt câmp pentru a identifica înregistrarea (acest lucru îl ve i în elege când ve i introduce, efectiv, date în tabel). Aceast manevr se vede în figura 4.7. Fig. 4.7. Alegerea câmpului de leg tur În cazul nostru se vor selecta câmpurile TaraID i Denumire, care vor fi trecute în fereastra din dreapta. Cu butonul Next se va trece la pasul urm tor (figura 4.8) care ne recomand s face invizibil coloana cu cheia primar , pentru c la operare nu ne va ajuta cu nimic, fiind un cod numeric f r semnifica ie pentru noi. 32
  • 32. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.4 Fig. 4.8. Recomandarea pentru a face invizibil cheia primar Cu butonul Next se trece la pasul urm tor care v cere s stabili i numele câmpului care va apare în rapoarte, de regul se las cel implicit, propus de calculator. Dup aceast manevr se alege butonul Finish care ne va avertiza c o rela ie a fost creat i c ar trebui salvat . Dac nu s-a gre it nimic, se apas butonul Next. Fig. 4.9. Avertizarea de salvare a rela iei create. Pentru a verifica rela ia creat se apas butonul , care va deschide foaia Relationships. Cu un clic-dreapta pe linia rela iei o pute i edita sau terge. Încerca i aceast manevr pentru a în elege ce se întâmpl . Diferen a între cele dou tipuri de leg turi permanente, legarea prin metoda ”tragerii” (drag and drop) în fereastra Relationship i legarea prin metoda Lookup Wizard..., nu prea iese în eviden decât la crearea formularelor de introducere a datelor. La prima metod Access-ul va pune automat o caset de text (textBox) în care trebuie s introducem manual valori de la tastatur , iar la a doua metod va apare în formular o caset combinat (comboBox), din care putem alege elegant valoarea din lista afi at . Dac a i reu it s în elege i aceste diferen e, înseamn c a i f cut un pas important spre a putea crea aplica ii Access tot mai performante. Poate în acest moment nu sesiza i diferen ele dintre cele dou metode, dar cu siguran , le ve i în elege atunci când ve i crea formulare, pu in mai târziu. Crearea tabelelor bazei de date ”Biblioteca” 33
  • 33. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.4 Diagrama bazei de date este prezentat în figura 4.10. Fig. 4.10. Diagrama bazei de date ”Biblioteca” Structura i propriet ile câmpurile tabelelor bazei de date sunt prezentate în tabelul urm tor: Tabel Cimp Tip data Constringeri Observatii tblAutori AutorID AutoNumber Not Null Nume Character(150) Not Null Prenume Character(150) Not Null Nationalitate Character(15) DataN Data/Time zz-lll-aa DataD Data/Time zz-lll-aa tblEdituri EdituraID AutoNumber Not Null Denumire Character(150) Not Null Localitate Character(150) Tara Character(50) tblCarti CarteID AutoNumber Not Null AutorID Long Integer Not Null EdituraID Long Integer Not Null Denumire Character(250) Not Null DomeniuID Long Integer Not Null AnAparitie Integer Pagini Integer Valoare Single Stoc Integer tblDomenii DomeniuID AutoNumber Not Null Denumire Character(50) Not Null Explicatii Character(250) tblImprumuturi ImprumutID AutoNumber Not Null CarteID Long Integer Not Null CititorID Long Integer Not Null DataImprumut Data/Time zz-lll-aa Perioada Integer DataRestituire Data/Time zz-lll-aa tblCititori CititorID AutoNumber Not Null 34
  • 34. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.4 Nume Character(150) Not Null Prenume Character(150) Not Null ProfesiaID Long Integer Not Null DataN Data/Time zz-lll-aa Adresa Character(150) Localitate Character(150) JudetID Long Integer Not Null Observatii Character(150) tblJudete JudetID AutoNumber Not Null Denumire Character(75) Not Null Abreviere Character(2) Not Null tblProfesii ProfesiaID AutoNumber Not Null Denumire Character(75) Not Null Explicatii Character(200) Dup crearea tabelelor, caseta Database arat ca în figura 4.11. Fig. 4.11. Tabele bazei de date ”Biblioteca” În continuarea acestei lucr ri de laborator, urmeaz s crea i formularele de introducere a datelor, care se v d în figura 4.12. Mai întâi vor fi create formularele de introducere a datelor. Dup exemplele prezentate în curs pute i trece la crearea acestor formulare. 35 Fig. 4.12. Formularele bazei de date ”Biblioteca”
  • 35. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.4 Crearea formularelor pentru introducerea datelor În figura 4.12 se v d formularele de introducere a datelor în tabele. Având în vedere rela iile stabilite intre tabele, introducerea datelor nu poate fi f cut oricum. Astfel, nu putem introduce o care dac numele autorului nu este în tabelul cu autori. Ca regul , în rela iile 1:N, mai întâi se vor introduce date în tabelul din partea ”unu” a rela iei i numai apoi în tabelul din partea ”mai mul i” a rela iei. Formularul frmIntroducereAutori. Pentru crearea formularului, parcurgem pa ii urm tori: 1. În caseta de dialog Database, d m comanda Forms – New – AutoForm:Columnar(vezi figura 4.13). Fig. 4.13. Alegerea tipului de formular i a tabelului Se alege tabelul tblAutori, care va fi completat de c tre viitorul formular. Se apas butonul OK. 2. Va apare forma brut a formularului, a a cum apare în figura 4.14. Fig. 4.14. Formularul brut 36
  • 36. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.4 Acest formular ar mai trebui pu in aranjat. De exemplu, pentru câmpul Nationalitate ar trebui s avem un comboBox din care s alegem dintr-o list , nationalitatea autorului. Pentru câmpurile cu date calendaristice DataN i DataD ar trebui s indic m sub ce form trebuie introduse aceste date, stiut fiind c la acest tip de dat apar des probleme din cauza introducerilor incorecte. Modificarea formularului se poate face numai în modul Design view, care se ob ine ap sând butonul . Figura 4.15 arat cum trebuie s fie formularul în Design view. Fig. 4.15. Formularul în modul Design view Pentru a transforma caseta de text Nationalitate, execut m clic-dreapta pe ea, alegem op iune Change To, apoi op iunea Combo Box, dup care va trebui s introducem lista cu na ionalit ile autorilor. Acest lucru se face prin completarea propriet ilor Row Source Type (Value List) i Row Source (Romana; Maghiara; Straina), dup cum se poate vedea în figura 4.16. De asemenea, s-au introdus 2 etichete (zz/lll/aa) care ne indic , cum s introducem data calendaristic . Pentru activarea tabelului cu propriet ile se apas butonul din toolbar-ul din partea de sus. 37
  • 37. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.4 Fig. 4.16. Atribuirea valorilor pentru propriet ile Row Source Type i Row Source 3. Prin ap sarea butonului , se iese din modul Design i se activeaz formularul care trebuie s arate ca în figura 4.17. Fig. 4.17. Forma final a formularului Formularul frmIntroducereCarti. Înainte de a începe crearea efectiv a formularului, trebuie s analiz m tabelul pe care îl va completa. Acesta are 3 câmpuri care trebuie completate cu chei externe: AutorID, EditurID i DomeniuID. Aceste chei sunt valori de tip AutoNumber care sunt greu de folosit pentru c trebuie, de exemplu, introdus un autor printr-un num r. Ar fi mult mai potrivit pentru operator s aleag dintr-o list un nume de autor cu care e obi nuit i nu un cod numeric care nu îi sugereaz nimic. Este ceea ce ne propunem. Pentru crearea acestui formular primii pa i sunt identici cu cel precedent, cu observa ia c vom alege acum tabelul tblCarti. Trecem în modul Design view, pentru a putea efectua modific rile în formular. În figura 4.18, pute i vedea cum arat formularul înainte de setarea propriet ilor. Se observ c acesta are ca surs tabelul tblCarti. Fig. 4.18. Formularul în stare brut 38
  • 38. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.4 În aceast stare, pe baza leg turilor dintre tabele, în casetele comboBox vor apare listele cu cheile primare ale celor 3 câmpuri implicate. Pentru ca în aceste casete s apar denumirile, cu care suntem obi nui i, trebuie s modific m unele propriet i ale celor 3 comboBox-uri, care se g sesc în categoria Format (vezi primul buton). Setarea surselor se pot deduce clar din figura 4.19. Fig. 4.19. Setarea propriet ilor legate de sursa înregistr rilor Observa i c sursele pentru cele 3 câmpuri de chei externe sunt ni te expresii SQL simple: AutorID: SELECT tblAutori.AutorID, tblAutori.Prenume+" "+tblAutori.Nume AS Expr1 FROM tblAutori ORDER BY tblAutori.Nume; EdituraID: SELECT tblEdituri.EdituraID, tblEdituri.Denumire FROM tblEdituri ORDER BY Denumire; DomeniuID: SELECT tblDomenii.DomeniuID, tblDomenii.Denumire FROM tblDomenii ORDER BY Denumire; 39
  • 39. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.4 Fiecare din aceste expresii au ca rezultat câte 2 câmpuri, iar pe noi ne intereseaz numai al doilea care ne spune ceva concret. Trebuie s afi m, deci, numai acest câmp. Pentru aceasta trebuie s set m, din tab-ul Format, propriet ile Column Count(2) i Column Width(0;1.2”), care ne spun c avem 2 coloane, care au l imea de 0, respectiv 1.2 inch. Asta înseamn c prima coloan nu se vede, iar a doua are 1.2 inch l ime. Setarea acestor propriet i se vede în figura 4.20. Fig. 4.20. Setarea propriet ilor Column Count i Column Widths Prin ap sarea butonului , se iese din modul Design i se activeaz formularul care trebuie s arate ca în figura 4.21. Fig. 4.21. Forma final a formularului 40
  • 40. Baze de date – Îndrum tor de lucr ri de laborator Lucrarea nr.4 Dup modelele prezentate, crea i i celelalte formulare de introducere a datelor, prezentate mai jos în figura 4.22. Fig. 4.22. Formulare care trebuie create 41