Documente Academic
Documente Profesional
Documente Cultură
Când se lucrează cu mai multe tabele se folosesc, pe de o parte, sesiuni de date pentru a controla
tabelele disponibile pentru formulare şi rapoarte şi pe de altă parte, zone de lucru pentru a găzdui
tabelele deschise.
Zona de lucru este o regiune numerotată prin care se identifică un tabel deschis. In Visual
FoxPro există 32767 zone de lucru în care se pot deschide şi manipula tabele. Zonele de lucru sunt
identificate într-o aplicaţie prin folosirea aliasului tabelului deschis în zona de lucru.
Un alias de tabel este numele prin care Visual FoxPro indică un tabel deschis într-o zonă de
lucru. Atunci când se deschide un tabel Visual FoxPro foloseşte automat numele fişierului ca alias
implicit.
Exemplu: Dacă se deschide tabelul Clienţi în prima zonă de lucru disponibilă (zona 0 ) cu ajutorul
comenzilor următoare, tabelului îi va fi asociat aliasul implicit „clienţi”:
SELECT 0
USE clienţi
O sesiune de date este o reprezentare a mediuluide lucru curent folosit de un formular, de un set
de formulare sau de un raport. Fiecare sesiune de date cuprinde propriul său set de zone de lucru, zone
care conţin tabelele deschise, indecşii lor şi relaţiile dintre ele.
2
Stabilirea unor relaţii temporare între tabele
Comanda SET RELATION stabileşte o relaţie între un tabel deschis în zona de lucru
curent selectată şi un tabel deschis într-o altă zonă de lucru. De obicei, tabelele asociate au un
câmp comun, iar expresia utilizată pentru a stabili relaţia este chiar expresia de indexare a
indexului de control al tabelului fiu.
Exemplu: Unui client i se pot emite mai multe facturi. Stabilind o relaţie pe baza câmpului comun al
tabelelor de clienţi şi facturi se pot vedea imediat toate facturile corespunzătoare fiecărui client.
Secvenţa de cod următoare foloseşte câmpul cod_cli, care este comun celor două tabele şi crează o
relaţie între acestea pe baza câmpului cod_cli din tabelul clienti şi a etichetei de index cod_cli din
tabelul Facturi.
USE Clienti IN 1
USE Facturi IN 2
SELECT facturi
SET ORDER TO TAG cod_cli
SELECT clienti
SET RELATION TO cod_cli INTO facturi
SELECT facturi
BROWSE NOWAIT
SELECT clienti
BROWSE NOWAIT
Fereastra Data Session afişează cele două tabele deschise , precum şi relaţiile stabilite cu
ajutorul comenzii SET RELATION.
In exemplul precedent s-a stabilit o singură relaţie între două tabele. Din sintaxa comenzii SET
RELATION se desprinde faptul că aceasta se poate folosi pentru a stabili relaţii multiple între un
tabel părinte şi mai multe tabele fiu.
3
Crearea unor relaţii persistente între tabele
Relaţiile persistente între tabele sunt relaţii între tabelele aparţinând unei baze de date, care sunt
stocate în fişierul bazei de date , şi sunt folosite automat drept condiţii implicite de joncţiune în
ferestrele Query Designer şi View Designer. Sunt afişate în Database Designer ca linii de legătură
între indecşii tabelelor, sunt afişate în Data Enviromnent Designer ca relaţii implicite pentru formulare
şi rapoarte şi sunt folosite pentru a stoca informaţii despre integritatea referenţială.
Se deosebesc de relaţiile temporare ( create cu SET RELATION) prin faptul că nu trebuie să fie
create de fiecare dată când se folosesc tabelele.
Notă: Datorită faptului că relaţiile persistente nu controlează relaţiile dintre indicatorii înregistrărilor
din tabele, când se dezvoltă aplicaţii Visual FoxPro se folosesc atât relaţii temporare (SET RELATION)
cât şi relaţii persistente.
Relaţiile persistente se stabilesc între indecşi, nu între câmpuri, ceea ce permite legarea
tabelelor pe baza unei expresii simple sau complexe compuse din indecşi.
- în Database Designer se alege numele indexului care se doreşte legat şi se trage cu mouse-ul peste
numele indexului din tabelul legat.
Relaţiile persistente apar în Database Designer ca linii care unesc tabelele legate.
De regulă relaţiile persistente sunt create folosind indecşii din cheile primară şi externă. Tipul
etichetei de index sau al cheii determină tipul relaţiei persistente care se poate crea.
Trebuie folosită o etichetă index sau o cheie primară sau candidat pentru partea "unu" a
relaţiei unu-la-mai-multe, iar pentru partea "mai multe" se foloseşte o cheie sau o etichetă de
index obişnuită.
4
Prin folosirea generatorului de integritate referenţială în scopul de a crea regulile pentru baze de
date, Visual FoxPro generează cod care întăreşte regulile de integritate referenţială, cod salvat sub
formă de declanşatoare care conţin referinţe la procedurile stocate. Acest cod poate fi vizualizat
deschizând editorul de text pentru procedurile stocate.
Notă: Dacă se intervine în arhitectura bazei de date, prin modificarea tabeleor sau a indecşilor folosiţi
într-o relaţie persistentă va trebui rulat din nou generatorul RI înainte de a folosi baza de date. Aceasta
determină revizuirea codului procedurilor stocate şi a declanşatoarelor tabelelor folosite pentru a întări
integritatea referenţială astfel încât aceasta să reflecte noua arhitectură.
Când se construieşte o bază de date, Visual FoxPro crează şi deschide în mod exclusiv un
fişier .dbc (DataBase Container), care stochează toate informaţiile despre baza de date, inclusiv numele
fişierelor şi obiectelor asociate. Fişierul .dbc nu conţine în mod fizic nici unul din obiectele de nivel
înalt (tabele sau câmpuri), ci stochează pointerii căilor de acces la fişierele asociate tabelelor din baza
de date.
Vizualizarea schemei bazei de date
Schema bazei de date este o reprezentare a structurii tabelelor şi relaţiilor persistente stabilite în
cadrul bazei de date. Pentru o bază de date deschisă această schemă este afişată în Database Designer,
care este deschis cu comanda MODIFY DATABASE.
Exemplu: MODIFY DATABASE Parteneri
Fişierul bazei de date conţine câte o înregistrare pentru fiecare tabel, vedere, index, relaţie
persistentă şi conexiune asociată bazei de date, precum şi pentru fiecare câmp din tabel sau
vedere cu proprietăţi extinse. Fişierul mai conţine o unică înregistrare cu toate procedurile
stocate în baza de date.
Database Designer oferă o reprezentare conceptuală a schemei bazei de date. Se poate naviga
printr-o bază de date închisă folosind comanda USE pentru fişierul .dbc.
Exemplu: CLOSE DATABASE Parteneri
USE Parteneri.dbc EXCL
5
BROWSE
Intrebari si exercitii
2. Modificaţi structura tabelului “Intrari” astfel încât între tabelele “Materiale” şi “Intrari ” să
existe o legătură de tip 1:N. (Ce modificare trebuie să faceţi???)
Introduceţi câteva înregistrări în tabelul „Intrari”, având grijă ca în câmpul cheie străină (codm), să aveţi
aceeaşi valoare pentru mai multe înregistrări. (Această valoare va trebui să se regăsească printre valorile
cheii primare din tabelul Materiale).
Stabiliţi relaţii temporare (SET RELATION) între cele două tabele între care există relaţii de tip 1:N.
Verificaţi rezultatele.
4. Vizualizaţi schema bazei de date. Navigaţi prin fişierul bază de date (.dbc).