Documente Academic
Documente Profesional
Documente Cultură
Relatii Intre Tabele
Relatii Intre Tabele
1
1 Relaii ntre tabele
O baz de date se compune din mai multe tabele. O tabel este o structur logic de date
ce conine informaii pe care baza de date le reprezint. Fiecare tabel are un nume unic.
O tabel este constituit dintr-un numr de coloane (atribute). Fiecare tabel are o cheie
primar ce identific liniile tabelei. Cheia primar poate consta dintr-un singur atribut sau
din mai multe atribute.
O tabel se poate referi la atributele uneia sau mai multor alte tabele din baza de date.
Acest lucru se face prin cheia extern. Atunci cnd o tabel trebuie s se refere la
atributele altei tabele, unul sau mai multe atribute ale tabelei vor conine cheia extern,
care este cheia primar a tabelei referite. In cele ce urmeaz vom arta modul n care se
descriu grafic i programatic relaiile ntre tabele (cum se specific grafic faptul c un
atribut al unei tabele este cheie extern).
Pentru exemplificare vom utiliza tabelele de mai jos, care descriu proiectele unei
intreprinderi. In fiecare tabel, atributele ce constituie cheia primar sunt subliniate.
tabela PROIECTE conine identificatorul unui proiect ID_PRJ i numele proiectului,
NUME_PRJ. Atributul ID_PRJ este cheia primar a tabelei,
PROIECTE
ID_PRJ NUME_PRJ
100 Web
200 Clienti
300 Furnizori
400 Personal
tabela ANGAJATI conine date despre angajaii intreprinderii care lucreaz la diverse
proiecte. Ea conine identificatorul angajatului ID_ANG, numele angajatului,
NUME_ANG i departamentul de care aparine angajatul, DPT_ANG. Cheia primar
a tabelei este ID_ANG,
ANGAJATI
2
tabela ORE_EXECUTATE conine orele executate de fiecare angajat pentru un
anumit proiect. Ea conine identificatorul proiectului, ID_PRJ, identificatorul
angajatului, ID_ANG i numrul de ore prestate pentru un anumit proiect, ORE.
Cheia primar a tabelei este format din atributele ID_PRJ i ID_ANG,
ORE_EXECUTATE
SALARIU
DPT_ANG SAL_ORA
Informatica 60
Suport 40
Documentare 25
Cheia primar a tabelei SALARIU, DPT_ANG, este cheie extern n tabela ANGAJATI
(coloana DPT_ANG din tabela ANGAJATI).
Proiectarea celor patru tabele este prezentat mai jos. Numele departamentului se va
introduce cu o caset combinat (Combo Box).
3
Figura 3. Proiectarea tabelei ORE_EXECUTATE.
4
Figura 6. Fereastra Show Table.
3. se selecteaz pe rnd tabelele dorite din caseta Show Table i se adaug la fereastra
Relationships cu butonul Add. Se inchide caseta Show Table cu clic pe butonul
Close. Figura 7 arat fereastra Relationships cu tabelele adugate.
5
b) meniul contextual al ferestrei
a) meniul Relationships
Relationships
Tabelul 1. Meniuri la afiarea ferestrei Relationship.
Semnificaiile opiunilor acestor meniuri i a butoanelor corespunztoare sunt
urmtoarele:
opiunea Show Table i butonul afiaz caseta Show Table,
opiunea Show All i butonul afiaz toate tabelele ntre care exist relaii,
n cazul unei tabele selectate, opiunea Show Direct i butonul afiaz i tabele ce
sunt n relaii cu tabela selectat,
opiunea Hide Table ascunde o tabel selectat,
opiunea Edit Relationship afiaz caseta Edit Relationships din Figura 9 cu care se
definesc relaiile ntre tabele.
6
Figura 9. Caseta Edit Relationships dup definirea unei relaii.
2. clic pe butonul Join Type, care afiaz caseta Join Properties din Figura 10, unde
butonul 1 corespunde relaiei unu la mai muli; clic pe butonul OK al casetei Join
Properties,
7
Figura 11. Fereastra Relationships cu relaia ntre tabele.
Relaia unul la mai muli apare desenat ca n Figura 12.
8
Dup definrea relaiei ntre tabelele SALARIU i ANGAJATI, tabela SALARIU arat ca
n Figura 15.
9
Figura 17. Caseta de dialog Create New.
3. se selecteaz din lista Left Table Name numele tabelei n care atributul este cheie
primar, n cazul nostru SALARIU,
4. se selecteaz din lista Left Column Name numele atributului care este cheie primar,
n cazul nostru DPT_ANG,
5. se selecteaz din lista Right Table Name numele tabelei n care atributul este cheie
extern, n cazul nostru ANGAJATI,
6. se selecteaz din lista Right Column Name numele atributului care este cheie
extern, n cazul nostru DPT_ANG,
7. se nchide caseta Create New cu clic pe butonul OK,
8. se alege tipul relatiei unu la mai muli din caseta Join Properties ca mai sus,
9. se marcheaz opiunea Enforce referenial Integrity n caseta Edit Relationships,
10. clic pe butonul OK,
11. clic pe butonul Create al casetei Edit Relationships.
10
sunt afiate n culoarea gri. Relaia este creat n baza de date cu clic pe butonul Create.
In acest moment butonul Create se transform n buton OK vezi Figura 18.
Atunci cnd baza de date conine prea multe tabele i relaii, fereastra Relationships
devine aglomerat. Putem afia doar tabelele de interes cu relaiile ntre ele. Pentru
aceasta procedm dup cum urmeaz:
1. se terg toate tabelele din fereastra Relationships. Clic pe fereastra Relationships i
apoi pe meniul Edit Clear Layout sau pe butonul al barei de instrumente,
2. se selecteaz din caseta Show Table una din tabelele de interes,
3. clic pe meniul Relationships Show Direct sau butonul i n fereastr apar
toate tabele ce au relaii cu tabela selectat, vezi Tabelul 1.
11
INNER JOIN nume_tabela_2 ON conditie;
In cazul a mai multe tabele, se repet clauza INNER JOIN pentru cte condiii este
nevoie. In cazul nostru, instruciunea SELECT este cea de mai jos.
La crearea unui formular de interogare din mai multe tabele se creaz mai nti
legturile ntre tabele.
12
Figura 20. Caseta Show Table.
3. se selecteaz tabelele ANGAJATI i SALARIU n caseta Show Table i se adaug la
formularul de interogare cu clic pe butonul Add; se nchide caseta cu butonul Close;
tabelele apar n formularul Select Query ca n Figura 21, cu legturile ntre ele,
13
Figura 22. Formularul completat.
5. se salveaz formularul creat cu una dintre opiunile Save sau Save As ale meniului
File, sau cu butonul Close al ferestrei formularului,
14
Figura 24. Instruciunea SELECT corespunztoare formularului din Figura 22.
CLIENTI
15
COMENZI
16
Figura 27. Pasul I. Crearea unei interogri. Selectarea cmpurilor.
17
Figura 29. Pasul III. Alegerea titlului interogrii.
4. se introduce titlul interogrii n caseta What title do you want for your query; se
poate alege ntre a executa interogarea marcnd opiunea Open the query to view
information i modificarea interogrii marcnd opiunea Modify the query design;
clic pe butonul Next i se afiaz tabela rezultat din Figura 30.
18
Putem sumariza rezultatele cutrii prin aplicarea unor funcii de agregare. Pentru aceasta
la pasul II, Figura 28, alegem opiunea Summary i obinem caseta din Figura 32.
3. clic pe Summary Options i se afiaz caseta Summary Options din Figura 33,
19
Figura 33. Pasul III. Alegerea funciei de agregare.
20
Figura 34. Pasul IV. Gruparea datelor calendaristice n interogare.
21
Pentru a exemplifica modul de creare a unui formular cu subformulare vom considera
tabelele CLIENTI i COMENZI din Figura 25 i Figura 26, cu informaii despre clienii
unei intreprinderi i comenzile lor. Cheia primar din tabele este subliniat.
22
Figura 38. Pasul II. Selectarea datelor ce vor apare n subformular.
6. aplicaia wizard afiaz caseta de dialog din Figura 39; n lista How do you want to
view your data? se alege tabela ce va apare n formularul principal, n cazul nostru se
marcheaz opiunea by CLIENTI; se marcheaz opiunea Form with subform(s) i
clic pe butonul Next,
23
Figura 39. Pasul III. Alegerea tabelei ce va apare n formularul principal.
7. se aleg opiunile dorite din casetele de dialog urmtoare.
Formularul creat n final este cel din Figura 40, n care, pentru fiecare linie din tabela
CLIENTI, avem afiat n subformular liniile cu comenzi din tabela COMENZI.
24
Figura 41. Formular subformulare n vederea Datasheet.
25
Figura 43. Proiectarea formularului creat de aplicaia vrjitor.
Adugarea obiectului subformular se face astfel:
1. se afiaz caseta Toolbox din Figura 44 cu clic pe butonul Toolbox , al barei de
instrumente,
26
Figura 45. Aplicaia Subform Wizard, pasul I.
3. la pasul I se marcheaz opiunea Use existing Tables and Queries, vezi Figura 45.
Clic Next i se afiaz pasul II n Figura 46,
27
4. la pasul II se selecteaz tabela COMENZI din lista Tables / Queries i se mut
cmpurile dorite din lista Available Fields n lista Selected Fields cu clic pe butonul
. Clic Next i se afiaz pasul III din Figura 47,
28
Figura 48. Aplicaia Subform Wizard, pasul IV.
6. la pasul IV se alege numele subformularului n caseta What name would you like
for your subform or subreport? Clic Finish.
Fromularul proiectat n vederea Design este cel din Figura 49 iar n vederea Form cel din
Figura 50.
29
Figura 49. Formularul Proiectat n vederea Design.
30
Figura 51. Caseta de proprieti a subformularului.
31
Figura 53. Formularul proiectat n vederea Datasheet cu ultima nregistrare expandat.
Instruciunea SELECT de selectarea a datelor subformularului din tabela COMENZI este
cea din Figura 54.
32
R1 R2
X Y Y Z
X1 Y1 Y1 Z1
X2 Y2 Y2 Z2
X3 Y2 Y2 Z3
X4 Y3 Y3 Z4
a) tabela R1 b) tabela R2
Tabelul 3. Tabelele R1 i R2.
Vom selecta cmpurile X, Y, Z ce au valori egale pentru cmpurile Y din cele dou tabele.
Definiiile celor dou tabele sunt cele din Tabelul 4 i Tabelul 5.
a) definiie b) date
Tabelul 4. Tabela R1.
a) definiie b) date
Tabelul 5. Tabela R2.
Crearea interogrii se face astfel.
1. n caseta Database se selecteaz opiunea Query,
2. clic pe opiunea Create query in Design View ce afiaz formularul Select Query i
caseta Show Table,
3. se selecteaz tabelele R1 i R2 n caseta Show Table i se adaug la formularul de
interogare cu clic pe butonul Add; se nchide caseta cu butonul Close; tabelele apar n
formularul Select Query ca n Figura 55,
33
4. se creaz legtura ntre cmpul Y din tabela R1 i cmpul Y din tabela R2 selectnd
cmpul Y n tabela R1 i trgndu-l cu mousul peste cmpul Y din tabela R2, vezi
Figura 55,
5. se salveaz formularul creat cu una dintre opiunile Save sau Save As ale meniului
File, sau cu butonul Close al ferestrei formularului,
6. se afiaz tabela rezultat cu clic pe butonul al barei de instrumente sau pe meniul
Query Run, sau pe meniul View Datasheet View sau pe opiunea Datasheet
View a meniului contextual al formularului.
34
Figura 57. Instruciunea SELECT corespunztoare formularului din Figura 55.
La un clic cu butonul drept pe legtur se afiaz meniul contextual al legturii din Figura
58. In acest meniu se poate terge legtura i se poate afia caseta Join Properties din
Figura 59.
CLIENTI
35
2341 Vasilescu Ioan Timisoara
1956 Nicolae Vasile Cluj
COMENZI
Cheia primar a tabelei CLIENTI este ID_CLIENT, cea a tabelei COMENZI este
ID_COMANDA. Coloana ID_CLIENT a tabelei COMENZI este cheie extern. Cmplul
DATA va fi de tipul Date/Time, iar cmpul SUMA de tipul Currency.
se vor proiecta cele dou tabele; regulile de validare sunt: ID_CLIENT >= 1000,
ID_COMANDA >= 100,
se vor introduce datele cu ajutorul unui formular,
se va crea legtura corespunztoare cheii externe,
se va crea o interogare care s afieze cmpurile NUME, PRENUME, ADRESA,
NUMAR_COMANDA, DATA i SUMA,
se va scrie instruciunea SELECT pentru interogare.
ANGAJATI
DEPARTAMENT
ID Nume Adresa
100 Contabilitate Craiova
200 Marketing Bucuresti
300 Vanzari Craiova
Cheile primare ale celor daou tabele sunt cmpurile ID de tip numeric. Celelalte cmpuri
au tipul text.
se vor proiecta cele dou tabele,
se vor introduce datele n cmpurile Departament din tabela ANGAJATI i Nume din
tabela DEPARTAMENT cu ajutorul unei casete combinate (Combo Box),
36
se va crea o interogare care s afieze cmpurile ID, Nume, Department, Functie din
tabela ANGAJATI i cmpul Adresa din tabela DEPARTAMENT. Condiia de
selectare este cmpul Department al tabelei ANGAJATI s fie egal cu cmpul Nume
al tabelei DEPARTAMENT.
37