Module 1-6 FoxPro

175
1 UNIVERSITATEA ROMANO-AMERICANA FACULTATEA DE INFORMATICA MANAGERIALA Prof. univ. dr. Virgil Chichernea Lect. univ. drd. Gabriel Eugen Garais Asist. univ. drd. Cristina Maria Titrade BAZE DE DATE I SUPORT DE CURS Baze de date si programarea aplicatiilor economice ANUL II Semestrul 1 Bucuresti 2010

description

pro

Transcript of Module 1-6 FoxPro

  • 1

    UNIVERSITATEA ROMANO-AMERICANA

    FACULTATEA DE INFORMATICA

    MANAGERIALA

    Prof. univ. dr. Virgil Chichernea

    Lect. univ. drd. Gabriel Eugen Garais Asist. univ. drd. Cristina Maria Titrade

    BAZE DE DATE I

    SUPORT DE CURS

    Baze de date si programarea aplicatiilor

    economice

    ANUL II

    Semestrul 1

    Bucuresti 2010

  • 2

    INFORMATII GENERALE 1.1. Date de identificare a titularilor de curs si seminar

    Nume titular curs: Prof. Univ. Dr. Virgil Chichernea

    E-mail: [email protected]

    Consultatii: saptamanal vineri ora 12 -14 (sala 501) sau prin e-mail

    Nume titulari Lect. Univ Drd. Gabriel-Eugen Garais

    laborator: [email protected]

    Asist. Univ. Drd. Cristina Maria Titrade

    1.2. Conditionari si prerechizite obligatorii

    Acest curs presupune parcurgerea cursurilor Arhitectura calculatoarelor si

    sisteme de operare si Algoritmi de calcul si bazele programarii din anul I.

    Pentru cele doua materii se recomanda revederea bibliografiei obligatorii

    propuse in anul I.

    1.3. Descrierea cursului

    In orice domeniu de activitate, din economia mondiala globalizata, se cer

    informatii exacte obtinute in timp util. Aceste informatii se obtin din datele

    primare, culese si organizate sub forma unor Baze de Date (BD), in urma unor

    procese ample de prelucare si transmitere de date, efectuate cu ajutorul

    produselor software complexe numite Sisteme de Gestiune a Bazelor de Date

    (SGBD). In acest Suport de curs insusirea si utilizarea notiunilor si conceptelor

    referitoare la BDR/SGBDR este organizata pe urmatoarele nivele :

    1. Utilizatori baze de date i SGBD (Modulul 1 si 2); 2. Programatori n limbaje de programare 4 GL (Modulul 3 si 4); 3. Insusirea MTI disponibile pentru proiectarea BDR (Modulul 5 si 6);

    Pentru partea practica, in cadrul suportului de curs sunt date exemple dupa care

    trebuie intocmite proiectele de semestru, iar in partea finala se afla Pliantul cu

    sintaxa comenzilor SGBDR.

    1.4. Materiale bibliografice obligatorii

    - V. Chichernea, G. Garais: Baze de Date - Sistemul FoxPro/Visual FoxPro;

    Univ. Romno-American. Editura PROUNIVERSALIS, Bucureti 2009 - David M. Kroenke: Database Processing: Fundamentals Design

    and Implementation.; 6th

    Edition, Pretice Hall, 1997

    - I.Lungu, N. Muat, M. Velicanu: FoxPro, Prezentare i aplicaii; Editura ALL, Bucureti 1997 - David M. Kroenke: Textbook: Database Processing: Fundamentals,

    Design, and Implementation, , 6th Edition, Prentice Hall, 1997

  • 3

    CUPRINS:

    MODULUL I

    ARHITECTURA BAZELOR DE DATE RELAIONALE ....................... 6 1.1. Noiuni si concepte utilizate n organizarea datelor ................................ 6 1.2. Modele conceptuale pentru Sisteme de Gestiune a Bazelor de Date ...... 12

    1.3 Relaii (tabele) .......................................................................................... 13 1.4 Tipuri de chei i identificarea nregistrrilor prin chei ............................ 13 1.5. Diagrama (modelul) entitate - legtur (asociere) (DEA) ...................... 15

    Tema nr. 2 ......................................................................................................... 18 Tema nr. 3 ...................................................................................................... 19 1.6. Tipuri de restricii i integritatea restriciilor .......................................... 19 1.7. Dependene i determinri n mulimea atributelor (cmpurilor) .......... 21 1.8 Anomalii intalnite in proiectarea Tabelelor ............................................. 23

    1.9 NORMALIZAREA - Ameliorarea succesiva a schemei conceptuale a BD

    ........................................................................................................................ 24 1.10 Etape in realizarea aplicatiilor informatice cu baze de date ................... 26

    MODULUL II

    PREZENTAREA SGBD-ULUI FOXPRO ................................................... 28 2.1. Componentele funcionale ale sistemului............................................ 28 2.2. Lansarea i modul de lucru sub SGBD Foxpro ................................... 30 2.3. Tipuri de fiiere n FOXPRO ................................................................. 33 2.4. Consideraii generale privind comenzile Foxpro .................................... 34

    Semnificaie....................................................................................................... 35 ALL ................................................................................................................ 35 Comanda acioneaz asupra tuturor nregistrrilor din tabela activ ............. 35 2.5. Elemente ale limbajului de descriere i interogare a bazei de date ..... 36

    2.5.1. Constante ...................................................................................... 36

    2.5.2. Variabile ........................................................................................... 36 2.5.3. Operatori .......................................................................................... 37 2.5.4. Expresii ............................................................................................ 39 2.5.5. Funcii .............................................................................................. 39

    2.5.5.1. Funcii destinate lucrului cu baze de date i fiiere asociate: .. 39 2.5.5.2. Funcii destinate prelucrrii datelor numerice: ........................ 40 2.5.5.3. Funcii destinate prelucrrii irurilor de caractere .................... 41 2.5.5.4. Funcii de tip dat calendaristic ............................................... 42 2.5.5.5. Funcii financiare ...................................................................... 43 2.5.5.6. Funcii cu caracter general ........................................................ 43 2.5.5.7. Funcii utilizator ........................................................................ 43

    MODULUL III

  • 4

    COMENZI FOXPRO PENTRU CREAREA SI GESTIONAREA BAZEI

    DE DATE .......................................................................................................... 44 3.1. Comenzi pentru crearea bazei de date ..................................................... 44

    3.1.1 Crearea tabelelor ............................................................................... 44 3.2. Comenzi pentru actualizarea coninutului i structurii bazei de date ..... 45

    3.2.1. Comenzi pentru actualizarea structurii ........................................ 45

    3.2.2. Comenzi pentru actualizarea coninutului bazei de date .................. 47 3.2.2.1. Comenzi pentru adugare de noi nregistrri ........................ 47

    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: .. 47

    3.2.2.2. Comenzi pentru modificarea datelor dintr-o tabel ............. 48 3.2.2.3. Comenzi pentru tergerea datelor dintr-o tabel ................... 51

    Alte comenzi de tergere ............................................................................ 52 3.3. Comenzi pentru interogarea bazei de date ............................................. 52

    3.4. Comenzi pentru afiarea bazei de date (vizualizarea nregistrrilor) 54 3.5. Comenzi pentru ordonarea nregistrrilor bazei de date ..................... 58

    3.5.1. Comenzi pentru sortarea nregistrrilor ........................................... 58 3.5.2.Comenzi pentru indexarea unei baze de date .................................... 59

    3.6. Comenzi pentru deschiderea i nchiderea tabelelor. Zone de lucru ... 62 3.7. Comenzi pentru stabilirea legturilor dintre tabelele bazei de date .... 63 3.8. Comenzi pentru lucru cu variabile de memorie .................................. 65

    MODULUL IV

    LIMBAJUL DE PROGRAMARE FOXPRO................................................ 74 4.1. Realizarea i gestionarea programelor sub Foxpro ................................. 74 4.2. Comenzi pentru elaborarea programelor sub FOXPRO ......................... 74 4.3. Structura secvenial ............................................................................... 76 4.4. Structura alternativ ................................................................................ 76 4.5. Structura repetitiv .................................................................................. 79 4.6. Programarea pe evenimente .................................................................... 84 4.7. Comenzi pentru afiarea formatat a datelor .......................................... 84

    4.7.1. Format de afiare .............................................................................. 84 4.7.2. Format de afiare i citire ................................................................ 88 4.7.3. Afiare formatat i lucrul cu butoane de control ........................... 92

    4.8. Proceduri i funcii definite de utilizator................................................. 99 4.9. Comenzi pentru lucru cu ferestre ............................................................ 99 4.10. Comenzi pentru definirea i gestionarea meniurilor ........................... 102 4.11. Comenzi pentru setarea parametrilor de lucru sub SGBD Foxpro ..... 107

    MODULUL V

    GENERATOARE AUTOMATE .................................................................. 123 5.1. Generatorul de rapoarte ......................................................................... 123

  • 5

    5.2. Crearea Formularelor (alctuirea formularelor) .................................... 133 5.3. Generatorul de etichete ......................................................................... 138 5.4. Generatorul de filtre (QUERY) ............................................................. 140 5.5. Generatorul de meniuri ......................................................................... 144 5.6. Generatorul de aplicaii ......................................................................... 148

    MODULUL VI

    PROGRAMARE ORIENTATA PE OBIECTE IN VISUAL FOXPRO .. 150 6.1 Faciliti oferite de Visual FoxPro ........................................................ 150

    6.1.1 O cale rapid de a mbunti vechile aplicaii FoxPro : ................ 150 6.1.2 Creterea productivitii i flexibilizarea produselor software ...... 151 6.1.3 Transfer uor pe 32-bii .................................................................. 152

    6.2 Programarea orientat obiect in Visual FoxPro .................................... 153 6.2.1 Proprietile ..................................................................................... 153 6.2.2 Metodele.......................................................................................... 154

    6.2.3 Evenimentele ................................................................................... 154 6.2.4 Clasele ............................................................................................. 154 6.2.5 Instanierea obiectelor ..................................................................... 156 6.2.6 Referirea unei Metode sau a unei Proprieti ntr-o clas ............... 156 6.2.7 Subclasarea unei clase unei altei clase ............................................ 156

    6.2.8 Protejarea metodelor i a proprietilor ........................................... 159 6.2.9 Polimorfismul.................................................................................. 160

    6.3 Sistem de mentenanta n POO ............................................................... 161 6.4 Realizarea claselor in Visual FoxPro ..................................................... 161

    6.4.1 Diferenele designului de suprafa ................................................. 163 6.4.2 Diferenele de meniu ....................................................................... 163 6.4.3 Adugarea proprietilor i a metodelor.......................................... 163 6.4.4 Accesarea Informaiilor clasei ........................................................ 163

    ANEXA NR. 1 ................................................................................................. 167

    ANEXA NR. 2 ................................................................................................. 171

  • 6

    MODULUL I

    ARHITECTURA BAZELOR DE DATE

    RELAIONALE

    n 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 si concepte utilizate n organizarea datelor

    D1: Datele se obin prin efectuarea unor observaii/masuratori asupra obiectelor, fenomenelor, imaginilor, sunetelor, textelor. Asupra

    datelor, reprezentate ntr-un cod convenional, se pot face operaii de stocare, prelucrare, transmitere fie prin mijloace manuale, fie prin mijloacele

    informatice. Prin conceptul de dat se nelege cuplul atribut-valoare (A,V). Orice dat se identific prin atributul ei. Valoarea concret pe care o ia acest atribut constituie o reprezentare a sa.

    D2: Informatiile se obtin prin prelucrarea datelor. Informaiile rezult din semnificaiile i legturile ce se pot deduce din ansamblul de date.

    D3: 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.

    D4: 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 etc.). BD este formata dintr-un ansamblu de fisiere corelate.

  • 7

    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.. O baz de date grupeaz un ansamblu de fiiere corelate. O baz de date este un ansamblu de date ce poate fi manipulat de mai muli utilizatori n viziuni diferite asupra datelor 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.

    D5: Schema BD reprezint structura global a bazei de date (unii autori o numesc structur global, alii structur virtual).

    Subschema BD reprezinta viziunea particulara a fiecrui utilizator. 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 BD 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.

    D6: Sistemul de Gestiune a Bazelor de date (SGBD) este format dintr-un Sistem de programe care permite construirea unor

    baze de date, ncrcarea datelor i dezvoltarea de aplicaii privind valorificarea datelor memorate n bazele de date. SGBD-ul este n fond o interfa ntre utilizatori i sistemul de oparare.

    - Orice SGBD conine un limbaj de descriere a datelor (LDD), care permite descrierea structurii unei baze de date i un limbaj de cereri (LC) sau limbaj de prelucrare a datelor (LPD)ce permite efectuarea de operaii asupra datelor aflate n baza de date cum ar fi: crearea; actualizarea; interogarea;listarea si intretinerea bazei de date.

    S.G.B.D. este un sistem de programe care asigur independena programelor aplicative fa de modul de structurare a datelor.

  • 8

    Conform metodologii ANSI fiecrei baze de date i 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 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.

    D7: 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.

    D8: 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.

    D9: 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 INFORMAIONAL

    SISTEM INFORMATIC

    Subsistem BANCA DE DATE

    Baza

    de date

    SGBD

    Echip.

    de calcul

    Proceduri

  • 9

    Schema nr. 1 Relaiile dintre sistemul informaional, sistemul informatic i banca de date Categorii de personal implicate in realizarea si exploatarea sistemelor

    informatice cu BD: Administratorul bazei de date, Programatorii de

    aplicaii, Utilizatorii finali. - 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 fisiere 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 ruleaza inclusiv programele elaborate de programatorii de aplicaii. Acesti 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. 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.

    OPERATII ASUPRA BD:

    -CREARE

    -ACTUALIZARE (Modificare valori; adugare nregistrri; tergere nregistrri) - INTEROGARE

    - LISTARE

    - INTRETINERE

    D10: Prin entitate nelegem un obiect, un fenomen, un proces din lumea real despre care ne intereseaz s avem informaii n cadrul sistemului.

  • 10

    O entitate poate fi o persoan, un loc, un obiect, eveniment sau idee pentru care dorim s memorm i prelucrm datele. De exemplu pentru activitatea de aprovizionare a unui agent economic putem identifica urmtoarele entiti: FURNIZORI, CONTRACTE, ARTICOLE, etc. Entitile pot forma relaii ntre ele.

    D11: O relaie este o asociere ntre dou sau mai multe entiti. D12: Obiectul (cmpul, atributul) este o component a unei entiti. El nu are o existen proprie, ci exist ca o caracteristic a entitii. De exemplu entitatea CONTRACT, cu care se lucreaz n sistemul de aprovizionare din cadrul unui agent economic (vezi figura 4), este caracterizat prin obiectele urmtoare: cod_furnizor, cod_articol contractat, cantitate, termen de livrare, clauze, etc.

    Figura nr. 2 Structura datelor din subsistemul aprovizionare

    Pentru exemplificarea conceptelor de entitate, obiect i dat precum i a legaturilor dintre ele, s mai analizm i activitatea de gestiune date din cadrul secretariatului unei faculti. n cadrul acestei aplicaii putem identifica urmtoarele entiti: PROFESORI, MATERII, STUDENTI, SALI_CLASA etc. Reprezentarea grafic a acestor concepte i a legturilor dintre acestea este reprezentat n figura 5. ns numai aceste noiuni nu sunt suficiente pentru modelarea organizrii datelor n baza de date, deoarece lipsesc legturile semantice ntre entiti i n interiorul acestora.

    D13

  • 11

    Pentru descrierea unei activiti pentru care s-au cules deja datele se folosete aa numitul MODEL ENTITATE-LEGTUR (MEL).

    n cadrul modelului entitate-legtur sunt puse n eviden componentele importante ale sistemului (entitile), proprietile acestor componente (atributele) i legturile dintre entiti (asocierile).

    Figura nr. 3 Exemplificri ale conceptelor: entiti, obiecte, date.

    Principalele tipuri de asocieri ntre entiti sunt reprezentate n fig. 4.

    Asociere 1:1 A B

    Asociere 1:m A B

    Asociere m:n A B

    Asocieri exclusive A B

    Asocieri recursive

    A C

  • 12

    Figura nr. 4 - Tipuri de asocieri ntre entiti

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

    n practica prelucrrii automate a datelor, s-au consacrat urmtoarele modele conceptuale: modelul conceptual ierarhic, modelul conceptual reea, modelul conceptual relaional.

    D14: Modelul conceptual "ierarhic" se bazeaz pe structuri de reprezentare "arborescente" i tipuri de legturi 1:1, 1: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 arcele reflect legturile de asociere ntre nregistrrile coleciilor de date superioare i inferioare.

    D15: 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. Acest model conceptual st la baza SGBD-urilor TOTAL(UNIVAC), DBMS(DEC) i SOCRATE.

    D16: 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). Modelul conceptual relaional a fost elaborat de matematicianul C.F.Codd de la firma I.B.M. n acest model conceperea schemei depinde exclusiv de legturile dintre obiecte. O relaie poate fi reprezentat printr-o tabel, n care fiecare rnd reprezint un tuplu (nregistrare) distinct, iar fiecare coloan reprezint un cmp al nregistrrii, cmp ce ia valori ntr-un anumit

  • 13

    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:

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

    -

    1.3 Relaii (tabele)

    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. O relaie conine tuple (rnduri) i atribute (cmpuri).

    Scrierea prescurtata (forma canonica) a unei relatii (tabele):

    CLIENTI (Cod_Client, Nume_Client, Telefon)

    n figura 5 se prezint un fragment din tabela CLIENI:

    CLIENI:

    Cod_clent Nume_client Telefon

    2121 Ion Popescu 6305643

    3456 Gergeta Pana 6267892

    4612 Ana Grigore 3128867

    7562 Victor Avram 3245276

    Fig. 5 Fragment din tabela CLIENI

    1.4 Tipuri de chei i identificarea nregistrrilor prin chei

    Cheia primar asigur unicitatea fiecrui rnd dintr-o relaie.

  • 14

    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.

    Fie tabela:

    JUDETE (CodJudet, NumeJudet,NrJudet, Populatie,ResedintaJudet)

    Un atribut sau o colecie de atribute care poate servi ca i cheie primar se numete cheie candidat. De exemplu atributele Cod_jude i Nr_jude 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 cheie alternante.

    S analizm tabela LOCALITI LOCALITATI(CodJudet, NumeLocalitate, Populatie) n aceast tabel ce atribut poate fi cheie primar? Atributul Populaie nu poate fi deoarece valoarea cmpului se schimb i nu poate s asigure unicitatea. Nume_judet nu poate fi cheie primar deoarece pot fi localiti cu acelai nume n dou judee. Numai colecia Cod_jude + Nume_localitate asigur identificarea unic i minimal pentru fiecare rnd din relaia LOCALITI. Un atribut multiplu folosit ca i cheie primar se mai numete i cheie compus (concatenat sau compozit). Atributul Cod_jude n relaia LOCALITI este o cheie externa (sau cheie strin). O cheie 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 unei relaii. Spre exemplu dac avem dou tabele: LOCALITI i JUDEE, n care un atribut apare n ambele tabele. Atributul Cod_judet n tabela JUDEE este cheie primar iar n tabela LOCALITI este cheie externa.

    (Atenie!!! Cheia ntr-o relaie poate fi cheie primar, cheie candidat, cheie alternant, cheie extern i de aceea n exprimare trebuie s se specifice ntotdeauna tipul cheii din relaia analizat. Dac n exprimare apare numai cuvntul cheie atunci se refer la cheie primar). Observatii 1:

    Atentie!!!! Exista Nomenclatoare unice pe economie: La I.N.S se gestioneaza Nomenclatoarele:

    - SIRUTA (Nomenclatorul cu localitatile din Romania) - SIRUES (Nomeclatorul unitatilor economico-sociale din Romania) La M.E.C se gestioneaza Nomenclatoarele:

    - SPEC (Nomenclatorul specializarilor obtinute prin studii) La M.M.P.S. (Nomenclatorul de meserii)

    Observatii 2:

  • 15

    Pentru Modelul Relational se utilizeaza frecvent urmatorii termeni

    echivalenti:

    TABELA = RELATIE

    ATRIBUT = Coloana a tabelei;

    TUPLU = Inregistrare (linie a tabelei)

    DOMENIU = Multimea de valori admisibile pentru un atribut;

    STRUCTURA RELATIEI = Multimea de atribute care compun structura

    relatiei;

    SCHEMA RELATIEI = Structura relatiei + restrictii privind valorile

    admise;

    CHEIE PRIMARA= Atribut sau grup de atribute care pot identifica un

    tuplu in mod unic;

    CHEIE SIMPLA (FORMATA DINTR-UN SINGUR ATRIBUT)

    CHEIE COMPUSA (formata din mai multe atribute)

    CHEIE CANDIDATA = Atribut sau grup de atribute care pot identifica

    un tuplu in mod unic; Din multimea cheilor candidate se alege cheia

    primara

    CHEIE EXTERNA = Cheia care asigura legatura intre tabele (putem avea

    legaturi de tip 1: 1; 1: m; n:m). Se realizaeaza de regual prin campuri

    comune intre doua tabele.

    Exemplu:

    CLIENT (CodClient, Denumire, Adresa,...)

    FACTURI (NrFact, DataFact, Emitent, CodClient, Cantitate, PU, Valoare,

    DataScadenta,...)

    PRODUS(CodProdus, DenProd, Um, Pret,...)

    FACTURISCADENTE(NrFact, CodClient, Data, CodProdus,Cant, Pu,

    Valoare,....)

    Chei externe:

    -CodClient pentru legatura dintre tabelele CLIENT si FACTURI;

    -CoProdus pentru legatura dintre tabele PRODUS si

    FACTURISCADENTE

    1.5. Diagrama (modelul) entitate - legtur (asociere) (DEA)

    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

  • 16

    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 paranteza care definete relaia. Folosind aceasta metod relaiile folosite mai sus se pot scrie astfel:

    RI (Cod_ar, Nume_ar, Populaie) CAPITALE (Nume_capital, Cod_ar, Anul, Populaie) Cheie extern: Cod_tara , pentru legtura cu tabela RI. ORAE(Cod_ar, Cod_ora, Cod_jude, Nume_ora, Populaie)

    Cheie extern: Cod_ar, pentru legtura cu tabela RI. CULTURI ( Nume_cultur, Export, Import) PRODUCIE ( Cod_ar, Nume_cultur, Producie)

    Cheie extern: Cod_ar, pentru legtura cu tabela RI Cheie extern: Nume_cultur, pentru legtura cu tabela CULTURI

    TRANSPORT (Cod_ar, Litoral, Export, Import) Cheie extern: Cod_ar, pentru legtura cu tabela RI

    O alt form uzual folosit pentru descrierea entitilor i a legturilor este Diagrama Entitate Legtur (DEL). O diagram entitate - legtur exprim grafic legturile dintre entiti. n diagrama entitate legtur o entitate i o relaie (tabela) sunt echivalente. Spre exemplificare s urmrim diagrama entitate - relaie din figura 6. Diagramele entitate-relaie au urmtoarele caracteristici:

    - Entitile, sau relaiile, sunt reprezentate prin dreptunghiuri iar legturile prin romburi, adic numele entitii apare n interiorul dreptunghiului i verbul care descrie legturile apare n interiorul rombului. De exemplu dreptunghiul Ora este legat de dreptunghiul ar prin rombul Se afl i se citete un Ora se afl n ar;

    - Cifra 1 scris la intrarea legturii n dreptunghiul ar i litera M scris la ieirea legturii din dreptunghiul Ora semnific o legtur de tip 1: M ntre cele dou entiti. Similar se reprezint relaia de tip M:N dintre entitile ri i Culturi i relaii de tip 1:M relaiile existente ntre entitile (tabelele) ri i Capitale i ntre relaiile ri i Transport;

  • 17

    - Un romb nscris n interiorul unui dreptunghi definete o entitate compus. O entitate compus este o legtur care are caracteristicile unei entiti. Spre exemplu entitatea Producie leag entitile ri i Culturi prin legturi de tip M:N i figureaz n acelai timp ca i entitate deoarece conine atributul cantitate pentru cheia compozit format din Cod_ar i Nume_cultur;

    - O entitate subtip apare scris ntr-un dreptunghi dublu (nscris unul n altul) i nu este conectat prin intermediul nici unui romb la entitatea ri.

    Fig. 6 - Diagrama entitate - legtur

    Se pot marca de asemenea atribute n diagrama entitate-relaie prin plasarea fiecrui atribut individual n cadrul unei buline conectate la o entitate

    M

    Culturi Producia

    Transport-

    maritim

    1

    Capitala

    Localizat

    ara

    Ora

    Aflat n

    M

    1

    1

    1 1

    N

  • 18

    sau relaie. Totui o diagrama entitate-relaie tipic are de regul un numr mare de entiti i relaii aa c includerea i a atributelor n aceast diagram poate provoca mai degrab confuzii dect aduce anumite clariti. Teme de laborator:

    Tema nr. 1

    I. Pentru evidenta consumului de materii prime aferent comenzilor de produse lansate in fabricatie se cunosc urmatoarele:

    1. In comanda se precizeaza sectia de productie si cantitatea de fabricat din produsul respectiv;

    2. Eliberarea materiilor prime pentru consum se face pe baza bonului de consum in care se precizeaza: Nr-bon; Dta; Gestiunea; Nr-Cda;

    Cod-mat; Cant-mat; pret-mat;

    3. Orice produs din nomenclatorul de fabricatie se defineste prin: Cod-p; Den-P; Pret-livrare;

    4. Materiile prime se definesc prin: Cod_mat; Den_mat; UM; Gestiunea in care se depoziteaza;

    5. Intrarile de materii prime in gestiune se face pe baza de NIR in care se consemneaza: Nr-NIR; Data; Furnizor; Gestiune-primitoare; Mat-

    prima-receptionata; Cantitatea; Pret-aprov.

    Restrictii:

    - O comanda se refera la un singur produs; - O materie prima poate fi stocata in mai multe depozite; - Pretul fiecarei materii prime difera de la un furnizor la altul; - Un depozit are un singur gestionar.

    Se cere:

    - Identificati multimea atributelor din problema; - Realizati diagrama dependentelor functionale; - Realizati diagrama entitate asociere (DEA) pe baza dependentelor

    functionale identificate.

    Tema nr. 2

    O firma are ca obiect de activitate comercializarea de produse (

    achizitionare produse de la furnizorori, depozitarea lor si vanzarea lor catre

    clienti).

    Stiind ca:

    -Marfurile sunt stocate in mai multe depozite si fiecare depozit are un singur

    gestionar;

  • 19

    -Marfurile sunt achizitionate de la diversi furnizori in cantitati si preturi diferite

    de la furnizor la furnizor;

    -Pretul de vanzare al unui produs este unic si difera de pretul de achizitionare;

    -Pentru fiecare produs se cunoaste stocul initial la inceputul perioadei,

    Se cere:

    1. Identificati multimea atributelor apartinand acestei aplicatii informatice;

    2. Elaborati matricea simplificata a dependentelor functionale; 3. Realizati modelul entitate asociere (MEA) pe baza dependentelor

    functionale identificate.

    Tema nr. 3

    III. Baza de date a unei firme contine tabelele:

    STOCURI (CodA(N6), DenA(C20), UM(C3), Stoc(N8.2)), Stocmin, Stocmax)

    FURNIZORI (CodF(N4), NumeF(C25), Strada(C25), Oras(C20), Judet(C2),

    TelefonF(N9), ContF(C12))

    CLIENTI(CodCl(N4), NumeCl(C25), Strada(C25), Oras(C20), Judet(C2),

    Telefon(N9), Cont(C12));

    COMENZI(Nr-Cda(N10), CodF/CodCl(N4), CodA(N6), Achitat(C2),

    Cantitate(N4), PretU(N6), Valoare (N(10), Data_Scadenta(D8))

    Cheie externa: CodA pentru legatura cu tabela STOCURI

    Cheia externa: CodF/CodCl pentru legatura cu tabela FURNIZORI/CLIENTI

    Se cere:

    - Trasati diagrama entitate asociere pentru aceasta BD; - Analizati posibilitatea aparitiei unor anomalii - Eliminati aceste anomalii

    1.6. Tipuri de restricii i integritatea restriciilor

    O baz de date are proprietatea de integritate dac datele coninute n ea respect reguli certe numite restricii de integritate. Ideal ar fi s avem un SGBD care s aplice toate restriciile de integritate. Dac un SGBD poate s aplice numai anumite restricii de integritate atunci celelalte restricii de integritate trebuie s fie aplicate prin alte programe sau prin procedurile manuale efectuate de utilizatorii SGBD-ului.

    Restriciile de integritate se pot mpri n trei grupe: a) restricii asupra chei primare,

  • 20

    b) restricii asupra integritii criteriului de adresare (restricii de integritate referenial)

    c) restricii de integritate a domeniului.

    a) O restricie asupra cheii primare provine din definiia unei chei primare care spune c cheia primar trebuie s fie unic.

    Restricia de integritate a entitii spune c cheia primar nu poate fi nul. Pentru o cheie compozit nici unul din atributele individuale nu poate fi nul. Proprietile de unicitate i nenul a unei chei primare asigur c se poate referi (adresa) orice valoare dintr-o baz de date prin specificarea numelui tabelei, numelui atributului i valoarea cheii primare.

    b) Cheile externe stau la baza mecanismului de formare a legturilor dintre dou tabele iar restriciile de integritate referenial asigur c numai legturile valide exist.

    O restricie de integritate referenial este o restricie care specific c fiecare cheie extern nenul dintr-o relaie trebuie s aib un corespondent (o pereche) cu valoarea unei chei primare din relaia cu care este legat. c) Un domeniu este un set de valori din care una sau mai multe coloane

    iau valorile lor actuale.

    Restriciile de integritate ale domeniului sunt reguli specifice pentru un atribut.

    Prin alegerea unui tip de dat pentru un atribut se impune o restricie asupra unui set de valori acceptate pentru acel atribut. Se pot crea reguli specifice de validare pentru un atribut prin delimitarea unui

    nou domeniu inclus n primul. Pentru a defini un domeniu unui atribut mai precis se pot exclude din ce n ce mai multe valori neacceptate pentru acel atribut. Spre exemplu n tabela RI se poate defini un domeniu pentru atributul denumirea tarii astfel nct acesta s conin cel mult 25 de caractere.

    I: Tipuri de restrictii: 1. a. Restrictii asupra cheii primare (cheia primara nu poate fi nula)

    b. Restrictii de integritate a entitatii

    2. a. Restrictii asupra cheilor externe (Fiecare cheie externa nenula dintr-o

    relatie trebuie sa aiba un corespondent (o pereche) cu valoarea unei chei

    primare din relatia cu care este legata)

    b. Restrictie de integritate referentiala

  • 21

    3. a. Restrictii asupra domeniului de valori ale atributelor (Reguli de

    validare pentru un atribut

    1.7. Dependene i determinri n mulimea atributelor (cmpurilor)

    Relaiile (tabelele) sunt conectate prin legturi. Atributele sunt de asemenea conectate cu alte atribute. Fie tabela AR_CULTURI descris prin:

    AR_CULTURI (Cod_tara, Nume_cultura, Cod_judet, Nume_judet, Populatia, PU-Export, Cantitate)

    Tabela AR_CULTURI combin diverse atribute din tabelele RI, CULTURI i POPULAIE. De exemplu atributele Cod_tara, Cod_judet, Populatia sunt luate din

    tabela TARI, atributele Nume_cultura i Export sunt luate din tabela CULTURI iar atributele Cod_tara, Nume_cultura i Cantitate se regsesc n tabela PRODUCIE. De remarcat c n tabela TARA_CULTURI apare un nou atribut Nume_judet iar cheia primar a acestei tabele este o combinaie a atributelor Cod_tara+Nume_cultur. Se observ valoarea nul atribuit atributului Cantitate pentru ara Andora (Cod_tara=AD). Dac cutam n cele trei tabele putem vedea c nu avem nici o nregistrare n tabela PRODUCII pentru ara Andora. Totui n tabela CULTURI_RI se cere s existe o nregistrare cu numele culturii deoarece ea face parte din cheia compozit a relaiei. Dac dorim ca statul Andora s fie n tabela CUTURI_RI trebuie s atribuim o cultur fictiv pentru cmpul Nume_culturi pentru aceasta ar (n acest caz cultura porumb). n tabela TARA_CULTURI fiecare atribut este legat de alte atribute. Spre exemplu valoarea cmpului Cod_ar determin valoarea cmpului Populaie_ar i o valoare a cmpului Populaie_ar depinde de valoarea cmpului Cod_ar. n limbajul utilizat n literatura de specialiate se spune Cod_ar determin funcional Populaie_ar i Populaie_ar este funcional dependent de Cod_ar. n acest caz Cod_ar este numit un determinat. Un determinat este un atribut, sau o colecie de atribute, a crui valori determin valorile altor atribute. Se mai spune c atributul A este funcional dependent de atributul B dac atributul B este un determinant pentru atributul A.

    Aceste tipuri de relaii de dependen i relaii de determinani se pot reprezenta grafic printr-o diagram cu buline. Diagramele cu buline se mai

  • 22

    numesc diagramele modelului de date sau diagramele de dependen funcional. n figura 10 se prezint diagrama cu buline pentru tabela TARA_CULTURI.

    3

    2

    1

    Fig. 7 - O diagram cu buline pentru relaia ARA_CULTURI

    n aceast diagram avem: - Cmpul Cod_tara este un determinant pentru cmpurile

    Populaia_rii, moneda, paritate; - Cmpul Nume_cultur este un determinant pentru Export; - Cmpul Cod_ar este un determinat pentru cmpul Paritate.

    Numai cmpul Cantitate este funcional dependent de ntreaga cheie primar a relaiei care este Cod_ar+Nume_cultur. Cmpurile Populaie_ar, Moneda, Paritate au o dependen parial deoarece ele sunt funcional dependente de cmpul Cod_ar care este numai o parte din cheia primar. O dependen parial este o dependen funcional fa de o parte a cheii primare n loc de ntreaga cheie primar. Exist oare i o alt dependen parial n tabela CULTURI_STATE? Da. Cmpul Export este dependent parial de Nume_cultur. Deoarece Cod_ar este un determinat att pentru cmpul Moneda ct i pentru cmpul Paritate iar cmpul Moneda este la rndul sau un determinant pentru cmpul Paritate, cmpurile Moneda i Paritate au o dependen tranzitiv.

    Cantitate

    PU-export

    Nume jude

    Populaie

    Cod_judet Cod_tara

    Nume cultura

  • 23

    O dependen tranzitiv este o dependen funcional ntre dou atribute non-cheie care sunt ambele dependente de al treilea atribut.

    Cum tim ce dependene funcionale exist ntr-o colecie de atribute i cum recunoatem dependenele pariale i tranzitive? Rspunsul depinde de cererile pe care le formulm pentru baza de date a aplicaiei informatice. Pentru fiecare atribut i relaie trebuie s definim precis att semnificaia ct i legturile existente n cadrul aplicaiei. Studiul dedicat nelegerii semnificaiei datelor dintr-o baz de date i a legturilor stabilite ntre ele, poart numele Modelarea semantic a obiectelor. Datele dintr-o aplicatie informatica cu baze de date intra intr-un

    proces de modelare in care se parcurg etapele:

    - Modelul conceptual al datelor; - Modelul logic al datelor - Modelul fizic al datelor

    Tema nr. 1: In baza de date UZINA se memoreaza atributele:

    Cod_Mat, Den_Mat, UM -Mat, Nr_Contract, Cod_Cl, Nume_Client,

    Localitate-Cl, Cont_Cl, Nr-Contract, Data-Contract, Cantitate-Contract,

    Cant-Livrata, PU-Contract, Nr-Livrare , Data-Livrare.

    Se cere:

    1. Creati si scrieti relatiile bazei de date utilizand metoda prescurtata; 2. Trasati diagrama entitate-asociere;

    Tema 2:

    Analizati sistemul obiect dintr-o universitate si stabiliti modelul datelor

    acestui sistem informatic.

    Observati dependentele partiale si dependentele tranzitive din DB:

    1. Dependenta; 2. Dependenta partiala 3. Dependenta tranzitiva

    1.8 Anomalii intalnite in proiectarea Tabelelor

    Problemele de inconsistenta a BD se numesc anomalii:

    Anomaliile sunt date de:

    - datele redundante

    - dependentele partiale

    - dependentele tranzitive

    EXEMPLE DE ANOMALII IN B.D.

    Fie Tabela:

  • 24

    CLIENTI (CodCl, NumeCl, NumeCopil, CodFr,NumeFr, CodPet,

    NumePet, Animal)

    Tipuri de anomalii:

    1. Anomalii de inserare: Nu se pot adauga inregistrari in tabela

    deoarece nu stim Valoarea intregii chei primare

    Ex: Cheie primara: CodCl,NumeCopil, NumePet

    Nu putem insera o noua inreg. daca nu cunoastem valoarea intregii chei primare

    2. Anomalii de stergere: Se sterg date dintr-o Tabela si neintentionat se

    pierd date din aceea tabela.

    Ex: Daca sterg CodCl= 812 deoarece Ionescu nu mai este Client se sterge

    CodFirma si riscam sa nu mai stim NumeFirma.

    3. Anomalii de actualizare: Nu putem schimba valoarea unui atribut

    din cheia copozita (daca schimbam valoarea unui atribut atunci BD devine inconsistenta)

    Ex: Daca schimbam CodCl=812 cu CodCl= 445 numai in unele inregistrari

    atunci riscam ca sa avem un Client cu doua coduri

    1.9 NORMALIZAREA - Ameliorarea succesiva a schemei

    conceptuale a BD

    Procesul de identificare si eliminare a anomaliilor se numeste

    normalizarea BD.

    Pentru proiectarea corecta a unei BD trebuie:

    - sa intelegem dependentele functionale ale tuturor atributelor

    - sa recunoastem anomaliile cauzate de datele redundante, dependentele

    partiale si dependentele tranzitive;

    - sa cunoastem modul in care se elimina aceste anomalii(normalizarea BD).

    FORMA NORMALA 1 (FN1)

    Fie tabela:

    CLIENTI(CodCl, NumeCl, NumeCopil, CodFirma,NumeFirma,

    CodPet, NumePet, Animal)

    Deoarece fiecare inregistrare (intrare) trebuie trebuie sa contina o

    singura valoare a cheii primare (CodCl), aceasta structura nu indeplineste

    aceasta conditie.

    Aceasta relatie se numeste nenormalizata.

    Observam ca fiecare familie poate avea mai multi copii si mai multe

    animale de casa.

    Rezulta ca aceasta structura contine doua grupuri repetitive (NumeCopil

    respectiv NumePet) care induc date redundante in tabel (anomalii).

  • 25

    O tabela (relatie/entitate) este in FN1 daca nu contine grupuri repetitive.

    Aducerea unei relatii in FN1

    Pentru a aduce o relatie in FN1 trebuie sa inlaturam grupurile repetitive

    din relatie. Acest lucru se face prin expandarea cheii primare astfel incat ea sa

    includa grupul repetitiv.

    Observam ca grupul repetitiv NumeCopli este independent de grupul

    NumeAnimal.

    Executarea conversiei pentru fiecare grup repetitiv conduce la obtinerea

    a doua tabele:

    COPII(CodCl, NumeCopil, NumeCl, CodFirma, NumeFirma)

    CLIENTI (CodCl, CodPet, CodFirma, NumeFirma, NumePet, Animal)

    Cele doua relatii nu mai contin grupuri repetitive, insa ambele relatii au

    anomalii de stergere si de actualizare

    FORMA NORMALA 2 (FN2)

    O relatie este in FN2 daca este in FN1 si nu contine nici o dependenta

    partiala.

    Eliminarea dependentelor partiale se face in doi pasi:

    - se identifica dependentele functionale pentru fiecare atribut - se creaza noi tabele si se plaseaza fiecare atribut intr-o tabela astfel

    ca fiecare atribut sa fie functional dependent de intreaga cheie

    primara.

    Obs: O tabela in FN1 cu un singur atribut in cheia primara este automat in

    FN2.

    Aducerea unei tabele in FN2

    Pas 1: Se observa ca cele doua relatii din FN1 contine cheia compozita

    CodCl-NumeCopil respectiv CodCl, CodAnimal

    Pas 2: Construirea de noi relatii astfel ca fiecare atribut sa fie functional

    dependent de intreaga cheie primara.

    Rezulta tabelele:

    CLIENTI (CodCl, NumeCl, CodFirma, NumeFirma)

    COPII(CodCl,NumeCopil)

    Cheie externa: CodCl pentru legatura cu tabela CLINETI

    ANIMALE (CodCl, CodPat, NumePat, Animal)

    Cheie externa: CodCl pentru legatura cu tabela CLIENTI

    Cele trei tabele nu mai contin acum dependente partiale, dar contin

    dependente tranzitive:CodClCodFirma.NumeFirma

    FORMA NORMALA 3 (FN3)

  • 26

    O relatie este in FN3 daca este in FN2 daca orice camp determinant este

    un camp candidat la cheie primara.

    Pentru a aduce o relatie in FN3 trebuie sa inlaturam atributele care

    depind de determinantii care nu candideaza la cheie si sa plasam aceste atribute

    intr-o noua relatie care are atributul determinant ca si cheie primara.

    In tabela CLIENTI atributele CodClCodFirmaNumeFirmasunt tranzitivesi atunci transformam tabela CLIENTI in doua tabele care sa nu mai contina atribute tranzitive:

    Celelalte tabele nu contin atribute transitive

    Rezulta: CLIENTI (CodCl, NumeCl, CodFirma)

    FIRME( CodFirma, NumeFirma)

    Cheie externa: CodFirma pentru legatura cu CLIENTI

    COPII (CodCl, NumeCopil)

    Cheie externa: CodCl pentru legatura cu tabela CLIENTI

    ANIMALE(CodCl,CodPet, NumepPet, Animal)

    Cheie externa : CodCl pentru legatura cu CLIENTI

    Cele 4 tabele nu mai au anomalii

    1.10 Etape in realizarea aplicatiilor informatice cu baze de date

    1. Analiza cerintelor aplicatiei

    2. Proiectarea aplicatiei si normalizarea bazei de date

    3. Realizarea aplicatiei

    4. Implementarea si exploatarea aplicatiei

    n 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. n 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. n urma acestei etape rezult

  • 27

    specificarea n detaliu a cerinelor funcionale i a restriciilor de realizare a aplicaiei informatice cu baza de date.

    b) Proiectarea aplicaiei n 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. n cadrul acestei etape accentul cade pe proiectarea structurii bazei de date n scopul asigurrii eficienei aplicaiei, eficien raportat la criteriul cost-performane.

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

  • 28

    MODULUL 2:

    PREZENTAREA SGBD-ULUI FOXPRO

    FOXPRO este un Sistem de Gestiune a Bazelor de Date (SGBD) de tip

    relaional. El este un instrument performant pentru toate aplicaiile de gestiune cu baze de date. Pentru a marca cateva date semnificative din evolutia

    sistemului FOXPRO amintim ca la sfarsitul anilor 70 firma Asthon-Tate a realizat produsl 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 catre 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 catre Microsoft, care a

    dezvoltat versiunile 2.5 si 2.6 ale produsului FoxPro sub MS-DOS, Windows,

    Mac si UNIX, utilizate pe microcalculatoare ca statii de lucru individuale sau in

    retea locala LAN. In anul 1995, Microsoft lanseaza versiunea Visual Foxpro 3,

    care a fost urmata in 1997 de versiunea 5 si in anul 1998 apare versiunea

    Visual FoxPro 6 ca parte componenta a pachetului Visual Studio 6.0, alaturi de

    alte produse de tip Visual ca: Basic, C++, Java++, InterDev. Toate aceste

    produse ofera compilari rapide, depanare eficienta si interactiva, HTML ca

    interfata pentru aplicatii tip multimedia si compatibilitate cu toate produsele din

    pachetele VISUAL STUDIO si OFFICE precum si dezvoltarea aplicatiilor in

    retea structurata pe trei nivele (date, procese, interfata utilizator). Evolutia

    Sistemelor de Gestiune a Bazelor de date este prezentata schematic in fig. nr. 1.

    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 ;

  • 29

    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:

    Figura nr 1 The evolution. Database Technologies

    Generatorul de Rapoarte (REPORT WRITER) ;

    Generatorul de Ecrane ( SCREEN BUILDER);

    Data Collection and

    Database creation (60s and earlier)

    Database Management System (70s and early 80s) Hierarchical DBMS

    Relational Database Systems

    Query Language: SQL, etc

    Advanced Database Systems

    (middle 80s - present)

    Web-based Database Systems (90s present) Web - Mining

    Data Warehousing and Data Mining

    (late 80s - present)

    New generation of integrated information Systems (2000)

  • 30

    Generatorul de meniuri (MENU BUILDER);

    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 :

    Utilitarul pentru gestionarea fiierelor;

    Utilitarul pentru formatarea programelor surs;

    Utilitarul pentru generarea documentaiei.

    FOXPRO are urmatoarele 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.

    Connectivity 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 funii C. Trace /Debug, care permite programatorului s urmreasc i s

    depaneze relativ uor codul programului surs, afind ntr-o fereastr Debug 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-unul 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.

  • 31

    Dac totul decurge normal, Foxpro este ncrcat n memorie i se prezint utilizatorului afind un ecran de forma:

    Fig. 2. Ecranul principal FoxPro

    Moduri de lucru in FoxPRO

    Dupa lansarea produsului FoxPro utilizatorul poate lucra in urmatoarele

    moduri: prin comenzi, prin meniuri ale sistemului, prin limbajul de programare

    FOXPRO, prin generatoare automate, prin limbajul SQL, sau o combinatie a

    tuturor acestor moduri de lucru.

    Ecranul principal FoxPro contine o fereastra tip Microsoft (vezi fig. 2)

    cu urmatoarele elemente:

    - bara de titlu (cu numele produsului ) si butoanele de minimizare,maximizarea ferestrei , iesirea de sub FoxPro;

    - bara meniului sistem care contine un meniu orizontal cu optiunile de lucru : File, Edit, View, Format, Tools, program, Windows, Help. La

    selectarea unei optiuni apare un submeniu vertical, de unde se se

    selecteaza optiunea dorita (in modul de lucru prin meniu sistem);

    - bara de unelte care contine butoane dispuse orizontal , care sunt sau nu active functie de starea curenta de lucru. Prin aceste butoane se

    poate apela (pe o alta cale, prin modul de lucru prin meniu sistem) o

    anumita optiune din sistem;

    - fereastra de comanda care contine cursorul si care permite tastarea unei comenzi sau apelul unui program (in modul de lucru prin

    comenzi)

  • 32

    - bara de stare situata in partea de jos a ferestrei principale, unde se afiseaza starea executiei curente. Bara lipseste daca a fost executata

    comanda SET STATUS OFF;

    - aria de iesire (formata din restul spatiului neocupata) este destinata afisarii rezultatelor obtinute in urma executiei 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 desfasoara in fereastra de comanda din ecranul principal. Aici se afla cursorul si utilizatorul poate lucra in stil

    intrpreter sau in stil compilator.

    Stilul interpreter, inseamna ca se tasteaza o comanda FoxPro si apoi se

    apasa tasta Enter. Sistemul preia comanda , o interpreteaza si daca nu sunt erori

    o lanseaza in executie. Rezultatul este afisat in aria de iesire din ecranul

    principal. Daca se detecteaza o eroare la interpretarea comenzii, atunci se

    afiseaza un mesaj explicativ si comanda trebuie corectata corespunzator.

    Stilul compilator permite dezvoltarea programelor scrise in codul sursa

    al limbajului FoxPro. Se apeleaza editorul de texte (MODI COMM) care ne

    plaseaza intr-o fereastra specifica, unde se tasteaza codul sursa al aplicatioei, iar

    la iesire (prin apasarea tastei CTRL/W) rezulat un fisier cu extensia .PRG. In

    continuare se apleaza programul sursa ( DO nume) care este compilat, link-

    editat si rulat. Pentru a obtine un fisier executabil (de tip .EXE) este nevoie de

    componenta RUN TIME . 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 intrfetele sistemului FoxPro. Acest mod de lucru se

    recomanda utilizatorilor care prefera dezvoltarea aplicatiilor cu ajutorul

    generatoarelor. Efortul depus pe aceasta cale este redus si nu se programeaza in

    cod sursa. Optiunile de lucru sunt dispuse intr-un meniu principal orizontal si

    fiecare genereaza un submeniu vertical, rezultand astfel un sistem de meniuri.

    Observaii: 1. Trecerea de la modul de lucru comanda la cel tip meniu este

    echivalent cu trecerea controlului de la fereastra de comenzi la meniul principal i invers. Acest lucru se realizeaz uor prin intermediul tastei F10 sau efectund un click mouse pe meniu sau n fereastra de comenzi.

  • 33

    Saltul de pe bara de meniu n fereastra de comenzi se poate face astfel: - apsnd tasta F10 sau - click mouse n fereastra de comenzi sau - apsnd tasta Esc 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 fierbinte 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.

  • 34

    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:

    [] [] [FOR ] [WHILE ]

    unde:

    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; - reprezint un grup de elemente separate de regul prin virgul; - 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 HISTORY 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 apsm Enter.

    - Fiecare comand Foxpro prelucreaz n mod implicit un anumit tip de fisier (Ex. Use , Copy - fiiere tip .DBF, Report form ... fiier tip .FRM, Modify command fiier .PRG, etc). De aceea, n mod normal, utilizatorul va

  • 35

    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 Semnificaie

    ALL Comanda acioneaz asupra tuturor nregistrrilor din tabela activ

    NEXT n Comanda acioneaz asupra urmtoarelor n nregistrri, ncepnd cu cea curent, din tabela activ

    RECORD n Comanda acioneaz asupra nregistrrii cu numrul n (specificat) din tabela activ

    REST 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 supus 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 WHILE. Comanda va putea avea astfel formatul:

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

  • 36

    - WHILE n 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

    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), .Y. (Yes) - pentru Adevrat

    .F. (False), .N. (No) - pentru Fals.

    - constante de tip dat calendaristic, cuprinse ntre paranteze de tip

    acolad ca delimitatori ( ex 10/30/99)

    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

  • 37

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

  • 38

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

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

    Operatorii de comparare sunt:

    < mai mic

    > mai mare

    = egal

    sau # diferit de

    = mai mare sau egal

    $ 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

  • 39

    - pentru concatenare cu eliminarea spaiilor de la 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.

    2.5.5. Funcii

    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 - logic - 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:

    ALLIAS() 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( )

    Returneaz numele tabelei de date deschis n zona de lucru specificat. Dac nu exist nici o tabel de date deschis, funcia ntoarce fiierul nul.

    EOF() sau EOF ( )

    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

  • 40

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

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

    Returneaz numele fiierului index activ din zona de lucru curent. Pentru a se obine numele fiierului index master dintr-o zon de lucru se folosete opiunea .

    RECNO() sau RECNO( )

    Returneaz numrul nregistrrii curente din tabela activ. Pentru a obine numrul nregistrrii curente din tabela deschis n alt zon de lucru se utilizeaz opiunea .

    SEEK() sau SEEK( exp,alias )

    Returneaz valoarea logic True dac expresia cutat este gsit n indexul activ. Dac expresia cutat este gsit, pointerul nregistrrii este poziionat pe nregistrarea gsit, iar n caz contrar funcia ntoarce valoarea logic False i pointerul este plasat la sfritul fiierului. Opiunea permite cutarea expresiei ntr-o tabel deschis n zona de lucru specificat.

    DELETED() sau DELETED( )

    Returneaz valoarea logic True dac nregistrarea curent din zona selectat sau din cea precizat cu este marcat pentru tergere i False n caz contrar.

    2.5.5.2. Funcii destinate prelucrrii datelor numerice:

    CHR() sau CHR( )

    Returneaz caracterul al crui cod zecimal este echivalent cu expN.

    INT() sau INT(expN)

    Returneaz partea ntreag a exp N prin ignorarea prii zecimale (trunchiere).

    ROUND() sau ROUND(exp1, exp2)

  • 41

    Rotunjete numrul specificat sau rezultat din evaluarea expresiei exp1 la un numr de zecimale specificat n exp2. Dac exp2 este negativ, numrul rotunjit va fi un numr ntreg.

    STR() sau STR(expN1, expN2, expN3 )

    Convertete o expresie numeric, specificat prin expN1 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() sau CTOD(expC)

    Returneaz valoarea datei care corespunde argumentului de tip caracter, n formatul dat calendaristic MM/DD/YY (Luna/Zi/An).

    LOWER() sau LOWER(expC)

    Convertete toate literele mari din expC n litere mici corespunztoare (dac exist). Caracterele nealfabetice nu sunt afectate.

    UPPER() sau UPPER(expC)

    Convertete toate caracterele alfabetice mici din expC n majuscule (dac exist). Caracterele nealfabetice nu sunt afectate.

    VAL() 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 din 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)

  • 42

    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.

    2.5.5.4. Funcii de tip dat calendaristic

    CDOW()

    Returneaz numele zilei sptmnii pentru expresia dat.

    DATE()

    Returneaz data sistemului.

    DTOC([,1])

    Returneaz un ir coninnd data care corespunde argumentului, sub formatul standard american LL/ZZ/AA (dac nu au fost selectate alte opiuni 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()

    Returneaz un ir coninnd data care corespunde argumentului, sub forma aaaa/ll/zz..Aceast funcie este util pentru indexarea tabelelor dup un cmp de tip dat calendaristic i este echivalent cu funcia DTOC cu argumentul opional 1.

    DMY ()

    Returneaz data calendaristic n formatul european zz/ll/aa.

    MDY ()

    Returneaz data calendaristic n formatul standard american ll/zz/aa.

    YEAR ()

    Returneaz anul din data specificat ca un numr de 4 cifre.

  • 43

    TIME()

    Returneaz ora curent din sistem n formatul hh:mm:ss.

    2.5.5.5. Funcii financiare

    FV(,,) Calculeaz valoarea viitoare a unei investiii. PAYMENT(expN1,expN2,expN3)

    Calculeaz plata regulat cerut pentru amortizarea unui credit, unde expN1 este valoarea iniial a creditului, expN2 este dobnda iar expN3 este numrul perioadelor. PV(

  • 44

    MODULUL 3

    COMENZI FOXPRO PENTRU CREAREA SI

    GESTIONAREA BAZEI DE DATE

    3.1. Comenzi pentru crearea bazei de date

    SGBDR-ul FoxPro permite crearea tabelelor unei baze de date

    relationale in care se stocheaza structura si datele acestor tabele. Se prezinta in

    continuare implementarea LDD in FoxPro.

    CREATE DATABASE [ ] | ?

    unde:

    - nume_ baza_ de_ date specifica numele bazei de date care va fi

    creata. Fisierul bazei de date are extensia .DBC;

    - ? afiseaza o fereastra de dialog in care se specifica numele

    bazei de date care va fi creata.

    3.1.1 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 inregistrrile 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_tabel [.DBF]?] 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.

  • 45

    b) CREATE TABLE nume_tabel[.DBF] (nume_cmp1,tip(lungime, [,nume_cmp2, tip(lungime),...] [FROM ARRAY nume_masiv

    FROM nume_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. Comanda COPY STRUCTURE TO permite crearea unei noi tabele, prin

    copierea structurii sau a anumitor campuri dintr-o tabela activa in zona de lucru

    curenta. Sintaxa comenzii este:

    COPY STRUCTURE TO [FIELDS

    [WITH ] CDX [WITH] PRODUCTION ]DATABASES

    [NUME ]

    Unde:

    . este numele tabelei nou create

    specifica campurile din noua tabela ;

    este numele bazei de date;

  • 46

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

    MODIFY STRUCTURE

    Dac n zona de lucru curent exist o tabel de date deschis, atunci comanda se va referi la 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_cmp1, 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 [IN nr_zon] [TO PRINTERTO FILE nume_fis] [NO CONSOLE]

    LIST STRUCTURE [IN nr_zon] [TO PRINTERTO 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

  • 47

    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

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

    c) APPEND FROM nume_fiier[.ext] [FIELDS ]FOR ] [TYPE] [DELIMITED [WITH

    TABWITH WITH BLANK DIF

    FW2MODWKSSDFWK1WK3XLS] 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. Clauza 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

  • 48

    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

    [FOR ] [FIELDS ] 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 numarul de cmpuri din structura tabelei, atunci cele n plus vor fi ignorate, iar dac este mai mic, cmpurile rmase vor fi vide.

    Comanda INSERT are formatul:

    INSERT [BEFORE] [BLANK] Ea permite adugarea unei/unor nou nregistrri prin inserarea ei dup

    nregistrarea curent, dac nu exist Before i naintea acesteia cu opiunea BEFORE. nregistrarea adugat va fi completat de la tastatur, asemenea adugrii cu Append, sau va fi automat completat cu cmpuri vide dac s-a precizat opiunea BLANK.

    3.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 :

  • 49

    - REPLACE. Comenzile EDIT i CHANGE au format i aciune asemntoare, astfel c le vom trata mpreun; ele se prezint astfel:

    EDIT [FIELDS ] [ scope] [FOR ] [WHILE ] [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 ] [ scope] [FOR ] [WHILE ] [FREEZE cmp] [NOAPPEND] [NOMODIFY] [NOCLEAR]