Baze de Date - Visual Fox - I

download Baze de Date - Visual Fox - I

of 21

Transcript of Baze de Date - Visual Fox - I

Baze de date Visual Fox pag. 1 Manual recomandat...........................................................................................................2 Programe Fox....................................................................................................................2 Elemente de limbaj........................................................................................................2 Variabile....................................................................................................................2 Instruciuni.................................................................................................................2 Tipuri de date.............................................................................................................3 Masive.......................................................................................................................5 Subprograme utilizator..............................................................................................5 Organizarea logic a datelor..............................................................................................7 Informaii, date, tipuri de date.......................................................................................7 Structuri de date.............................................................................................................7 Etape n evoluia metodelor i tehnicilor de organizare a datelor.................................8 Avantaje i dezavantaje ale organizrii datelor n fiiere pe aplicaii...........................8 Organizarea datelor n baze de date...................................................................................8 Nivele de organizare a datelor n bazele de date:..........................................................9 0.1.SGBD definire, funcii..........................................................................................9 Tipuri de bnci de date..................................................................................................9 Modele conceptuale de baze de date.............................................................................9 Terminologie.............................................................................................................9 Tipuri de asocieri sau relaii....................................................................................10 Modelul ierarhic:.....................................................................................................10 0.1.1.Modelul reea:.................................................................................................10 Modelul relaional:..................................................................................................10 Regulile lui Codd.....................................................................................................12 Limbajul SQL..........................................................................................................12 Forme normale.........................................................................................................12 Tranzacii.................................................................................................................14 1.TABELE.......................................................................................................................14 Generaliti..................................................................................................................14 Crearea unei tabele......................................................................................................14 Operaii la nivel de structur a unei tabele..................................................................15 ncrcarea cu informaie a unei tabele.........................................................................15 Indicatorul de nregistrri............................................................................................16 1.1.Domeniul nregistrrilor........................................................................................16 Actualizarea coninutului tabelelor..............................................................................17 tergerea nregistrrilor...............................................................................................17 Localizarea nregistrrilor unei tabele.........................................................................17 Importuri i exporturi de date......................................................................................17 Afiarea coninutului nregistrrilor............................................................................17 Ordonarea nregistrrilor unei tabele...........................................................................17 Deschiderea i nchiderea tabelelor. Zone de lucru.....................................................19 Extragerea de informaii statistice din tabele..............................................................20 Relaii ntre tabele........................................................................................................20

_______________________________________________________________________

Baze de date Visual Fox

pag. 2

Manual recomandatOvidiu Marcu, C.Zotic, G.D. Vlad, Informatic, manual pentru clasa a XII-a, Baze de date, Sisteme de gestiune a bazelor de date, Editura GIL (aprobat prin OMECT nr.1561/80 din 23.07.2007)

Programe FoxO comand Fox se poate introduce direct n fereastra de comenzi sau ntr-un fiier de comenzi (program). Editarea unui program: MODIFY COMMAND ? | [NOEDIT] Lansarea n execuie: DO Permiterea sau inhibarea mesajelor sistem: SET TALK ON | OFF

Elemente de limbajVariabileO variabil are urmtoarele caracteristici: nume (identificator) tip de dat (se stabilete prin atribuire, fiind deci modificabil) valoare (curent) adres de memorie (gestionat de sistem) Obs: n Fox variabilele simple nu trebuie neaprat declarate.

InstruciuniObs: 1. elementele de limbaj nu sunt CASE-senzitiv 2. instruciunile se scriu cte una pe linie, cu excepia celor multi-linie care se scriu pe mai multe linii 3. o instruciune linie se poate scrie pe mai multe linii dac se separ sintactic corect i fiecare linie care nu este ultima se termin cu caracterul (;). 4. comentariul de la nceputul unui rnd se introduce cu (*), iar cel de la sfritul unui rnd cu (&&). 5. la majoritatea instruciunilor i clauzelor instruciunilor se pot folosi doar primele 4 caractere. 1. Citirea datelor Fiecare dat se citete separat printr-o comand:INPUT TO

Exp:INPUT Numar elemente: TO n

2. Scrierea datelor O list de expresii se afieaz cu comanda:? | ??

Obs: ? determin saltul la nceputul unei linii noi i apoi afiarea rezultatelor expresiilor. Exp:? Suma este:,a,Diferenta este:,b

3. Atribuirea=

Obs: dac variabila nu exist, este creat, altfel i se modific valoarea (i eventual tipul) Exp:a=b+17

4. Decizia Este o instruciune multi-linie (liniile IF, ELSE, ENDIF nu trebuie s conin instruciuni): IF Exp: [ELSE ] ENDIF IF a>=0 ?Pozitiv ELSE ?Negativ ENDIF

5. Selecia

_______________________________________________________________________

Baze de date Visual FoxEste o instruciune multi-linie:DO CASE CASE ... CASE [OTHERWISE ] ENDCASE

pag. 3Exp:DO CASE CASE a>0 ?Strict pozitiv CASE a=0 ?Nul CASE a9 a=int(a/10) ENNDO

Obs: clauza EXIT determin ieirea forat din ciclu. 7. Structura repetitiv cu numr cunoscut de pai Este o instruciune multi-linie:FOR = TO [; STEP ] [EXIT] ENDFOR | NEXT

Exp:FOR i=1 TO n STEP 2 ? i ENDFOR

Obs: clauza STEP determin pasul ciclului.

Tipuri de date1. Tipul logic Mulimea valorilor: .T., .F. Operatori logici: NOT (!), AND, OR 2. Tipul numeric Mulimea valorilor: numere ntregi sau reale cu sau fr semn (eventual n format tiinific) Operatori aritmetici: +, -, *, /, %, ** (^) Comenzi privitoare la tipul numeric: SET DECIMALS TO . Funcii privitoare la tipul numeric: ABS(), SQRT(), INT(), ROUND(), SIGN(), MOD(),CEILING(), FLOOR(), EXP(), LOG(), LOG10(), PI(), DTOR(), RTOD(), SIN(), COS(), TAN(), ASIN(), ACOS(), ATAN(), ATN2(), PAYMENT(), PV(), FV().

Exemplu de program: afiai rsturnatul unui numr ntreg.* rasturnatul unui numar intreg: SET TALK OFF CLEAR && sterge ecranul INPU Numarul dorit: TO n semn=SIGN(n) n=ABS(n) r=0 DO WHIL n0 && ciclul de prelucrare a cifrelor r=r*10+n%10 n=INT(n/10) ENDD ?Rasturnatul este:,semn*r SET TALK ON

Exerciiu: rulai programul pentru valorile 123 respectiv -123; eliminai instruciunile referitoare la semnul numrului i rulai din nou programul pentru cele dou valori; explicai rezultatul.

_______________________________________________________________________

Baze de date Visual Fox

pag. 4

Exerciii: scriei programe FOX pentru rezolvarea urmtoarelor probleme: 1. Determinai dac un numr natural este sau nu prim. 2. Determinai al n-lea termen al irului Fibonacci. 3. Determinai dac un numr natural este sau nu palindrom 4. Descriei modul de funcionare a funciei ROUND() folosind documentaia online i dai 5 exemple semnificative de funcionare a acesteia. 3. Tipul ir de caractere Mulimea valorilor: iruri de caractere ordonate delimitate de apostrofuri () sau ghilimele () Exp: mama, tata Operatori: - de concatenare: + (concatenare), (concatenare special) - relaionali: =, (!=, #), =, == (identic egal) - de incluziune: $ - operatorii relaionali de comparare a dou iruri de caractere; Comenzi referitoare la tipul ir de caractere: SET EXACT ON | OFF controleaz funcionarea operatorului = (n cazul ON este echivalent cu ==, n cazul OFF ntoarce .T. dac irurile sunt identice sau irul drept este inclus n cel stng ncepnd cu prima poziie. Funcii referitoare la tipul ir de caractere: CHR(), ASC(), SUBSTR(), LEFT(), RIGHT(),

REPLICATE(), SPACE(), ALLTRIM(), LTRIM(), [R]TRIM(), PADC(), PADL(), PADR(), AT(), ATC(), RAT(), ATCLINE(), ATLINE(), RATLINE(), OCCURS(), LEN(), ISALPHA(), ISDIGIT(), ISLOWER(), ISUPPER(), LOWER(), UPPER(), PROPER(), CHRTRAN(), STRTRAN(), STUFF(), SYS(15), LIKE(), SOUNDEX().

Exerciii: 1. Dai cteva exemple semnificative pentru modul de funcionare a operatorilor pe iruri de caractere 2. Descriei modul de funcionare a funciilor scrise cu caractere ngroate de mai sus, folosind documentaia online; dai cte trei exemple semnificative pentru fiecare funcie. 3. Scriei un program FOX care citete de la tastatur un ir de caractere i tiprete: a) numrul literelor din ir b) irul obinut prin nlocuirea majusculelor cu minuscule i invers c) numrul de apariii ale primului caracter n ir d) irul obinut prin eliminarea spaiilor 4. Tipul dat calendaristic Mulimea valorilor: date calendaristice corecte n formatul implicit {LL/ZZ/AA} i data vid { } Exp: { }, {12/20/2005} Operatori: - adunarea unui numr de zile la o dat calendaristic: + - scderea unui numr de zile la o dat calendaristic: - scderea a dou date calendaristice: - operatorii relaionali de comparare a dou date calendaristice; Comenzi referitoare la tipul dat calendaristic: SET DATE TO [MDY | DMY | YMD |], SET CENTURY ON | OFF, SET STRICTDATE TO [0|1|2], SET MARK TO []. Funcii referitoare la tipul dat calendaristic: DATE(), DOW(), CDOW(), DAY(), MONTH(), CMONTH(), GOMONTH(), YEAR(). Exerciii (folosii i funciile de conversie de la titlul 6): 1. Dai cteva exemple semnificative pentru modul de funcionare a operatorilor pe date calendaristice 2. Descriei modul de funcionare a comenzilor i funciilor scrise cu caractere ngroate de mai sus, folosind documentaia online; dai cte un exemplu semnificativ n fiecare caz. 3. Scriei un program FOX care citete de la tastatur o dat calendaristic i tiprete: a) dac este anterioar, identic sau ulterioar cu data curent b) a cta zi din sptmn reprezint (1 este considerat luni i 7 duminic) c) data corespunztoare primei zile a lunii n curs d) data corespunztoare ultimei zile a lunii n curs e) data corespunztoare primei zile a anului n curs

_______________________________________________________________________

Baze de date Visual Fox

pag. 5

f) data corespunztoare ultimei zile a anului n curs g) data n formatul urmtor: exp: pt. {02/05/2005} se va afia: Luni, 2 mai 2005 5. Tipul Memo Reprezint o facilitate puternic a FoxPro-ului, permind programatorului s controleze la nivel inferior diverse date (drivere de imprimant, texte cu lungime variabil, imagini, etc.), interpretarea acestor date rmnnd la latitudinea programatorului, Fox-ul tratndu-le ca simple iruri de caractere, astfel multe din funciile pe iruri de caractere se pot utiliza pentru datele de tip Memo. 6. Funcii pentru conversiile ntre tipuri de dateDTOC(), CTOD(), DTOS(), DMY(), MDY(), STR(), VAL().

Exerciiu: descriei modul de funcionare a funciilor scrise cu caractere ngroate de mai sus, folosind documentaia online; dai cte trei exemple semnificative pentru fiecare funcie. 7. Funcii referitoare la toate tipurile de dateTYPE(), EVALUATE(), EMPTY(), MIN(), MAX(), BETWEEN(), INLIST().

Exerciiu: descriei modul de funcionare a funciilor scrise cu caractere ngroate de mai sus, folosind documentaia online; dai cte trei exemple semnificative pentru fiecare funcie, pentru fiecare funcie folosindu-se trei tipuri de date diferite.

MasiveObs: masivul este echivalentul tipului tablou; variabilele de tip tablou trebuie declarate nainte de a fi referite; pot avea o dimensiune sau dou, indicii pornind totdeauna de la 1. Declarare: DIMENSION | DECLARE ( [,]) , Exp: DIME a[10], x[29][10] Obs: se pot folosi paranteze rotunde; pot fi iniializate i prin folosirea comenzii STORE. Exp: STOR 0 TO a, x are ca efect iniializarea tuturor elementelor din a i x cu 0. Funcii de lucru cu masive: ALEN(), AINS(), ACOPY(), ADIR(), AFIELDS(), ASCAN(), ASORT().ADEL(), AELEMENT(), ASUBSCRIPT(),

Exerciiu: descriei modul de funcionare a funciei ALEN() prin dou exemple semnificative.

Subprograme utilizatorDefinirea subprogramelor:FUNCTION PROCEDURE

Lista parametrilor: apare pe linia urmtoare antetului:PARAMETERS

Obs: - un subprogram se termin cu comanda RETURN (dac lipsete se consider implicit) - implicit, parametrii se transmit prin valoare la funcii i prin adres la proceduri - n Fox subprogramele se scriu la sfritul programului sau n fiiere de funcii i proceduri Apelul subprogramelor:[=]([]) DO [WITH ]

Comenzi i funcii de lucru cu subprograme: SETPARAMETERS(), SET UDFPARM TO.

PROCEDURE

TO,

CLOSE

PROCEDURE,

Exp: suma cifrelor unui numr natural.set talk off input Numarul: to n ? rast() set talk on func rast para x private rez && declarare locala rez=0 do whil x0 rez=rez+x%10 x=int(x/10) endd retu rez

_______________________________________________________________________

Baze de date Visual FoxExerciiu: scriei o procedur care interschimb valorile a dou variabile i un program de testare.

pag. 6

_______________________________________________________________________

Baze de date Visual Fox

pag. 7

Organizarea logic a datelorInformaii, date, tipuri de dateInformaia, este, alturi de materie i energie, o noiune de larg generalizare filozofic i reprezint reflectarea n contiina noastr a legturilor cauz-efect din lumea nconjurtoare. O informaie este o triad a elementelor entitate, atribut, valoare. Entitatea formeaz obiectul informaiei. Atributul (sau caracteristica) este elementul de descriere a entitii respective, caracterul sau o proprietate a acesteia. Valoarea este o msur a proprietii sau atributului asociat. De exemplu, informaia despre rezultatul unui concurs se poate reprezenta astfel: entitatea concurent, atributul rezultat, iar valoarea admis. Obs: o entitate se caracterizeaz de obicei prin mai multe proprieti, avnd astfel asociate mai multe atribute i valorile lor. Datele constituie materializarea, reprezentarea simbolic a informaiilor (prin semne, litere, cifre) ntr-o form convenional (scris, vorbit, luminoas, semne grafice, desene), convenabil unei comunicri. Ele au o interpretare (semantic) i sunt prelucrate de om direct sau prin calculator. Prin prelucrarea datelor se nelege de obicei att prelucrarea ca form ct i prelucrarea ca sens. Datele prelucrate n sistemele informatice nu sunt omogene. Prin tipul unei date se precizeaz mulimea valorilor pe care le poate lua data i operaiile care se pot efectua asupra ei. n general, datele sunt de tipuri simple (sau nestructurate) sau de tipuri structurate (statice tablou, articol, mulime, fiier sau dinamice liste, arbori).

Structuri de dateO colecie de date pe care s-a definit o structur, creia i este specific un anumit mecanism de selecie i identificare a componentelor, constituie o structur de date. Asupra unei structuri de date se pot efectua urmtoarele operaii: creare (memorarea iniial pe suport a datelor); consultare (acces la elementele structurii pentru prelucrarea valorilor lor); actualizare (schimbarea strii structurii prin adugarea, inserarea, tergerea sau corecia valorilor unor componente ale structurii); copiere (duplicarea structurii pe un alt suport); ventilare (desfacerea structurii n dou sau mai multe structuri); fuzionare (combinarea a dou sau mai multe structuri); sortare (aranjarea elementelor structurii dup anumite criterii); Structurile de date pot fi omogene sau eterogene (neomogene) n funcie de tipul componentelor sale. Operaiile aplicate asupra unei structuri de date pot s-i afecteze valorile i/sau structura. Dac o structur de date i modific structura, ea este considerat dinamic. Opusul acesteia, structura static, are acelai numr de componente aranjate n aceeai ordine pe tot parcursul existenei sale. Structuri interne (fundamentale) de date: nregistrarea masivul (tabloul) listele liniare arborii Structuri externe de date (de regsire): Pentru structurile de regsire, datele sunt considerate nregistrri identificabile prin coninut, care au unul sau mai multe cmpuri cu rol de cheie. Cheia distinge nregistrarea n mod unic. Structuri de regsire dup o cheie: tabele (secveniale, selective); tabele de dispersie (acces direct); arbori binari de regsire (arbori ordonai); B-arbori; Structuri de regsire dup mai multe chei: liste indexate liste inverse

_______________________________________________________________________

Baze de date Visual Fox Etape n evoluia metodelor i tehnicilor de organizare a datelor

pag. 8

1. Fiiere pe aplicaii gestiunea fiierelor izolat n vederea rezolvrii problemelor particulare ale unui compartiment. 2. Separarea nivelului logic de nivelul fizic de organizare a datelor. 3. Fiiere integrate permite ca mai muli utilizatori s aib acces la aceeai colecie de date care s satisfac n mod optim cerinele de prelucrare specifice fiecrui utilizator. 4. Bncile de date independena programelor de aplicaie de modul de organizare a datelor (detaarea din programul de aplicaii a descrierii fiierelor i a legturilor dintre ele). O banc de date este format din: 1. O baz de date: colecie de date aflate n interdependen mpreun cu descrierea lor. 2. Un sistem de gestiune a bazei de date (SGBD): set de programe i proceduri specializate, destinate gestiunii i prelucrrii complexe a datelor din baza de date. 3. Un set de proceduri manuale i automate specifice domeniului pentru care se organizeaz baza de date, precum i reglementrile administrative destinate bunei funcionri a ntregului sistem.

Avantaje i dezavantaje ale organizrii datelor n fiiere pe aplicaiiAvantaje: rapiditate n organizarea datelor; eforturi reduse n ceea ce privete definirea fiierelor; structuri logice facile, la ndemna utilizatorilor programatori; pentru structuri complexe se organizeaz sisteme de fiiere sau fiiere cu legturi; Dezavantaje: creterea numrului de fiiere duce la dificulti de ntreinere; fiierele sunt proiectate pas cu pas n raport cu necesitile unei aplicaii, pentru ali utilizatori fiind reorganizate; flexibilitatea sistemului este redus orice modificare a structurii fiierelor atrage dup sine modificarea sau refacerea n ntregime a tuturor aplicaiilor care le utilizeaz;

redundana datelor duplicarea unor date n mai multe fiiere duce la apariia urmtoarelor efecte nedorite: utilizarea neraional a suportului de memorare, complicarea procedurilor de actualizare i control, inconsistena datelor, ca urmare a actualizrilor pariale; timpul de rspuns poate crete foarte mult o dat cu numrul de fiiere care trebuiesc consultate i actualizate

Organizarea datelor n baze de dateO baz de date este o colecie de date care ndeplinete urmtoarele cerine: este creat s satisfac mai muli utilizatori; asigur o redundan minim a datelor; asigur independena programelor fat de modul de organizare a datelor; optimizeaz structurile fizice care sunt transparente utilizatorilor; asigur protecia datelor memorate; Avantaje ale organizrii datelor n baze de date: independena datelor memorate fa de aplicaie; redundan controlat; posibilitatea de a aplica restricii de securitate a datelor, protecie fa de accesul neautorizat; integritatea datelor: asigurarea corectitudinii datelor n orice moment; faciliti de utilizarea a datelor fr a fi necesar cunoaterea ntregii baze de date; gestiunea datelor din bazele de date prin intermediul unor produse soft specializate, alese n funcie de resursele hard i soft existente.

_______________________________________________________________________

Baze de date Visual Fox Nivele de organizare a datelor n bazele de date:

pag. 9

1. Nivelul virtual sau conceptual a bazei de date se refer la datele necesare tuturor utilizatorilor unei baze de date, n condiiile asigurrii unei redundane minime a datelor. 2. Nivelul logic a datelor se refer la forma n care fiecare utilizator vede datele n funcie de aplicaia creia ncearc s-i gseasc rezolvare. 3. Nivelul fizic se refer la modul de memorare a datelor pe suport magnetic. Nivel virtual logic fizic Meserie administrator BD programator inginer de sistem Form schem subschem date

0.1.

SGBD definire, funcii

Un SGBD este un pachet de programe realizat de firme specializate, care realizeaz gestiunea i prelucrarea complex a datelor, asigurnd independena programelor de aplicaie fa de modul de organizare a datelor, o redundan minim controlat n memorarea acestora i un timp optim de rspuns n condiii de multiacces. Funcia de descriere: un SGBD trebuie s permit descrierea structurii datelor, a legturilor ntre entiti, a condiiilor de validare i de acces. Funcia de manipulare permite crearea, actualizarea datelor, cutarea rapid, sortarea i editarea total sau parial a unei nregistrri. Funcia de utilizare permite comunicarea ntre utilizator i baza de date sub aspectul asigurrii unei interfee care l avantajeaz cel mai mult pe utilizator.

Tipuri de bnci de dateClasificare: Dup modelul structural: ierarhice, reea, relaionale; Dup distribuirea resurselor hard i soft: integrate, distribuite; Dup orientare: generalizate, specializate; Dup destinaie: publice de larg interes, private; Dup mrime: mici-medii (sub 1milion articole/utilizator), mari(peste 1 milion articole/utilizator); Dup modul de utilizare: prelucrare pe loturi, interactive, mixte; Dup tipul limbajelor utilizate: autonome, cu limbaj gazd, hibride; Dup domeniul de utilizare: gestiune economic, conducerea produciei, informare-documentare, distribuirea resurselor, informare general, etc.

Modele conceptuale de baze de dateTerminologieElementul fundamental al modelului conceptual este entitatea (tabela,relaia) termen generic pentru a desemna obiecte similare ca structur, dar identificabile ntre ele. O entitate este format dintr-o familie de caracteristici (lista atributelor/cmpurilor) care pot defini complet obiectul n funcie de context. Valorile cmpurilor pentru un obiect poart numele de realizare de entitate (nregistrare). Un atribut asociaz cte o valoare dintr-un domeniu pentru fiecare nregistrare. Un atribut sau o serie de atribute care identific n mod unic fiecare nregistrare poart numele de cheie. Exp: entitatea automobil Automobil Nr.nmatriculare (cheie) Culoare CJ 12 ABC gri HD 21 CBA mov TL 22 WYU bej

Marc Logan Dacia Renault

Pre 24000 17000 12000

- lista cmpurilor - nregistrarea 1 - nregistrarea 2 - nregistrarea 3

_______________________________________________________________________

Baze de date Visual Fox

pag. 10

Obs: Organizarea conceptual presupune identificarea att a entitilor ct i a legturilor dintre ele. Reprezentarea entitilor este relativ simpl, dar reprezentarea legturilor(asocierilor, relaiilor) ntre entiti este piatra de ncercare a eficienii implementrii unei aplicaii de baz de date.

Tipuri de asocieri sau relaii1. Relaii 1:1 (unu la unu): leag o realizare a unei entiti de o singur realizare a altei entiti. Exp: clase dirigini (un diriginte rspunde de o clas, iar o clas are un singur diriginte) 2. Relaii 1:n (unu la mai muli): fiecrei realizare a unei entiti X i corespund zero, una sau mai multe realizri de ale altei entiti Y, dar fiecrei realizri ale entitii Y este legat doar la o singur realizare a entitii X. Exp: clase elevi (o clas are mai muli elevi, dar un elev aparine unei singure clase) 3. Relaii n:n (muli la muli): nu exist restricii n ceea ce privete mulimea perechilor de asocieri. Exp: clase discipline (la o clas se predau mai multe discipline; o disciplin se pred la mai multe clase)

Modelul ierarhic:Presupune gruparea i ierarhizarea entitilor ntr-o structur de arbore, fiecare nod care nu este rdcin avnd un singur ascendent. Exp: Explicaie: o coal are mai multe clase, la care se predau mai multe coal discipline de ctre mai muli profesori; o 1:n 1:n clas are mai muli elevi. 1:n Dezavantaj major: anumite strucClase Discipline Profesori turi nu sunt supuse ierarhizrii, de exem1:n plu profesori-elevi (n:n) Elevi

0.1.1. Modelul reea:Spre deosebire de modelul ierarhic, n acest model se elimin restricia ca un nod s aib un singur ascendent, deci entitile nu se mai ierarhizeaz ntr-o structur de tip arbore. Exp:1:n Clase n:n coli n:n Discipline n:n n:n Profesori

Explicaie: ntr-o coal sunt mai multe clase, dar o clas aparine unei singure coli; ntr-o coal se predau mai multe discipline, iar o disciplin se pred n mai multe coli, etc.

Modelul relaional:Modelul relaional se bazeaz pe noiunea matematic de relaie, care este o submulime a unui produs cartezian de mulimi. Numrul de mulimi peste care se efectueaz produsul cartezian este numit gradul relaiei, iar mulimea perechilor din relaie este numit cardinalul relaiei. Practic, o relaie este o entitate care poate fi privit ca o tabel, astfel: - fiecare coloan corespunde unei mulimi i este privit ca un cmp (atribut) al tabelei - fiecare linie corespunde unei realizri a entitii i este privit ca o nregistrare a tabelei - capul tabelei corespunde schemei relaiei i este privit ca fiind structura conceptual a tabelei Exp: Elevi Clase Nume Medie NrAbs CodClasa CodClasa Sala Diriginte Ionescu 9.70 89 1 1 40 Mariana Popescu 8.95 75 2 2 41 Anamaria Vasilescu 9.23 120 1 Obs: n modelul relaional, asocierile ntre entiti sunt la rndul lor relaii.

_______________________________________________________________________

Baze de date Visual Fox

pag. 11

Exp: ntre cele dou relaii anterioare cmpul de legtur este CodClasa. Pe baza acestui cmp se poate obine urmtoarea tabel, ca relaie (asociere) ntre cele dou tabele iniiale: DateElevi Nume Medie NrAbs CodClasa Sala Diriginte Ionescu 9.70 89 1 40 Mariana Popescu 8.95 75 2 41 Anamaria Vasilescu 9.23 120 1 40 Mariana Asupra relaiilor se pot defini operaii bazate pe o algebr relaional. Operaiile principale sunt: 1. Selecia Se aplic asupra unei singure relaii (tabele) i const n obinerea unei noi relaii (tabele) prin selectarea unor nregistrri care ndeplinesc o anumit condiie. Exp: este necesar o list a elevilor cu medii ntre 9 i 10 pentru stabilirea fondului de premiere: Elevi_1 Nume Medie NrAbs CodClasa Ionescu 9.70 89 1 Vasilescu 9.23 120 1 2. Proiecia Se aplic asupra unei singure relaii (tabele) i const n obinerea unei noi relaii (tabele) prin selectarea doar unora dintre cmpuri. Exp: este necesar o list a elevilor cu numele i media: Elevi_2 Nume Medie Ionescu 9.70 Popescu 8.95 Vasilescu 9.23 3. Produsul cartezian Se aplic asupra a dou relaii (tabele) i are ca efect obinerea unei noi relaii (tabele) a crei schem relaional (structur conceptual) reprezint reuniunea schemelor relaionale a relaiilor iniiale, iar mulimea nregistrrilor este format din toate combinaiile posibile ntre nregistrrile unei tabele i a celeilalte. Exp: este necesar o list a elevilor cu toate datele disponibile: Elevi_3 Nume Medie NrAbs CodClasa CodClasa Ionescu 9.70 89 1 1 Ionescu 9.70 89 1 2 Popescu 8.95 75 2 1 Popescu 8.95 75 2 2 Vasilescu 9.23 120 1 1 Vasilescu 9.23 120 1 2

Sala 40 41 40 41 40 41

Diriginte Mariana Anamaria Mariana Anamaria Mariana Anamaria

4. Reuniunea Se aplic asupra a dou relaii (tabele) cu aceeai schem relaional (structur conceptual) i are ca efect obinerea unei noi relaii cu aceeai schem relaional dar n care mulimea nregistrrilor este dat de reuniunea celor dou mulimi de nregistrri ale relaiilor iniiale. 5. Diferena Se aplic asupra a dou relaii (tabele) cu aceeai schem relaional (structur conceptual) i are ca efect obinerea unei noi relaii cu aceeai schem relaional dar n care mulimea nregistrrilor este dat de diferena celor dou mulimi de nregistrri ale relaiilor iniiale. 6. Intersecia

_______________________________________________________________________

Baze de date Visual Fox

pag. 12

Se aplic asupra a dou relaii (tabele) cu aceeai schem relaional (structur conceptual) i are ca efect obinerea unei noi relaii cu aceeai schem relaional dar n care mulimea nregistrrilor este dat de intersecia celor dou mulimi de nregistrri ale relaiilor iniiale. Obs: aceast operaie se poate obine pe baza operaiilor de reuniune i diferen. 7. Jonciunea Se aplic asupra a dou relaii (tabele) care au un cmp de legtur comun (definit peste acelai domeniu) i are ca efect obinerea unei noi relaii a crei schem relaional (structur conceptual) reprezint reuniunea schemelor relaionale a relaiilor iniiale, dar n care mulimea nregistrrilor este dat de toate modalitile de formare de nregistrri din nregistrrile tabelelor iniiale care au valori egale n cmpul de legtur. Obs: aceast operaie se poate obine pe baza operaiilor de produs cartezian i selecie; un exemplu este dat de tabela DateElevi prezentat la nceputul subcapitolului. 8. Diviziunea Se aplic asupra a dou relaii (tabele), a doua relaie avnd schema relaional (structura conceptual) format dintr-o parte a cmpurilor (atributelor) primei relaii. Are ca efect obinerea unei noi relaii avnd schema relaional format din diferena mulimilor cmpurilor celor dou relaii, iar mulimea nregistrrilor este format din nregistrrile primei relaii care se pot cupla cu nregistrrile celei de a doua relaii. Obs: aceast operaie este invers operaiei de produs cartezian.

Regulile lui CoddPrincipalele reguli ale lui E.F.Codd ce ar trebui respectate de un SGBD pentru a fi considerat relaional: 1. Reprezentarea informaiei: orice informaie, inclusiv cea a structurii tabelelor, s fie reprezentat sub form de tabele n sistem. 2. Regsirea informaiei: orice informaie poate fi regsit prin specificarea numelui tabelei, cmpului i numrului nregistrrii dorite. 3. Informaia vid: un SGBD trebuie s permit manipularea informaiei vide (care nu este nc cunoscut), aceasta fiind diferit de informaia nul (de exemplu 0 pentru tipul numeric, etc.). 4. Limbajul relaional de interogare: un SGBD trebuie s suporte un limbaj de manipulare a informaiei la nivel de mulime de nregistrri cel puin la fel de puternic ca algebra relaional. 5. Limbajul procedural: SGBD s nu permit prin intermediul limbajului modificri ale datelor care s intre n contradicie cu restriciile descrise prin limbaj relaional. De exemplu, dac un cmp este definit ca fiind cheie primar (identific unic o nregistrare), limbajul s nu permit introducerea a dou valori egale sau a unei valori vide. 6. Independena fizic a datelor: aplicaiile nu sunt afectate de modificrile n structurile de memorare a datelor la nivel fizic. 7. Independena logic a datelor: aplicaiile nu sunt afectate de modificrile logice asupra datelor memorate n tabele. 8. Independena de distribuire: aplicaiile privesc baza de date distribuit ca i cum aceasta ar fi centralizat. Obs: n practic, aceste reguli sunt foarte restrictive i putem considera un SGBD ca fiind relaional dac suport un limbaj de interogare de tip SQL.

Limbajul SQLSQL este un limbaj relaional de interogare cu urmtoarele caracteristici: - standardizarea (exist standarde ANSI-SQL) - limbaj declarativ (utilizatorul comunic CE vrea s obin, CUM se obine este sarcina optimizatorului de cereri SQL) - limbaj uor de nvat i utilizat (chiar i de ctre persoane cu o sumar pregtire informatic) Obs: comenzile uzuale SQL sunt select (acoper 80% din necesiti), create table i insert.

Forme normaleRelaiile se clasific n mai multe clase, incluse unele n altele, numite forme normale. Fiecare form are anumite proprieti n ceea ce privete redundana i anomaliile de manipulare a datelor. Se cunosc mai

_______________________________________________________________________

Baze de date Visual Fox

pag. 13

multe forme normale, dintre care primele 3 sunt de baz. Prin normalizare nelegem operaia prin care o relaie dintr-o clas mai general este descompus n dou sau mai multe relaii dintr-o clas mai restrictiv. Prima form normal (FN1) FN1 coincide cu definiia unei tabele, adic: - ordinea cmpurilor nu este important din punct de vedere logic - toate datele unui cmp au acelai tip - n tabel nu exist dou nregistrri identice - o celul a tabelului poate conine doar o dat elementar. A dou form normal (FN2) O relaie este n a doua form normal dac este n prima form normal i toate atributele care nu fac parte din cheia primar (care este alctuit deci din cel puin dou atribute) trebuie s depind de ntreaga cheie primar. Exp: Bibliotec Titlu Nume DataNast Editura Poveti Ionescu {01/05/1970} Orizont Poezii Popescu {01/05/1975} Univers Amintiri Ionescu {01/05/1970} Humanitas Relaia se afl n prima form normal. Cheia principal este dat de atributele Titlu+Nume (care identific unic o nregistrare). Deoarece DataNast (data naterii cititorului) depinde direct de Nume, relaia nu este n a doua form normal. Ea se poate normaliza astfel: Cititori Nume DataNast Ionescu {01/05/1970} Popescu {01/05/1975} Titlu Poveti Poezii Amintiri mprumut Nume Ionescu Popescu Ionescu Editura Orizont Univers Humanitas

_______________________________________________________________________

Baze de date Visual FoxObs: relaia iniial se poate recompune prin jonciunea celor dou relaii.

pag. 14

A treia form normal (FN3) O relaie este n a treia form normal dac este n a doua form normal i nu exist dependene tranzitive, adic toate atributele depind direct numai de cheia primar. Exp: Considerm o relaie CAZRI format din atributele Buletin, DatCazare, Hotel i Pre, Cheia primar este dat de primele dou atribute. Deoarece celelalte dou atribute nu depind de cheia primar, aceast relaie se afl n FN2. Dar deoarece preul depinde de hotel, relaia nu este n FN3. Prin normalizare se vor obine urmtoarele dou relaii aflate n FN3: - HOTEL (Hotel, Pre) - CAZRI_1 (Buletin, DatCazare, Hotel) Obs: n ambele cazuri s-a folosit un procedeu asemntor pentru normalizare: se partiioneaz atributele relaiei iniial (R) n trei mulimi A, B i C, astfel nct A determin funcional pe B (B depinde de A). Relaia R se poate descompune prin normalizare n dou relaii R1 i R2, astfel: - R1 se obine prin proiecia lui R pe AUB - R2 se obine prin proiecia lui R pe AUC Exerciiu: determinai mulimile A, B i C n fiecare din exemplele de la FN2 i FN3.

TranzaciiSGBD-urile se proiecteaz pentru a permite lucrul simultan a mai multor utilizatori. n momentul n care acetia ncearc n acelai timp s modifice baza de date, este posibil ca restriciile de integritate s fie nclcate, baza de date devenind inconsistent. Pentru prevenirea acestui lucru s-a introdus conceptul de tranzacie. O tranzacie este o secven de aciuni care poate fi executat numai n bloc. Exp: transferarea unei sume de 1000 lei din contul A n contul B se poate efectua prin urmtoarele aciuni n baza de date: CITETE A Dac executarea se oprete dup primele trei operaii, utilizatorul AA-1000 va pierde o sum de 1000 lei. Pentru evitarea acestei situaii cele 6 SCRIE A operaii trebuie s se execute ca fiind una singur, adic o tranzacie.CITETE B BB+1000 SCRIE B

1. TABELEGeneralitiDe recapitulat: paragraful 3.4.1. Terminologie O tabel de date are urmtoarele elemente specifice: - structura: descrierea cmpurilor tabelei de date, adic pentru fiecare cmp se specific numele, tipul i dimensiunea - indicatorul de nregistrri: orice tabel deschis (n lucru) are asociat un indicator de nregistrri care poate fi considerat ca o variabil care memoreaz nregistrarea curent din tabel (multe comenzi se refer implicit la nregistrarea curent) - zona de lucru: orice tabel, n momentul n care este deschis, i se asociaz o zon de memorie n care se rein informaii despre tabel, numit zon de lucru

Crearea unei tabele 1. Interactiv: se utilizeaz comanda CREATE [fiier] care deschide fereastra Table Designer 2. Prin comanda SQL CREATE TABLE | DBF () 3. Pornind de la structura tabelei curente prin comanda COPY STRUCTURE TO [FIELDS ]

4.

Folosind comenzile CREATE TABLE FROM ARRAY i CREATE FROM Obs: tabelele au extensia implicit DBF

_______________________________________________________________________

Baze de date Visual Fox

pag. 15

Exerciii (n caiet se vor trece cel puin comenzile date): 1. Creai o tabel cu numele ELEVI care s aib urmtoarea structur: - cmpul NUME, de tip caracter, de dimensiune 20 (pe scurt: NUME C(20)) - cmpul INALTIME, de tip numeric, de dimensiune 3 (pe scurt: INALTIME N(3)) - cmpul MEDGEN, de tip numeric, de dimensiune 5 cu 2 zecimale (pe scurt: MEDGEN N(5,2)) - cmpul NAVETIST, de tip logic (pe scurt: NAVETIST L(1)) - cmpul DATANAST, de tip dat calendaristic (pe scurt: DATANAST D(8)) Observaii: - la crearea structurii se vor ignora coloanele Index i Null din fereastra Table Designer - nu se vor introduce nregistrri n tabel - pentru a vizualiza efectul comenzii n final se va da comanda BROW n fereastra de comenzi 2. Creai o tabel ELEVI_1 cu structur identic folosind comanda SQL corespunztoare, astfel:CREA TABL ELEVI_1(nume C(20), inaltime N(3), medgen N(5,2), navetist L, datanast D)

3.

- pentru a vizualiza efectul comenzii n final se va da comanda BROW n fereastra de comenzi Creai o tabel ELEVI_2 cu structura identic folosind comanda COPY STRUCTURE (COPY STRU TO ELEVI_2) i o tabel ELEVI_3 cu structura format doar din primele 3 cmpuri, folosind aceeai comand (COPY STRU TO ELEVI_3 FIEL nume,inaltime,medgen); pentru a vizualiza afectul comenzilor, se vor deschide pe rnd tabelele nou create folosind opiunea File|Open (se va selecta din lista ascuns opiunea Table) i se va folosi comanda BROW.

Operaii la nivel de structur a unei tabeleObs: pentru a deschide o tabel se poate folosi: - opiunea File|Open (vezi mai sus) - comanda USE | ? Comenzile urmtoare se refer la tabela deschis n zona curent de lucru: 1. Afiarea structurii unei tabele:LIST | DISPLAY STRUCTURE

2. Modificarea structurii unei tabele:MODIFY STRUCTURE

3. Copierea structurii unei tabele:COPY STRUCTURE, COPY TO

4. Alte comenzi i funcii pe structura unei tabele:SET FIELDS, FCOUNT(), FIELD(), FSIZE(), RECSIZE()

Exerciii (n caiet se vor trece cel puin comenzile date): 1. Deschidei tabela ELEVI folosind comanda USE elevi; listai structura tabelei folosind comanda DISP STRU; conspectai din documentaie clauzele NOCONSOLE i TO FILE i dai exemple de utilizare a acestor clauze. Indicaie: pentru a vizualiza coninutul fiierului din clauza TO FILE se va folosi comanda MODIFY FILE i eventual opiunea Edit | Properties, Word wrap 2. Deschidei tabela ELEVI_1 folosind comanda USE ?; listai structura tabelei, apoi modificai structura, eliminnd cmpul NAVETIST i modificnd lungimea cmpului NUME la 30, apoi listai din nou structura tabelei. 3. Deschidei tabela ELEVI_2 i efectuai exerciii de modificare a ordinii cmpurilor (cu mouse-ul, respectiv din tastatur cu combinaia ntre CTRL i , prsii fereastra prin CANCEL ); familiarizndu-v cu mesajele sistemului. 4. Dai cte un exemplu de utilizare a funciilor FCOUNT(), FIELD(), FSIZE(), RECSIZE()

ncrcarea cu informaie a unei tabeleObs: la crearea unei tabele pot fi adugate nregistrri n tabel Pentru a aduga nregistrri ntr-o tabel se folosesc comenzile: 1. APPEND pentru a aduga nregistrri interactiv la sfritul tabelei (modul de funcionare poate fi modificat prin comanda SET CARRY)

_______________________________________________________________________

Baze de date Visual Fox 2. APPEND BLANK pentru adugarea unei nregistrri albe (vide) la sfritul tabelei 3. APPEND FROM - pentru adugarea de nregistrri din alt tabel 4. INSERT [BEFORE] [BLANK] comand SQL

pag. 16

Exerciii (n caiet se vor trece cel puin comenzile date): 1. Adugai n tabela ELEVI cinci nregistrri (n prealabil trebuie deschis) 2. Dup ce ai lansat comanda SET CARRY ON mai adugai trei nregistrri, notnd efectul 3. Dup ce ai lansat comanda SET CARRY TO datanast, medgen mai adugai 3 nregistrri, notnd efectul 4. Anulai efectul comenzii SET CARRY (OFF); vizualizai coninutul tabelei folosind comanda BROW 5. Lansai de dou ori la rnd comanda APPEND BLANK i vizualizai efectul folosind comanda BROW 6. Deschidei tabela ELEVI_1 i copiai nregistrrile din tabela ELEVI folosind comanda APPEND FROM elevi; vizualizai coninutul tabelei folosind comanda BROW

Indicatorul de nregistrriIndicatorul de nregistrri indic numrul nregistrrii curente. RECNO() returneaz numrul nregistrrii curente GO | GOTO - poziioneaz indicatorul pe nregistrarea dorit (dac este posibil) GO | GOTO TOP | BOTTOM poziioneaz indicatorul pe prima, respectiv ultima nregistrare SKIP [] deplaseaz indicatorul de nregistrri cu numrul dorit de nregistrri (implicit una) RECCOUNT() returneaz numrul nregistrrilor din tabel BOF() ntoarce .T. dac i numai dac indicatorul de nregistrri este la nceputul tabelei EOF() ntoarce .T. dac i numai dac indicatorul de nregistrri este la sfritul tabelei Exerciiu: Executai pe rnd succesiunea de comenzi, notnd dup fiecare comand efectul ei i explicaiile necesare; de asemenea, urmrii informaiile afiate pe bara de stare (n partea de jos a ecranului Fox)use elevi ?bof() ?eof() go bott ?bof() ?eof() skip ?eof() skip go top skip -1 ?bof() go 5 ?nume, medgen, recn() skip -2 ?nume, medgen, recn(), recc() appe blan ?recn(), recc()

1.1.

Domeniul nregistrrilor

Domeniul nregistrrilor permite selectarea anumitor nregistrri dintr-o tabel asupra crora s se aplice diferite comenzi care prelucreaz nregistrri ale unei tabele. Specificarea domeniului nregistrrilor se face n urmtoarele moduri: ALL toate nregistrrile NEXT - urmtoarele nregistrri ncepnd cu cea curent (dac mai exist) REST toate nregistrrile de la cea curent pn la sfritul tabelei RECORD - nregistrarea cu numrul FOR - toate nregistrrile din tabel pentru care are valoarea .T. WHILE - toate nregistrrile pornind de la cea curent pn la prima pentru care are valoarea .F. Obs: majoritatea comenzilor au ca domeniu implicit domeniul ALL Exp: pentru tabela ELEVI (v. 4.2., ex.1), domeniul corespunztor elevilor navetiti care au nlimea peste 170 cm este: FOR navetist and inaltime>=170

_______________________________________________________________________

Baze de date Visual Fox Actualizarea coninutului tabelelor

pag. 17

1. Interactiv: prin comenzile BROWSE sau CHANGE/EDIT Exerciiu: notai semnificaia urmtoarelor clauze ale comenzii BROWSE: FIELDS, FREEZE, NOAPPEND, NOEDIT (NOMODIFY) i dai cte un exemplu de comand BROWSE cu fiecare din aceste clauze (folosii tabela ELEVI) 2. Prin comanda REPLACE cu sintaxaREPLACE WITH [, WITH ] []

inaltime WITH inaltime+1

Obs: domeniul implicit este nregistrarea curent Exp: pentru a mri nlimea tuturor elevilor din tabel cu 1 cm se poate folosi comanda: REPL ALL Exerciiu: scriei comenzile care au urmtorul efect asupra nregistrrilor tabelei ELEVI: 1. transform numele tuturor elevilor navetiti astfel nct s fie scrise numai cu majuscule 2. transform toi elevi navetiti n elevi nenavetiti i viceversa 3. tuturor elevilor al cror nume ncepe cu litera A (sau a) li se va completa media general cu 9.50 4. toi elevii care sunt nscui n luna curent vor fi fcui navetiti

tergerea nregistrrilor 1. Marcarea nregistrrilor pentru tergere (tergere logic): DELETE 2. Anularea marcrii pentru tergere: RECALL 3. tergerea fizic a nregistrrilor marcate pentru tergere: PACK 4. tergerea tuturor nregistrrilor dintr-o tabel: ZAP 5. Ignorarea nregistrrilor marcate pentru tergere n comenzileDELETED ON | OFF

care prelucreaz nregistrri: SET

6.

Alte funcii utile: DELETED()

Localizarea nregistrrilor unei tabele 1. Blocarea accesului la nregistrrile care ndeplinesc o anumit condiie: SET FILTER TO [] 2. Poziionarea pe prima nregistrare care verific o anumit condiie: LOCATE FOR 3. Poziionarea pe urmtoarele nregistrri care verific o anumit condiie: CONTINUE 4. Verificarea rezultatului comenzilor LOCATE/CONTINUE: FOUND() 5. Alte funcii i comenzi utile: FILTER(), LOOKUP() Importuri i exporturi de dateComenzi utile:APPEND FROM , IMPORT FROM , COPY TO , EXPORT TO , APPEND FROM ARRAY , COPY TO ARRAY , GATHER FROM | MEMVAR, SCATTER TO | MEMVAR

Afiarea coninutului nregistrrilorComenzile LIST i DISPLAY:LIST [] [] [OFF] [NOCONSOLE] [TO FILE ] Obs: comanda DISPLAY este identic, dar are ca domeniu implicit nregistrarea curent i dup fiecare

ecran umplut cu informaie ateapt apsarea unei taste. Exerciiu: explicai clauzele prezentate ale comenzii LIST i dai cte un exemplu semnificativ

Ordonarea nregistrrilor unei tabeleModificarea ordinii n care sunt parcurse nregistrrile unei tabele se poate face n dou moduri: - prin sortare - prin indexare Sortarea presupune duplicarea tabelei iniiale, adic crearea unei noi tabele care s conin nregistrrile iniiale n noua ordine dorit.

_______________________________________________________________________

Baze de date Visual Fox

pag. 18

Comanda de sortare: SORT Obs: comanda SORT conduce la duplicarea datelor (redundan), motiv pentru care nu este recomandat Exerciiu: dai cteva exemple de utilizare a comenzii SORT pe tabela ELEVI Indexarea presupune construirea unui fiier index (pe scurt index), care dac este activ, are ca efect parcurgerea nregistrrilor n ordinea dat de expresia de indexare. Clasificarea indecilor: - simpli (IDX) se actualizeaz la modificarea coninutului tabelei doar dac sunt activi - compui (CDX) structurali au acelai nume cu fiierul de baz i se actualizeaz automat la orice modificare a tabelei - compui (CDX) nestructurali Obs: 1. fiierele index conduc la mrirea spaiului disc ocupat de tabel 2. indecii simpli se recomand s se utilizeze pentru prelucrri temporare 3. indecii compui se recomand s conin drept chei de indexare cmpurile cu rol de identificare unic a nregistrrilor din tabele; ei se construiesc de regul o dat cu definirea structurii unei tabele 4. ordinea natural n care sunt adugate nregistrrile ntr-o tabel se numete ordine fizic Forma general a comenzii de indexare:INDEX ON TO | TAG [OF ] [FOR ] [COMPACT] [ASCENDING | DESCENDING] [UNIQUE] Obs: clauzele ASCENDING, DESCENDING nu sunt valabile la indecii simpli

Exp (referitoare la tabela ELEVI) - indeci simpli: 1. ordonarea alfabetic a elevilor:INDE ON nume TO tmp.idx

2. ordonarea n ordine descresctoare dup medii a elevilor navetiti:INDE ON 10-medgen DESC TO tmp.idx FOR navetist

3. ordonarea elevilor dup data naterii, iar n caz de aceeai dat de natere, alfabetic:INDE ON DTOS(datanast)+nume TO tmp.idx

Exerciiu: introducei date semnificative n tabela ELEVI; utilizai fiecare comand de indexare vizualiznd rezultatul Comenzi utile: SET INDEX, SET ORDER, SET UNIQUE, CLOSE INDEX, NDX(), CDX(),MDX(), TAG(), SYS(21), KEY(), SYS(14), SYS(2021), COPY INDEXES, COPY TAG, DELETE TAG, ORDER, SET NEAR, REINDEX Cutarea ntr-o tabel indexat se face cu comanda SEEK sau funcia SEEK(), care n

caz de reuit se poziioneaz pe prima nregistrare care corespunde expresiei cutate (compatibile cu indexul activ); funcia SEEK() este echivalent cu comanda SEEK urmat de funcia FOUND(). Exerciiu: Fiind dat tabela ELEVI cu date semnificative, scriei un program FOX care rezolv urmtoarele cerine: 1. Afieaz lista alfabetic a elevilor 2. Afieaz lista elevilor n ordine descresctoare a mediilor, iar la medii egale n ordine alfabetic 3. Afieaz numele elevului navetist cu media cea mai mare; dac sunt mai muli vor fi afiai toi 4. Afieaz media general calculat din media elevilor promovai 5. Afieaz un mesaj corespunztor faptului c n tabel exist sau nu cel puin un elev cu media 5.00 6. Afiai datele celui mai tnr elev din tabel Exerciiu indeci compui structurali: 1. Creai tabela PROFILE.DBF cu structura: COD N2 codul profilului cheie primar (identific unic un profil) DENUMIRE C20 denumirea profilului Adugai n tabel profilele REAL i i UMAN Construii un index compus dup cheia primar folosind comanda INDEX ON TAG 2. Creai tabela SPECIALIZARI.DBF cu structura: COD N2 codul specializrii cheie primar COD_PROFIL N2 legtura cu profilul asociat specializrii DENUMIRE C20 denumirea specializrii Adugai n tabel specializrile: matematic-informatic, intensiv informatic, tiinele naturii, tiine sociale, uman-bilingv, etc.

_______________________________________________________________________

Baze de date Visual Fox 3.Construii un index compus dup cheia primar folosind TABLE DESIGNER Creai tabela PROFESORI.DBF cu structura: COD N3 codul profesorului cheie primar NUME C15 PRENUME C15 SEX N1 (1 masculin, 2 feminin) Adugai minim 10 nregistrri n tabel Construii un index compus dup cheia primar, respectiv dup NUME+PRENUME Creai tabela CLASE.DBF cu structura: COD N2 codul clasei cheie primar DENUMIRE C3 denumirea clasei (exp: 09C, 12B, etc) COD_SPEC N2 legtura cu specializarea clasei COD_DIRIG N3 legtura cu profesorul care este dirigintele clasei Adugai minim 7 clase (pentru cel puin 5 specializri) Construii un index compus dup cheia primar Creai tabela ELEVI.DBF cu structura: MATRICOLA N5 numrul matricol cheie primar NUME C15 PRENUME C15 SEX N1 (1 masculin, 2 feminin) COD_CLASA N2 legtura cu clasa din care face parte MEDIA_GEN N5,2 media general Adugai minim 21 elevi (cel puin 3 la fiecare clas) Construii un index compus dup cheia primar, respectiv dup NUME+PRENUME

pag. 19

4.

5.

Deschiderea i nchiderea tabelelor. Zone de lucruO tabel se deschide ntr-o zon de lucru; mediul Fox pune la dispoziie mai multe zone de lucru numerotate ncepnd cu 1; dintre acestea doar una este zona curent, multe din comenzile Fox pe tabele referindu-se implicit la aceast zon; ntr-o zon de lucru se poate deschide maxim o tabel, dar o aceeai tabel se poate deschide n mai multe zone de lucru. 1. Deschiderea/nchiderea unei tabele:USE [ | ?] [IN ] [AGAIN] [ORDER ] [ALIAS] [NOUPDATE]

- numele tabelei care se va deschide (? se afieaz fereastra de dialog USE) IN - deschiderea ntr-o anumit zon (0 n zona cu cel mai mic numr disponibil) AGAIN pentru a deschide ntr-o alt zon de lucru o tabel deschis deja ORDER - activarea unui index existent ALIAS pentru a deschide tabela sub alt identificator (nume/alias) NOUPDATE deschide tabela n regim read-only Obs: dac se omite numele, atunci comanda nchide tabela din zona curent sau specificat Exemple (meninei fereastra DATA SESSION deschis):USE USE USE USE USE elevi IN 0 AGAIN ALIAS cucu USE profesori IN 0 USE profesori IN 0 AGAIN ORDER cod USE 2. Selectarea unei zone de lucru: SELECT | 0 | 3. nchiderea tuturor tabelelor deschise i selectarea primei zone de lucru: CLOSE DATABASE 4. Obinerea numrului zonei curente de lucru: SELECT() 5. Alte comenzi i funcii utile: ALIAS(), DBF(), SET FULLPATH, SET EXCLUSIVE, USED() elevi ? clase IN 0 elevi IN 0 AGAIN

Exerciiu fiind date tabelele de mai sus, scriei un program FOX care: 1. Citete denumirea unei clase i afieaz specializarea, dirigintele i profilul clasei, iar apoi lista alfabetic a elevilor din clas 2. Lista alfabetic a claselor, fiecare denumire de clas fiind urmat de lista alfabetic a elevilor din clasa respectiv, cu media fiecrui elev, iar la sfritul clasei cu media general pe clas

_______________________________________________________________________

Baze de date Visual Fox Extragerea de informaii statistice din tabele1. Numrarea nregistrrilor:COUNT [] TO

pag. 20

2. nsumarea cmpurilor numerice:SUM [] [] [TO ]

3. Calcul medie aritmetic pe cmpuri numerice:AVERAGE [] [] [TO ]

4. Calcule diverse pe o tabel:CALCULATE [] [] [TO ]

Obs: n lista de expresii pot apare funciile:AVG(), CNT(), SUM(), MAX(), MIN()

5. Comanda de totalizare:TOTAL TO ON [FIELDS ] []

Obs: comanda creeaz o nou tabel cu structur similar n care se totalizeaz (nsumeaz) cmpurile numerice din nregistrrile care au aceeai valoare pentru ; tabela iniial trebuie s fie indexat dup . Exerciiu fie tabela PRODUSE.DBF cu structura: CODP N,5 CANTITATE N,6 PRET N,8 pre unitar FURNIZOR C,30 TVA N2 Obs: un produs poate apare de mai multe ori, de la diferii furnizori, sau de la acelai furnizor, n cantiti diferite sau cu pre unitar diferit 1. afiai numrul furnizorilor care au livrat produsul cu un anumit cod citit de la tastatur 2. afiai furnizorul (furnizorii) care au livrat produsul anterior la preul cel mai mare 3. afiai numrul furnizorilor din tabel 4. afiai numrul produselor cu coduri diferite care au TVA=0 5. afiai codul produsului livrat n cea mai mic cantitate 6. afiai valoarea total corespunztoare fiecrui produs (cod de produs) n parte

Relaii ntre tabeleDe recapitulat: paragraful 3.4.2. Tipuri de asocieri sau relaii Comanda de stabilire a unei relaii:SET RELATION TO INTO [ADDITIVE]

Obs: clauza ADDITIVE este obligatorie cnd dorim ca o tabel printe s fie relaionat cu mai mult de o tabel fiu Comanda de stabilire a unei relaii 1:n:SET SKIP TO

Comenzi utile: RELATION() Obs: orice poziionare a indicatorului de nregistrri n tabela printe are ca efect poziionarea corespunztoare a indicatorului de nregistrri n tabela fiu (pe prima nregistrare ce verific relaia sau pe sfritul tabelei n caz c nu exist nregistrare corespunztoare); n cazul unei relaii 1:n, deplasarea indicatorului de nregistrri n tabela printe (cu comanda SKIP) are ca efect deplasarea indicatorului n tabela fiu pe urmtoarea nregistrare corespondent i doar dac nu mai exist astfel de nregistrri are loc i o deplasare a indicatorului de nregistrri n tabela printe 1. Relaii 1:1 a. se deschid n dou zone de lucru distincte dou tabele care conin informaie comun (cel mai simplu un cmp cu aceeai informaie pe baza creia se relaioneaz tabelele) b. se alege care tabel este tabela printe i care tabel este tabela fiu c. se activeaz indexul dup cmpul (expresia) cu informaie comun din tabela fiu d. se selecteaz n zona curent de lucru tabela printe i se construiete relaia dup cmpul (expresia) cu informaie comun cu tabela fiu 2. Relaii 1:n a. se stabilete o relaie 1:1 ntre dou tabele

_______________________________________________________________________

Baze de date Visual Fox

pag. 21

b. se transform relaia 1:1 n relaie 1:n Exemplu (putei menine fereastra DATA SESSION deschis): Considerm c avem tabelele PROFILE i SPECIALIZARI de la paragraful 4.12. Programul urmtor afieaz fiecare specializare mpreun cu profilul creia i aparine:CLEAR && sterg ecranul CLOSE DATABASES && inchid orice tabela deschisa SET TALK OFF && inhib mesajele FOX USE profile && deschid tabela fiu SET ORDER TO cod && activez indexul dupa campul cu informatie comuna SELECT 0 && selectez o noua zona libera de lucru USE specializari && deschid tabela parinte SET RELATION TO cod_profil INTO profile && stabilesc relatia LIST off profile.denumire, denumire && afisez denumirea profilului si a && specializarii; observati referirea la un camp din alta zona de lucru && decat cea curenta WAIT "...apasa o tasta..." && pentru a vedea ce se intampla in DATA SESSION CLOSE DATABASES && inchid tabelele SET TALK ON && "spun Fox-ului sa vorbeasca"

Obs: varianta n care am deschis mai nti tabela printe:CLEAR CLOSE DATABASES SET TALK OFF USE specializari && deschid tabela parinte SELECT 0 USE profile && deschid tabela fiu SET ORDER TO cod SELECT specializari && selectez tabela parinte - obligatoriu SET RELATION TO cod_profil INTO profile LIST off profile.denumire, denumire WAIT "...apasa o tasta..." CLOSE DATABASES SET TALK ON

Exerciii fiind date tabelele de la paragraful 4.12, scriei cte un program care afieaz: 1. Elevii cu toate date n ordinea alfabetic 2. Denumirea fiecrei clase mpreun cu denumirea specializrii clasei 3. Denumirea fiecrei clase mpreun cu denumirea specializrii clasei i a profilului clasei 4. Denumirea fiecrei clase mpreun cu denumirea specializrii clasei i a numelui dirigintelui clasei 5. Datele principale ale fiecrui elev mpreun cu: denumirea clasei, a specializrii i a profilului clasei, precum i a dirigintelui clasei

_______________________________________________________________________