laborator access 2007 exemplu partea 2
TRANSCRIPT
Laborator Access 2007. Baza de date VanzareCarti. Partea a 2-a.
Crearea relaţiilor (relationships) dintre tabele. Cheie primară (primary key). Cheie străină
(foreign key). Integritate referenţială (referential integrity).
Pentru a stabili o relaţie (relationship) între tabele: Clic pe comanda Relationships din
grupul Show/Hide al tab-ului Database Tools din Ribbon.
Obs. Tabelele trebuie să fie închise pentru a stabili relaţii.
Dacă tabelul Comenzi a fost creat, folosind pentru câmpurile Client ID, respectiv Carte ID
opţiunea Lookup Wizard şi s-a indicat numele câmpului Client ID din tabelul Clienti, respectiv numele
Carte ID din tabelul Carti, atunci relaţiile s-au stabilit automat între tabele şi ele arată ca în Fig. 1:
Fig. 1. Relation map
Observaţie importantă. O cheie străină (foreign key) este un câmp care este cheie primară
(primary key) în tabelul său, dar apare şi în alt tabel. În cazul de faţă, în tabelul Comenzi există
două astfel de câmpuri, Client ID şi Carte ID, care reprezintă chei străine în acest tabel, dar sunt,
fircare, cheie primare în tabelul Clienţi, respectiv Carti. Acest lucru e ilustrat în Fig. 1, în care
relaţia dintre tabelul Comenzi şi tabelul Carti s-a făcut pe baza câmpului Carte ID, iar relaţia dintre
tabelul Comenzişi tabelul Clienti prin intermediul câmpului Client ID.
Sunt mai multe feluri de a stabili relaţii între tabele:
Folosind comanda Edit Relationships din tab-ul Design al Ribbon-ului
Folosind metoda Drag and Drop, care e mai uşoară şi mai rapidă.
Dacă vreţi să creaţi o relaţie prin metoda Drag and Drop, presupunând că nu aveaţi deja
relaţiile ca în Fig. 1, daţi de exemplu clic pe câmpul Carte ID din tabelul Carti şi trageţi cu
butoanul stâng apăsat până peste câmpul Carte ID al tabelului Comenzi. Se va deschide fereastra
Edit Relationships, ca în Fig. 2:
Fig. 2. Fereastra Edit Relationships
Se observă tabelel selectate (Carti, respectiv Comenzi, în zona de sub Table/Query,
respectiv Related Table/Query) şi câmpurile selectate (Carte ID în dreptul fiecărui tabel). Selectaţi
caseta Enforce Referential Integrity (va fi explicată mai târziu). Observaţi că tipul relaţiei (în
partea de jos a ferestrei din Fig. 2) este One-To-Many (ne referim mai târziu şi la acest aspect).
Apăsaţi butonul Create. În Relation Map va apărea ceva similar cu ceea ce e ilustrat în Fig. 3:
Fig. 3. Relaţia Carti-Comenzi
Procedând similar cu câmpul Client ID al tabelului Clienti, pe care-l tragem peste câmpul
Client ID al tabelului Comenzi, va apărea şi relaţia dintre tabelele Clienti şi Comenzi, ca în :
Fig. 4. Relaţiile dintre tabelele bazei de date
La ce se referă relaţia One-To-Many?
Relaţia One-To-Many (Unul-la-Mulţi) înseamnă că acel câmp va apărea o singură dată
într-un tabel, dar de mai multe ori în tabelul relaţionat. De exemplu, câmpul Carte ID va apărea o
singură dată în tabelul Carti, deoarece acel tabel listează fiecare titlu de carte stocată. Dar va apărea
de mai multe ori în tabelul Comenzi, deoarece sperăm că acea carte va fi comandată de mai mulţi
clienţi de mai multe ori. Simbolul e 1 în dreptul capătului One al relaţiei şi în dreptul capătului
Many al relaţiei.
Mai există două tipuri de relaţii: One-To-One şi Many-To-Many.
La ce se referă Enforce Referential Integrity?
Trebuie selectată această opţiune pentru a fi siguri că NICIODATĂ nu vom avea o comandă
pentru o carte care nu apare în tabelul Carti.
Pentru e edita o relaţiefie daţi clic pe comanda Edit Relationships din Ribbon, fie daţi
dublu clic pe o relaţie în Relation Map.