Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Compunerea logica a bazelor de date

fox pro



+ Font mai mare | - Font mai mic



Compunerea logica a bazelor de date

Uneori in practica intalnim situatia unor baze de date care au un camp comun; in acest caz, fiecarei inregistrari din prima baza de date ii corespund una sau mai multe inregistrari in a doua baza de date. Este util atunci sa stabilim o relatie intre cele doua baze de date, astfel incat deplasarea pointer-ului de inregistrari pe o anumita inregistrare in prima baza de date sa aiba ca efect deplasarea automata a pointer-ului de inregistrari din a doua baza de date pe inregistrarea corespondenta (cu aceeasi valoare in campul comun).



Pentru a stabili o astfel de relatie intre doua baze de date in situatia descrisa mai sus, trebuie sa folosim comanda:

SET RELATION TO

sintaxa: SET RELATION TO [ <expr1> INTO <expN1>]

[,<expr2> INTO <expN2> .]

efect: Se stabileste o relatie de subordonare intre doua baze de date; una dintre cele doua baze de date va juca rolul de "parinte", iar cealalta de "fiu" (deplasarea pointer-ului de inregistrari pe o anumita inregistrare in baza de date parinte va avea ca efect deplasarea automata a pointer-ului de inregistrari pe inregistrarea corespondenta din baza de date fiu). Pentru a se stabili aceasta relatie, trebuiesc indeplinite cateva cerinte:

baza de date "parinte" trebuie deschisa in zona curenta de lucru, iar cealalta trebuie deschisa in alta zona de lucru;

baza de date fiu trebuie indexata dupa campul comun.

Folosirea comenzii fara nici un parametru are ca efect stergerea oricarei relatii intre bazele de date active la un moment dat.

Parametri:

<expr1> : Este o expresie relationala, care defineste relatia dintre cele doua baze de date; de obicei, este cheia de indexare, care controleaza indecsii din baza de date "fiu".

INTO <expN1> : Identifica zona de lucru in care este deschisa baza de date "fiu" (se va preciza aici numarul acestei zone de lucru).

<expr2> INTO <expN2> : Pot fi create mai multe relatii de tipul descris mai sus, folosind aceeasi baza de date "parinte"; in acest caz, ele trebuiesc indicate una cate una, separate prin virgule.

Observatie: Am spus anterior ca pentru a defini o relatie intre doua sau mai multe baze de date, acestea trebuiesc deschise simultan in zone de lucru diferite. Intr-adevar, FOXPRO permite utilizarea acestui concept: la un moment dat putem lucra cu mai multe baze de date, care sa fie deschise simultan in asa-numitele "zone de lucru". Aceasta inseamna ca avem in egala masura acces la toate bazele de date deschise, si le putem folosi independent. Conceptul este util in special in programare, atunci cand trebuiesc realizate programe care sa faca operatii mai complexe la nivelul mai multor baze de date (de exemplu, cautari simultane), oferind o modalitate comoda de rezolvare a unor astfel de cerinte.

FOXPRO are definite 25 de zone de lucru, care pot fi identificate in modul urmator:

toate cele 25 zone de lucru sunt identificate prin numere (intre 1 si 25);

primele 10 zone de lucru pot fi identificate si prin litere (de la "A" la "J") - unele comenzi FOXPRO accepta mai usor identificarea unei zone de lucru prin litera corespunzatoare, decat prin cifra; exemplu: UPDATE.

La un moment dat, o singura zona de lucru din cele 25 este activa - adica avem acces la baza de date creata si deschisa acolo (putem face diferite operatii cu datele ei) ; initial, si in lipsa altor precizari, zona de lucru activa este cea cu numarul 1; pentru activarea altei zone de lucru la un moment dat se foloseste comanda:

SELECT

sintaxa: SELECT <expN>

efect: Se activeaza o noua zona de lucru, si anume cea cu numarul specificat in <expN>.

SET RELATION OFF

sintaxa: SET RELATION OFF INTO <expN>

efect: Sterge relatia existenta intre baza de date curenta si una dintre bazele de date fii, specificata prin numarul zonei de lucru in care aceasta a fost deschisa, <expN>.

Exemplu: Sa presupunem ca avem doua baze de date cu urmatoarea structura:

BD1: COD - Numeric, 4

NUME - Character, 50

BD2: COD - Numeric, 4

VARSTA - Numeric, 3

SEX - Character, 1

Aceste baze de date au un camp comun (COD), asa incat putem defini o relatie intre ele. Pentru aceasta, trebuiesc urmati pasii de mai jos:

Ambele baze de date vor fi deschise in zone de lucru diferite: mai intai, baza de date parinte va fi deschisa in zona de lucru curenta, iar apoi va fi activata o alta zona de lucru (de exemplu, cea cu numarul 2), in care vom deschide baza de date fiu.

use bd1

select 2

use bd2

In acest mod, baza de date curenta este a doua; aceasta trebuie indexata dupa campul comun - COD :

index on cod to idbd2

Acum poate fi definita relatia intre cele doua baze de date; pentru aceasta, trebuie mai intai activata baza de date parinte, si apoi se defineste relatia:

select 1

set relation to cod into 2

Pentru a vedea efectele definirii relatiei:

go top

(ne deplasam pe prima inregistrare in baza de date parinte).

? recno(1), recno(2)

disp

select 2

disp

(in acest mod se pune in evidenta pozitia pointer-ului de inregistrari in fiecare dintre cele doua baze de date: in baza de date parinte, inregistrarea curenta este prima, iar in baza de date fiu inregistrarea curenta va fi cea cu acelasi cod ca prima inregistrare in baza de date parinte).



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 934
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved