Documente Academic
Documente Profesional
Documente Cultură
8
Тема: Crearea bazelor de date multitabelare
Formularea subproblemei:
De proiectat tabelele BD multitabelare pentru o unitate economică (soluţionarea
subproblemei este prezentată în baza exemplului de mai jos).
1
II) Definirea tabelelor pe care trebuie să le conţină BD, stabilirea câmpurilor ce urmează a fi
incluse în tabele şi legăturile dintre ele.
Una dintre cele mai importante etape ale procesului de proiectare a BD este elaborarea
tabelelor.
La proiectarea tabelelor se recomandă a se respecta următoarele restricţii:
1. Informaţia în tabele nu se dublează (depozitarea informaţiei într-un singur tabel
permite redactarea informaţiei doar într-un singur tabel). Acest principiu face lucrul mult mai
eficient şi exclude posibilitatea de necorespundere a informaţiei dacă s-a repetat în mai multe tabele.
De exemplu, adresa şi telefonul clienţilor se păstrează în acelaşi tabel.
2. Fiecare tabel conţine informaţia bine structurată ce descrie o anumită entitate.
Informaţia separată pentru fiecare entitate se prelucrează mult mai uşor dacă este depozitată
independent una faţă de alta. De exemplu, adresa şi serviciile comandate de clienţi se vor depozita în
diferite tabele, astfel ca la lichidarea comenzii informaţia despre client să se păstreze în BD.
La stabilirea câmpurilor pentru fiecare tabel este necesar să se ţine cont de următoarele:
Primul neajuns – dublarea datelor în tabel: în fiecare lună se introduce informaţia despre clienţi
(NP, adresa, sectorul, numărul contractului) şi pachete (denumirea pachetului, preţul şi numărul de
canale), deşi aceste date sunt constante.
Al doilea neajuns – dificultăţile care apar odată cu modificarea datelor. Dacă clientul îşi
schimbă adresa (sau adresa a fost scrisă greşit) va fi nevoie să se modifice informaţia în toate
înregistrările corespunzătoare din tabel, ceea ce este neefectiv.
Al treilea neajuns – dificultatea lichidării datelor. Dacă clientul refuză serviciile, atunci toată
informaţia ce se referă la datele personale ale clientului trebuie lichidată, însă în acest caz se pierde
şi informaţia despre achitarea serviciilor de către el, ceea ce nu este de dorit.
2
Pentru a evita aceste neajunsuri, este necesar ca tabelul Abonaţi să fie divizat în mai multe
tabele, fiecare dintre care va conţine informaţia cu referire la o anumită entitate:
3
Pentru comoditate, câmpul luna (perioada de achitare) în tabelul Luni este definit ca cheie
primară. În continuare, tabelul Luni îl vom utiliza în calitate de lista lunilor.
Stabilim câmpul comun luna pentru combinarea tabelelor Luni şi Achitări.
După modificările efectuate, BD va arăta în modul următor:
4
2. Se crează tabelul Luni (vezi Figura 8.4).
6
Figura 8.9. Caseta Lookup Wizard la pasul 4
8
de la mai mulţi la mai mulţi (∞:∞) – se caracterizează prin faptul că unei înregistrări
din tabelul primar îi corespunde una sau mai multe înregistrări din tabelul secundar, şi invers.
Deseori este transformată în două relaţii de tipul unu la mai mulţi prin definirea unui tabel
intermediar, în care se introduc, în calitate de chei străine, cheile primare ale primelor două tabele.
Aplicaţia Access permite utilizatorului să creeze două modele de relaţii:
relaţii permanente – se stabilesc după definirea tabelelor prin intermediul ferestrei de
dialog Edit Relationships şi sunt înregistrate în structura bazei de date;
relaţii temporare – se stabilesc între tabele la proiectarea interogarilor, nefiind
înregistrate în structura bazei de date.
La stabilirea relaţiilor permanente sau modificarea tipului de legătură avem posibilitatea să
definim parametrii integrităţii referenţiale a datelor (vezi Figura 8.16) [12]:
Enforce Referential Integrity (impune înregistrarea referenţială) – nu permite
modificarea şi lichidarea înregistrărilor tabelului primar care sunt relaţionate cu înregistrările
tabelului secundar, preântâmpină apariţia înregistrărilor în tabelul secundar ce nu corespund
înregistrărilor din tabelul primar.
Cascade Update Related Fields (reactualizarea în cascadă a câmpurilor legate) –
permite, ca la modificarea datelor din câmpul cheie primară amplasat în tabelul principal, să fie
modificate automat datele corespunzătoare din tabelele subordonate.
Cascade Delete Related Records (lichidarea în cascadă a inregistrarilor legate) –
permite, ca la lichidarea înregistrărilor din tabelul principal, să fie lichidate automat înregistrările
corespunzătoare din tabelele subordonate.
Exemplul 2. Pentru a defini integritatatea referenţială şi legătura permanentă dintre tabelele Abonaţi
şi Achitări se vor urma următorii paşi:
1. Din tab-ul Database Tools se apasă buton Relationships pentru a deschide fereastra
Relationships.
2. Automat se va deschide fereastra Show Table din care se adăugă cele patru tabelele
prezente prin dublu clic pe numele tabelului sau activarea butonului Add, în final fereastra se
închide. Repetat, fereastra Show Table, poate fi apelată apăsând butonul Show Table de pe ribbon
(vezi Figura 8.13).
9
Figura 8.13. Grupul de comenzi Relationships
10
4. Pentru ca BD să reţină legătura efectuată, la închiderea ferestre Relationships se
răspunde cu Yes la întrebarea de salvare a modificărilor efectuate.
Redactarea ulterioară a relaţiilor poate fi efectuată cu ajutorul comenzilor Edit
Relationship..., Delete incluse în meniul contextual apelat pentru linia de relaţie sau utilizând
comenzile incluse în grului Tools din tab-ul Design care apare pe ribbon sub Relationship Tools
(vezi Figura 8.16).
11
Figura 8.18. Tabelele Abonaţi şi Achitări în regim Datasheet
12