Baze de date
Crearea bazelor de dateCREAREA BAZELOR DE DATE Crearea unei baze de date presupune reunirea tabelelor intr-o singura colectie pentru a beneficia de avantajele folosirii dictionarului de date. Acesta permite crearea sau specificarea: relatiilor persistente dintre tabelele unei baze de date; numelor lungi pentru tabele sau campuri* titlurilor de campuri afisate in fereastra BROWSE si in anteturile coloanelor unei grile; * valorilor implicite ale campurilor; * claselor implicite ale controalelor folosite in formulare; mastilor de intrare si a formatelor de afisare a campurilor; * regulilor la nivel de camp si de inregistrare; * declansatoarelor; * procedurilor stocate; conexiunilor la surse de date externe; vederilor locale si externe; comentariilor pentru fiecare camp*, tabel* si baza de date. Gruparea tabelelor intr-o baza de datePentru a reuni tabelele intr-o baza de date se creaza mai intai un container baza de date pentru pastrarea tuturor obiectelor care formeaza baza de date (tabele, vederi, conexiuni sau proceduri stocate asociate). in Project Manager se selecteaza fila Data , apoi se alege din lista Databases si se actioneaza butonul New.; se poate folosi comanda CREATE DATABASE, cu sintaxa CREATE DATABASE [DatabaseName | ?] Exemplu: CREATE DATABASE Parteneri Adaugarea tabelelor la o baza de dateTabelele pot fi asociate unei baze de date prin crearea lor in cadrul unei baze de date deschise in fundal sau prin adaugarea tabelelor existente la o baza de date. in Project Manager se selecteaza fila All sau Data, din care se alege Tables si se actioneaza butonul Add. Se foloseste comanda ADD TABLE, cu sintaxa urmatoare ADD TABLE TableName
| ? Exemplu: OPEN DATABASE Parteneri ADD TABLE Clienti Eliminarea unui tabel dintr-o baza de datein Project Manager se selecteaza numele tabelului si se actioneaza butonul Remove; in Database Designer se selecteaza numele tabelului si se da comanda Remove din meniul Database; se foloseste comanda REMOVE TABLE, cu sintaxa: REMOVE TABLE TableName
| ? Unde : clauza DELETE provoaca pe langa inlaturarea tabelului din baza de date si stergerea acestuia de pe disc CREAREA TABELELOR SI LUCRUL INREGISTRARILECrearea unui tabel nouCrearea unui tabel nou se refera la crearea unei structuri noi, urmand ca datele sa fie introduse fie imediat dupa salvarea acesteia fie ulterior. La proiectarea unui tabel trebuie tinut cont de urmatoarele: pentru un anumit camp se foloseste tipul de data corespunzator felului informatiei care va fi memorata in acesta; dimensiunea campului trebuie sa fie suficient de mare astfel incat sa corespunda informatiei ce va fi afisata; se considera un numar corespunzator de pozitii zecimale pentru campurile Numeric si Float; se valideaza caseta NULL, daca se doreste ca sa fie acceptat NULL ca o valoare pentru campul respectiv. Tipuri de date in Visual FoxPro Visual FoxPro are capacitatea de a gestiona urmatoarele tipuri de date:
Crearea unui tabel nou - in Project Manager se selecteaza fila cu eticheta Data. n Daca se creaza un tabel asociat unei baze de date se selecteaza baza, apoi Table, dupa care se actioneaza butonul New n Daca se creaza un tabel independent se selecteaza optiunea Free Tables si se actioneaza butonul New butonul New deschide doua posibilitati: folosirea asistentului - se alege butonul Table Wizard, si se urmeaza instructiunile de pe ecrane folosirea ecranului de proiectare (Table Designer)- se alege New File, apoi in fereastra de dialog Create se introduce un nume pentru tabel, se actioneaza Save, dupa care se deschide fereastra de proiectare - se pot crea tabele folosind comanda CREATE TABLE. Pentru tabelele asociate unei baze de date, aceasta comanda se lanseaza dupa ce a fost deschisa in prealabil baza de date. Exemplu: OPEN DATABASE Personal CREATE TABLE Salar (cnp C(13), nume c(25)) Pentru tabelele independente se utilizeaza cuvantul cheie FREE in comanda. Exemplu: CLOSE DATABASES CREATE TABLE Functii FREE (codf c(4), numef c(15 Stergerea tabelelor de pe disca) Stergerea tabelelor asociate unei baze de date Daca un tabel este asociat unei baze de date, poate fi sters, ca produs secundar prin inlaturarea din baza de date sau poate fi sters de pe disc. Cele doua operatii difera, prin aceea ca inlaturarea din baza nu implica stergerea fizica a tabelului. Stergerea unui tabel de pe disc se face astfel: in Project Manager se selecteaza numele tabelului, apoi se actioneaza Remove urmat de Delete. in Database Designer se selecteaza tabelul, se alege Remove din meniul Database si apoi Delete. b) Stergerea tabelelor independente Tabelele independente se pot sterge astfel: in Project Manager , se selecteaza numele tabelului, se actioneaza Remove, si apoi se alege Delete. Se utilizeaza comanda DELETE FILE . DELETE FILE [NumeFis | ?] [RECYCLE] Exemplu: USE DELETE FILE tabel1.dbf Adaugarea rapida a unui index regulatAtunci cand se defineste un camp se poate stabili un index regulat pe campul respectiv specificand in caseta Index din Table Designer optiunea ascendent sau descendent. Indexul specificat este automat adaugat la fila Index si utilizeaza campul ca expresie. Pentru a modifica indexul, in fila Index se va schimba numele sau tipul indexului sau se va adauga un filtru. La constructia unui nou tabel, se poate specifica daca unul sau mai multe campuri pot accepta valoarea null. Pentru a controla intrarea valorii null pentru fiecare camp: in Table Designer se selecteaza sau se sterge caseta de validare NULL pentru campul respectiv. Se utilizeaza clauza NULL sau NOT NULL in comanda CREATE TABLE. Exemplu: CREATE TABLE clienti ( cli_id C(6) NOT NULL, nume_soc C(15) NOT NULL, contact C(15) NULL) Adaugarea de comentarii la campuriDupa crearea unui tabel intr-o baza de date deschisa, se pot adauga descrieri ale fiecarui camp pentru a usura intelegerea si actualizarea tabelului respectiv. in Table Designer se introduce textul pentru comentariu in caseta Field Comment. Se utilizeaza functia DBSETPROP (). DBSETPROP(cName, cType, cProperty, ePropertyValue) Exemplu: OPEN DATABASE Parteneri USE Clienti DBSETPROP('clienti.cli_id', 'Field', 'Comment', ; 'Campul nu poate fi nul') Crearea valorilor implicite pentru campuriValoarea implicita se aplica atunci cand se introduc date prin intermediul unui formular, intr-o fereastra Browse, intr-o vedere sau prin program si ramane in camp pana cand se introduce o noua valoare. Se pot stabili valori implicite atat din Table Designer cat si prin comanda, astfel: in Table Designer, in zona Field validation se introduce valoarea corespunzatoare in caseta Default value. in comanda CREATE TABLE se utilizeaza clauza DEFAULT. Exemplu: CREATE TABLE fact( cod_part C(4), cant N(5,2) DEFAULT 200.00) Aplicarea de reguli comerciale Se pot aplica reguli comerciale pentru datele de intrare prin crearea regulilor la nivel de camp respectiv la nivel de inregistrare. Acestea se numesc reguli de validare si controleaza datele de intrare in campurile, respectiv inregistrarile unei baze de date. Aceste reguli compara valorile introduse cu cele obtinute ca rezultat al evaluarii expresiilor definite, si in cazul in care acestea nu respecta cererile regulilor de validare sunt rejectate. Se va folosi clauza VALID in definirea unui formular sau intr-o secventa de cod. Diferitele constrangeri asupra datelor sunt aplicate in urmatoarele situatii:
Constrangerile sunt activate in ordinea aparitiei lor in tabel. Prima violare a unei reguli opreste executia comenzii. Pentru a crea o regula de validare pe camp: in Table Designer in caseta Rule din sectiunea Field Validation se introduce expresia pentru regula dorita; sau in comanda CREATE TABLE se utilizeaza clauza CHECK Pentru a insoti regula de validare pe camp cu un mesaj de eroare : in Table Designer , in sectiunea Field validation se va introduce mesajul dorit in caseta Message; sau in comenzile CREATE TABLE respectiv ALTER TABLE se utilizeaza clauza CHECK si clauza ERROR. Pentru a crea o regula de validare la nivel de inregistrare si un mesaj de ereoare : in fila Table din Table Designer se introduc regula de validare respectiv mesajul de eroare in casetele Rules si Messages; sau - se foloseste clauza CHECK in comanda CREATE TABLE sau CHECK TABLE. Exemplu: pentru a fi siguri ca angajatii unei societati sunt majori la data angajarii se poate folosi urmatoarea secventa de cod: ALTER TABLE angajati SET CHECK dat_ang>=dat_nas +(18*365.25); ERROR 'Angajatul trebuie sa fie major la data angajarii' Daca se incearca introducerea unei inregistrari cu data invalida, Visual FoxPro afiseaza o eroare cu mesajul specificat si nu actualizeaza inregistrarea. Modificarea structurii unui tabelInainte de a modifica structura unui tabel utilizatorul trebuie sa se asigure ca are acces exclusiv la tabelul respectiv. Structura unui tabel se poate modifica asrtfel: in Project Manager se selecteaza numele tabelului si se alege optiunea Modify sau in Database Designer se selecteaza tabelul din schema si se alege optiunea Modify din meniul Database sau se utilizeaza comanda MODIFY STRUCTURE (MODI STRU), dupa ce in prealabil tabelul a fost deschis cu comanda USE. USE [[NumeBaza!]Tabel | NumeVedereSQL | ?] [IN nWorkArea
| cTableAlias] Oricare din solutiile alese vor deschide proiectantul de tabele Table Designer. Exemplu: OPEN DATABASE Parteneri USE Clienti EXCLUSIVE MODIFY STRUCTURE Prin program, structura unui tabel se poate modifica utilizand comanda ALTER TABLE. a) Adaugarea de campuri noi in Table Designer se alege Insert b) Stergerea de campuri in Table Designer se selecteaza campul dorit si se actioneaza butonul Delete c) Redenumirea campurilor in Table Designer se introduce un nume nou in caseta Name pentru un camp existent d) setarea sau schimbarea regulilor de validare la nivel de camp sau tabel - in fila Table din Table Designer se introduce o regula noua sau un mesaj de eroare nou in casetele Rule respectiv Message din sectiunea Record Validation. e) stabilirea sau modificarea valorilor implicite in Table Designer se introduce noua valoare in caseta Default value din fila Fields Duplicarea unui tabel Prin utilizarea comenzilor din limbajul de manipulare se poate face o copie a structurii unui tabel, impreuna cu procedurile stocate , expresiile pentru declansatoare si valorile implicite pentru campuri. Aceste comenzi nu implica o copiere a continutului tabelelor. se deschide tabelul original; se foloseste comanda COPY STRUCTURE pentru a face o copie a tabelului original; Pentru a copia date din tabelul original: se deschide tabelul creat cu comanda precedenta se foloseste comanda APPEND FROM Sintaxa celor doua comenzi este urmatoarea: COPY
STRUCTURE TO NumeTabel APPEND FROM
NumeTabel | ? [[TYPE]
[DELIMITED [WITH Delimitator | WITH
BLANK | WITH TAB [AS nCodePage] Lucrul cu inregistrarile a) Adaugarea unor inregistrari - Adaugarea de date in mod program sau in mod comanda Prin program, se foloseste comanda APPEND BLANK. Aceasta este urmata de comanda REPLACE care inlocuieste valoarea prezenta a campului ( chiar a unuia gol) cu o noua valoare. Comanda REPLACE necesita : un tabel deschis, o inregistrare existenta, numele campului in care se va memora valoarea si o expresie evaluata la valoare corespunzatoare din punct de vedere al tipului de date pentru fiecare camp. Sintaxa acesteia este: REPLACE Camp1 WITH eExpression1
[ADDITIVE] Exemplu: OPEN DATABASE Personal & se deschide baza de date USE Date_id & se deschide tabelul corespunzator APPE BLANK & se adauga o inregistrare cu campuri goale REPL prenume WITH 'Adriana' & se stocheaza o valoare in camp Adaugarea de date direct de la tastatura Pentru adaugarea de inregistrari in mod ecran se folosste comanda APPEND. Aceasta are ca efect deschiderea ecranului CHANGE care permite utilizatorului introducerea datelor de la tastatura. Adaugarea unor inregistrari dintr-un alt tabel Se pot copia inregistrari din alte tabele sau fisiere, prin folosirea comenzii APPEND FROM. Exemplu: OPEN DATABASE Personal USE Date_pers APPE FROM Angajati b) Editarea inregistrarilor dintr-un tabel se utilizeaza comanda EDIT sau CHANGE in fereastra de comenzi Exemplu USE Date_pers EDIT c) Adaugarea elementelor grafice la un tabel Se pot stoca elemente grafice intr-un tabel Visual FoxPro prin crearea unui camp de tip General in care sa se importe sau sa se copieze elemente OLE (imagini bitmap sau diagrame). c) Introducerea in campuri a valorii null - intr-o fereastra BROWSE sau intr-un formular se apasa combinatia Ctrl+0 (zero) se foloseste particula NULL. Exemplu: REPLACE automobile WITH NULL d) stergerea inregistrarilor Stergerea inregistrarilor dintr-un tabel are loc in doua etape: mai intai la nivel logic, prin marcare in vederea stergerii, si apoi la nivel fizic, prin stergerea efectiva de pe hard-disc. Pana la stergerea efectiva a inregistrarilor acestea pot fi recuperate prin dezactivarea marcajului pentru stergere. marcarea inregistrarilor pentru stergere: intr-o fereastra BROWSE se executa clic pe marcajul de stergere pentru a marca inregistrarea respectiva. Marcajul de stergere se afla la extremitatea stanga a inregistrarii (inaintea primului camp). din meniul Table se alege optiunea Delete Records. Daca optiunea SET DELETED este dezactivata (SET DELETED OFF), pana la stergerea efectiva a inregistrarilor de pe hard, acestea sunt vizibile inca in fereastra BROWSE, cu marcajul de stergere activat. In caz contrar, inregistrarile marcate pentru stergere sunt eliminate din fereastra BROWSE. Activarea sau dezactibarea comenzii SET DELETED determina daca inregistrarile marcate pentru stergere sunt accesibile prin comenzi care opereaza asupra lor. recuperarea inregistrarilor marcate pentru stergere Daca inregistrarile nu au fost eliminate efectiv din tabel, se poate elimina marcajul pentru stergere din dreptul inregistrarilor astfel: in fereastra Browse se executa un nou clic pe marcajul de stergere; se foloseste comanda RECALL, care indica o serie de inregisrtrari, precum si o conditie bazata pe o expresie logica pe care inregistrarile trebuie sa le indeplineasca pentru a li se elimina marcajul de stergere. Exemplu: Use Produse RECALL FOR denumire='monitor' BROWSE - eliminarea inregistrarilor marcate pentru stergere Dupa ce s-au marcat inregistrarile pentru stergere. Acestea pot fi efectiv eliminate de pe hard disc cu ajutorul interfetei sau prin program. intr-o fereastra BROWSE se alege comanda Remove Deleted Records din cadrul meniului Table; se utilizeaza comanda PACK. Aceasta are doua clauze: MEMO si DBF, care executa operatia de stergere numai din fisierul MEMO asociat unui tabel respectiv numai din fisierul tabel. Daca este lansata comanda PACK fara clauze, inregistrarile sunt sterse atat din fisierul tabelului cat si din fisierul MEMO asociat. Fisierul din care se sterg inregistrari trebuie accesat in mod exclusiv. Exemplu: USE Clienti EXCLUSIVE PACK Stergerea tuturor inregistrarilor dintr-un tabel Daca se doreste stergerea tuturor datelor dintr-un tabel, dar pastrarea structurii acestuia, se foloseste comanda ZAP. Lansarea aceasteia este echivalenta cu lansarea comanzii DELETE ALL urmata de comanda PACK, dar este mult mai rapida. Tabelul trebuie deschis in mod EXCLUSIVE. Inregistrarile carora li s-a aplicat comanda ZAP nu mai pot fi recuperate. sunt propriettii stocate in fisierul .dbc, dar sunt create in procesul de construire a unei tabele sau vederi.
|