Sunteți pe pagina 1din 43

Capitolul 1 INIIERE N BAZE DE DATE RELAIONALE

Se studiaz: 1.1. Noiuni, concepte i modele utilizate n organizarea datelor Fiiere, baze de date i Sisteme de Gestiune a Bazelor de Date Banca de date, sistemul informaional, sistemul informatic cu baze de date 1.2. Organizarea datelor n baza de date Entitate, obiect (atribut), legturi (asocieri) ntre entiti Modele conceptuale pentru Sisteme de Gestiune a Bazelor de Date 1.3. Baze de date relaionale i S.G.B.D.R. Relaii (Tabele) Tipuri de chei i identificarea nregistrrilor prin chei Scrierea relaiilor bazei de date sub forma canonic Anomalii ntlnite n proiectarea relaiilor 1.4 - Etape de realizare a aplicaiilor informatice cu baze de date

Cuvinte cheie : date. infonnaii, fiier, baza de date, schema bazei de date. subschema bazei de date. nivel conceptual, nivel intern, nivel extern, bnci de date, sistem informaional, sistem informatic cu baze de date. Sistem de Gestiune a Bazelor de Date (SGBD), utilizatorii bazei de date (administratorul bazei de date. programatorii de aplicaii, utilizatorii finali), nregistrare, cmp. entitate, obiect (atribut), legturi (asocieri) ntre entiti, modelul entitate legtur, modele conceptuale pentru organizarea datelor, modelul ierarhic, modelul reea, modelul relaional. In informatica de gestiune sunt preferate bazele de date relaionale, datorit performanelor oferite de acest tip de organizare. Prin utilizarea pe scar larg a calculatoarelor personale (PC) utilizatorii au posibilitatea de a realiza rapid operaiile de ntreinere i regsire a datelor coninute n acest tip

de baze de date. Pentru a putea utiliza i mai ales pentru a putea proiecta astfel de baze de date relaionale este necesar s ne nsuim mai nti o serie de termeni i concepte.

1.1. Noiuni, concepte i modele utilizate n organizarea datelor


Datele se obin prin efectuarea unor observaii asupra obiectelor,

fenomenelor, imaginilor, sunetelor, textelor. Aceste observaii (constatri) se nregistreaz de regul ntr-un cod convenional prin care se asigur comunicarea, interpretarea i prelucrarea datelor rezultate n urma acestor constatri. Asupra datelor, reprezentate ntr-un cod convenional, se pot face operaii de stocare, prelucrare, transmitere fie prin mijloace manuale, fie prin mijloacele informatice. Informaiile rezult din semnificaiile i legturile ce se pot deduce din ansamblul de date. n terminologia curent, prin conceptul de dat se nelege cuplul atribut-valoare (A,V), cu elemente selectate dintr-o mulime de atribute A i o mulime de valori V. Orice dat se identific prin atributul ei. Valoarea concret pe care o ia acest atribut constituie o reprezentare a sa. S urmrim n acest sens modul de constituire al datelor i informaiilor pentru o anchet social efectuat printr-un sondaj n urma cruia s-au obinut, printre altele, urmtoarele nregistrri: Atribute meserie meserie meserie meserie Valori strungar lctu magazioner macaragiu

data naterii 12.02.1935 data naterii 25.12.1937 data naterii 05.07.1934 data naterii 18.02.1929 In urma acestui sondaj au fost nregistrate datele de mai sus. Prin analiza semnificaiilor i a legturilor acestui eantion de date rezult informaiile extrase din sondaj: a) categoria socio-profesionala: muncitori; b) persoane n vrst. Un alt exemplu l constituie temperaturile zilnice. Termometrul arat temperaturi de 36C, 38C, 39C etc, adic se nregistreaz date care arat temperatura zilnic. Informaia ce rezult din aceste date const n faptul c se traverseaz o perioad de canicul. Desigur c exemplele pe aceast tem sunt 12 deosebit de numeroase, important este faptul c se face distincie net ntre date i informaii. 1.1.1. Fiiere, baze de date i Sisteme de Gestiune a Bazelor de Date Un fiier este un ansamblu de date ce poate fi manipulat de un mare numr de utilizatori ntr-o viziune unic asupra datelor. Datele memorate ntr-un fiier sunt structurate n nregistrri, o nregistrare se compune din mai multe cmpuri, un cmp are o lungime de unul sau mai multe caractere (octei), un caracter (byte sau octet) se memoreaz n opt bii. Un fiier se identific, de regul, de ctre sistemul de operare, printr-un nume i o extensie. O baz de date este un ansamblu de date ce poate fi manipulat de mai muli utilizatori n viziuni diferite asupra datelor. Baza de date este o colecie de date i informaii necesar i suficient pentru a satisface cerinele informaionale ale conducerii unei uniti economico-sociale (agent economic, instituii publice

eto). Din punct de vedere tehnic o baz de date este format din unul sau mai multe fiiere n care datele sunt memorate ntr-o structur de date specific software-ului utilizat la crearea bazei de date. 0 baz de date grupeaz un ansamblu de fiiere corelate. Structura acestui ansamblu de date se realizeaz prin schema bazei de date. Schema bazei de date, n sens CODASYL, descrie toate datele i structurile luate n eviden n cadrul unei baze de date. Ea reprezint punctul de vedere cel mai general care sintetizeaz cerinele tuturor utilizatorilor individuali i deci schema bazei de date reprezint structura global a bazei de date (unii autori o numesc structur global, alii structur virtual). n exploatarea bazei de date fiecare utilizator are propria viziune asupra structurrii datelor relevante pentru el. De fapt fiecare utilizator va avea acces la o baz de date particular, n realitate fictiv, iar descrierea acestei baze de date particulare se numete subschema bazei de date. Constituirea SCHEMEI CONCEPTUALE se realizeaz n patru etape dup cum urmeaz: Etapa 1: Identificarea mulimilor de entiti din cadrul sistemului Etapa 2: Identificarea asocierilor (legturilor) care exist ntre mulimile de entiti Etapa 3: Determinarea condiiilor care se impun asocierilor identificate Etapa 4: Determinarea caracteristicilor (atributelor) entitilor i asocierilor care au rezultat n urma etapelor precedente. n bazele de date are loc o integrare a datelor, n sensul c mai multe fiiere sunt privite ca un ansamblu, elimmndu-se datele redondante. Baza de
date permite accesul simultan la aceleai date, situate n acelai loc sau

distribuite, a mai multor persoane de pregtiri diferite , fiecare avnd stilul personal de lucru. Sistemul de programe care permite construirea unor baze de date, ncrcarea datelor i dezvoltarea de aplicaii privind valorificarea datelor memorate n bazele de date se numete Sistemul de Gestiune a Bazelor de date (SGBD). SGBD-ul este n fond o interfa ntre utilizatori i sistemul de oparare. APentru ca un sistem software sa fie un SGBD, el trebuie sa gestioneze baza de date prin patru funcii: de definire a datelor, de manipulare a datelor, de utilizare a datelor i de administrare a datelor. a) Funcia de definire a datelor permite descrierea structurii bazei de date cu ajutorul Limbajului de Definire a Datelor (LDD). Cu ajutorul LDD se descriu entitaile(coleciile), caracteristicile (cmpurile) acestora, precum i legturile dintre entiti. b) Funcia de manipulare a datelor permite ncrcarea/validarea datelor, actualizarea datelor i interogarea (regsirea datelor). Toate aceste operaii se realizeaz cu ajutorul Limbajului de Manipulare a Datelor (LMD); c) Funcia de utilizare a datelor asigur interfeele necesare comunicrii utilizatorului cu baza de date. Categoriile de utilizatori sunt: programatorii de aplicaii (SGBD le ofer limbaje de programare i interfee), administratorul bazei de date (SGBD i ofer instrumente specializate), alte categorii de utilizatori (SGBD le ofer instrumente i interfee specifice).

d) Funcia de administrare a bazei de date permite gestionarea corect a bazei de date, att n procesul de realizare a bazei, ct i n procesul de exploatare a bazei. SGBD ofer instrumente utile pentru: ncrcarea structurii bazei de date, reorganizarea bazei de date, jumalizarea i refacerea bazei de date n caz de incidente, analiza statistic asupra bazei de date. Studiind impactul Sistemelor de Gestiune a Bazelor de Date (S.G.B.D.) cu sistemele informaionale, grupul de lucru ANSI (SUA) "Standard Planning And Requirement Committee" (SPARC) propune o arhitectur de baz de date multinivel, fiecare nivel avnd asociat un model i o schem^Conform acestei metodologii fiecrei baze de date 1 se asociaz trei nivele funcionale i anume: nivelul conceptual care este depozitarul semantic al bazei de date. Acest nivel reprezint o abstracie a sistemului modelat i servete ca referire global pentru viziunile particulare ale utilizatorilor (schema bazei de date); nivelul extern (logic) cuprinde viziunile specifice definite pentru manipularea (prelucrarea) datelor. Necesitile de date ale
14

utilizatorilor sunt exprimate la acest nivel. O viziune extern a bazei de date reprezint, ntr-o manier ct mai aproape de realitate, un tip de utilizator al bazei de date (subschemele bazei de date); nivelul intern (fizic), corespunde reprezentrii datelor pe suporturile de date. Acest nivel contribuie la eficacitatea transpunerii i implementrii sistemului conceptual.

1.1.2. Banca de date, sistemul informaional, sistemul informatic cu baze de date Banca de date reprezint un sistem de organizare, prelucrare i teletransmisie de date i informaii, care este format dintr-o baza de date, un sistem de programe pentru gestiunea fiierelor bazei de date, echipamentele de calcul implicate i procedurile de lucru utilizate. Sistemul de programe destinat gestiunii datelor coninute n baza de date poart numele de Sistem de Gestiune a Bazei de Date (S.G.B.D.) i este un sistem de programe, care asigur independena programelor aplicative fa de modul de structurare a datelor. Sistemul informaional este sistemul de culegere, prelucrare, transmitere i stocare a datelor i informaiilor care circul n cadrul unei uniti economico-sociale. Sistemul informaional face legtura ntre sistemul condus i sistemul de conducere fiind subordonat acestora. Sistemul informatic este un ansamblu structurat de elemente intercorelate funcional pentru automatizarea procesului de obinere a informaiilor i fundamentarea deciziilor. Sistemul informatic este inclus n sistemul informaional i conine procesul de culegere, verificare, transmitere, stocare i prelucrare automat a datelor. Sistemul informatic se compune din baza de date, echipamente de calcul i transmisie de date, software-ul i utilizatorii. SISTEM INFORMATION A T

SISTEM INFORMATIC Subsistem BANCA DE DATE Baza de date SGBD Echip. Proceduri de calcul

Schema nr. 1 - Relaiile dintre sistemul informaional sistemul informatic i banca de date 15

Sistemul de gestiune ai bazelor de date (SGBD) este un software cunoscut n literatura de specialitate n limba englez sub terminologia de DBMS (Data Base Management System), iar n literatura francez SGBD (Sistem de Gestion de Base de Donnees). SGBD-ul este un sistem de programe de gestiune i de aplicaii, care asigur descrierea structurii bazei de date, manipularea datelor (creare, actualizare, interogare, listare i ntreinere), controlul i autorizarea accesului la baza de date i asigurarea integritii i securitii bazei de date. n schema nr. 1 sunt reprezentate grafic relaiile stabilite ntre aceste concepte. Deoarece datele dintr-o unitate economico-social sunt ntr-o permanent schimbare, atunci i asupra datelor memorate n baza de date asociat sistemului informatic al unitii economico-sociale se efectueaz operaii de creare, modificare, adugare, tergere, prelucrare (interogare, listare, transfer) etc. Utilizatorii bazei de date se mpart n urmtoarele categorii: Administratorul bazei de date, care este gestionarul responsabil cu buna funcionare a SGBD i cu meninerea n permanen n stare de funcionare a bazei de date. Administratorul bazei de date ( o persoan sau un grup) are urmtoarele responsabiliti: proiectarea bazei de date (definirea schemei i a subschemelor); asigurarea securitii datelor; ameliorarea performanelor bazei de date; asigurarea integritii i extinderii bazei de date. Programatorii de aplicaii - specialitii care realizeaz programe in LC, acestea fiind apoi compilate i memorate n fiiere ce pot fi lansate n execuie de ctre utilizatori prin apelarea numelui asociat de utilizator i efectueaz unele prelucrri specifice de date; Utilizatorii finali - persoane care exploateaz baza de date si ruleaz inclusiv programele elaborate de programatorii de aplicaii. Aceti utilizatori pot s obin informaiile memorate n baza de date fr s aib cunotine de programare. Ei obin informaiile dorite prin comenzi cunoscute i eventual rspunznd la diferite opiuni pe care le indic sistemul la un moment dat. DE REINUT: Pentru a lucra cu baze de date i cu SGBD trebuie s reinem urmtoarele definiii de lucra: 1. Baza de date: Un ansamblu de colecii de date :

organizat pe niveluri de organizare a datelor n memoria extern; coerent, conform unor restricii de integritate; structurat conform unui model de date; 16

cu o redundana minima si controlata, asigurata prmtr-o tehnica de proiectare; accesibil mai multor utilizatori n timp util. 2. nregistrare: Totalitatea informaiilor referitoare la un articol coninut n baza de date; 3. Cmp: Unitatea de informaie din interiorul unei nregistrri. 4. Sistem de Gestiune a Bazelor de Date (SGBDV. Produs software destinat gestionrii datelor i informaiilor coninute ntr-o baza de date. SGBD-ul asigur operaii de creare (generare), actualizare, interogare, listare i ntreinere pentru bazele de date. SGBD-ul conme de regul un limbaj de definire a datelor (DDL) si un limbaj de prelucrare a datelor (DML). 5. Administratorul bazei de date: Persoana care are responsabilitatea gestionrii coninutului bazei de date. Asigur n principal operaiile de ntreinere i are n responsabilitate suporii fizicii pe care se afl baza de date. Observaii: 1. Numele atribuit cmpurilor unei nregistrri dmtr-o baza de date rmn neschimbate pentru toate nregistrrile coninute n baza de date; 2. Datele originale coninute n baza de date rmn nemodificate chiar dac n urma prelucrrilor s-au obinut diverse liste cu informaii coninute n baza de date; ntrebri recapitulative: 1. Care este diferena dintre data i informaie9 2. Ce este o baza de date0 Care este diferena dintre un fiier i o baz de date? 3. Ce se nelege prin conceptul de subschem a bazei de date0 Care este relaia dintre subschem bazei de date i utilizatorii bazei de date0 4. Ce se nelege prin conceptul de schem a bazei de date0 Ce relaie exist ntre schema bazei de date i administratorul bazei de date ? 5. Definii termenii de banc de date. S.G.B.D., echipamente. Ce legtur exist ntre aceti termeni0 6. Definii conceptele de sistem informaional i sistem informatic0 Ce legtur exist ntre aceste concepte0 7. Definii termenii: nregistrare, cmp, lungimea cmpului. Exist vreo legtur ntre aceti termeni? 8. Definii termenul de cmp a unei nregistrri i termenul de valoare al cmpului unei nregistrri. 17 9. Ce diferen exist ntre structura unei nregistrri i coninutul unei

nregistrri 10. Utilizatorul final ai bazei de date lucreaz cu schema bazei de date sau cu subschema bazei de date?

1.2. Organizarea dateior n baza de date


1.2.1, Entitate, obiect (atribut), legturi (asocieri) ntre entiti Prin entitate nelegem un obiect, un fenomen, un proces din lumea real despre care ne intereseaz s avem informaii n cadrul sistemului. O entitate poate fi o persoan, un loc, un obiect, eveniment sau idee pentru care dorim s memorm i prelucrm datele?Pentru exemplificarea conceptelor de entitate, obiect i dat, precum i a legturilor dintre ele, s analizm activitatea de gestiune date din cadrul secretariatului unei faculti. n cadrul acestei aplicaii putem identifica urmtoarele entiti: PROFESORI, MATERII, STUDENI, SALI_CLASA etc. Reprezentarea grafic a acestor concepte i a legturilor dintre acestea este reprezentat n fig. nr. 1. Ins numai aceste noiuni nu sunt suficiente pentru modelarea organizrii datelor n baza de date, deoarece lipsesc legturile semantice ntre entiti i n interiorul acestora. Pentru descrierea unei activiti pentru care s-au cules deja datele se folosete aa numitul model entitate-iegtur. n cadrul modelului entitate-iegtur sunt puse n eviden componentele importante ale sistemului (entitile), proprietile acestor componente (atributele) i legturile dintre entiti (asocierile).

1.2.2. Modele conceptuale pentru Sisteme de Gestiune a Bazelor de Date Modelul conceptual pentru un Sistem de Gestiune al Bazei de Date este modelul utilizat pentru descrierea structurii conceptuale (schemei) i structurii logice (subschemei) a datelor, precum i a legturilor dintre acestea existente ntr-o baz de date, El se particularizeaz prin modul de definire al entitilor, cmpurilor, tipurilor de nregistrri, legturilor dintre coleciile de date i prin terminologia utilizat. Modelul conceptual nu trebuie confundat cu structura de reprezentare a datelor, deoarece pentru aceeai structur de reprezentare pot exista mai multe modele conceptuale i desigur c pentru diferite structuri de reprezentare, se poate elabora un singur model conceptual. In practica prelucrrii automate a datelor, s-au consacrat urmtoarele modele conceptuale: modelul conceptual "ierarhic", modelul conceptual,.reea", modelul conceptual relaional". Modelul conceptual "ierarhic" se bazeaz pe structuri de reprezentare "arborescente" i tipuri de legturi 1:1, l:n. Cu ajutorul modelului conceptual "ierarhic", schema bazei de date poate fi reprezentat sub forma unui graf arborescent (cu un nod rdcin) n care nodurile exprim coleciile de date, iar 19

arcele reflect legturile de asociere ntre nregistrrile coleciilor de date superioare i inferioare. Caracteristicile acestui model sunt: accesul direct este posibil numai la nregistrrile din colecia de date rdcin; accesul la nregistrrile coleciilor de date inferioare se face prin specificarea tuturor coleciilor, care se gsesc pe drumul de acces (toate coleciile care se afl n subordonare ierarhic ntre colecia rdcin i colecia cercetat). toate nregistrrile din colecia bazei de date, cu excepia coleciei de date rdcin, au cte o nregistrare superioar. n prezent se afl n exploatare mai multe SGBD-uri , fundamentate pe modelul ierarhic ntre care menionm: GIS (IBM), IMS (IBM), IDMS(UNIVAC), etc. Modelul conceptual "reea" se bazeaz pe structura de reprezentare "reea" i pe tipurile de legturi 1:1, 1 :n i m:n. Prin acest model schema bazei de date poate fi reprezentat sub forma unui graf general, fr limite, n care nodurile exprim colecii de date, iar arcele reflect relaiile de asociere. Caracteristica principal este aceea c accept ca orice colecie de date s se situeze la nivelul 1, prin indicarea explicit a relaiilor dintre acestea. n plus accept existena temporar a nregistrrilor fr legaturi cu alte nregistrri i permite nregistrarea unic a nregistrrilor n baza de date. Potrivit acestui model, legturile fizice pe suport se fac prin intermediul unor caracteristici distincte ale structurilor sale (pointeri), a cror nregistrare exprim adresa pe suport a nregistrrii superioare sau a nregistrrii inferioare. Acest model conceptual st la baza SGBD-unlor TOTAL(UNIVAC), DBMS(DEC) i SOCRATE. Modelul conceptual relaional a fost elaborat de matematicianul C F.Codd de la firma IBM. In acest model, conceperea schemei depinde exclusiv de legturile dintre obiecte. Modelul relaional permite o descriere simpl a bazei de date sub forma unor tabele n care actualizarea datelor n tabele se face fr anomalii de stocare. n modelul relaional o colecie de atribute (cmpuri) formeaz o relaie (numit i tabel). O relaie poate fi reprezentat printr-o tabel, n care fiecare rnd reprezint un tuplu (o nregistrare) distinct, iar fiecare coloan reprezint un cmp al nregistrrii, cmp ce ia valori ntr-un anumit domeniu. Cu ajutorul modelului relaional structura conceptual a bazei de date poate fi reprezentat sub forma unei mulimi de tabele, care se asociaz ntre ele prin intermediul unor chei. Modelul conceptual relaional prezint o serie de avantaje:

20

este uor accesibil pentru utilizatorii mai puin iniiai n informatic, prin faptul c baza de date este reprezentat ca o colecie de tabele; este un model omogen de reprezentare a legturilor dintre coleciile de date (prin relaii); asigur independena programelor fa de structura datelor; permite proiectarea unei structuri conceptuale optime a datelor, cu ajutorul operaiei de normalizare;

admite satisfacerea cerinelor ntmpltoare ale utilizatorilor, prin intermediul unor limbaje bazate pe algebra relaiilor sau a unor limbaje neprocedurale bazate pe teoria predicatelor. Din aceast categorie a SGBD relaionale menionm: dBASE, produs elaborat de firma Ashton Tate (n prezent dezvoltat de firma Borland), implementat pe microcalculatoare compatibile IBM sub sistemul de operare DOS i UNIX ; FoxPro, implementat pe microcalculatoare PC compatibile IBM sub sistemul de operare DOS. WINDOWS, MAC i UNIX; ORACLE: operaional pe IBM-PC sub sistemele DOS, WINDOWS i UNIX precum i pe calculatoare de mare capacitate; SQLServer, produs de firma Microsoft: INGRES, conceput de Universitatea Berkeley, instalat pe mmicalculatoare sub sistemul de operare UNIX i lucreaz n regim de multiutilizator; INFORMIX, operaional sub sistemul de operare SOLARIS. - DB2, operaional pe microcalculatoare IBM, etc. ntrebri recapitulative: 1. 2. 3. 4. Definii termenii: entitate, obiect, atribut, legtur ntre entiti. Ce tipuri de legturi exista ntre entiti? Ce modele conceptuale de organizare a datelor cunoatei0 Dai exemple de SGBD-un care gestioneaz baze de date: ierarhice, reea, relaionale. 5. Ce legtur exist ntre conceptul de tabel i conceptul de entitate n modelul relaional1?

1.3. Baze de date relaionale i S.G.B.D.R.


Cuvinte cheie: Tabel, rnd, coloan, cheie primar, cheie candidat, cheie alternant, cheie compus, cheie strin. 21 atribut noncheie, entitate subtip, restricii de integritate, anomalii, normalizare.

1.3.1. Relaii (Tabele)


Din cele prezentate pn acum rezult c o baz de date relaional este memorat n tabele. O tabel are o structur bidimensional format din rnduri i coloane. Termenii tabel, rnduri i coloane sunt mai frecvent ntlnii dect termenii echivaleni: relaie pentru tabel, tuplu pentru rnd i atribut pentru coloan. Nu trebuie confundat conceptul de relaie n sensul de legtur sau asociere care intervine n modelul entitate-relaie definit n capitolul anterior. O relaie conine tuple (rnduri) i atribute (cmpuri). In figura 3 se prezint o structura de date bidimensionala ( un fragment din tabela CLIENI):

CLIENI: Cod client Nume client 2121 Ion Popescu 3456 Gergeta Pana 4612 Ana Grigore 7562 Victor Avram Fig. nr. 3 - Fragment din tabela CLIENI

Telefon 6305643 6267892 3128867 3245276

Tabela CLIENI include numai caracteristicile unui client, alte tabele din baza de date conin alte entiti, de exemplu tabela COMENZI, tabela PERSONAL etc. n acest context putem defini baza de date relaional ca o colecie de relaii.

1.3.2 Tipuri de chei i identificarea nregistrrilor prin chei


Cheia primar asigur unicitatea fiecrui rnd dintr-o relaie. O cheie primar este un atribut, sau o colecie de atribute, a crui valoare identific unic fiecare rnd al unei relaii. Pe lng unicitate, cheia primar trebuie s fie i minimal (adic s nu conin atribute n plus) i s nu-i schimbe valorile n timpul prelucrrii. n figura 4 se prezint un exemplu de relaie cu cheile ei.
22

JUDEE: Codjude AB AG BV CJ HD
.. . - >-.-

Numejude Alba Arge Braov Cluj Hunedoara

Nrjude 01 02 06 12 23

Populaia 450350 860400 1500200 1720300 980500

Reedmjud Alba Iulia Piteti Braov Cluj Napoca Deva

Fig. nr. 4 - Relaia JUDEE Un atribut sau o colecie de atribute, care poate seni ca i cheie primar se numete cheie candidat. De exemplu, atributele Codjude i Nrjude sunt chei candidate. n proiectarea bazei de date relaionale se poate alege una din cheile candidate, ca i cheie primar, iar celelalte candidate ca i chei alternante. Un atribut multiplu folosit ca i cheie primar se mai numete i cheie compus (concatenat sau compozit). Cheia extern este un atribut sau o colecie de atribute a unei relaii a crui valoare trebuie s fie valoare pereche a cheii primare din cadrul relaiei primare. Spre exemplu, dac avem dou tabele: LOCALITI i JUDEE, n care un atribut apare n ambele tabele. Atributul Codjude n tabela JUDEE este cheie primar, iar n tabela LOCALITI este cheie extern.

1.3.3. Scrierea relaiilor bazei de date sub forma canonic


O metod practic pentru identificarea relaiilor ce constituie o baz de date const n a scrie numele relaiei (cu litere mari) urmat n parantez de numele atributelor (prima liter din numele atributului este liter mare). Atributele subliniate din parantez reprezint chei primare, iar cheile externe din relaie, se scriu imediat dup nchiderea parantezei care definete relaia. Folosind aceasta metod, relaiile folosite mai sus se pot scrie astfel: ARI (Codjar. NumeJar, Populaie) CAPITALE (Numejapital. Codjar, Anul, Populaie) Cheie extern: Codjara, pentru legtura cu tabela RI. ORAE(Cod ar, Cod ora. Codjude, Nume_ora, Populaie) Cheie extern: Codjar, pentru legtura cu tabela RI. CULTURI ( Nume cultur. Export, Import)
23

PRODUCIE ( Cod tar. Nume cultur. Producie) Cheie extern: Cod_ar, pentru legtura cu tabela RI Cheie extern: Nume_cultur, pentru legtura cu tabela CULTURI TRANSPORT (Cod tar. Litoral, Export, Import) Cheie extern: Cod_tar, pentru legtura cu tabela RI

1.3.4. Anomalii ntlnite n proiectarea relaiilor


n timpul exploatrii unui SGBDR pot s apar probleme delicate legate de gestionarea relaiilor care includ grupuri repetitive sau atribute aflate n dependen pariala sau n dependen tranzitiv. Problemele cauzate de redundan, de dependena parial i de dependena tranzitiv se numesc anomalii, deoarece ele sunt iregulariti ale tabelelor. Anomaliile sunt de trei tipuri: anomalii de inserare, anomalii de tergere i anomalii de actualizare. a) O anomalie Ia inserare apare cnd nu se poate aduga un rnd la aceast tabel deoarece nu tim valoarea ntregii chei primare. b) O anomalie de tergere apare cnd se terg date dintr-o relaie i neintenionat prin aceasta se pierd date importante din acea relaie. c) O anomalie de actualizare apare cnd se schimb valoarea unui atribut i SGBDR-ul trebuie s fac mai mult dect o schimbare n baza de date sau altfel spus cnd baza de date dup efectuarea schimbrii conine date inconsistente. Procesul de identificare si eliminare a anomaliilor se numete normalizare. n procesul de normalizare se pornete de la o colecie de relaii (tabele), se aplic un set de reguli de eliminare a anomaliilor care apar in aceast colecie i se obine o nou colecie de relaii (tabele) lipsit de probleme. Acest set de reguli utilizate se numesc forme normale. De un interes deosebit pentru scopurile urmrite n acest curs sunt primele trei forme de normalizare notate cu FN1, FN2, FN3.

1.3.5 Etape de realizare a aplicaiilor informatice cu baze de date


Pentru informatizarea lucrrilor aferente unei aplicaii ce se desfoar n cadrul unui sistem informaional al unui agent economic, trebuie s se realizeze o analiz riguroas a cerinelor aplicaiei, cerine care de regul sunt numai parial exprimate de ctre beneficiar, n scopul prevenirii unor situaii delicate n care aplicaia informatizat realizat nu corespunde cerinelor (aplicaia nu este acceptat de ctre beneficiar). Complexitatea unei aplicaii, exprimat prin
24

volumul mare al datelor, ana geografic de rspndire a utilizatorilor, timpul de rspuns la cererile utilizatorilor, modul de actualizare a datelor, ridic o serie de aspecte privind organizarea datelor n baza de date. n scopul obinerii unor performane n exploatarea acestei aplicaii. In procesul de elaborare a unei aplicaii informatice cu baze de date se parcurg urmtoarele etape:

a) Analiza cerinelor aplicaiei Orice aplicaie informatic se proiecteaz pentru a rspunde cerinelor unui beneficiar. Procesul de analiz a cerinelor ncepe cu nelegerea corect i complet a solicitrilor beneficiarului i continu cu analiza detaliat a funciunilor sistemului analizat i a modului de structurare a datelor. In urma acestui proces rezult punctele critice (problemele i deficienele) ale sistemului existent, generate de regul de redundana datelor, duplicarea proceselor de prelucrare i de timpul mare de rspuns datorat prelucrrilor manuale. Aceste puncte critice ale sistemului existent trebuie s fie nlturate prin realizarea de aplicaii informatice cu baze de date. In urma acestei etape rezult specificarea n detaliu a cerinelor funcionale i a restriciilor de realizare a aplicaiei informatice cu baza de date. Din activitatea de analiza rezult modelul conceptual al aplicaiei cu baze de date. b) Proiectarea aplicaiei In aceast etap se specific componentele aplicaiei: ieiri, intrri, baza de date, fluxul de informaii, modulele aplicaiei, proceduri de ncrcare, actualizare i exploatare a bazei de date. In cadrul acestei etape accentul cade pe proiectarea structurii bazei de date n scopul asigurrii eficienei aplicaiei, eficien raportat la criteriul cost-performane. Din diagramele construite n etapa de analiza se alege SGBD-ul i se proiecteaz schema conceptuala, schema logica i schema fizica a bazei de date. Proiectarea schemei conceptuale a bazei de date se realizeaz, utiliznd tehnica normalizm pentru eliminarea anomaliilor care pot s apar m exploatarea bazei de date. De un interes deosebit pentru eliminarea anomaliilor de inserare, tergere sau modificare a datelor sunt primele trei forme de normalizare notate cu FN1, FN2, FN3. Forma normala 1 (FN1). O tabel este n FN1, dac toate cmpurile sunt la nivel elementar i nu exist cmpuri repetitive. Forma normala 2 (FN2): O tabel este n FN2, dac este n FN1 i toate atributele non-cheie depind funcional complet de cmpul cheie (nu

conine dependene pariale) 25 Forma normala 3 (FN3): O tabel este n FN3, dac este n FNz i exist dependee tranzitive.
Ameliorarea succesiva a schemei conceptuale a bazei de date se asigura n urma trecerii schemei conceptuale prin cele trei forme de normalizare.

Proiectarea schemei logice a bazei de date , consta n definirea structurii tabelelor componente sub forma: Structura losica a tabelei STUDENI: NrMatricol N 4 (numrul matricol al studentului) Nume C 15 (nume student) Prenume C 15 (prenume student) DataN D 8 (data naterii) Loc C 20 (Localitatea naterii) AnUniv C 7 (An universitar sub forma 2004/05) AnStudii N 1 (Anul de studii) Grupa N 3(Nr. Grupei) Proiectarea .schemei fizice a unei baze de date evideniaz organizarea datelor pe suport fizic extern de memorare a datelor, adic precizeaz dispunerea datelor n memoria extern. Fiecrei tabele (relaii), din schema logic a bazei de date, i va corespunde o reprezentare fizic (fiier). Rezultatul proiectrii schemei fizice este stabilirea structurii de memorare fizic a datelor i definirea cilor de acces la date. Operaiile care se fac la proiectarea schemei fizice sunt: estimarea spaiului fizic necesar pentru memorarea bazei de date i definirea unui model fizic de alocare; - definirea indecilor pentru accesul direct la date; construirea de clustere" pentru a optimiza accesul la anumite date de ctre anumii utilizatori. c) Elaborarea aplicaiei Modulele aplicaiei informatice cu baza de date, definit n etapa de proiectare, urmeaz s fie testate i integrate n ansamblul aplicaiei. Dezvoltarea acestor module se face de regul folosind fie limbajul de programare oferit de SGBD-ul ales, fie utiliznd generatoarele de aplicaii puse la dispoziie de acest SGBD. d) Implementarea i exploatarea aplicaiei informatice n cadrul etapei de implementare a aplicaiei informatice cu baze de date se disting urmtoarele faze: 26 punerea n funciune a aplicaiei, faz n care trebuie s se asigure resursele hardware i software necesare rulrii aplicaiei; ncrcarea bazei de date i testarea aplicaiei n ansamblul ei; asigurarea condiiilor de exploatare curent a aplicaiei la parametrii

prevzui; adaptarea structurii bazei de date i a aplicaiei la dinamica cerinelor utilizatorilor, la schimbrile tehnice i organizatorice care pot interveni.

1.4. Exerciii i lucrri practice de laborator


STUDIU DE CAZ ( Proiectarea unei aplicaii cu baze de date). Agentul economic PROGRESIV SA., care produce o gam de produse din plastic, gestioneaz o baz de date numit PROGRES, ce conine datele necesare procesului decizional pentru toate domeniile de activitate ale firmei : Cercetare-Dezvoltare, Producie, Comercial, Personal, Financiar-Contabil. Structura schemei conceptuale iniiale a acestei baze de date este: PRODUSE (Cod_Produs, Den_Produs, Pre_cost, Calitate) MAINI (CodJMain, Trimestru, Cost_ntreinere, Cod_Produs, Capacitate) PRODUCIE (Cod Produs, Cod_Main. Trimestru, Cant^Semifabricat. Cant_Fimt) MATERII_PRIME ( Cod_MP, Denumire, Trimestru, Cant_Aprov, Cant_Livrat, Stoc) CERCETARE (Cod_Produs, Trimestru, Costuri, Rentabil) TRANSPORT (CodJProdus, Trimestru, CodJPia. Cant_Depozit, Cant_Fabric) PIA (Cod_Pia, Denumire, Trimestru, Cod_Produs, Pre_Vnzare, Cant_Vndut, Cant_Aprov, Stoc) PERSONAL (Tip_Personal, Denumire, Angajri, Lichidri, Specializri, Concediu, Salar_Orar) COSTURI_SFABRICAT( Cod_Produs, Salarii, Cost_Mat_Prime, Cheltuieli_Generale) COSTLJRI_PFINrrE (Cod_Produs, Salarii, Cost_Mat_Pnme, Cheltuieli_Generale) Se cere: 1) Analizai i eventual completai structura acestei baze de date i eliminai anomaliile care pot s apar n exploatarea acestei baze de date (anomalii provocate de grupurile repetitive, dependentele pariale i dependenele tranzitive) 2) S se proiecteze o machet de preluare a datelor de intrare prin care s se introduc simultan date n mai multe tabele legate ale bazei de date. (Se cere un numr minim de machete de preluare) 3) Sa se proiecteze un raport privind Producia de semifabricate i Produse Finite, pentru un trimestru dat; 4) S se proiecteze un raport privind Stocurile de materii prime, pentru un trimestru dat; 5) S se proiecteze un raport privind Personalul ntreprinderii, pentru un trimestru dat; 6) S se proiecteze un raport privind Vnzarea pe diverse piee, pentru un trimestru dat; 7) S se proiecteze un raport privind Costurile pentru semifabricate,

pentru un trimestru dat; 8) S se proiecteze un raport privind Costurile pentru produsele finite, pentru un trimestru dat;

Capitolul 2 PREZENTAREA SISTEMULUI FOXPRO


Se studiaz: 1. 2. 3. 4. 5. Componentele funcionale ale sistemului Lansarea i modul de lucru sub SGBD Foxpro Tipuri de fiiere n FOXPRO Consideraii generale privind comenzile Foxpro Elemente ale limbajului de descriere i interogare a bazei de date constante, variabile i operatori funcii comenzi

FOXPRO este un Sistem de Gestiune a Bazelor de Date (SGBD) de tip relaionala El este un instrument performant pentru toate aplicaiile de gestiune cu baze de date. Pentru a marca cteva date semnificative din evoluia sistemului FOXPRO amintim ca la sfritul anilor :70 firma Asthon-Tate a realizat produi dBASE II care a constituit punctul de plecare al SGBD-urilor din gama xBASE. In anii '80 se dezvolta produsul FOX , produs pseudorelational dar deosebit de rapid, dezvoltat de ctre firma Fox Software. In anul 1991 apare FoxPro 2.0 care devine lider autoritar al produselor de acest gen. In anul 1992, firma Fox Software este preluata de ctre Microsoft, care a dezvoltat versiunile 2.5 si 2.6 ale produsului FoxPro sub MS-DOS, Windows, Mac si UNIX, utilizate pe microcalculatoare ca staii de lucru individuale sau in reea locala LAN. In anul 1995, Microsoft lanseaz versiunea Visual Foxpro 3. care a fost urmata in 1997 de versiunea 5 si m anul 1998 apare versiunea Visual FoxPro 6 ca parte componenta a pachetului Visual Studio 6.0, alturi de alte produse de tip Visual ca: Basic, C++, Java++, InterDev. Toate aceste produse ofer compilri rapide, depanare eficienta si interactiva, HTML ca interfaa pentru aplicaii tip multimedia si compatibilitate cu toate produsele din pachetele VISUAL STUDIO si OFFICE precum si dezvoltarea aplicaiilor in reea structurata pe trei nivele (date, procese, interfaa utilizator).

29

2,1. Componentele funcionale ale sistemului

Principalele componente funcionale ale sistemului Foxpro sunt urmtoarele: Nucleul Foxpro, care conine cele dou limbaje ; de descriere a datelor (DDL); de manipulare a datelor (DML). Pentru manipularea datelor FOXPRO pune la dispoziia utilizatorilor: Comenzi pentru crearea, actualizarea, interogarea, listarea i ntreinerea bazelor de date ; Meniuri pentru gestionarea bazelor de date ; Limbajul de programare FoxPro, un limbaj procedural care permite crearea, actualizarea, interogarea, listarea i exploatarea bazelor de date; Limbajul SQL, un limbaj neprocedural, care este standardul pentru clasa limbajelor relaionale i care permite , de asemenea, crearea, actualizarea i interogarea bazelor de date. Generatoarele sistemului, care permit, printr-un dialog interactiv cu utilizatorul i un efort minim de programare, realizarea unor module sau aplicaii complexe, cum sunt: Generatorul de Rapoarte (REPORT WRITER); Generatorul de Ecrane ( SCREEN BUILDER); Generatorul de meniuri (MENU BU1LDER); Generatorul de Aplicaii (Foxpro APPLICATION) Generatorul de etichete (LABEL DESIGNER) Generatorul de Proiecte (PROJECT MANAGER) Generatorul de Interogri (RQBE/SQL) FOXPRO dispune de un set de Instrumente pentru instruirea i asistarea utilizatorului (programul Tutorial al lui Foxpro, sistemul Help, facilitile de lucru cu programele tip Wizard, etc); Utilitarele sistemului Foxpro, care sunt specializate pentru realizarea unor anumite funcii, cum sunt: TEXT EDITOR),' Utilitarul pentru gestionarea fiierelor, Utilitarul pentru formatarea programelor surs; Utilitarul pentru generarea documentaiei. FOXPRO are urmtoarele tipuri de Kituri: Distribution Kit, care permite realizarea aplicaiilor Foxpro i livrarea lor n format executabil (fiiere de tip .EXE), n variantele Runtime i Standalone. Coimectivity Kit, care permite realizarea de aplicaii Client-Server prin conectarea la un server Oracle, SQL, Library Construction Kit, care permite utilizarea sau crearea bibliotecilor de finiii C. Trace /Debug, care permite programatorului s urmreasc i s depaneze relativ uor codul programului surs, afind ntr-o fereastr Debug
30

valorile expresiilor i variabilelor de lucru utilizate, pe parcursul execuiei programului.

2.2. Lansarea i modul de lucru sub SGBD Foxpro


Lansarea n execuie a SGBD-ului Foxpro se poate face ntr-unui din urmtoarele moduri: sub Windows, se poziioneaz indicatorul mouse pe iconul Foxpro i dublu click. sub Windows 95...98 , 2000 se mai poate lansa n modul de lucru obinuit cu orice program, adic: Start, de aici se selecteaz Programs i apoi din lista afiat , click mouse pe numele programului dorit - Foxpro. Dac totul decurge normal, Foxpro este ncrcat n memorie i se prezint utilizatorului afind un ecran de forma: Moduri de lucru in FoxPRO Dup lansarea produsului FoxPro utilizatorul poate lucra in urmtoarele moduri: prin comenzi, prin meniuri ale sistemului, prin limbajul de programare FOXPRO, prin generatoare automate, prin limbajul SQL, sau o combinaie a tuturor acestor moduri de lucru. Ecranul principal FoxPro conine o fereastra tip Microsoft (vezi fig. 1) cu urmtoarele elemente: bara de titlu (cu numele produsului ) si butoanele de minimizare,maximizarea ferestrei, ieirea de sub FoxPro; bara meniului sistem care conine un meniu orizontal cu opiunile de lucru : File, Edit, Vievv, Format, Tools, program, Windows, Help. La selectarea unei opiuni apare un submeniu vertical, de unde se se selecteaz opiunea dorita (in modul de lucru prin meniu sistem); bara de unelte care conine butoane dispuse orizontal, care sunt sau nu active funcie de starea curenta de lucru. Prin aceste butoane se poate apela (pe o alta cale, prin modul de lucru prin meniu sistem) o anumita opiune din sistem; fereastra de comanda care conine cursorul si care permite tastarea unei comenzi sau apelul unui program (in modul de lucai prin comenzi) bara de stare situata in partea de jos a ferestrei principale, unde se afieaz starea execuiei curente. Bara lipsete daca a fost executata comanda SET STATUS OFF; aria de ieire (formata din restul spaiului neocupata) este destinata afirii rezultatelor obinute in urma execuiei unei comenzi sau a unui program.

Corespunztor imaginii de pe ecran, Foxpro permite utilizatorului mai multe modaliti de lucru, i anume: Modul de lucru prin Comenzi se desfoar in fereastra de comanda

din ecranul principal. Aici se afla cursorul si utilizatorul poate lucra in stil intrpreter sau in stil compilator. Stilul interpretei-, inseamna ca se tasteaz o comanda FoxPro si apoi se apas tasta Enter. Sistemul preia comanda , o interpreteaz si daca nu sunt erori o lanseaz in execuie. Rezultatul este afiat in aria de ieire din ecranul principal. Daca se detecteaz o eroare la interpretarea comenzii, atunci se afieaz un mesaj explicativ si comanda trebuie corectata corespunztor.
32

Stilul compilator permite dezvoltarea programelor scrise in codul sursa al limbajului FoxPro. Se apeleaz editorul de texte (MODI COMM) care ne plaseaz intr-o fereastra specifica, unde se tasteaz codul sursa al aplicatioei, iar la ieire (prin apsarea tastei CTRL/W) rezulat un fiier cu extensia .PRG. In continuare se apleaza programul sursa ( DO nume) care este compilat, link-editat si rulat. Pentru a obine un fiier executabil (de tip .EXE) este nevoie de componenta RUN TTME . Progamul executabil poate fi rulat pe orice tip de calculator, sub sistemul de operare Windows, fara a mai fi nevoie de sistemul FoxPro. Acest mod de lucru este dedicat ndeosebi specialitilor, programatorilor de aplicaii Foxpro, care cunosc facilitile i performanele limbajului de programare Foxpro.

Modul de lucru meniu sistem - permite utilizatorului sa apeleze toate instrumentele si mtrfetele sistemului FoxPro. Acest mod de lucru se recomanda utilizatorilor care prefera dezvoltarea aplicaiilor cu ajutorul generatoarelor. Efortul depus pe aceasta cale este redus si nu se programeaz in cod sursa. Opiunile de lucru sunt dispuse intrun meniu principal orizontal si fiecare genereaz un submeniu vertical, rezultnd astfel un sistem de meniuri. Observaii: 1. Trecerea de la modul de lucru comanda la cel lip meniu este cu trecerea controlului de la fereastra de comenzi la meniul principal i invers. Acest lucru se realizeaz uor prin intermediul tastei FIO sau efectund un cick mouse pe meniu sau n fereastra de comenzi. Saltul de pe bara de meniu n fereastra de comenzi se poate face astfel: apsnd tasta FIO sau ci ick mouse n fereastra de comenzi sau apsnd tasta Fsc sau Alt Saltul din ferestra de comenzi pe bara meniului principal se poate face astfel: apsnd tasta F10 sau click mouse pe opiunea dorit din meniu (sau pe oricare dintre ele) sau apsnd tasta Alt sau apsnd tasta Alt i litera "ficrbinte,r din opiunea dorit 2. Ferestrele Foxpro pot fi deschise. nchise, ascunse, mrite sau micorate (redimensionate). mutate, activate sau inhibate^, dotate cu posibilitatea de defilare a imaginii n interiorul lor, colorate sau desenate dup imaginaia i personalitatea programatorilor de aplicaii sub Foxpro. Pentru

toate aceste operaii, Foxpro pune la dispoziia utilizatorilor o serie de comenzi "de lucru cu ferestre". 2.3. Tipuri de fiiere n FOXPRO FOXPRO lucreaz cu un mare numr de tipuri de fiiere dintre care trebuie s reinem pe cele mai importante: Baze de date (DBF); Fiier index multiplu (.MDX); Fiier index simplu (.NDX); Fiier catalog (.CAT); Fiier cu viziuni (.VUE); Fiier ecran (. SCR); Program sau fiier de comenzi (.PRG); Fiier de tip memo (.DBT); Fiier format de raport (.FRM); Fiier format de etichet (.LBL); Fiier de extracie (.QBE); Fiier de salvare (.BAK). Pentru baza de date propriu zis, cu extensia .DBF se va utiliza noiunea de baz de date , celelalte vor fi denumite fiiere.

2.4. Consideraii generale privind comenzile Foxpro


O comand Foxpro este o aciune ce se cere a fi executat de SGBD-ul Foxpro, prin intermediul limbajului pus de acesta la dispoziia utilizatorului. Sintaxa general a unei comenzi Foxpro este: <comand> [<Iist de expresii>] [<domeniu>] [FOR <condiie>] [WHILE <condiie>] unde: <comand> reprezint un nume de comand Foxpro; - parantezele drepte indic aspectul de facultativ al elementului nominalizat. n interiorul lor; parantezele unghiulare arat c trebuie s se precizeze valoarea specific elementului respectiv; bara oblic indic posibilitatea unei alegeri; <lista> reprezint un grup de elemente separate de regul prin virgul; <domeniu> definete nregistrrile asupra crora se aplic comanda. - Asupra comenzilor Foxpro se fac urmtoarele precizri: Linia de comand conine o singur comand Foxpro i se ncheie prin acionarea tastei Enter; Lungimea unei linii de comand lansat n fereastra de comenzi sau n program poate fi de maximum 254 caractere; Linia de comand poate fi scris cu majuscule sau cu litere mici sau cu orice combinaie a acestora;

Cuvintele cheie ale comenzilor Foxpro pot fi abreviate (prescurtate) la cel puin primele 4 caractere. Dac se scriu mai multe caractere. acestea trebuie s fie corecte. Cuvintele sunt separate prin unul sau mai multe spaii. Foxpro dispune de o memorie tampon (numit i istoricul comenzilor), unde se pstreaz ultimele comenzi transmise. Vizualizarea comenzilor memorate n istoric se realizeaz prin comenzile DISPLAY fflSTORY i LIST HISTORY. Prin utilizarea tastelor direcionale (cu sgei) se pot apela comenzile anterioare. Astfel, fr a mai tasta din nou o linie de comand anterioar, o cutm n fereastra de comenzi i ne poziionm pe ea cu ajutorul tastelor cu sgei, apoi apsam Enter. - Fiecare comand Foxpro prelucreaz n mod implicit un anumit tip de fiier (Ex. Use , Copy - fiiere tip .DBF, Report form ... - fiier tip .FRM, Modify command - fiier .PRG, etc). De aceea, n mod normal, utilizatorul va specifica, atunci cnd se cere, doar numele fiierului, tipul acestuia fiind automat gestionat de sistem. Dac ns utilizatorul va specifica nume.tip pentru fiierul cerut, atunci acesta va fi luat n considerare i va trebui precizat de fiecare dat cnd se face referire la fiierul respectiv. Domeniul de aciune al comenzilor Foxpro

Comenzile Foxpro de prelucrare a datelor au cte un domeniu de aciune implicit, care poate fi: fie nregistrarea curent, fie toate nregistrrile tabelei active. Acest domeniu poate fi modificat, astfel nct comanda s acioneze asupra domeniului dorit de utilizator, prin 2 metode: a) Prin specificarea expres a domeniului dorit, cu ajutorul urmtoarelor cuvinte cheie: Cuvinte cheie ALL NEXTn RECORD n REST Semnificaie Comanda acioneaz asupra tuturor nregistrrilor din tabela activ Comanda acioneaz asupra urmtoarelor n nregistrri, ncepnd cu cea curent, din tabela activ Comanda acioneaz asupra nregistrrii cu numrul n (specificat) din tabela activ Comanda acioneaz asupra tuturor nregistrrilor rmase, de la cea curent i pn la sfrit, din tabela activ

Se impun urmtoarele precizri: Pentru a avea acces la datele dintr-o tabel, ea trebuie s fie mai nti deschis. O tabele deschis se numete activ, Se numete nregistrare curent - nregistrarea supusa prelucrrii la un moment dat i pe care se afl pointerul tabelei.

b) Prin introducerea, n cadrul comenzii Foxpro, a unei expresii condiionale, cu ajutorul cuvintelor cheie FOR sau VVH1LE. Comanda va putea avea astfel formatul: - <comand> FOR <condiie> In acest caz, comanda va aciona asupra acelor nregistrri din tabela activ (sau numai din domeniul specificat) pentru care condiia specificat este adevrat (are valoarea logic TRUE-adevrat). - <comand> \VHILE <condiie> In acest caz, comanda va aciona asupra nregistrrilor, atta timp ct condiia specificat rmne adevrat. Se observ c o astfel de cerin poate fi util doar dac nregistrrile tabelei active sunt grupate, ordonate dup criteriul specificat n condiie.

2.5. Elemente ale limbajului de descriere i interogare a bazei de date


Limbajul Foxpro utilizeaz urmtoarele elemente: constante, variabile i operatori funcii comenzi 36

2.5.1. Constante
Constantele sunt entiti cu valoare invariabil, autodefinit. Foxpro utilizeaz urmtoarele tipuri de constante: constante numerice ( ex. numere 7 5.4 -452.85); constante de tip ir de caractere, cuprise ntre ghilimele, apostroafe sau paranteze drepte, ca delimitatori (exemplu: 'PROGRAM DE GESTIUNE A STOCURILOR') constante logice cu valorile logice: .T. (True), .. (Yes) - pentru Adevrat .F. (False), .N. (No) - pentru Fals. constante de tip dat calendaristic, cuprinse ntre paranteze de tip acolad ca delimitatori (ex i 10/30/99 f")

2.5.2. Variabile
Sub SGBD-ul Foxpro, variabilele de memorie sunt de 2 tipuri: variabile de memorie create de utilizator - variabile de memorie sistem Variabilele create de utilizator pot fi: cmpuri de date din nregistrrile tabelelor active (create odat cu tabelele i descrise n structura acestora) variabile de memorie (independente) Variabilele de memorie sunt entiti a cror valoare poate fi

modificat, servind pentru memorarea temporar a datelor. Spre deosebire de cmpurile de date, care sunt descrise de utilizator la crearea tabelei, variabilele de memorie se aloc i se elibereaz n mod dinamic, funcie de natura i lungimea datelor memorate n ele. Asemenea cmpurilor de date, variabilele se caracterizeaz prin cele 3 elemente de descriere: - nume - tip lungime Numele variabilei servete pentru identificarea sa i respect regula numelui de cmp de date. adic este un cuvnt alfanumeric, format din cel mult 10 caractere i avnd primul caracter o liter. De regul el sugereaz coninutul informaional al variabilei. Tipul variabilei definete tipul datei memorate temporar. Ca i constantele i cmpurile de date, ele pot fi de tip:
37

numeric - memoreaz o dat numeric; ir de caractere - memoreaz orice combinaie de caractere; logic - memoreaz o valoare logic de Adevrat sau Fals; dat calendaristic - memoreaz o dat calendaristic, sub formatul standard american de LL/ZZ/AA; masiv - memoreaz date structurate sub forma unui tablou (definite sub forma unui vector sau matrice). Lungimea variabilei este dat de mrimea locaiei de memorie alocat, exprimat n numr de caractere. Spre deosebire de cmpurile de date din tabele, a cror lungime este definit de proiectant, lungimea variabilelor de memorie de tip numeric sau caracter este alocat automat, funcie de lungimea datei nscrise n ea. O variabil de tip logic are automat lungimea =1, iar cea de tip dat calendaristic lungimea =8. Aceste variabile pot fi create cu comenzile ACCEPT, INPUT, WAIT, STORE, COUNT, SUM, AVERAGE, CALCULATE, DECLARE, PRIVATE, PUBLIC etc.i pot fi salvate n fiiere de tip .MEM cu comanda SAVE . Readucerea lor n memorie se face cu comanda RESTORE. Pentru crearea structurilor de date de tip masiv pot fi folosite comenzile DECLARE, DIMENSION, SCATTER. tergerea sau eliberarea variabilelor de memorie se poate face atunci cnd datele respective nu mai sunt necesare, cu comenzile CLEAR MEMORY , RELEASE.

2.5.3. Operatori
Principalele tipuri de operaii efectuate sub Foxpro sunt: matematice de comparare logice

pe iruri de caractere fiecrui tip corespunzndu-i operatori specifici. Astfel, operatorii matematici sunt: + adunare scdere * nmulire / mprire ** ridicare la putere gruparea operaiilor, dac este cazul. 0
38

Ordinea de prioritate a acestor operatori n expresii este: ridicarea la putere, nmulirea i mprirea, adunarea i scderea. Operatorii de comparare sunt utilizai pentru compararea expresiilor de tip logic, caracter, numeric sau dat calendaristic. Cele dou expresii trebuie s fie de acelai tip, iar rezultatul va fi de tip logic, adevrat (.T) sau fals (.F). operator de subir, cu urmtoarea definire: Dac A i B sunt de tip caracter, A$B este adevrat, dac A este identic cu B sau A este inclus n B. Operatorii logici sunt: AND. i logic .OR. Sau logic .NOT. Negare () pentru gruparea operaiilor n cadrul expresiilor Ordinea de prioritate la evaluarea expresiilor este: .NOT., .AND., .OR., iar rezultatul este de tip logic. Operatori pentru iruri de caractere se utilizeaz pentru concatenarea mai multor iruri de caractere ntr- unul singur, astfel: pentru concatenare cu meninerea spaiilor de la sfritul fiecrui ir pentru concatenare cu liminarea spaiilor de ia sfritul primului ir,dac exist i plasarea lor la sfritul irului rezultat.

2.5.4. Expresii
O expresie se constituie din combinaii de elemente din urmtoarea list: nume de cmpuri din structura nregistrrilor de date din tabela activ, variabile de memorie, elemente de tablou, constante, funcii, operatori, variabile de sistem. O expresie poate fi simpl sau complex (compus). Expresia complex este format din mai multe expresii simple, legate ntre ele prin operatorii logici AND, OR sau NOT. Funciile sunt prelucrri predefinite, care pot fi utilizate n expresii, asemntor operatorilor. O funcie returneaz ntotdeauna o valoare, care reprezint rezultatul ei. Dup natura acestui rezultat, funciile pot fi de tip:

numeric ir de caractere gic dat calendaristic. Funciile cele mai utilizate sub Foxpro se pot grupa dup cum urmeaz: 2.5.5.1. Funcii destinate lucrului cu baze de date i fiiere asociate: ALLIASO sau ALLIAS(expN) Are ca rezultat alias-ul bazei de date deschise n zona de lucru specificat sau, dac expN lipsete , alias-ul zonei de lucru curente. DBF() sau DBF( <ahas> ) Returneaz numele tabelei de date deschis n zona de lucru specificat. Dac nu exist nici o tabel de date deschis, funcia ntoarce fiierul nul. EOFQ sau EOF ( <ahas> ) Returneaz valoarea logic True dac este ntlnit sfritul de fiier i False n caz contrar. Ea este poziionat pe valoarea logic de True dac n urma unei comenzi de cutare a unei anumite nregistrri (Locate, Find, Continue sau Seek) nregistrarea cutat nu a fost gsit i False n caz contrar. De aceea, aceast funcie se folosete n programe pentru a asigura utilizatorul dac nregistrarea cutat a fost gsit sau nu i de asemenea pentru a controla ciclul de parcurgere a unei ntregi tabele de date. FOUND() sau FOUND( <alias> ) Returneaz valoarea logic True dac ultima comand CONTINUE, FIND, LOCATE sau SEEK s-a ncheiat cu succes, adic nregistrarea cutat a fost gsit, iar n caz contrar ntoarce valoarea False. ORDER() sau ORDER( <alias> ) Returneaz numele fiierului index activ din zona de lucru curent. Pentru a se obine numele fiierului index mater dintr-o zon de lucru se folosete opiunea <alias>. RECNOO sau RECNO( <alias>) Returneaz numrul nregistrrii curente din tabela activ. Pentru a obine numrul nregistrrii curente dm tabela deschis n alt zon de lucru se utilizeaz opiunea <alias>. SEEKQ sau SEEK( exp,alias) Returneaz valoarea logic True dac expresia cutat este gsit n indexul activ. Dac expresia cutat este gsit, pomterul nregistrrii este poziionat pe nregistrarea gsit, iar n caz contrar funcia ntoarce valoarea logic False i pointerul este plasat la sfritul fiierului. Opiunea <alias> permite cutarea expresiei ntr-o tabel deschis n zona de lucru specificat. DELETEDO sau DELETED( <alias> ) Returneaz valoarea logic True dac nregistrarea curent din zona selectat sau din cea precizat cu <alias> este marcat pentru tergere i False n caz contrar.

2.5.5.2. Funcii destinate prelucrrii datelor numerice: CHR() sau CHR( <expN> ) Returneaz caracterul al crui cod zecimal este echivalent cu expN. DMT() sauINT(expN) Returneaz partea ntreag a exp N prin ignorarea prii zecimale (trunchiere). ROUND() sau ROUND(expL exp2) Rotunjete numrul specificat sau rezultat din evaluarea expresiei expl la un numr de zecimale specificat n exp2. Dac exp2 este negativ, numrul rotunjit va fi un numr ntreg. STR() sau STR(expNl, expN2, expN3 ) Convertete o expresie numeric, specificat prin expNl ntr-un ir de caractere. Valoarea lui expN2 specific lungimea irului rezultat, iar expN3 specific numrul poziiilor zecimale (dac este cazul). Aceast funcie se folosete ori de cte ori avem nevoie ca un cmp de date sau variabil de memorie de tip numeric s fie folosit n expresii de tip ir de caractere (cum ar fi la formarea unei chei multiple de indexare sau la concatenarea mai multor cmpuri pentru afiare, etc.) 2.5.5.3. Funcii destinate prelucrrii irurilor de caractere CTOD()sauCTOD(expC) Returneaz valoarea datei care corespunde argumentului de tip caracter, n formatul dat calendaristic MM/DD/YY (Luna/Zi/An). LOWERO sau LOWER(expC) Convertete toate literele mari din expC n litere mici corespunztoare (dac exist). Caracterele nealfabetice nu sunt afectate. UPPER()sauUPPER(expC) Convertete toate caracterele alfabetice mici din expC n majuscule (dac exist). Caracterele nealfabetice nu sunt afectate. VALO sau VAL(expC) Convertete o expresie de tip caracter care conine cifre ntr-o valoare numeric corespunztoare. Practic, ea extrage primele caractere numerice din expC , pn la primul caracter nenumeric sau punct zecimal i le transform n valoare numeric corespunztoare. Dac primul caracter al expC nu este cifr, Val returneaz valoarea 0. SUBSTR( expC, Poz, Lungime) Extrage dm irul specificat sau rezultat din evaluarea expC un subir, ncepnd cu poziia indicat prin Poz i de lungime egal cu cea specificat prin Lungime. LTRIM (expC)

Returneaz irul de caractere specificat sau rezultat din evaluarea expresiei date cu toate spaiile din stnga terse.( elimin spaiile din stnga irului). RTRIM (expC) Returneaz irul de caractere specificat sau rezultat din evaluarea expresiei date cu toate spaiile din dreapta terse.( elimin spaiile din dreapta
irului).

SPACE(expN) Returneaz un ir de attea spaii cte au fost specificate prin expN.

42 2.5.5.4. Funcii de tip dat calendaristic CDOW(<expD>) Returneaz numele zilei sptmnii pentru expresia dat. DATE() Returneaz data sistemului. DTOC(<expD>[,l]) Returneaz un ir coninnd data care corespunde argumentului, sub formatul standard american LL/ZZ/AA (dac nu au fost selectate alte opium prin comenzile Set Date i Set Century). Transform deci o dat calendaristic ntr-un ir de caractere corespunztor. Clauza opional 1 cere returnarea datei n formatul AAAA/LL/ZZ, pentru a putea ordona nregistrrile funcie de dat. DTOS(<expD>) Returneaz un ir coninnd data care corespunde argumentului, sub forma aaaa/11/zz. .Aceast funcie este util pentru indexarea tabelelor dup un cmp de tip dat calendaristic i este echivalent cu funcia DTOC cu argumentul opional i. DMY (<expD>) Returneaz data calendaristic n formatul european zz/ll/aa. MDY (<expD>) Returneaz data calendaristic n formatul standard american 11/zz/aa. YEAR(<expD>) Returneaz anul din data specificat ca un numr de 4 cifre. TIMEO Returneaz ora curent din sistem n formatul hh:mm:ss.

2.5.5.5. Funcii financiare FV(<depunere>,<dobnd>,<penoad>) Calculeaz valoarea viitoare a unei investiii. PAYMENT(expN 1 ,expN2,expN3) Calculeaz plata regulat cerut pentru amortizarea unui credit, unde expNl este valoarea imial a creditului, expN2 este dobnda iar expN3 este numrul perioadelor.
43

PV(<expN 1 ,expN2,expN3) Returneaz valoarea prezent a unei investiii sau suma care trebuie nvestit pentru a atinge o anumit valoare viitoare. ExpNl este plata fcut n fiecare perioad, expN2 este dobnda, iar expN3 este numrul de perioade. 2.5.5.6. Funcii cu caracter general & Macrosubstituia Funcia de macrosubstituie este utilizat pentru specificarea unei variabile de memorie n locul unei valori concrete ateptate . Se utilizeaz n comenzile FIND, USE, GO i n alte comenzi care cer precizat o valoare. Funcia servete pentru a da un grad mai mare de generalizare a problemei rezolvate (parametrizarea unor informaii).
.

TRANSFORM(expr, expC) Formeaz iruri de caractere sau numere cu opiuni PICTURE fr folosirea comenzii @...SAY. Variabila sau cmpul care va fi formatat se declar prin expr, iar expresia care conine clauza PICTURE prin exprC. TYPE (<exp>) Returneaz unul din caracterele N,C,L,D corespunztor tipului rezultatului evalurii expresiei specificate. USERQ Afiaz numele utilizatorului conectat la sistemul protejat. 2.5.5.7. Funcii utilizator SGBD Foxpro permite utilizatorului s-i defineasc funcii proprii. O funcie const dintr-o procedur care ncepe cu comanda FUNCTION i care returneaz o valoare.

CREATE DATABASE [ <nume_ baza_ de_ date>] | ? unde: . nume_ baza_ de_ date specifica numele bazei de date care va fi creata. Fiierul bazei de date are extensia .DEC; . ? afieaz o fereastra de dialog in care se specifica numele bazei de date care

va fi creata. In fiierul baza de date se vor memora obiectele (tabele/ videoformate/interogari/rapoarte etc.) ale bazei de date. La crearea bazei de date se face automat si deschiderea ei.

3.2 Crearea tabelelor


Crearea unei tabele a bazei de date presupune definirea structurii sale i memorarea (salvarea) ei pe disc, urmat eventual i de introducerea unui numr de nregistrri de date. n Foxpro, structura tabelei - adic descrierea cmpurilor de date ce compun nregistrrile - este memorat chiar n tabel, ca prim nregistrare a acesteia. De aceea, ori de cte ori ne referim la o tabel a bazei de date, va trebui s avem n vedere cele dou elemente componente : Structura i inregistrnle de date. Crearea unei tabele n FoxPro se poate face : cu comanda CREATE sau * prin intermediul meniului, opiunea NEW din submeniul FILE. prin intermediul comenzii CREATE TABLE din nucleul SQL Comanda CREATE are dou formate, i anume: a) CREATE |nume_tabei [.DBF] | ?] Comanda permite crearea tabelei cu numele specificat prin intermediul unei ferestre de dialog de forma : Utilizatorul precizeaz de la tastatur, pe rnd. descrierea fiecrui cmp de date prin specificarea celor trei elemente: Nume (NAME) Tip sau natur (TYPE) Lungime (WIDTH), eventual i numrul de zecimale (DEC) Numele cmpului servete pentru identificare i poate fi un cuvnt alfanumeric de maxim 10 caractere (primul obligatoriu o liter). Tipul cmpului precizeaz tipul datei memorate n el i poate fi: Numeric - pentru date numerice Caracter ( ir de caractere) - pentru orice tip de caractere Logic - pentru o valoare logic (True sau False) Dat calendaristic (n format standard LL/ZZ/AA) Memo - pentru memorarea unor blocuri mari de text pentru fiecare nregistrare de date din tabela .dbf n fiiere separate, de tip .Fpt. Lungimea cmpului este exprimat n numr de caractere. Pentru cmpul numeric admite cel mult 20 poziii (incluznd i caracterele pentru punct zecimal). Pentru cmpul de tip caracter, lungimea maxim poate fi de 254 caractere. Cmpul de tip logic are dimensiunea predefinit = 1 , iar cel de tip dat calendaristic = 8. Cmpul de tip memo apare pe ecran de lungime = 10, dar poziionnd cursorul pe el, pentru introducere, i apsnd tastele Ctrl/PgDn, se deschide fereastra de editare, care permite introducerea unor texte mari , care se

memoreaz ca fiiere separate, asociate nregistrrilor de date din tabel. nc hiderea ferestrei i salvarea coninutului cmpului memo se face tastnd simultan Ctrl/W. Dac n comanda Create nu se precizeaz numele tabelei care se creaz, ea va fi salvat ca un fier cu numele Untitled.dbf, iar dac exist semnul ? acesta va avea ca efect, dup descrierea structurii, apariia pe ecran a unei ferestre de salvare de tip SAVE AS. Ieirea din descrierea structurii se poate face deci, fie cu ajutorul tastelor Ctrl/W, fie activnd opiunea SAVE din fereastra de dialog, Imediat, sistemul va afia pe ecran un mesaj prin care va ntreba utilizatorul dac introduce i date, cu posibilitile de rspuns: Yes, No. La rspunsul No tabela va rmne creat pe disc doar cu structura, n timp ce la Yes sistemul va afia pe ecran o machet corespunztoare descrierii i va pennite utilizatorului s introduc date. Precizm c, pe msura scrierii lor n tabel, nregistrrile de date primesc un numr de ordine, numr gestionat automat de sistem i care poate servi drept adres fizic de identificare a nregistrrii. b) CREATE TABLE nume_tabel[.DBF] (nume_cmpl,tip(lungime, [,nume_cmp2, tip(lungime),...] [FROM ARRAY nume_masiv ]FROMmime_tabel] Comanda permite crearea structurii tabelei cu numele specificat direct prin program, avnd descrierea cmpurilor de date specificat chiar prin comand. Dac se precizeaz clauza FROM ARRAY, atunci descrierea cmpurilor se preia din masivul cu numele respectiv, iar dac se folosete clauza FROM nume_tabel atunci tabela care se creaz va avea aceeai structur cu cea existent n tabela cu numele specificat dup FROM. COPY STRUCTURE TO <nume_tabela> [FIELDS <lista_campuri> [WITH ] CDX [WTTH] PRODUCTTON ]DATABASES <nume_baza_de_date>[NUME <nume_tabel a>] Unde: . <nume-tabela> este numele tabelei nou create <lista_campuri> specifica cmpurile din noua tabela ; <nume_baza_de_date> este numele bazei de date; <NAME <nume_tabela>] este numele tabelei. Crearea unei tabele prin intermediul meniului se face selectnd din meniul principal opiunea FILE, i de aici opiunea NEW. Pe ecran apare o fereastr de dialog care va permite utilizatorului s aleag tipul fiierului nou se va crea, dup care o nou fereastr de dialog i va cere s realizeze descrierea structurii i apoi salvarea acesteia ntr-un fiier de tip DBF al crui nume se va introduce de la tastatur. Observaii: . O tabel, mai poate fi creat i ca rezultat al unor operaii efectuate asupra altei/altor tabele, cum ar fi: copiere, sortare, jonciune, selecie etc. 2. Pentru crearea unei tabele se poate- utiliza si comanda CREATE

3,2. Comenzi pentru actualizarea coninutului i structurii bazei de date


Actualizarea unei baze de date presupune o serie de aciuni prin care aceasta se ntreine corect i la zi. Avnd n vedere faptul c o tabel a bazei de date conine practic dou componente: Structura Datele (nregistrrile de date) actualizarea unei tabele va trebui s permit att actualizarea structurii, ct i pe cea a datelor propriu-zise. De aceea vom trata diferit cele 2 categorii de comenzi: Comenzi pentru actualizarea structurii Comenzi pentru actualizarea datelor 3.2.1. Comenzi pentru actualizarea structurii Structura unei tabele, odat creat, va putea fi ulterior actualizat, prin operaii care s permit: Adugarea unui nou cmp n structur, atunci cnd se constat o asfel de necesitate; Modificarea descrierii unui cmp existent, n sensul schimbrii numelui su, a tipului sau chiar a lungimii, dup caz; tergerea unui cmp din structur, atunci cnd acesta nu mai este necesar. Toate aceste operaii sunt permise sub Foxpro printr-o singur comand, anume: 49 MODIFY STRUCTURE Dac n zona de lucru curent exist o tabel de date deschis, atunci comanda se va referi a aceasta, altfel pe ecran va apare o fereastr de dialog care va permite utilizatorului s-i deschid tabela dorit. Acesta va putea actualiza apoi structura afiat pe ecran n regim interactiv. Ieirea din editare cu salvarea noii structuri pe disc se face fie cu tastele Ctrl/W , fie acionnd butonul Save. Precizm c sistemul va aduce coninutul tabelei la noua sa structur, lsnd poziionate pe valori nule cmpurile nou definite. Structura unei tabele poate fi i copiat simplu, dintr-o alt tabel existent, cu comanda: COPY TO nume_tabel STRUCTURE [FIELDS nume_cmpl, nume_cmp2..[ Ca efect, se copiaz din tabela activ ntr-o tabel cu numele specificat ntreaga structur sau numai cmpurile precizate prin clauza Fields. Practic, se poate crea astfel o nou tabel pe baza structurii uneia existente. Dac se dorete afiarea pe ecran a structurii tabelei active, se pot folosi comenzile: DISPLAY STRUCTURE [EV nr_zon] [TO PRINTER | TO FILE

numejs] [NO CONSOLE] LIST STRUCTURE [IN nr zon] [TO PRINTER | TO FILE nume_fis] [NO CONSOLE] unde: Nr_zon specific numrul zonei de lucru n care se afl tabela dorit To Printer solicit afiarea la imprimant, iar To File precizeaz numele fiierului de tip text n care s fie memorat structura tabelei, n vederea afirii ei ulterioare sau a prelucrrii ei cu un editor de texte. No Console inhib afiarea structurii la ecran 3.2.2. Comenzi pentru actualizarea coninutului bazei de date Actualizarea datelor unei tabele presupune operaii de : 1. Adugare de noi nregistrri 2. Modificarea unora dintre datele existente 3. tergerea nregistrrilor care nu mai sunt necesare

50

3.2.2.1. Comenzi pentru adugare de noi nregistrri Adugarea se poate face n orice moment pentru o tabel care a fost creat, deci care conine cel puin structura definit. Adugarea de noi date se poate face: fie dup ultima nregistrare existent n tabel - fie prin inserarea lor ntre nregistrrile deja existente Celor dou posibiliti le corespund comenzile APPEND i INSERT. Comanda APPEND are urmtoarele formate: a) APPEND Permite adugarea de noi nregistrri la sfritul tabelei deschis n zona selectat, prin intermediul unei machete afiat pe ecran. Utilizatorul poate aduga una sau mai multe nregistrri, terminnd precesul de adgare fie cu Ctrl/W, fie activnd butonul Save. b) APPEND BLANK Adaug automat, la sfritul tabelei active, o nou nregistrare, vid, care va putea fi ulterior completat cu date prin comenzi de modificare, calcul sau afiare formatat (Change, Browse, @ cu Say i Get, Replace, etc). Comanda se utilizeaz n programe pentru a realiza machete, videoformate de introducere sau afiare a datelor la cererea i posibilitile de exploatare ale utilizatorului.

51 c) APPEND FROM nume_fiier[.ext] [FIELDS <list cmpuri>]FOR <exp logic>] [TYPE] [DELIMITED [WITH TAB | WITH <delimitator> | WITH BLANK | DIF | FW21 MOD | WKS | SDF | WK11WK3 | XLS] Comanda adaug, la sfritul tabelei active, nregistrri de date preluate n mod automat din fiierul cu numele specificat. Dac se dorete preluarea datelor doar din anumite cmpuri, atunci acestea vor fi precizate prin clauza FIELDS. Cluaza FOR permite selectarea i deci preluarea din fiierul specificat doar a acelor nregistrri care satisfac condiia pus. Clauza TYPE definete tipul fiierului, dac acesta nu este .DBF , ceea ce nseamn c este posibil preluarea datelor ntr-o tabel Foxpro din fiiere create sub alte sisteme de gestiune sau limbaje de programare. Astfel, opiunea Delimited specific delimitatorul dintre cmpurile nregistrrii, tiind c cel implicit este virgula. Tipurile specificate semnific: SDF - fiier format ASCII, cu nregistrri de lungime fix i terminate prin CR i LF. WK1, WK3 - fiier format Lotus FW2 - Frame Work II MOD - MicroSoft Multiplan WKS - foaie de calcul Lotus 1-2-3 XLS - Foaie de calcul MicroSoft Excel d) APPEND FROM ARRAY <nume_tabIou> [FOR <exp_logic>] [FIELDS <list cmpuri>] Permite copierea, la sfritul tabelei active, a valorilor nscrise ntr-un tablou cu numele specificat, n totalitate sau numai a acelora care ndeplinesc condiia pus. Dac sursa este un vector, se va aduga o singur nregistrare, iar dac este o matrice, se vor aduga attea nregistrri cte linii are matricea. Dac numrul de elemente ale vectorului sau numrul de coloane ale matricei este mai mare dect numrul de cmpuri din structura tabelei, atunci cele n plus vor fi ignorate, iar dac este mai mic, cmpurile rmase vor fi vide. Comanda TNSERT are formatul:

Prin intermediul meniului principal, comanda APPEND se selecteaz n submeniul RECORD iar efectul este acelai de la modul de lucru comand. Comanda APPEND FROM o gsim selectnd din meniul principal xaunea DATABASE. Va fi afiat pe ecran o fereastr de dialog n care vor arebui precizate opiunile necesare definirii adugrii ( de unde se iau datele, rsentual cmpurile dorite sau condiia de selectare a nregistrrilor, tipul :-'..!ui sau delimitatorul etc). 5.2.2.2. Comenzi pentru modificarea datelor dintr-o tabel

Modificarea datelor se poate face n regim interactiv, de la tastatur, afind cte o nregistrare pe ecran, cu ajutorul comenzilor : EDIT CHANGE sau afind un grup de mai multe nregistrri, cu comanda: - BROWSE sau, n mod automat, fr intervenia utilizatorului, prin specificarea unei valori sau reguli de calcul cu ajutorul comenzii :
53

- REPLACE. Comenzile EDIT i CHANGE au format i aciune asemntoare, astfel c le vom trata mpreun; ele se prezint astfel: EDIT [FIELDS <Iist cmpuri>] [ scope] [FOR <exp_logic>] [WH1LE <exp_logic>] [FREEZE cmp] [NOAPPEND] [NOMODIFY] [NOCLEAR] [NODELETE] [NOOPTIMIZE] [NOWAIT] [ REST] [SAVE] [TITLE nume_fer] [VALID exp] [ERROR exp C] [WIDTH exp_N] [ WINDOWS nume_fer | IN SCREEN] [COLOR SCHEME exp_C] CHANGE [FIELDS <list cmpuri>] [ scope] [FOR <exp_logic>] [WHILE <exp_logic>] [FREEZE cmp] [NOAPPEND] [NOMODIFY] [NOCLEAR] [NODELETE] [NOOPTIMIZE] [NOWAIT] [ REST] [SAVE] [TITLE nume_fer] [VALID exp] [ERROR exp C] [WIDTH exp_N] [ WINDOWS nume_fer | IN SCREEN] [COLOR SCHEME exp_C] domeniul implicit de aciune este nregistrarea curent, pe care o afieaz pe ecran, pemind utilizatorului s modifice valorile din cmpurile dorite. Semnificaia clauzelor ce pot apare n formatul comenzii este urmtoarea: FIELDS specific numele cmpurilor care s fie afiate i deci disponibile pentru a fi modificate, dac se dorete acest lucru; Scope - precizeaz domeniul de aciune dorit, altul dect nregistrarea curent; FOR specific condiia de selectare a nregistrrilor la care se dorete accesul pentru modificare, dac este cazul; WHILE introduce condiia ca aceast comand s acioneze doar atta timp ct ea este ndeplinit; FREEZE precizeaz cmpul unic care s poat fi modificat; NOAPPEND nu permite adugarea de noi nregistrri cu ajutorul acestei comenzi; NOMODIFY nu permite efectuarea de modificri n tabela activ i afiat; NOCLEAR nu permite marcarea nregistrrilor din tabel pentru tergere; NOOPTIMIZE inhib tehnologia Rushmore

NOWAIT este folosit doar n programe, pentru a cere continuarea execuiei programului dup ce fereastra de editare a fost deschis; REST nu permite poziionarea cursorului n tabela activ la nceputul acesteia; SAVE cere meninerea ferestrei de editare pe ecran chiar dup ieirea din editare; TITLE nume_fer specific un titlu pentru fereastra de editare, dac se dorete acest lucru; VALID exp [ERROR exp_C] face controlul condiiei specificate prin exp i, dac rezultatul este valoarea logic de True, atunci se poate trece la o alt nregistrare, altfel se afieaz mesajul specificat prin clauza ERROR i se ateapt corectarea valorii introduse; WIDTH exp_N stabilete numrul limit de caractere cu care s fie afiate cmpurile; WINDOWS nume_fer | IN SCREEN face ca ferestra de editare s fie deschis ntr-o alt fereastr definit anterior cu numele specificat sau direct pe ecran; Ecranul reprezint valoarea implicit. COLOR SCHEME exp_C definete lista de culori pentru fereastra de editare; Valoarea ei implicit este schema cu numrul 10.

Comanda BROWSE are formatul general: BROWSE [FIELDS <list empuri>] [ scope] [FOR <exp_Iogic>] [WHDLE <exp_logic>] [FREEZE cmp] [NOAPPEND] [NOMODIFY] 55 [NOCLEAR] [NODELETE] [NOOPTIMIZE] [NOWAIT] f REST] [SAVE] [TITLE nume_fer] [VALID exp] [ERROR exp_C] [WIDTH exp_N] [ WINDOWS nume_fer | IN SCREEN] [COLOR SCHEME exp_C] Trebuie menionat faptul c, spre deosebire de Edit i Change, comanda BROWSE afieaz pe ecran un grup de mai multe nregistrri, sub form tabelar. De aceea , ea se folosete adeseori i ca o comand de afiare a datelor, avnd facilitile de actualizare inhibate. Comenzile CHANGE i BROWSE pot fi activate i prin intermediul meniului principal, submemul DATABASE sau din submeniul WTNDOW. Ferestrele de dialog ateapt precizarea tuturor acestor opiuni, lund n considerare, n lips, valorile implicite. Comanda REPLACE permite modificarea valorilor din cmpurile specificate n mod automat prin precizarea valorii concrete sau a formulei de calcul necesar, fr ca utilizatorul s mai introduc valori de la tastatur. Este practic comanda care permite efectuarea de calcule n mod automat, n tabela activ.

Formatul general al comenzii este: REPLACE <cmpl> WITH <exprl> [ADDITIVE] [,<cmp2> WITH <expr2> [ADDITIVE]]... [Scope] [FOR <exp_logicl>] [WHILE <exp_logic2>] [NOOPTIMIZE]
56

Domeniul de aciune implicit este nregistrarea curent. Scope precizeaz domeniul dorit pentru comanda Replace. Practic , comanda nlocuiete valoarea din cmpl cu cea obinut din evaluarea expresiei exprl, valoarea din cmp2 cu cea din evaluarea expresiei exp2, etc. Clauza ADDITIVE acioneaz doar asupra cmpurilor de date de tip Memo, indicnd adugarea valorii expresiei la coninutul curent al cmpului. Clauza FOR introduce condiia de selectare a nregistrrilor ce vor fi modificate, iar WHILE cere execuia comenzii doar atta timp ct condiia este ndeplinit. Comanda REPLACE poate fi accesat i din meniul principal, activnd submeniul RECORD i preciznd opiunile de lucru dorite. 3.2.2.3. Comenzi pentru tergerea datelor dintr-o tabel tergerea nregistrrilor dintr-o tabel se face sub Foxpro n dou etape, i anume: - tergerea logic , care presupune doar marcarea n vederea tergerii a nregistrrilor dorite. Acest lucru nseamn c nregistrrile marcate continu s existe n tabel, atta timp ct nu au fost eliminate fizic i deci mai pot fi recuperate, dac este cazul. tergerea logic se face cu comanda DELETE, iar anularea marcajului de tergere se poate face cu comanda RECALL. tergerea fizic nseamn practic eliminarea din tabel a nregistrrilor care au fost marcate. nregistrrile terse fizic nu mai pot fi recuperate. tergerea fizic se face cu comanda PACK. Comanda DELETE are formatul general:

57 DELETE |Scope] [FOR <cxp_logicl>] |WH1LE <exp_logic2>] [NOOPTIMIZE| Domeniul implicit de aciune este nregistrarea curent. Clauza Scope poate preciza domeniul dorit, iar FOR i WHILE introduc condiii de selectare a nregistrrilor ce trabuie terse. Marcarea pentru tergere nseamn practic plasarea unui * n dreptul nregistrrilor de ters. Comanda RECALL are un format asemntor, dar are ca efect anularea marcajului de tergere, dac exist. Ea poate fi folosit pentru

nregistrri care nu au fost nc terse fizic. RECALL [Scope] [FOR <exp_logicl>] [WHILE <exp_logic2>] [NOOPTIMIZE] Comanda PACK are formatul: PACK [MEMO] Comanda Pack elimin, din tabela activ, la o singur trecere, toate nregistrrile pe care le gsete marcate pentru tergere. Dac se precizeaz opiunea MEMO, atunci se va terge fiierul memo asociat tabelei (care are acelai nume cu tabela, dar este de tip .FPT), dar nu i nregistrrile din tabela curent marcate pentru tergere. Alte comenzi de tergere Comanda ZAP, al crei format este acesta simplu, fr opiuni, realizeaz tergerea fizic a tuturor nregistrrilor din tabela activ. Ea este echivalent succesiunii de comenzi: DELETE ALL PACK dar este mai rapid i, n acelai timp mai riscant (cere mai mult precauie). Trebuie s remarcm ns, c, dup tergerea fizic a nregistrrilor (cu Zap sau Pack) tabela continu s existe pe disc, coninnd numai structura sa. Comanda DELETE FILE permite tergerea, de sub sistemul Foxpro, a unui fiier de orice tip existent pe disc. Formatul general al comenzii: DELETE FILE [<nume_fiierLDBF]> | ?] Comanda terge fiierul cu numele specificat sau pe cel ales din fereastra de fiiere, dac a fost folosit clauza ?. Tipul implicit de fiiere terse este tipul DBF, celelalte fiind necesar s fie precizate. Comenzile de tergere DELETE, PACK, RECALL pot fi activate i prin intermediul meniului principal, submeniul RECORD sau DATABASE. n acest caz dialogul sistemului cu utilizatorul are loc prin intermediul ferestrelor de dialog de mai jos. Fereastra pentru comanda RECALL: Observaii: 1. Se poate utiliza si comanda SET DELETED ON/OFF care specifica daca nregistrrile marcate pentru tergere vor fi luate n considerare (valoarea implicita este OFF). 2. Se mai poate utiliza si comanda DELETE din nucleul SQL.
58

3.3. Comenzi pentru interogarea bazei de date

Interogarea bazei de date implic realizarea succesiv a dou operaii i anume: regsirea nregistrrii sau nregistrrilor dorite; afiarea lor pe ecran i/sau imprimant

Regsirea unei/unor nregistrri ntr-o tabel presupune cutarea, n tabel, a unei/unor anumite nregistrri, pentru care se cunoate: a) fie numrul ei de ordine (pointerul) b) fie valoarea unui cmp sau grup de mai multe cmpuri de date a) Regsirea unei nregistrri pentru care se cunoate numrul de ordine n tabel const n simpla poziionare pe nregistrarea dorit, cu comanda GO sau GOTO. Comanda GO (GOTO) are urmtoarele formate: GO [RECORD] <exp_Nl> [IN <exp_N2> | <exp_C>] Ca efect, se realizeaz poziionarea pe nregistrarea cu numrul specificat sau rezultat din evaluarea expresiei exp_Nl, din tabela deschis n zona curent sau n cea specificat prin exp_N2 sau exp_C ( exp_N2 indic zona, iar exp_C indic alias-ul tabelei deschis). GO TOP [IN <exp N2> | <exp_C>] Comanda realizeaz poziionarea pe prima nregistrare (logic) din tabela deschis n zona curent sau n cea precizat prin exp_N 1 sau exp_C. GO BOTTOM [IN <exp N2> | <exp_C>] Comanda realizeaz poziionarea pe ultima nregistrare (logic) din tabela deschis n zona curent sau n cea precizat prin exp_Nl sau exp_C. De la nregistrarea astfel localizat , deplasarea relativ spre nainte sau napoi se poate face cu comanda SKIP, al crei format este: SKIP [ <exp_NT>] [ES <exp_N2> | <exp C>] unde exp_Nl specific poziia relativ n raport cu cea curent, printr-un numr sau o expresie numeric din evaluarea creia se determin saltul. Valoarea implicit este 1, indicnd salt la nregistrarea urmtoare. b). Regsirea unei nregistrri pentru care se cunoate valoarea unui/unor cmpuri de date se poate face n dou moduri: prin consultare n acces secvenial prin consultare n acces direct, dac tabela este indexat Consultarea n acces secvenial const n parcurgerea secvenial a tabelei active i poziionarea pe prima nregistrare care ndeplinete criteriul

cerut. Ea se realizeaz cu comanda LOCATE, al crei format este: LOCATE FOR <exp_Ll> [Scope] [WHILE <exp_L2>] [NOOPTIMIZE] ExpJLl este o expresie de tip logic, simpl sau compus prin care se precizeaz cmpul sau cmpurile cu valorile cerute. Scope specific, opional, dac s se restrng cutarea la un anume domeniu, iar WHILe poate cere s continue cutarea ct timp este ndeplinit condiia pus. Trebuie precizat c, dac nregistrarea cutat nu a fost gsit, funcia EOF() este poziionat pe valoarea logic de True, iar FOUNDQ pe valoarea False i invers. Aceste funcii ne vor permite n programe s ne asigurm de existena nregistrrilor cutate. Dac se dorete continuarea cutrii unei eventuale urmtoare nregistrri care ndeplinete aceeai condiie, atunci se poate utiliza comanda CONTINUE. Ea funcioneaz ns numai asociat cu LOCATE, pentru a continua cutarea iniiat de aceasta. Apelat prin intermediul meniului, comanda LOCATE afieaz o fereastr de dialog prin care se precizeaz opiunile dorite, de forma: Consultarea n acces direct se poate face numai pentru tabele indexate dup cmpul sau combinaia de cmpuri dup care se dorete cutarea. Ea se face cu comenzile FIND i SEEK , al cror format este : FIND <expC> SEEK <varC> Comanda FIND caut n indexul tabelei active prima nregistrare cu cheia specificat prin expC, n timp ce Seek ateapt s fie precizat numele variabilei n care se afl memorat valoarea cheii dorite. Cutarea se realizeaz prin intermediul indexului i este foarte rapid. Dac nregistrarea cutat a fost gsit, funcia EOFQ este poziionat pe False, iar FOUND() pe True i invers. Saltul la o eventual urmtoare nregistrare care ndeplinete aceeai condiie se poate face de data aceasta cu comanda SKIP (salt la urmtoarea nregistrare). Cele dou comenzi pot fi utilizate numai dac tabela a fost deschis mpreun cu un index. Comanda SEEK poate fi apelat i prin intermediul meniului Foxpro, opiunea RECORD i de acolo Seek. Comand fuvafent

3.4. Comenzi pentru afiarea bazei de date (vizualizarea nregistrrilor)


Vizualizarea nregistrrilor se poate realiza pe ecran sau imprimant, parial sau n totalitate, n mod secvenial sau ntr-un format controlat de utilizator. Forma cea mai rapid., uor accesibil i permanent la dispoziia utilizatorului este afiarea realizat cu comenzile LIST. DISPLAY. ? i ??. Cele dou comenzi. LIST i DISPLAY au formate i aciuni asemntoare, cu deosebirea c pe ecran List afieaz nregistrrile cu defilarea continu a imaginii, n timp ce Display oprete imaginea dup fiecare ecran plin. DISPLAY [FIELDS <list_cmpuri>] [Scope] [FOR <exp_Ll>] [WHILE <exp_Ll>] [OFF] [NOCONSOLE] [XOOPTIMIZE][TO PRENTER i TO FILE <nume_fis>] LIST [FIELDS <list_cmpuri>] [Scope] [FOR <exp_Ll>] [WHILE <exp_Ll>] [OFF] [NOCOXSOLE] [NOOPTE\ITZE][TO PRENTER | TO FILE <nume_fis>] unde: FIELDS precizeaz cmpurile de date din nregistrri care s fie afiate, n lips, sunt afiate toate: Scope definete domeniul nregistrrilor ce trebuie afiate FOR introduce condiia de selectare a nregistrrilor ce se vor afia; WHILE introduce condiia ct timp se va produce afiarea; OFF inhib afiarea pe ecran a numrului de ordme al nregistrrii n tabel; NOCONSOLE inhib afiarea pe ecran sau n fereastra activ; - NOOPTIMKE dezactiveaz tehnica Rushmore. TO PRENTER direcioneaz afiarea la imprimant; n lips afiarea se produce la ecran; TO FILE direcioneaz afiarea ctre un fiier, unde se memoreaz. pentru a fi listat la imprimant ulterior. Alte formate ale comenzilor LIST i DISPLAY sunt: LIST STATUS [NOCONSOLE] [TO PRENTER | TO FILE <nume_fis>] DISPLAY STATUS [NOCONSOLE] [TO PRINTER|TO FILE <nume_fis>] Aceste formate servesc pentru a afia pe ecran , la imprimant sau ntrun fiier informaii de stare, cum sunt: numele tabelelor active n momentul respectiv; fiierele index active; cheile de indexare ale fiierelor index; alias-urile folosite; relaiile ntre tabele; fiierele de tip program i de tip memo active;

calea curent, discul implicit valorile parametrilor stabilii prin comanda SET; - setrile ecranului,etc LIST MEMORY [LIKE <specif_fis>] [NOCONSOLE] [TO PRINTER | TO FILE <nume_fis>] DISPLAY MEMORY [LDKE <specif_fis>] [NOCONSOLE] [TO PRINTER | TO FILE <mime_fis>] Afieaz pe ecran, la imprimant sau ntr-un fiier, numele , tipul i valoarea tuturor variabilelor de memorie curente, lungimea lor n bytes, numrul de bytes rmai disponibili. LIST STRUCTURE [NOCONSOLE] [TO PRINTER |TO FILE <nume_fis>] DISPLAY STRUCTURE [NOCONSOLE] [TO PRINTER |TO FILE <nume fs>] Acest format al comenzilor servete pentru afiarea structurii tabelei active. Comanda ? afieaz, n mod normal la ecran, valoarea obinut din evaluarea expresiei specificate, cu salt la rnd nou. . Formatul general este: ? <expresie> Comanda ?? are format i aciune asemntoare, numai c produce afiarea n continuare, fr salt la rnd nou. Formatul este: ?? <expresie> Dac se dorete direcionarea afirii ctre imprimant, atunci aceasta trebuie s fie mai nainte activat, printr-o comand de forma: 64 SET PRINTER ON Cnd se dorete revenirea la ecran pentru comanda ? sau ??, se va specifica o comand de forma: SET PRLNTER OFF

Exemple: Fiind dat tabela STUDENT, s se scrie secvenele de comenzi prin care se satisfac urmtoarele cerine: 1. S se afieze studenii de la facultatea de Informatic. USE STUDENT LIST FOR FACULT=TNF' sau, pentru a ne asigura c identificarea se face corect, indiferent de modul n care au fost introduse datele n tabel: USE STUDENT LIST FOR UPPER(FACULT)= 'INF' 2. S se afieze studenii dm facultatea de Informatic, anul II, grupa 620. USE STUDENT

LIST FOR UPPER(FACULT)= TNFr AND AN1=1 AND GRUPA 1=601 3. S se afieze la imprimant studenii nscui n 30 noiembrie 1979. USE STUDENT LIST FOR DATAN={ 11/30/79} TO PRIN 4. S se afieze studenii nscui n anul 1980 (condiie compus). USE STUDENT LIST FOR DATAN>={01/01/80} AND DATAN<={ 12/31/80} sau, utiliznd funciile Foxpro: USE STUDENT LIST FOR SUBSTR(DTOC(DATAN),7,2))='80" sau LIST FOR val(SUBSTR(DTOC(DATAN),7,2)))=80 5. S se identifice, pentru a fi corectat, nregistrarea corespunztoare studentului ZVOI. USE STUDENT LOCATE FOR UPPER(NUME)='ZAVOi" EDIT sau, n programe USE STUDENT LOCATE FOR UPPER(NUME)='ZAVOr 65 IF NOT EOF() EDIT ELSE ? 'nregistrarea cu studentul dorit nu exist' ENDIF 6. S se tearg din tabela STUDENT toi studenii de la Informatic i s se creeze cu ei o tabel separat numit INFORM. USE STUDENT COPY TO INFORM STRUCTURE &Se copiaz structura pentru INFORM USE INFORM &Se deschide noua tabel INFORM APPE FROM STUDENT FOR UPPER(FACULT)= TNF' &Se preiau datele din STUDENT USE STUDENT &Se deschide tabela STUDENT DELETE FOR UPPER(FACULT)= TNF' &Se marcheaz pentru tergere nreg.din STUDENT PACK &Se terg fizic nregistrrile dm STUDENT CLOSE ALL &Se nchid toate fiierele 7. S se afieze toate nregistrrile marcate pentru tergere din tabela STUDENT. USE STUDENT

LIST FOR DELETEDO 8. S se afieze, pentru corecii, toi studenii (biei) de la facultatea de TURISM. Ne intereseaz n mod deosebit numele, marca, data naterii i media. USE STUDENT EDIT FOR UPPER(FACULT)= 'TURISM' AND UPPER(SEX)= 'B' sau USE STUDENT EDIT FOR UPPER(FACULT)= 'TURISM' AND UPPER(SEX)= 'B' FIELDS MARCA, NUME, PRENUME, DATAN, MEDIA &Se afieaz doar cmpurile cerute 9. S se recalculeze media de absolvire a studenilor, tiind c media existent se mrete cu 0.50 pentru toi cei care au media peste 5 i devine 10 pentru cei care aveau ntre 9 i 10. USE STUDENT REPLACE MEDIA WITH 10 FOR (MED1A>=9 AND MED1A<=10) REPLACE MEDIA WITH MEDIA+0.50 FOR MEDIA>5 AND MEDIA #10 10. tiind c avem o tabel PERS cu cmpul SAL pentru salariul cuvenit, s se calculeze noul salariu cuvenit dup o indexare de 50%. (o mrire cu 50%) USE PERS REPL ALL SAL WITH SAL* 1.5 sau REPL ALL SAL WITH SAL+SAL*50/100

3.5. Comenzi pentru ordonarea nregistrrilor bazei de date


Se tie c ncrcarea datelor ntr-o tabel poate fi fcut aleator, deoarece Foxpro pune la dispoziia utilizatorului comenzi prin care poate realiza ordonarea acestora dup unul sau mai multe criterii, uor i rapid. Ordonarea (sortarea) datelor sub Foxpro poate fi fcut n dou moduri: ordonare fizic (sortare) , care const n crearea unei alte tabele, n care nregistrrile din tabela curent sunt fizic copiate i dispuse n ordinea cerut. ordonare tegic (indexare), care const n crearea unei tabele de index prin intermediul creia se stabilete ordinea de parcurgere a nregistrrilor din tabela curent, astfel nct ele s apar ordonate dup criteriul dorit, dei, fizic, au rmas neschimbate. Corespunztor celor dou moduri, Foxpro pune la dispoziie comenzile SORT i respectiv INDEX.

3.5.1. Comenzi pentru sortarea nregistrrilor


Comanda SORT are formatul general: SORT ON <nume_cmpl> [/A/C/D], <nume_cmp2> [/A/C/D],... [A/C/D] TO <nume_tabeI_sortat> [FIELDS <Iist cmpuri>|

[FOR <expr_L>] unde: nume_cmpl, nume_cmp2... reprezint , n ordine, numele cmpurilor dup valorile crora se dorete ordonarea; - /A cere ca ordonarea s fie Ascending (cresctoare); Ea este implicit. /D cere ca ordonarea s fie Descending (descresctoare); 67 /C cere s nu se fac difereniere la sortare ntre literele mici i cele mari (pentru cmpuri de tip caracter); nume_tabel_sortat este numele tabelei noi, de tip .DBF care se va crea i va conine nregistrrile ordonate. FIELDS precizeaz, dac se dorete acest lucru, lista cmpurilor de date care s fie preluate n structura noii tabele, FOR introduce, opional, condiia de selectare a nregistrrilor ce se vor sorta i prelua n noua tabel. Pentru a avea acces la nregistrrile ordonate, va trebui deschis noua tabel creat. Atunci cnd se cere ordonarea dup mai multe cmpuri (chei de sortare) trebuie s avem grij, deoarece ea se justific numai dac exist mai multe nregistrri cu valori identice dup prima cheie, eventual i dup a doua, etc. Comanda SORT poate fi activat i din meniul principal, submeniul DATABASE. Apare o fereastr de dialog de forma: Se selecteaz cmpul sau cmpurile cheie de sortare i apoi se activeaz butonul MOVE, pentru a fi preluate. La renunarea unui cmp din cheie se apas butonul REMOVE. Se precizeaz tipul sortrii (implicit este Ascending), se introduce eventual domeniul de aciune al comenzii (Scope) i/sau condiiile de selectare (cu FOR sau WHILE) i se indic numele noii tabele sortate la Save as:

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