Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Baze de date


Index » educatie » » informatica » Baze de date
» Notiuni elementare de proiectare a bazelor de date


Notiuni elementare de proiectare a bazelor de date


Notiuni elementare de proiectare a bazelor de date

Visual FoxPro utilizeaza bazele de date pentru a organiza si lega intre ele tabele si vederi.

Pe langa faptul ca furnizeaza o arhitectura pentru memorarea datelor, bazele de date ofera avantaje suplimentare, precum:

posibilitatea crearii de extensii la nivel de tabel ca: reguli de validare, valori implicite pentru campuri si declansatoare;



se pot crea proceduri specifice si legaturi durabile intre tabele

se poate realiza conexiunea la o sursa de date la distanta;

se pot crea vederi folosind atat tabele locale cat si tabele la distanta.

Observatie: In Visual FoxPro termenii 'baza de date' si 'tabel' nu sunt sinonimi. Baza de date (fisier .dbc) se refera la o baza de date relationala care este un container de informatii despre una sau mai multe tabele (fisiere .dbf) sau vederi.

Pentru proiectarea bazei de date este necesara intelegerea exacta a informatiilor ce se doresc memorate si a modului in care un sistem de gestiune a bazelor de date relational memoreaza datele.

Pentru a furniza eficient informatii Visual FoxPro necesita organizarea in tabele separate a evenimentelor legate de diferite subiecte.

Organizarea corespunzatoare a datelor permite flexibilitate in baza de date si capacitati suplimentare de a combina date despre evenimentele respective in diferite moduri.

Cand se proiecteaza o baza de date se descompune informatia care trebuie pastrata in subiecte separate (independente) si se indica legaturile dintre aceste subiecte astfel incat Visual FoxPro sa poata recompune informatiile dupa cum este nevoie.

Mentinerea informatiei in tabele separate usureaza mentinerea si intretinerea datelor precum si realizarea de aplicatii cu performante sporite.

Procesul de realizare a unei baze de date parcurge urmatoarele faze:

analiza sistemului pentru care se construieste baza de date;

proiectarea structurii bazei;

incarcarea datelor in baza;

exploatarea si intretinerea bazei de date;

Faza proiectarii structurii bazei de date cuprinde urmatorii pasi:

se determina scopul bazei de date;

se determina ce tabele sunt necesare;

se determina , pentru fiecare tabel , ce campuri sunt necesare;

se stabilesc legaturile intre tabele;

se rafineaza proiectul.

Analiza cerintelor sistemului

Este primul pas in proiectarea unei baze de date in Visual FoxPro, si deriva din scopul pentru care se construieste baza si modul cum va fi ea utilizata. Se stabilesc ce informatii se doresc la iesire, pentru a se determina ce entitati trebuie memorate in tabele separate si pentru fiecare din acestea, ce proprietati trebuie memorate (ce campuri sunt necesare).

Este util lucrul interactiv cu utilizatorii finali ai informatiilor.

a) Se incepe prin a stabili o lista cu intrebarile la care trebuie sa raspunda datele din baza.

Exemplu : Pentru o societate comerciala se pot pune urmatoarele probleme:

Ce produse au inregistrat cele mai mari vanzari luna precedenta?

Care sunt clientii cei mai importanti si unde isi au sediul?

Care sunt furnizorii pentru un anumit reper?

b) Se stabilesc apoi rapoartele si eventuale formulare care contin informatii obtinute din baza de date.

Gruparea solicitarilor in tabele distincte.

Definirea tabelelor asociate bazei de date este un pas esential in proiectarea acesteia, datorita faptului ca rezultatele solicitate nu contin informatii legate de structura tabelelor din care sunt obtinute.

In pasul anterior s-a stabilit doar ce se doreste cunoscut si nu cum sa fie grupate datele in tabele. Exista cateva reguli care trebuie respectate:

memorarea informatiilor o singura data reduce considerabil posibilitatea de eroare;

necesitatea evitarii stergerii de informatii utile.

In acest scop se studiaza informatia solicitata la iesire si se imparte in teme fundamentale care se doresc urmarite ( clienti, personal, productie, furnizori, ) .

Fiecare din aceste teme reprezinta un candidat posibil pentru un tabel separat.

Determinarea campurilor necesare

Pentru a stabili ce campuri sunt necesare intr-un tabel trebuie determinat ceea ce se doreste stiut despre entitatea (tema) memorata in tabel. Din acest punct de vedere, campurile pot fi gandite ca atribute ale tabelului. Fiecare inregistrare dintr-un tabel contine acelasi set de campuri.

Sunt mai multe reguli de respectat in determinarea campurilor unui tabel:

se leaga fiecare camp direct de entitatea din tabel;



nu se includ date derivate sau calculate;

informatiile se memoreaza in cele mai mici unitati logice.

Utilizarea campurilor ca si chei primare

Forta unui SGBDR cum este Visual FoxPro consta in abilitatea de a gasi rapid si a combina informatii memorate in tabele separate. In acest scop fiecare tabel dintr-o baza de date va include un camp sau un set da campuri care identifica in mod unic fiecare inregistrare din tabel. De regula, acesta este un numar de identificare unic (sub forma unui cod sau numar serial). In termenii bazelor de date acesta este o cheie primara pentru tabel. Se utilizeaza pentru a asocia rapid date din mai multe tabele in scopul obtinerii informatiei dorite.

Atunci cand se alege un camp ca si cheie primara, se tine cont de urmatoarele:

pentru o cheie primara nu sunt admise duplicatele sau valori .NULL.

valoarea unei chei primare poate fi folosita pentru a cauta inregistrari, ca urmare nu trebuie sa fie prea lunga pentru a fi memorata usor. Ea trebuie sa aiba un anumit numar de caractere sau de digiti, sau sa fie cuprinsa intr-o anumita gama de valori.

dimensiunea cheii primare afecteaza viteza operatiilor in baza de date. In consecinta trebuie utilizata cea mai mica dimensiune posibila, adecvata nevoilor de memorare in camp.

Identificarea legaturilor dintre tabele

Dupa impartirea informatiilor in tabele separate, este nevoie sa se specifice care este modalitatea de a o recompune in diverse moduri, deoarece, informatia de iesire poate contine elemente ale mai multor entitati, deci din mai multe tabele.

Visual FoxPro este un sistem de gestiune a bazelor de date relational. Aceasta inseamna ca datele unitare sunt memorate in tabele separate, intre care se pot defini diferite legaturi iar sistemul utilizeaza aceste legaturi pentru a regasi diferite informatii memorate in baza.

In general, pentru a stabili relatii intre doua tabele (A si B) se adauga cheia primara dintr-un tabel ca si camp in celalalt tabel , astfel incat acesta apare in ambele tabele.

Problema care se pune este aceea a stabilirii cheii primare care se va folosi. In acest scop treebuie sa se determine mai intai natura legaturilor. Intre tabele pot exista trei tipuri de legaturi:

legaturi unu la mai multi;

legaturi mai multi la mai multi;

legaturi unu la unu.

Crearea legaturilor de tip unu-la mai multi.

Sunt acele legaturi intre tabele in care fiecare inregistrare dintr-un tabel poate fi asociata cu mai multe inregistrari din cel de-al doilea tabel ( fiecare valoare a cheii primare poate sa apara de mai multe ori in tabelul legat). Sunt cel mai des intalnite in bazele de date relationale.

Pentru a se defini legatura se adauga campul sau campurile care formeaza cheia primara a tabelului din prima parte a relatiei ('unu') la tabelul din partea 'mai multi'.

Se utilizeaza un index primar[1] sau un index candidat pentru partea 'unu' a legaturii si un index regulat pentru partea 'mai multi'.

Crearea legaturilor de tip mai multi la mai multi.

Sunt legaturi intre tabele in care inregistrarile din fiecare tabel au mai multe inregistrari corespondente in tabelul cu care este legat.

Acest tip de legaturi solicita schimbari in proiectarea bazei de date inainte de a putea specifica corect legaturile in Visual FoxPro.

Pentru a determina legaturile mai multi la mai multi intre tabele este important sa se studieze legatura din ambele sensuri. Solutia este crearea unui al treilea tabel care imparte legatura mai multi la mai multi in doua legaturi unu la mai multi. Acesta se numeste tabel de jonctiune deoarece actioneaza ca o jonctiune intre cele doua tabele legate. Acest tabel contine cheile primare din cele doua tabele . Optional tabela de jonctiune poate contine si informatii suplimentare.

Cheia primara a tabelului de jonctiune consta in doua campuri- chei straine din tabelele legate. Aceste campuri sunt de fapt cheile primare din cele doua tabele. Se foloseste o cheie compusa deoarece numai combinatia celor doua campuri identifica unic o inregistrare. Tabela de jonctiune nu solicita propria sa cheie primara.

Crearea legaturii unu la unu intre tabele

Reprezinta o legatura intre tabele in care fiecare inregistrare dintr-un tabel poate fi asociata numai cu o inregistrare din tabelul legat si invers.

Este un tip neobisnuit de legatura deoarece in majoritatea cazurilor informatia din cele doua tabele poate fi combinata simplu intr-unul singur.

Este utilizata in situatia cand anumite informatii au caracter temporar sau cand un numar mare de inregistrari ar avea campurile referitoare la o anumita informatie fara valori. In aceste cazuri, din considerente legate de dimensiunea tabelelor si de spatiul de stocare ocupat, este recomandabila folosirea unui tabel separat.



Cand se detecteaza necesitatea unei legaturi unu la unu in baza de date se verifica mai intai posibilitatea de a pune informatia intr-un singur tabel, prin adaugarea la structura acestuia a campurilor corespunzatoare. Daca acest lucru nu este indicat, se va defini o legatura intre tabele astfel:

daca cele doua tabele se refera la acelasi subiect se poate folosi un acelasi camp cheie primara in ambele tabele.

daca cele doua tabele au subiecte diferite cu chei primare diferite se alege unul din tabele (oricare din ele) si se adauga cheia sa primara in celalalt tabel ca si cheie straina.

Rafinarea proiectului

Odata stabilite tabelele, campurile si relatiile dintre acestea, este momentul sa se revina asupra proiectarii pentru a se detecta si remedia eventualele deficiente. Cele mai intalnite greseli, care fac datele greu de utilizat si intretinut sunt:

existenta unui tabel cu un numar mare de campuri care nu se refera la aceeasi tema.

existenta unor campuri care sunt, intentionat, lasate goale in multe inregistrari, deoarece atributele din campurile respective nu sunt aplicabile acestor inregistrari. Se impune ca sa se defineasca un nou tabel.

existenta unui numar foarte mare de tabele care contin aceleasi campuri. Se incearca consolidarea tuturor informatiilor referitoare la un subiect intr-un singur tabel. Eventual se include in structura un camp suplimentar care sa diferentieze datele care ar fi stocate in tabele diferite.

lipsa din tabele a unor campuri ;

alegerea gresita a cheii primare;

Exemplu:

Se presupune ca activitatea de aprovizionare la o unitate de productie a mobilei se poate descompune in urmatoarele subactivitati:

calculul necesarului de aprovizionat ( in functie de un plan de productie, de stocurile existente si de consumurile unitare pe produs)

activitatea de contractare urmareste acoperirea necesarului de componente pentru realizarea produselor, astfel incat sa existe o ritmicitate in fabricatie. Prin studii asupra furnizorilor posibili, asupra conditiilor sau restrictiilor de colaborare, se aleg furnizorii si se perfecteaza un act numit 'contract' ( prin care furnizorii se obliga sa trimita obiectele contractate in cantitatea ceruta si la termenul hotarat, dar si unitatea beneficiara se obliga sa plateasca aceste livrari).

gestiunea stocurilor prin inregistrarea intrarilor si iesirilor de materiale in/din depozite. Prin aceasta activitate se poate determina in orice moment ce materiale sunt, in ce depozite , gradul de perisabilitate, dacs s-a depasit un volum maximalsau s-a ajuns (din diferite cauze) la limita minim stabilita (stoc de siguranta).

urmarirea realizarii aprovizionarii se face comparand ceea ce s-a contractat cu ceea ce s-a livrat pentru a se vedea diferentele, a soma furnizorii sa trimita marfa restanta, a penaliza, etc.

Sa se organizeze datele intr-o baza de date stiind ca se doresc urmatoarele informatii:

a)      Care sunt contractele incheiate de furnizorul Y pentru materialul X?

b)      Care este nivelul stocului total din materialul X in toate depozitele unitatii?

c)      Ce furnizori are unitatea?

d)      Care sunt materialele de aprovizionat pentru produsul Z?

e)      Care este valoarea totala a contractelor cu furnizorul Y?

f)        Cati furnizori sunt din judetul Neamt?

I Analiza cererilor de informatii si studiul activitatii din organizatia supusa analizei conduce la concluzia ca 'obiectele ' asupra carora se cer a fi retinute informatii sunt: furnizorii, contractele de aprovizionare, materialele, depozitele, produsele.

II Acestea pot fi definite ca entitati cu urmatoarele atribute (proprietati) posibile:

Furnizori (nume, adresa, cont, telefon, fax, manager, etc)

Contracte ( numar, data_semnarii, partener, .. )

Materiale (nume, cod, UM, pret, stoc_min, stoc_max, etc)

Produse (nume, plan, )

Depozite (nume, tip, gestionar,etc )



III Legaturile dintre entitati se pot defini astfel:

PRODUSE-MATERIALE (n:n) un produs contine n materiale, un material se poate gasi in componenta a n produse;

FURNIZOR - CONTRACTE (1:n) un furnizor are n contracte, un contract nu poate apartine decat unui furnizor.

CONTRACTE-MATERIALE (n:n) pe un contract pot fi trecute n materiale (fiecare cu termene de livrare, cantitati, etc), acelasi material se poate gasi pe mai multe contracte.

DEPOZIT - MATERIALE (n:n) un depozit poate sa aibe mai multe materiale, un acelasi material se poate gasi in mai multe depozite.

Administratorul bazei de date poate considera ca sunt necesate urmatoarele tabele:

- pentru entitati : PRODUSE

MATERIALE

DEPOZIT

FURNIZORI

- pentru legaturi: CONTRACTE

STOCURI

CONSUM_SPECIFIC

IV Determinarea campurilor necesare se face pornind de la ceea ce se doreste stiut despre subiectul memorat in fiecare tabel, cu respectarea regulilor de baza enuntate.

PRODUSE (den, plan)

MATERIALE ( nume)

DEPOZIT ( nume_dep, admin)

FURNIZORI (nume_f, localitate, strada, numar, jud)

CONTRACTE (nr_con, data, valoare)

STOCURI ( stoc)

CONSUM_SPECIFIC (consum)

V. Utilizarea campurilor ca si chei se face tinand cont de posibilitatile de identificare unica a inregistrarilor si de legaturile pe care aceste chei trebuie sa le induca. Cu alte cuvinte se tine cont de tipul cheii (primara sau straina). In exemplul considerat se vor adauga campuri de cod pentru materiale, produse, furnizori si depozite. In final se obtine urmatoarea structura pentru tabele:

PRODUSE (codp, den, plan)

MATERIALE (codm, nume)

DEPOZIT ( codd, nume_dep, admin)

FURNIZORI (codf, nume_f, localitate, strada, numar, jud)

CONTRACTE (codf, codm, nr_con, data, valoare)

STOCURI ( codm, codd, stoc)

CONSUM_SPECIFIC (codp, codm, consum)



Un index care nu permite valori duplicat @n c`mpurile specificate. Sunt de regul[ utilizate @n tabelele primare sau referite pentru a stabili integritatea referenial[ @ntr-o leg[tur[ permanent[. Pentru un tabel se poate crea numai un singur index primar.

Un index care poate deveni cheie primar[ deoarece nu conine valori .NULL. sau duplicate.

Un index care nu este unic, primar sau candidat. Se utilizeaz[ pentru a ordona sau a c[uta @nregistr[ri, dar nu pentru a fora unicitatea datelor @n @nregistr[ri.







Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate