Documente Academic
Documente Profesional
Documente Cultură
Visual FoxPro utilizează bazele de date pentru a organiza şi lega între ele tabele,
vederi, proceduri stocate, etc.
In Visual FoxPro termenii "bază de date" şi "tabel" nu sunt sinonimi. Baza de date
(fişier .dbc) se referă la o bază de date relaţională care este un container de informaţii
despre una sau mai multe tabele (fişiere .dbf) sau vederi.
Pentru proiectarea bazei de date este necesară înţelegerea exactă a informaţiilor ce se
doresc memorate şi a modului în care un sistem de gestiune a bazelor de date relaţional
memorează datele.
Pentru a furniza eficient informaţii Visual FoxPro necesită organizarea în tabele
separate a evenimentelor legate de diferite subiecte (entitati sau legături intre entitati).
Organizarea corespunzătoare a datelor permite flexibilitate în baza de date şi capacităţi
suplimentare de a combina date despre evenimentele respective în diferite moduri.
Când se proiectează o bază de date se descompune informaţia care trebuie păstrată în
subiecte separate (independente) şi se indică legăturile dintre aceste subiecte astfel încât
Visual FoxPro să poată recompune informaţiile după cum este nevoie.
Menţinerea informaţiei în tabele separate uşurează menţinerea şi întreţinerea
datelor precum şi realizarea de aplicaţii cu performanţe sporite.
Procesul de realizare a unei baze de date parcurge următoarele faze:
- analiza sistemului pentru care se construieşte baza de date;
- proiectarea şi crearea structurii bazei;
- încărcarea datelor în bază;
- exploatarea şi întreţinerea bazei de date;
Faza proiectării structurii bazei de date cuprinde următorii paşi:
- se determină scopul bazei de date;
- se determină ce tabele sunt necesare;
- se determină , pentru fiecare tabel , ce câmpuri sunt necesare;
- se stabilesc legăturile între tabele;
- se rafinează proiectul.
Este primul pas în proiectarea unei baze de date în Visual FoxPro, şi derivă din
scopul pentru care se construieşte baza şi modul cum va fi ea utilizată. Se stabilesc ce
informaţii se doresc la ieşire, pentru a se determina ce entităţi trebuie memorate în tabele
separate şi pentru fiecare din acestea, ce proprietăţi trebuie memorate (ce câmpuri sunt
necesare).
Pentru succesul acestei etape, este util lucrul interactiv cu utilizatorii finali ai
informaţiilor.
a) Se începe prin a stabili o listă cu întrebările la care trebuie să răspundă datele
din bază.
Exemplu : Pentru o societate comercială se pot pune următoarele probleme:
Ce produse au înregistrat cele mai mari vânzări luna precedentă?
Care sunt clienţii cei mai importanţi şi unde îşi au sediul?
Care sunt furnizorii pentru un anumit reper?
b) Se stabilesc apoi eventualele formulare folosite de fiecare utilizator pentru
interacţiunea cu baza de date (introducere, modificare sau vizualizare a datelor) şi
rapoartele care conţin informaţii obţinute din baza de date.
Definirea tabelelor asociate bazei de date este un pas esenţial în proiectarea acesteia,
datorită faptului că rezultatele solicitate nu conţin informaţii legate de structura tabelelor din
care sunt obţinute.
In pasul anterior s-a stabilit doar ce se doreşte cunoscut şi nu cum să fie grupate
datele în tabele. Există câteva reguli care trebuie respectate:
- memorarea informaţiilor o singură dată reduce considerabil posibilitatea de
eroare;
- necesitatea evitării ştergerii de informaţii utile.
In acest scop se studiază informaţia solicitată la ieşire şi se împarte în teme
fundamentale care se doresc urmărite ( clienţi, personal, producţie, furnizori, ) .
Fiecare din aceste teme reprezintă un candidat posibil pentru un tabel separat.
Pentru a stabili ce câmpuri sunt necesare într-un tabel trebuie determinat ceea ce se
doreşte ştiut despre entitatea (tema) memorată în tabel. Din acest punct de vedere, câmpurile
pot fi gândite ca atribute ale tabelului. Fiecare înregistrare dintr-un tabel conţine acelaşi set
de câmpuri.
Sunt mai multe reguli de respectat în determinarea câmpurilor unui tabel:
- se leagă fiecare câmp direct de entitatea din tabel;
- nu se includ date derivate sau calculate1;
- informaţiile se memorează în cele mai mici unităţi logice.
Forţa unui SGBDR cum este Visual FoxPro constă în abilitatea de a găsi rapid şi a
combina informaţii memorate în tabele separate. In acest scop fiecare tabel dintr-o bază de
date va include un câmp sau un set da câmpuri care identifică în mod unic fiecare
înregistrare din tabel. De regulă, acesta este un număr de identificare unic (sub forma unui
cod sau număr serial). In termenii bazelor de date acesta este o cheie primară pentru tabel. Se
utilizează pentru a asocia rapid date din mai multe tabele în scopul obţinerii informaţiei
dorite.
Atunci când se alege un câmp ca şi cheie primară, se ţine cont de următoarele:
- pentru o cheie primară nu sunt admise duplicatele sau valori .NULL2.
- valoarea unei chei primare poate fi folosită pentru a căuta înregistrări, ca urmare
nu trebuie să fie prea lungă pentru a fi memorată uşor. Ea trebuie să aibă un
1
Date care pot fi obţinute prin prelucrări elementare ale altor date. De regulă acestea pot suferi
modificări frecvente.
2
Valoare nedeterminată sau valoare nespecificată la momentul respectiv.
anumit număr de caractere sau de digiţi, sau să fie cuprinsă într-o anumită gamă
de valori.
- dimensiunea cheii primare afectează viteza operaţiilor în baza de date. In
consecinţă trebuie utilizată cea mai mică dimensiune posibilă, adecvată nevoilor
de memorare în câmp.
Sunt acele legături între tabele în care fiecare înregistrare dintr-un tabel poate fi
asociată cu mai multe înregistrări din cel de-al doilea tabel ( fiecare valoare a cheii
primare poate să apară de mai multe ori în tabelul legat). Sunt cel mai des întâlnite în bazele
de date relaţionale.
Pentru a se defini legătura se adaugă câmpul sau câmpurile care formează cheia
primară a tabelului din prima parte a relaţiei ("unu") la tabelul din partea "mai mulţi".
Se utilizează un index primar3 sau un index candidat4 pentru partea "unu" a legăturii
şi un index regulat5 pentru partea "mai mulţi".
Sunt legături între tabele în care înregistrările din fiecare tabel au mai multe
înregistrări corespondente în tabelul cu care este legat.
In această situaţie, se solicită schimbări în proiectarea bazei de date înainte de a putea
specifica corect legăturile.
Pentru a determina legăturile mai mulţi la mai mulţi între tabele este important să se
studieze legătura din ambele sensuri. Soluţia este crearea unui al treilea tabel care
împarte legătura mai mulţi la mai mulţi în două legături unu la mai mulţi. Acesta se
3
Un index care nu permite valori duplicat în câmpurile specificate. Sunt de regulă utilizate în tabelele
primare sau referite pentru a stabili integritatea referenţială într-o legătură permanentă. Pentru un tabel se poate
crea numai un singur index primar.
4
Un index care poate deveni cheie primară deoarece nu conţine valori .NULL. sau duplicate.
5
Un index care nu este unic, primar sau candidat. Se utilizează pentru a ordona sau a căuta înregistrări,
dar nu pentru a forţa unicitatea datelor în înregistrări.
numeşte tabel de joncţiune deoarece acţionează ca o joncţiune între cele două tabele legate.
Acest tabel conţine cheile primare din cele două tabele . Opţional tabela de joncţiune
poate conţine şi informaţii suplimentare.
Tabelul de joncţiune nu solicită propria sa cheie primară.
Totuşi, în situaţia în care se doreşte specificată, cheia primară a tabelului de joncţiune
este compusă din cel puţin în două câmpuri- chei străine din tabelele legate. Aceste câmpuri
sunt de fapt cheile primare din cele două tabele care intră în legătură. Se foloseşte o cheie
compusă deoarece numai o combinaţie a mai multor câmpuri identifică unic o înregistrare.
Rafinarea proiectului
Exemplu:
Se presupune că activitatea de aprovizionare la o unitate de producţie se poate
descompune în următoarele subactivităţi:
1. calculul necesarului de aprovizionat ( în funcţie de un plan de producţie, de
stocurile existente şi de consumurile unitare pe produs)
2. activitatea de contractare urmăreşte acoperirea necesarului de componente pentru
realizarea produselor, astfel încât să existe o ritmicitate în fabricaţie. Prin studii
asupra furnizorilor posibili, asupra condiţiilor sau restricţiilor de colaborare, se
aleg furnizorii şi se perfectează un act numit "contract" ( prin care furnizorii se
obligă să trimită obiectele contractate în cantitatea cerută şi la termenul hotărât,
dar şi unitatea beneficiară se obligă să plătească aceste livrări).
3. gestiunea stocurilor prin înregistrarea intrărilor şi ieşirilor de materiale în/din
depozite. Prin această activitate se poate determina în orice moment ce materiale
sunt, în ce depozite , gradul de perisabilitate, dacă s-a depăşit un volum maximal
sau s-a ajuns (din diferite cauze) la limita minim stabilită (stoc de siguranţă).
4. urmărirea realizării aprovizionării se face comparând ceea ce s-a contractat cu
ceea ce s-a livrat pentru a se vedea diferenţele, a soma furnizorii să trimită marfa
restantă, a penaliza, etc.
Să se organizeze datele într-o bază de date ştiind că se doresc următoarele informaţii:
a) Care sunt contractele încheiate de furnizorul Y pentru materialul X?
b) Care este nivelul stocului total din materialul X în toate depozitele unităţii?
c) Ce furnizori are unitatea?
d) Care sunt materialele de aprovizionat pentru produsul Z?
e) Care este valoarea totală a contractelor cu furnizorul Y?
f) Câţi furnizori sunt din judeţul W?