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,
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.

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).
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.

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

Utilizarea cheilor 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 .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.

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.
Ca un prim pas, trebuie să se determine natura legăturilor din baza de date.
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 primar3 sau un index candidat4 pentru partea "unu" a legăturii
şi un index regulat5 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.
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.

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 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?

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