You are on page 1of 12

CURS 3 SGBD RELAIONAL

Ce este Visual Foxpro? Este un SGBD modern , din generaia a 4 de limbaje, folosit pentru manipularea bazelor de date relaionale sub sistemele de operare din familia Microsoft Windows (95/98/2000/NT ). Este o versiune pentru Windows, ce continu variantele mai vechi de Foxpro, permind manipularea bazelor de date , inclusiv baze de date client server. El face parte dintr-un pachet de instrumente de programare numit Visual Studio ( din pachet mai fac parte Visual C, Visual Basic). Permite programarea bazat pe obiecte i ofer instrumente visuale ( ce pot fi trase pe aplicaie) pentru construierea suprafeei (interfaei ) grafice de accesare a bazelor de date. I. LUCRUL CU DATELE Ce este o baz de date relaional ? O baz de date relaional relaional reprezint o structur complex folosit la memorarea i gestionarea datelor ce descriu un anumit tip de obiecte. Concret, n Visual Foxpro o baz de date este un container n care sunt puse la un loc mai multe tabele cu date ntre care pot s existe legturi . Baza de date are asociat un fiier cu extensia DBC n care sunt memorate date referitoare la baza de date : tabelele componente, relaiile dintre tabele , dicionarul de date asociate. Tabelele sunt structuri n care memora se pot date descriind un anumit tip de elemente. Fiecare caracteristic a elementelor

1. Definirea i crearea bazelor de date relaionale. Definirea tabelelor .

alctuiete un cmp, iar elementele propriu-zise sunt memorate n inregistrri. Din punct de vedere fizic, tabele sunt stocate n fiiere cu extensia dbf : Exemplu de structur tabelar n care sunt stocate datele: Cmp1 Inregistrarea 1 Inregistrarea 2 Inregistrarea n TABELA.DBF Cmp2 Cmp m

11

Structura tabelului

Exemplu un tabel datep.dbf dintr-o baz de date cursani.dbc , Cmpurile tabelului Nume Popescu Georgescu Avrom Prenume Ion Mihai Mihai DataN 11:11:1976 02:12:1973 08:23:1964 Studii SUPERIOARE SUPERIOARE MEDII Venit 12000000 23400000 23000000

nregistrrile

Acest tabel formeaz un fiier de date, fiier ce se salveaz sub numele de cursani.dbf (acesta va fi fiierul fizic care va conine efectiv datele ), tabel ce se depune n containerul baz de date. Dup cum se observ definirea unei tabele implic specificarea numelui de tabel,a cmpurilor componente, mpreun cu caracteristicile acestora i eventual a indexilor. Fiecare cmp
numele

al unei tabele este caracterizat prin mai multe caracteristici ce se

precizeaz la definirea tabelului : su folosit la identificare ( de fapt numele coloanei ). Numele este format din caractere ( de obicei litere , cifre i liniua de subliniere) . Dac tabelul este inclus n baza de date , numele cmpului poate fi de lungime maxim 128 de caractere. Dac tabelul este liber, nefiind legat de o anumit baz de date , numele este format din maxim 10 caractere ( prima liter), tabelul fiind de fapt un fel de baz de date din versiunile mai vechi de Foxpro
tipul

cmpului - precizeaz tipul datelor , valorilor ce vor fi stocate n cmpul

(coloana) respectiv. Tipurile de date puse la dispoziie de Visual Foxpro sunt urmtoarele :
-

Character- folosit pentru stocarea datelor de tip ir de caractere (cum ar fi nume de persoane, nume de obiecte, adrese, denumiri, etc) . Cmpurile de tip caracter pot pstra pn la 254 de caractere ( de obicei litere, cifre , semne de pe tastatur, semne tipribile). Curency folosit pentru a stoca valori n dolari (i se mai spune tipul monetar ) . Valoarea maxim permis este de $922 000 de miliarde i permite patru zecimale.( valorile sunt stocate pe 8 octei n memorie).

12

Numeric i Float folosite pentru pstrarea valorilor numerice , permind pnp la 20 de cifre semnificative, cu maxim 19 cifre zecimale. Valorile inime i maxim ntre care se poate lucra sunt 0.9999999999 x10-19 i 0.9999999999 x1020 . Date i DateTime sunt folosite pentru pstrarea datelor calendaristice n memorie sub forma YYYYMMDD, iar DateTime pstreaz i data calendaristic i timpul n formatul HHMMSS . Datele variaz ntre limitele 0101-100 i 12-31-9999, iar timpul de la 12:00:00 AM la 11:59:59 PM. Trebuie precizat faptul c n tabel data calendaristic este afiat implicit n formatul american MMDDYY. Pentru a schimab acest format se poate tasta ( n fereastra de comand) comanda SET DATE TO DMY, iar pentru a avea anul cu 4 cifre trebuie tastat comanda SET CENTURY ON . Logical - se folosete pentru pstrarea a dou valori : adevrat ( notat cu .T. ) i fals ( notat cu .F.) . n general , este folosit pentru mrimi cu dou stri, cum ar fi : taxabil/netaxabil, bursier/nebursier, scutit/nescutit, etc. Memo se folosete pentru stocarea irurilor mari de caractere , care depesc 254. De exemplu, un cmp Observaie sau un cmp Cv (curriculum vitae) pot fi declarate de tip memo. Trebuie s atenionm faptul c dac se folosesc cmpuri memo , sistemul va ma ataa un fiier la baza de date , fiier ce are extensia FPT i stocheaz textul cel lung al cmpului ( cmpurilor ) memo . De aceea , dac se dorete copierea unei baze de date , trebuiesc copiate mai multe fiiere : fiierul DBC (containerul b.d.) , DBF-urile ( tabelele cu date ), FPTurile ( fiierele cu textul cmpurilor memo) . General - folosit pentru stocarea de referine la anumite obiecte cum ar fi grafice. De asemenea , se folosete pentru adugarea de obiecte OLE (imagini, sunete, documente Windows). i el este stocat n fiierul cu extensia FPT asociat.

lungimea cmpului - adic numrul de poziii necesare pentru pstrarea datelor acelui cmp ( numrul maxim estimat a se ocupa ) . numrul de zecimale se refer la cmpurile numerice i precizeaz cte poziii pentru zecimale se vor aloca.

13

fanionul (indicatorul) de indexare - acesta stabilete dac se folosete un index pe baza cmpului respectiv .

Observaie : Indecii reprezint o tehnologie cu ajutorul creia datele din tabel sunt vzute ntr-o anumit ordine , dup un anume criteriu . i vom discuta la subiectul de ordonare a datelor .

fanionul (indicatorul) de valoare nul (NULL) - arat dac n cmpul respectiv poate fi memorat sau nu o valoare nul. Acest lucru permite diferenierea unui cmp lsat necompletat de utilizator i unul completat cu valoarea 0.

Pe lng tabele cu date i ( vom vedea mai trziu) relaiile dintre aceste tabele , o baz de date relaional n Visual Foxpro mai poate conine i alte elemente . De asemenea, fa de versiunile mai vechi, n Visual Foxpro avem cteva caracteristici noi :

nume lungi ale tabelelor i a cmpurilor acestora , pentru a obine o lizibilitate diferene secvene de cod ( proceduri i funcii) care s fie executate automat la

mai bun. apariia anumitor evenimente ( cum ar fi completarea de ctre utlizator a unui cmp de date , adugarea de nregistrri, modificarea unei anumite valori din cmp. restricii de integritate sau condiii ce trebuie respectate la modificarea bazei de vederi ale bazei de date conexiuni cu alte surse de date , cu alte tipuri de baze de date. date.

Trebuie precizat faptul c exist de fapt dou tipuri de tabele : cele stocate i legate n baza de date ( ele permit caracteristicile de mai sus) i cele libere , nelegate de o baz de date ( cu restriciile anterioare, nume scurte , etc.) folosite pentru aplicaii mai vechi din vechile versiuni .

CURS 4

14

CREAREA BAZEI DE DATE I A TABELELOR COMPONENTE : Prima metod const n alegerea opiunii New din meniul File , dup care , n fereastra deschis pe ecran, se alege butonul Database (n felul acesta se indic sistemului c se dorete construirea unui container baz de date ). n final , fie se acioneaz butonul New file , fie se alege asistentul Wizard pentru a construi baza de date . Se alege o nou baz de date Se alege un nou fiier pentru baza de date.

Dac se alege varianta New File, sistemul va cere directorul unde se stocheaz baza de date i numele bazei de date. Dup specificarea numelui b.d. , pe ecran se va deschide fereastra Constructorului de baze de date, ca n figura de mai jos. . Zona n care se vor afia tabelele i relaiile
Meniu rapid cu comenzi ce se obine apsnd butonul dreapta al mouselui

Fereastr cu comenzi pentru diferite operaii asupra tabelelor

Dup crearea containerului, se poate trece la crearea tabelelor bazei de date sau adugarea n container a unor tabele cu date existente . Pentru a crea un tabel, se poate apsa butonul dreapta pentru a obine meniul rapid cu comenzi i a alege comanda New Table. De aseamenea, se poate apsa primul buton ( New Table) din fereastra de comenzi Database Designer sau se poate realege din meniul File , comanda New cu opiunea Table. ndiferent
15

de metoda aleas , mediul va cere s precizai modul de lucru : fiier nou sau cu ajutorul asistentului . Apoi, se alege numele directorului n care se stocheaz tabelul i numelele tabelului ce se creaz. n final, va aprea Constructorul de table prin intermediul cruia se va preciza structura logic a tabelului : Cmpurile

Tipul de date ce se poate alege pentru fiecare cmp

n final, se poate confirma salvarea structurii cu butonul OK i eventual introduce date n tabel, revenind apoi n constructorul bazei de date :

Dac se apas butonul dreapta n zona tabelului (vezi figura anterioar), va aprea un alt meniu rapid din care se poate alege Modify pentru a modifica structura bazei de date sau Browse pentru a afia i eventual a modifica datele din tabel. Cu ajutorul comenzii Modify se poate reveni n structura tabelului, se pot aduga noi cmpuri, se pot terge cmpuri sau se pot modifica caracteristicile celor vechi.
16

Tabelele create anterior sunt tabele legate de baza de date . Aceste tabele permit nume lungi pentru denumirea tabelului i pentru denumirile cmpurilor (maxim 128 de caractere) . De asemenea , pentru cmpurile unei tabele legate se pot preciza formate implicite de afiare a datelor, machete de introducere a datelor n cmp, reguli de validare la nivel de cmp, etc. Exist i alte elemente noi cum ar fi posibilitatea de a incorpora n baza de date elemente speciale cum ar fi conexiunile , vederile , etc. Pe ln aceste tabele legate, se pot crea tabele libere , care s nu aparin unei baze de date . Aceste tabele libere nu ofer toate facilitile de mai sus , existente la tabelel legate (nume lungi, etc). Ele se pot crea separat n scopul folosirii lor n programe mai vechi din vechile versiuni de Foxpro, fie pentru adugarea ulterioar n baza de date . Crearea tabelelor libere este similar crerii tabelelor legate . Pentru aceasta , n ipoteza c nu exist nici o baz de date deschis, se alege comanda File, opiunea New i tipul Table, dup care se parcurge acelai dialog de creare a tabelului (prezentat anterior ). Un tabel liber poate fi adugat ulterior unei baze de date deschise , cu ajutorul comenzii Add Table ca n figura de mai jos.

Comanda de adugare

Add Table

Remove Table

Toate operaiile anterioare legate de crearea bazei de date i a tabelelor legate sau libere se mai pot realiza i cu ajutorul comenzilor echivalente ce se tasteaz n fereastra de comand:

pentru crearea containerului baz de date folosim CREATE DATABASES sau CREATE

nume, unde nume va reprezenta numele noii baze de date


17

DATABASES , caz n care aprea o fereastr de dialog pentru introducerea numelui .

pentru deschiderea constructorului i afiarea acestuia se folosete MODIFY crearea tabelelor se face cu comanda CREATE TABLE nume sau CREATE adugarea de date n tabelul curent se face cu comanda APPEND .

DATABASE .

TABLE ( se poate omite numele TABLE ).

Observaii: 1. Orice comand ce se folosete n fereastra de comand poate fi scris prescurtat folosind doar primele patru litere din nume . De exemplu, putei tasta doar CREA DATA. 2. De asemenea se poate lucra combinat, fie tastnd comenzi n fereastra de comand fie folosind comenzile din meniuri sau din ferestrele Constructorilor de tabele sau baze de date. 3. Dac un tabel poate fi adugat ntr-o baz de date, de asemenea el poate fi ters din baza de date. Lucrul acesta se realizeaz fie cu ajutorul comenzii REMOVE din meniul DATABASE, fie cu ajutorul butonului Remove Table din bara de instrumente Database , fie cu ajutorul comenzii Delete din meniul rapid ce se obine prin apsarea butonului dreapta al mouselui pe simbolul tabeleului . Indexarea tabelelor . Nimeni nu se ateapt ca utlizatorii s introduc datele gata sortate, gata aranjate. Din acest motiv, de multe ori avem nevoie s vedem datele ntr-o anumit ordine. Lucrul acesta este posibil de realizat n mai multe moduri n Visual Foxpro. Unul din aceste moduri poate fi folosit chiar din momentul crerii tabelei prin intermdiul unei tehnologii numit indexare. Indecii servesc pentru dou scopuri principale. nti , folosim indecii pentru a forma realii ntre tabele . Al doilea scop este de a ajuta la regsirea datelor i de a mbunti performanele interogorilor i ale rapoartelor. n momentul crerii tabelului, utilizatorul poate s-i defineasc i indeci. De fapt, indexarea reprezint o tehnic de ordonarea logic a datelor dintr-o tabel , dup diferite criterii, operaie care ns nu afecteaz ordinea fizic a datelor din tabel, ci doar modul n care sunt vzute de utilizator. Ordonarea tabelei presupune stabilirea unui criteriu dup care s fie parcurse nregistrrile. Criteriul este de obicei un cmp sau o combinaie de cmpuri. De
18

exemplu, pentru tabelul cursani ne intereseaz s avem , s vedem cursani fie n ordinea alfabetic a numelui, fie n ordinea anului de studiu. Cmpul dup care se face ordonarea se mai cheam cheie de ordonare. De fapt indexul, este un fiier separat ataat tabelului , ce i spune sistemului cum s parcurg baza de date pentru ca utlizatorul s o vad ordonat . De exemplu : Carti.cdx Titlu Amintiri din copil. Ion Insula misterioas Moromeii Poziie 2 1 4 3 Nr. nreg 1 2 3 4 Titlu Ion Amintiri din copilrie Moromeii Insula misterioas Carti.dbf Autor Nr. pag. Liviu. R. 400 Ion Creang 100 Marin Preda 350 Jules Verne 450

Dac se dorete afiarea datelor, sistemul se uit n fiierul index i de acolo afieaz mai nti inregistrarea de pe poziia 2 (ce o gsete n tabelul carti.dbf), apoi nregistrarea 1,4 i n final 3. n Visual Foxpro, indecii sunt memorai ntr-un fiier cu extensia CDX.. Indecii pot fi de dou feluri :

normali (Regular ) acetia construiesc pentru fiecare nregistrare a tabelei de duplicarea valorii

cte o nregistrare n fiierul index respectiv, indiferent

cmpului de indexare. Prin urmare, ntr-o tabel indexat care conine dou persoane cu acelai nume, ambele nregistrri vor fi vzute de utilizator.

unici (Unique) , care permit o unic valoare a cheii de indexare . n varianta

aceasta , dac exist mai multe persoane cu aceast nume, doar prima nregistrare va fi accesibil. Totui, pentru a putea face legturi ntre tabelel bazei de date exist nc dou tipuri de indecii :

indexul candidat (Candidate) reprezint un index asemntor cu cel unic ,

dar interzice ncrcarea de nregistrri care dubleaz valoarea cheii de indexare. n cazul indecilor unici se permitea ncrcarea acestora, dar nregistrrile respective erau ascunse utilizatorului.

indexul de tip cheie primar (Primary) Exist situaii n care n tabel s-au

creat mai multe criterii unice de ordonare . Dintre acestea , se poate stabili unul care

19

s fie folosit drept cheie primar a tabelei, pentru a putea stabili relaii ntre tabela respectiv i alte tabele ale unei baze de date . Observaie: De obicei proiectantul bazei de date i a tabelelor , i stabilete un cmp ca i cheie primar unic . De exemplu, cod matricol , cod numeric personal , cod produs, cod carte , marc persoan , etc. Crearea indecilor se poate face la creare tabelelor, folosind pagina Fields , aa cum se vede din figura de mai jos : Ordinea Cmpul Tipul de index Cheia de indexare Filtru cresctoare/descresctoare

Constructor de expresii

Dup cum se oberv n figura anterioar , cu ajutorul paginii Index se poate defini unul sau mai muli indeci. Pentru aceasta trebuie precizate cteva informaii : cum se ordoneaz : cresctor sau descresctor; numele simbolic al indexului; tipul idexului ( unul din cele patru tipuri prezentate anterior); expresia de indexare folosit ca i criteriu de ordonare, expresie format dintr-un singur cmp al tabelei sau dintr-o combinaie de cmpuri legate prin operatori. Expresia se construiete cu ajutorul Constructorului de expresii. un filtru care s restrng accesul la nregistrrile tabelei , pe baza unor condiii pe care le precizeaz utlizatorul . Condiia de filtrare se poate tasta manual sau construi cu ajutorul Constructorului de expresii aflat n dreapta coloanei Filter.

20

Indecii , pentru a putea avea efect , trebuie deschii. Vom vedea la subiectul de ordonarea datelor cum se folosesc , cum se deschid, etc. Formatul de afiare i de citire. Validarea datelor. n momentul crerii tabelului, utlizatorul are posibilitatea de a introduce formate de afiare i formate pentru citirea datelor . De asemenea, un lucru foarte util n practic, utilizatorul poate impune condiii de validare a datelor pentru a preveni introducerea de date inconsistente. Opiunile respective se pot vedea n figura de mai jos:

Formatul de afiare al cmpului Condiii de validarea selectat datelor Masc de intrare pentru cmpul selectat Text ce nlocuiete denumirea cmpului Constructor de expresii Valori iniiale pentru cmpuri Comentarii pentru cmpuri

Formatul de afiare i masca de intrare al unui cmp se refer la modul cum vor fi afiate datele ntr-o fereastr de editare a tabelei (de exmplu cu comanda Browse ) sau ntr-o list afiat cu comanda List sau Display sau ntr-un raport i la modul cum vor fi citite datele (inclusiv ntr-un formular). Formatul de afiare i masca de citire sunt de fapt un ir de caractere, un fel de ablon, alctuit din mai multe coduri , n funcie de care se decide afiarea i citirea datelor. De exemplu, se poate folosi caracterul 9 pentru a preciza fiecare poziie a unei cifre dintr-un numr ( de exemplu 99.99 precizeaz afiarea pe 5 poziii cu 2 zecimale . De asemenea se poate folosi caracterul A pentru a preciza caractere de tip liter sau se poate folosi caracterul ! pentru a preciza majuscule ( de exemplu !Axxx precizeaz c avem numai

21

majuscule, prima obligatoriu liter ) . Mai multe amnunte legate de abloanele de afiare i citire la realizarea rapoartelor de afiare i a formularelor de citire. Condiiile de validare a datelor sunt expresii pe care le putem introduce n ideea de a face verificri ale datelor introduse. Acest lucru este util pentru a preveni introducerea datelor inconsistente . Pentru aceasta se folosete caseta Rule i , eventual, Constructorul de expresii aflat n dreapta casetei Rule (vezi figura anterioar) . De aici se poate construi o expresie logic ce folosete operatori relaionali (<, >, =, <>, <=, >=), operatori logici (AND, OR, NOT sau !). Regulile acestea sunt verificate n momentul n care se ncearc mutarea cmpului sau modificarea valorilor acestuia cu ajutorul unei comenzi . Valorile implicite pentru cmpuri se refer la posibilitatea de a preciza de la nceput cu ce valoare va fi iniializat un anumit cmp . n felul acesta , dac utilizatorul nu introduce o valoare , cmpul va avea o valoare iniial . O alt situaie este aceea n care o anumit valoare se repet la mai multe nregistrri , este mai simplu s iniializm cmpul i s modificm doar acele nregistrri care nu se portivesc. Valorile titlurilor de figur (proprietatea Caption pe figur ) se refer la titlurile coloanelor, de exemplu la comenzile Browse sau Edit titlurile coloanelor sunt denumirile cmpurilor . de multe ori aceste denumiri nu sunt suficient de sugestive fiind de fapt prescurtri . Cu acest proprietate, acele titluri pot fi schimbate. Comentariile cmpurilor se refer la mesaje explicative ce le pune programatorul pentru a tii mai trziu la ce folosea acel cmp ( dup un timp , programul va trebui depanat , actualizat i programatorul uit la folosea acel cmp) .

22

You might also like