Sunteți pe pagina 1din 6

Noţiuni elementare de proiectare a bazelor de date

Visual FoxPro utilizează bazele de date pentru a organiza şi lega între ele tabele şi vederi.
Pe lângă faptul că furnizează o arhitectură pentru memorarea datelor, bazele de date
oferă avantaje suplimentare, precum:
- posibilitatea creării de extensii la nivel de tabel ca: reguli de validare, valori implicite
pentru câmpuri şi declanşatoare;
- se pot crea proceduri specifice şi legături durabile între tabele
- se poate realiza conexiunea la o sursă de date la distanţă;
- se pot crea vederi folosind atât tabele locale cât şi tabele la distanţă.
Observaţie: 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.
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 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.

Analiza cerinţelor sistemului


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).
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 rapoartele şi eventuale formulare care conţin informaţii obţinute
din baza de date.

Gruparea solicitărilor în tabele distincte.


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.

Determinarea câmpurilor necesare


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 calculate;
- informaţiile se memorează în cele mai mici unităţi logice.

Utilizarea câmpurilor ca şi chei primare


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 .NULL.
- 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 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.
Identificarea legăturilor dintre tabele
După împărţirea informaţiilor în tabele separate, este nevoie să se specifice care este
modalitatea de a o recompune în diverse moduri, deoarece, informaţia de ieşire poate
conţine elemente ale mai multor entităţi, deci din mai multe tabele.
Visual FoxPro este un sistem de gestiune a bazelor de date relaţional. Aceasta
înseamnă că datele unitare sunt memorate în tabele separate, între care se pot defini
diferite legături iar sistemul utilizează aceste legături pentru a regăsi diferite informaţii
memorate în bază.
In general, pentru a stabili relaţii între două tabele (A şi B) se adaugă cheia primară
dintr-un tabel ca şi câmp în celălalt tabel , astfel încât acesta apare în ambele tabele.
Problema care se pune este aceea a stabilirii cheii primare care se va folosi. In acest
scop treebuie să se determine mai întâi natura legăturilor. Intre tabele pot exista trei tipuri
de legături:
- legături unu la mai mulţi;
- legături mai mulţi la mai mulţi;
- legături unu la unu.

Crearea legăturilor de tip unu-la mai mulţi.


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 primar1 sau un index candidat2 pentru partea "unu" a legăturii şi un
index regulat3 pentru partea "mai mulţi".

Crearea legăturilor de tip mai mulţi la 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.
Acest tip de legături solicită schimbări în proiectarea bazei de date înainte de a putea
specifica corect legăturile în Visual FoxPro.
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 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.

1
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.
2
Un index care poate deveni cheie primar[ deoarece nu con\ine valori .NULL. sau duplicate.
3
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.
Cheia primară a tabelului de joncţiune constă în două câmpuri- chei străine din
tabelele legate. Aceste câmpuri sunt de fapt cheile primare din cele două tabele. Se foloseşte o
cheie compusă deoarece numai combinaţia celor două câmpuri identifică unic o înregistrare.
Tabela de joncţiune nu solicită propria sa cheie primară.

Crearea legăturii unu la unu între tabele

Reprezintă o legătură între tabele în care fiecare înregistrare dintr-un tabel poate fi
asociată numai cu o înregistrare din tabelul legat şi invers.
Este un tip neobişnuit de legătură deoarece în majoritatea cazurilor informaţia din cele două
tabele poate fi combinată simplu într-unul singur.
Este utilizată în situaţia când anumite informaţii au caracter temporar sau când un număr
mare de înregistrări ar avea câmpurile referitoare la o anumită informaţie fără valori. In aceste
cazuri, din considerente legate de dimensiunea tabelelor şi de spaţiul de stocare ocupat, este
recomandabilă folosirea unui tabel separat.
Cănd se detectează necesitatea unei legături unu la unu în baza de date se verifică mai
întâi posibilitatea de a pune informaţia într-un singur tabel, prin adăugarea la structura acestuia a
câmpurilor corespunzătoare. Dacă acest lucru nu este indicat, se va defini o legătură între tabele
astfel:
- dacă cele două tabele se referă la acelaşi subiect se poate folosi un acelaşi câmp cheie
primară în ambele tabele.
- dacă cele două tabele au subiecte diferite cu chei primare diferite se alege unul din
tabele (oricare din ele) şi se adaugă cheia sa primară în celălalt tabel ca şi cheie străină.

Rafinarea proiectului
Odată stabilite tabelele, câmpurile şi relaţiile dintre acestea, este momentul să se revină
asupra proiectării pentru a se detecta şi remedia eventualele deficienţe. Cele mai întâlnite greşeli,
care fac datele greu de utilizat şi întreţinut sunt:
- existenţa unui tabel cu un număr mare de câmpuri care nu se referă la aceeaşi temă.
- existenţa unor câmpuri care sunt, intenţionat, lăsate goale în multe înregistrări,
deoarece atributele din câmpurile respective nu sunt aplicabile acestor înregistrări. Se impune ca să
se definească un nou tabel.
- existenţa unui număr foarte mare de tabele care conţin aceleaşi câmpuri. Se încearcă
consolidarea tuturor informaţiilor referitoare la un subiect într-un singur tabel. Eventual se include
în structură un câmp suplimentar care să diferenţieze datele care ar fi stocate în tabele diferite.
- lipsa din tabele a unor câmpuri ;
- alegerea greşită a cheii primare;

Exemplu:
Se presupune că activitatea de aprovizionare la o unitate de producţie a mobilei 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 maximalsau 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 Neamţ?

I Analiza cererilor de informaţii şi studiul activităţii din organizaţia supusă analizei


conduce la concluzia că "obiectele " asupra cărora se cer a fi reţinute informaţii sunt: furnizorii,
contractele de aprovizionare, materialele, depozitele, produsele.
II Acestea pot fi definite ca entităţi cu următoarele atribute (proprietăţi) posibile:
- Furnizori (nume, adresă, cont, telefon, fax, manager, etc)
- Contracte ( număr, data_semnării, partener, .. )
- Materiale (nume, cod, UM, preţ, stoc_min, stoc_max, etc)
- Produse (nume, plan, )
- Depozite (nume, tip, gestionar,etc )

III Legăturile dintre entităţi se pot defini astfel:


PRODUSE-MATERIALE (n:n) un produs conţine n materiale, un material se poate găsi în
componenţa a n produse;
FURNIZOR - CONTRACTE (1:n) un furnizor are n contracte, un contract nu poate
aparţine decât unui furnizor.
CONTRACTE-MATERIALE (n:n) pe un contract pot fi trecute n materiale (fiecare cu
termene de livrare, cantităţi, etc), acelaşi material se poate găsi pe mai multe contracte.
DEPOZIT - MATERIALE (n:n) un depozit poate să aibe mai multe materiale, un acelaşi
material se poate găsi în mai multe depozite.

Administratorul bazei de date poate considera că sunt necesate următoarele tabele:


- pentru entităţi : PRODUSE
MATERIALE
DEPOZIT
FURNIZORI
- pentru legături: CONTRACTE
STOCURI
CONSUM_SPECIFIC
IV Determinarea câmpurilor necesare se face pornind de la ceea ce se doreşte ştiut despre
subiectul memorat în fiecare tabel, cu respectarea regulilor de bază enunţate.
- PRODUSE (den, plan)
- MATERIALE ( nume)
- DEPOZIT ( nume_dep, admin)
- FURNIZORI (nume_f, localitate, stradă, numar, jud)
**************
- CONTRACTE (nr_con, data, valoare)
- STOCURI ( stoc)
- CONSUM_SPECIFIC (consum)

V. Utilizarea câmpurilor ca şi chei se face ţinând cont de posibilităţile de identificare unică


a înregistrărilor şi de legăturile pe care aceste chei trebuie să le inducă. Cu alte cuvinte se ţine cont
de tipul cheii (primară sau străină). In exemplul considerat se vor adăuga câmpuri de cod pentru
materiale, produse, furnizori şi depozite. In final se obţine următoarea structură pentru tabele:
- PRODUSE (codp, den, plan)
- MATERIALE (codm, nume)
- DEPOZIT ( codd, nume_dep, admin)
- FURNIZORI (codf, nume_f, localitate, stradă, numar, jud)
**************
- CONTRACTE (codf, codm, nr_con, data, valoare)
- STOCURI ( codm, codd, stoc)
- CONSUM_SPECIFIC (codp, codm, consum)

S-ar putea să vă placă și