Baze de date - informatik.ddbuftea.ro · Baze de date Pentru început este bine să înţelegem...

12
Baze de date Pentru început este bine să înţelegem noţiunile de bază din Access: modul de organizare a unei baze de date, a noţiunilor de tabel, înregistrare, câmp, tip de dată al câmpului, proprietăţi ale câmpului. Şi nu în ultimul rând, ce rost are împărţirea unei baze de date în mai multe tabele (normalizarea unei baze de date)? Baza de date = o colecţie formată din unul sau mai multe tabele. Creare baza de data Deschidem aplicaţia Microsoft Access. Lansarea în execuţie a programului se face urmând calea: Start →All Programs→Microsoft Office → Microsoft Office Access NEW... -se tastează numele bazei de date (fişierele care au extensia .accdb se pot deschide doar cu Access 2007 sau mai recent, iar cele cu extensia .mdb cu versiuni mai vechi de Access), -se alege locaţia unde se doreşte să se salveze baza de date cu click pe pictograma din dreapta şi se apasă butonul Create. Tabele într-o bază de date Informaţiile referitoare la o ENTITATE ( un tip de obiect, fenomen sau de activitate) sunt grupate împreună în acelaşi tabel (Table). Se vor proiecta tabele pentru câte entitati sunt necesare pentru a memora informaţiile considerate utile din domeniul respectiv de activitate. Într-un tabel al bazei de date ca şi într-un tabel obişnuit datele sunt organizate pe rânduri şi coloane. Rândurile conţin informaţii despre fiecare element din obiectul sau activitatea respectivă Coloanele reprezintă caracteristicile sau atributele elementului . Rândurile se mai numesc înregistrări (records), iar coloanele se mai numesc câmpuri (fields). Numele entitatii = numele tabelei CAMPURI INSTANTE = INREGISTRARI

Transcript of Baze de date - informatik.ddbuftea.ro · Baze de date Pentru început este bine să înţelegem...

Page 1: Baze de date - informatik.ddbuftea.ro · Baze de date Pentru început este bine să înţelegem noţiunile de bază din Access: modul de organizare a unei baze de date, a noţiunilor

Baze de date

Pentru început este bine să înţelegem noţiunile de bază din Access: modul de organizare a unei baze de date, a noţiunilor de tabel, înregistrare, câmp, tip de dată al câmpului, proprietăţi ale câmpului. Şi nu în ultimul rând, ce rost are împărţirea unei baze de date în mai multe tabele (normalizarea unei baze de date)? Baza de date = o colecţie formată din unul sau mai multe tabele.

Creare baza de data Deschidem aplicaţia Microsoft Access. Lansarea în execuţie a programului se face urmând calea:

Start →All Programs→Microsoft Office → Microsoft Office Access NEW...

-se tastează numele bazei de date (fişierele care au extensia .accdb se pot deschide doar cu Access 2007 sau mai recent, iar cele cu extensia .mdb cu versiuni mai vechi de Access), -se alege locaţia unde se doreşte să se salveze baza de date cu click pe pictograma din dreapta şi se apasă butonul Create.

Tabele într-o bază de date

Informaţiile referitoare la o ENTITATE ( un tip de obiect, fenomen sau de activitate) sunt grupate împreună în acelaşi tabel (Table).

Se vor proiecta tabele pentru câte entitati sunt necesare pentru a memora informaţiile considerate utile din domeniul respectiv de activitate.

Într-un tabel al bazei de date ca şi într-un tabel obişnuit datele sunt organizate pe rânduri şi coloane.

Rândurile conţin informaţii despre fiecare element din obiectul sau activitatea respectivă

Coloanele reprezintă caracteristicile sau atributele elementului .

Rândurile se mai numesc înregistrări (records), iar coloanele se mai numesc

câmpuri (fields).

Numele entitatii =

numele tabelei

CAMPURI

INSTANTE =

INREGISTRARI

Page 2: Baze de date - informatik.ddbuftea.ro · Baze de date Pentru început este bine să înţelegem noţiunile de bază din Access: modul de organizare a unei baze de date, a noţiunilor

Structura tabelului poate fi vizualizată/ modificată din modul Design (Design

View) şi conţine informaţii despre:

-denumirea coloanelor (câmpurilor);

-tipul de date;

-dimensiunea coloanelor - Field Size;

-alte proprietăţi ale acestora.

Fiecare câmp al unui tabel din Access are asociate:

- un tip de date şi

- proprietăţi specifice acelui tip de date.

Page 3: Baze de date - informatik.ddbuftea.ro · Baze de date Pentru început este bine să înţelegem noţiunile de bază din Access: modul de organizare a unei baze de date, a noţiunilor

Proprietăţile unui câmp:

- dimensiune - Field Size

- Text, proprietatea determină numărul maxim de caractere ce pot fi introduse - se

pot introduce maxim 255 caractere;

- Memo, proprietatea determină un numar mare de caractere ce pot fi introduse – mai

mult de 255 caractere, până la 64.000 de caractere;

Currency: este utilizat pentru stocarea valorilor monetare în vederea efectuării de

calcule şi comparaţii monetare;

Yes/No: este utilizat pentru stocarea unei valori din maxim doua

posibile: true sau false, yessau no, on sau off conform setarii din proprietatea

Format;

OLE Object: este tipul de date utilizat pentru inserarea unui obiect de tip imagine

Number: este utilizat pentru stocarea valorilor numerice; proprietatea Field Size

precizează dimensiunea şi tipul valorii numerice;

Pentru câmpurile de tip Numeric, reprezintă tipul sistemului de

codificare, iar opţiunile sunt:

1) Integer, pentru valori între -32.678 şi 32.767 (fără zecimale)

2) Long integer pentru valori întregi între 2.147.483.648 şi

2.147.483.647 (fără zecimale)

3) Single pentru valori între -3.402823 E38 şi -1.401298 E-45 în cazul

numerelor negative şi între 1.401298E-45 şi 3.402823E38 în cazul

numerelor pozitive 4) Double pentru valori între -1.79769313486231 E308 şi - 4.94065645841247 E-324, respectiv

1.79769313486231 E308 şi 4.94065645841247 E-324

Page 4: Baze de date - informatik.ddbuftea.ro · Baze de date Pentru început este bine să înţelegem noţiunile de bază din Access: modul de organizare a unei baze de date, a noţiunilor

-Autonumber: valoarea este generată prin incrementarea ultimei valori sau

prin generare aleatoare conform setării din proprietatea New Values (valoarea

Increment (numere consecutive) sau Random (aleator));

Validation Rule - această proprietate ne permite să controlăm valorile introduse. Trebuie

stabilite anumite criterii pentru aceste valori.

De exemplu, dacă într-un câmp anume vrem să avem valori între 100 şi 5000, vom scrie

la Validation Rule >=100 AND <=5000.

Required. Selectând Yes, utilizatorul este obligat să introducă o valoare corectă în

acest câmp. Selectând No, utilizatorul poate lăsa acest câmp necompletat.

Proprietatea LookUp

La câmpurile de tip Number, Text sau Yes/No, se poate atasa proprietatea LookUp,

care permite introducerea de date prin intermediul unui control List Box(lista derulantă)

sau Combo Box(Lista ascunsă) direct din una din următoarele trei tipuri de surse:

• Valoarea unor câmpuri dintr-un alt tabel sau cerere (query)- cea mai utilizată

• Dintr-o listă de valori introdusă şi ataşată casetei

• Numele unor câmpuri dintr-un alt tabel sau cerere.

- Hyperlink: este tipul de date utilizat pentru stocarea unei hiperlegături către o locaţie a

unui alt obiect din baza de date, document Office sau pagina Web;

Realizarea relaţiilor între tabele

Prin modul de proiectare a tabelelor şi a structurii acestora, se urmăreşte reducerea

redundanţei datelor (repetarea datelor) prin înregistrarea unei informaţii o singură dată

şi accesarea ei oriunde este necesar.

De exemplu, o bază de date care îşi propune să gestioneze informaţiile dintr-o

bibliotecă poate conţine în principal câteva tabele cum sunt:

AUTORI (nume , cod_A)

CĂRŢI (cod_c, titlu , editura ,nr-buc, cod_A , preţ/buc)

CLIENTI (cod_cl, nume, CNP, adresa, )

Edituri(cod_ed, nume, adresa) Împrumuturi(cod_i, perioada, tip_abonament)

Page 5: Baze de date - informatik.ddbuftea.ro · Baze de date Pentru început este bine să înţelegem noţiunile de bază din Access: modul de organizare a unei baze de date, a noţiunilor

Prin realizarea mai multor tabele (în locul unui singur tabel) şi a relaţiilor între acestea,

se elimină repetarea datelor (REDUNDANTA), deci un volum mai mic de muncă şi o

bază de date de dimensiuni reduse.

În cazul relaţiilor există două tipuri de tabele:

tabelul principal (părinte) şi

tabelul secundar (copil).

O relaţie este o asociere între două câmpuri a două tabele diferite. Într-o bază de date putem

avea trei tipuri de relaţii:

- relaţie unu la unu - când o înregistrare dintr-un tabel poate avea ca referinţă o

înregistrare din tabelul secundar

- relaţie unu la N - când o înregistrare dintr-un tabel primar poate avea mai mulţi

corespondenţi în tabelul în tabelul secundar.

- relaţie N la M - când unei înregistrări din tabelul primar îi corespund mai multe

înregistrări din tabelul secundar, iar unei înregistrări din tabelul secundar îi corespund mai

multe înregistrări în tabelul primar. Acest tip de relaţie este posibil doar atunci când apare un al

treilea tabel, care face legătura între alte două tabele.

Tabele. Relatii

Concepte de bază

Într-o bază de date relaţională datele sunt organizate în tabele şi programe (care

prelucrează aceste date). Bazele de date relaţionale permit folosirea simultană a

datelor din mai multe tabele.

În cazul relaţiilor există două tipuri de tabele: tabelul principal (părinte) şi tabelul

secundar (copil).

O relaţie este o asociere între două câmpuri a două tabele diferite. Într-o bază de

date putem avea trei tipuri de relaţii:

Page 6: Baze de date - informatik.ddbuftea.ro · Baze de date Pentru început este bine să înţelegem noţiunile de bază din Access: modul de organizare a unei baze de date, a noţiunilor

- relaţie unu la unu - când o înregistrare dintr-un tabel poate avea ca referinţă o

înregistrare din tabelul secundar (şi viceversa).

- relaţie unu la N - când o înregistrare dintr-un tabel primar poate avea mai mulţi

corespondenţi în tabelul secundar. De exemplu un tabel cu judeţele, iar altul cu clienţi.

Astfel, într-un judeţ pot fi mai mulţi clienţi, dar clienţii aparţin unui singur judeţ.

- relaţie N la M - când unei înregistrări din tabelul primar îi corespund mai multe

înregistrări din tabelul secundar, iar unei înregistrări din tabelul secundar îi corespund

mai multe înregistrări în tabelul primar.

Vom putea ajunge la această ferestră prin două moduri:

în fereastra Database apelăm meniul Tools şi selectăm opţiunea Relationships

După aceşti primi paşi vom avea în fereastra Relationships cele două tabele introduse.

Pentru a crea o relaţie nu avem decât să selectăm un câmp din tabelul principal şi să-l

tragem deasupra câmpului de referinţă din tabelul secundar.

După ce selectăm câmpurile ce vor forma o legătură va apărea o nouă fereastră Edit relationships.

Page 7: Baze de date - informatik.ddbuftea.ro · Baze de date Pentru început este bine să înţelegem noţiunile de bază din Access: modul de organizare a unei baze de date, a noţiunilor

Tipuri de interogări

Interogările pot fi clasificate astfel:

1. interogări simple sau de selecţie (folosind condiţii logice);

2. interogări pentru actualizare - modifică datele din tabele

- delete query (interogare de ştergere înregistrări pe baza criteriilor specificate),

- update query (interogare de modificare a câmpurilor) şi

- append query (interogare de adăugare înregistrări).

3. interogări încrucişate sau bidimensionale.

Exemplu:

Într-o instituţie şcolară sunt memorate într-un catalog virtual toate notele elevilor. Pentru acest lucru,

informaticianul a creat o bază de date în care a inclus informaţii despre elevi (numele, prenumele, CNP-ul

acestuia), precum şi notele fiecărui elev. Este important să se cunoască data la care a fost pusă o notă, pentru

a se putea urmări frecvenţa notării.

Diagrama ERD care descrie scenariul de mai sus este:

Cerinţe:

a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate în ERD şi populaţi tabelele cu

înregistrări relevante pentru cerinţele următoare:

b) Afişaţi numele, prenumele şi notele elevilor care au fost evaluaţi în luna martie 2010 la o materie a cărei

denumire se citeşte de la tastatură.

c) Determinaţi media notelor obţinute la informatică în anul curent.

d) Afişaţi, pentru toţi elevii, toate notele primite. În raport, elevii trebuie să apară în ordine alfabetică.

Page 8: Baze de date - informatik.ddbuftea.ro · Baze de date Pentru început este bine să înţelegem noţiunile de bază din Access: modul de organizare a unei baze de date, a noţiunilor

Rezolvare a) Construiţi baza de date cu tabele corespunzătoare şi relaţiile reprezentate în ERD şi populaţi tabelele cu înregistrări relevante pentru cerinţele următoare.

Se creează o bază de date nouă.

Structura tabelului ELEV pentru fiecare câmp: - cnp - cheie primară, Data Type: Text (chiar dacă CNP este format din cifre, tipul se alege text)

proprietăţi modificate Field Size: 13 (codul numeric personal are 13 cifre)

Format: 0000000000000 (13 de zero, pentru a elimina posibilitatea ca operatorul să greşească - să introducă mai multe sau mai puţine cifre)

Caption: C.N.P. Validation Rule: Like "?????????????" (Like urmat de 13 semne de întrebare între ghilimele)

Validation Text: CNP este format din exact 13 cifre. Required: Yes

Allow Zero Lenght: No

Index: Yes (No Duplicates)

- nume - Data Type: Text

proprietăţi modificate Field Size: 30

Caption: Nume elev

Validation Rule: Is Not Null Validation Text: Introduceti numele

Required: Yes

- prenume - Data Type: Text

proprietăţi modificate Field Size: 30

Caption: Prenume elev

Validation Rule: Is Not Null Validation Text: Introduceti prenumele

Required: Yes Se introduc datele în tabel.

Structura tabelului NOTA pentru fiecare câmp:

- data - Data Type: Date/Time

proprietăţi modificate

Caption: Data

Validation Rule: Is Not Null Validation Text: Introduceti data

Required: Yes

- nota - Data Type: Number

proprietăţi modificate Field Size: Integer

Caption: Nota

Validation Rule: Between 1 And 10

Validation Text: Introduceti nota - o cifra intre 1 si 10.

Required: Yes

- materia - Data Type: Text

proprietăţi modificate Field Size: 30

Page 9: Baze de date - informatik.ddbuftea.ro · Baze de date Pentru început este bine să înţelegem noţiunile de bază din Access: modul de organizare a unei baze de date, a noţiunilor

Caption: Disciplina

Validation Rule: Is Not Null Validation Text: Introduceti disciplina

Required: Yes

- observatii - Data Type: Text (ar putea fi şi de tip Memo = maxim 64.000 caractere)

proprietăţi modificate Field Size: 255

Caption: Observaţii Required: No

* * Pentru putea a realiza o relaţie între cele două tabele, acestea trebuie să aibă un câmp comun. De aceea este necesară crearea a încă unui câmp în tabelul NOTA. Acest câmp va face legătura între cele două tabele. În tabelul NOTA adăugăm câmpul - cnp - Data Type: Text, Field Size: 13, Required: Yes.

Notă (pentru cei avansaţi): Introducerea CNP în tabelul NOTA pentru fiecare înregistrare ia destul de mult timp, existând şi posibilitatea introducerii eronate a CNP. De aceea,valorile se pot alege dintr-o listă care să preia din tabelul ELEV şi numele elevului. Access selectează, pe baza unei interogări, câmpurile cnp, nume şi prenume din tabelul ELEV şi le afişează ca pe o listă în câmpul id_revista din tabelul ABONAMENT).

Setări necesare: Display Control: List Box - indicăm că valoarea va fi preluată dintr-o listă de valori Row Source Type: Table/Query - lista de valori va fi preluată dintr-un tabel sau dintr-o interogare, care va fi specificat mai jos Row Source: aici avem mai multe posibilităţi - poate fi ales un tabel, o interogare, poate fi scrisă direct interogarea sau se poate apela la expertul de interogare pentru a creea interogarea. În cazul de faţă, interogarea selectează câmpurile cnp, nume şi prenume din tabelul ELEV Bound Column: se indică de unde se preiau valorile - dintr-a câta coloană din interogare - aici, din prima coloană care rezultă în urma interogării (cnp) Column Count: se indică numărul de coloane care vor fi afişate la completarea datelor. Alegem trei, pentru ca să fie vizibile numele şi prenumele elevilor (vezi figura de mai jos) Column Heads: pentru afişarea/ascunderea capului de tabel - am ales No, deci nu va fi afişat Column Widths: 0.9848" (unitatea de măsură este în inch - sau ţoli) - indică lăţimea coloanelor

Page 10: Baze de date - informatik.ddbuftea.ro · Baze de date Pentru început este bine să înţelegem noţiunile de bază din Access: modul de organizare a unei baze de date, a noţiunilor

Astfel devine mai simplă şi mai rapidă completarea câmpului cnp (vezi figura de mai jos), prin alegerea acestuia din listă:

În modul Datasheet View se completează tabelul cu câteva înregistrări (minim o înregistrare cu data când a fost primită nota este în luna martie 2010 - vezi cerinţa b şi minim o înregistrare cu disciplina Informatică - vezi cerinţa c).

Se realizează relaţia dintre tabele legând

câmpul-cheie primară cnp din tabelul ELEV la câmpul cnp din tabelul NOTA.

Între cele două tabele se realizează o relaţie One-to-many (una la mai multe, adică o înregistrare din tabelul ELEV corespunde

la mai multe înregistrări din tabelul NOTA. Altfel zis, în acest caz, un elev poate avea mai multe note. Se urmează aceiaşi paşi ca la subiectul 1. b) Afişaţi numele, prenumele şi notele elevilor care au fost evaluaţi în luna martie 2010 la o materie a cărei denumire se citeşte de la tastatură. Se creează o interogare care preia date din ambele tabele Create - Query Wizard - Simple Query Wizard: - din tabelul ELEV se preiau numele şi prenumele elevilor; - din tabelul NOTA se preiau data (pentru a selecta luna martie 2010), nota şi materia.

Page 11: Baze de date - informatik.ddbuftea.ro · Baze de date Pentru început este bine să înţelegem noţiunile de bază din Access: modul de organizare a unei baze de date, a noţiunilor

Pentru citirea materiei de la tastatură, în coloana corespunzătoare câmpului materia, pe rândul Criteria se introduce între paranteze pătrate textul Introduceti materia. Pentru selectarea lunii se foloseşte funcţia Month (care extrage luna din data calendaristică), iar pentru selectarea anului - funcţia Year (care extrage anul din data calendaristică) - vezi figura de mai sus. c) Determinaţi media notelor obţinute la informatică în anul curent. Se creează o interogare care preia date din ambele tabele Create - Query Wizard - Simple Query Wizard - Summary (la Summary Options se bifează opţiunea Avg - media aritmetică):

După salvarea interogării, în modul de vizualizare Design View, se fac următoarele modificări (vezi figura de mai jos):

- în coloana corespunzătoare câmpului materia, pe rândul criteria se scrie între ghilimele Informatica; - în coloana corespunzătoare datei pe rândul Field se foloseşte funcţia Year pentru a extrage anul din data calendaristică pe rândul Criteria se scrie 2010; - se rotunjeşte media aritmetică la două zecimale: Media: Round(Avg([nota]),2) pentru a se evita afişarea mai multor zecimale. d) Afişaţi, pentru toţi elevii, toate notele primite. În raport, elevii trebuie să apară în ordine alfabetică. Se creează un raport. Click pe butonul Create din meniu, apoi pe Report Wizard din grupul de butoane Reports. Se aleg datele care vor fi afişate în raport: - din tabelul ELEV, se aleg câmpurile nume şi prenume; - din tabelul NOTA se aleg câmpurile materia şi nota.

Page 12: Baze de date - informatik.ddbuftea.ro · Baze de date Pentru început este bine să înţelegem noţiunile de bază din Access: modul de organizare a unei baze de date, a noţiunilor

În fereastra următoare, gruparea datelor se face după elev(by Elev). Din fereastra următoare se poate alege încă un nivel de grupare: după materie.

În fereastra de ordonare a datelor există posibilitatea de ordonare crescătoare sau descrescătoare a notelor. Următoarea fereastră ne propune modul de afişare al datelor folosind diferite şabloane (layout), după care, în ultima fereastră, ni se cere numele raportului nou creat şi deschiderea acestuia pentru previzualizare sau pentru modificare. Modul previzualizare arată cum va fi listat raportul la imprimantă. E posibil ca la generarea automată a raportului unele câmpuri să nu încapă pe foaie sau să dorim să le poziţionăm altfel.

Ulterior, raportul poate fi modificat din modul Design View, unde se pot rearanja etichetele raportului şi se pot adăuga elemente grafice etc. În figura de mai sus se pot vedea nivelurile de grupare alese.