Documente Academic
Documente Profesional
Documente Cultură
Curs
2
Etapele de proiectare a unei baze
de date
08.10.2021
Proiectarea bazei de date relaţionale
Pentru a construi baza de date la nivelul logic trebuie proiectată structura bazei de
date. Structura bazei de date este definită de:
• structura de câmpuri a fiecărui tabel
• legăturile care se stabilesc între tabele.
Operaţia de proiectare a bazei de date înseamnă transformarea cerinţei de informaţii
într-o colecţie de tabele şi de relaţii dintre ele. Pentru a fi eficientă în exploatare, o
bază de date trebuie să fie bine proiectată. Metoda de proiectare aleasă depinde de
dimensiunile bazei de date.
După ce s-au proiectat tabelele, câmpurile şi relaţiile dintre tabele, urmează studierea
proiectului pentru a-i descoperi deficienţele. Este mult mai simplu să se modifice
proiectul în această fază – şi nu după ce au fost încărcate toate datele în baza de date.
Construirea bazei de date la nivel fizic
Etape:
1. Construirea tabelelor care compun baza de date. Aceasta înseamnă că pentru
fiecare tabel din baza de date trebuie definită structura, adică ansamblul de
câmpuri împreună cu proprietăţile lor.
2. Stabilirea relaţiilor între tabele.
3. Popularea bazei de date. Se încarcă date în fiecare tabel. La nivelul tabelului
unitatea de prelucrare este înregistrarea: se pot adăuga înregistrări, se pot şterge
înregistrări, se pot modifica înregistrări. Se poate modifica structura unui tabel
chiar după ce a fost încărcat cu date. Sistemul de gestiune a bazelor de date nu
operează modificarea de structură direct în tabel, ci execută următoarele
operaţii: creează noua structură de tabel (rezultată în urma modificărilor cerute),
încarcă în noul tabel datele din vechiul tabel şi şterge vechiul tabel. Toate aceste
operaţii sunt executate automat de către sistem, fără intervenţia utilizatorului şi
fără a fi vizibile pentru utilizator.
1.1. Proiectarea bazelor de date mici
O bază de date mică este destinată în general pentru informatizarea unui singur domeniu de
activitate al organizaţiei. Pentru proiectarea ei se pot folosi două metode:
Metoda 1
Se porneşte de la o entitate care defineşte informaţia compusă pe care trebuie să o conţină baza
de date. Se construieşte tabelul pentru această entitate şi se divizează acest tabel în tabele mai
mici, prin procesul de normalizare a datelor. În cadrul acestui proces sunt identificate informaţiile
care trebuie separate în tabele mai mici şi modul în care va fi asigurată legătura între ele. Prin
această operaţie se simplifică o înregistrare de mari dimensiuni în mai multe tabele legate între
ele. Nu trebuie alocate câmpuri pentru datele derivate sau calculate (cum este, de exemplu,
vârsta unei persoane, dacă există deja un câmp în care este înregistrată data naşterii).
Pe de altă parte, dacă o bază de date relaţională conţine foarte multe tabele, exploatarea sa va
necesita un timp mai mare de prelucrare, deoarece o cerere de informaţii din baza de date va avea
ca efect parcurgerea mai multor tabele. De aceea, procesul de divizare a tabelului iniţial în mai
multe tabele trebuie să se oprească la un moment dat.
TEMA de grup
Consideraţi anul o organizaţie pentru care se construieşte un minisistem
informatic, iar sursa informaţională va fi o bază de date relaţională. Analiza
trebuie să pornească de la entitatea Student. Veţi identifica toate datele
caracteristice unui student, atât din punct de vedere al datelor personale
(număr matricol, nume şi prenume, iniţiala tatălui, datele despre părinţi,
adresa, numărul de telefon), cât şi din punct de vedere al situaţiei şcolare
(anul de studiu, facultatea, sectia, profesorul indrumator, profesorul pe
care îl are la fiecare disciplină, disciplinele pe care le studiază în acest an
şcolar, notele şi absenţele la fiecare disciplină, pe fiecare semestru, media
la fiecare disciplină obţinută semestrial, media anuală la fiecare disciplină,
media semestrială şi media anuală a studentului). Construiţi cu aceste date
primul tabel. Construiţi baza de date prin normalizarea tabelului iniţial.
Metoda 2
Pentru proiectarea bazei de date se porneşte de la informaţiile pe care
trebuie să le furnizeze baza de date. Pentru aceasta, trebuie să se
parcurgă, în ordine, următorii paşi:
• Determinarea scopului bazei de date.
• Determinarea tabelelor necesare în baza de date.
• Determinarea câmpurilor necesare în tabele.
• Identificarea câmpurilor care pot fi cheie unică.
• Determinarea relaţiilor dintre tabele.
Determinarea scopului bazei de date
Primul pas în proiectarea unei baze de date este determinarea scopului
şi a modului în care poate fi folosită baza de date. Mai întâi trebuie
identificate informaţiile pe care trebuie să le furnizeze baza de date şi
apoi se împart aceste informaţii pe categorii de informaţii (care vor
corespunde tabelelor), iar categoriile de informaţii se împart în
informaţii elementare (care vor corespunde câmpurilor din tabele).
Pentru realizarea acestor obiective se întreprind următoarele acţiuni:
• Se discută cu persoanele care vor folosi baza de date pentru a obţine informaţiile necesare
pentru proiectarea ei.
• Se adună formularele care vor fi folosite în mod curent pentru introducerea datelor şi
documentele tipizate care se folosesc pentru a obţine informaţii despre datele care se
exploatează în mod curent în cadrul compartimentelor.
• Pe baza acestor documente se întocmeşte o listă cu informaţiile pe care trebuie să le conţină
baza de date şi se identifică tipul şi domeniul lor de valori.
• Se identifică perioada de stocare a datelor (o lună, un an, mai mulţi ani etc.).
• Se identifică informaţiile pe care trebuie să le furnizeze baza de date.
• Se adună rapoartele care se întocmesc de obicei în cadrul compartimentelor şi, pe baza lor, se
schiţează rapoartele care vor fi tipărite folosind informaţiile din baza de date. Se identifică
ritmul de tipărire a rapoartelor (zilnic, săptămânal, lunar etc.).
• Se examinează o bază de date existentă, bine proiectată, similară proiectului care se realizează.
Determinarea tabelelor necesare în baza de
date
Acest pas este foarte important deoarece de el depind
rezultatele care se vor putea obţine atunci când se
exploatează în mod curent baza de date (rapoartele care vor fi
tipărite, formularele folosite pentru introducerea, modificarea
şi vizualizarea datelor şi întrebările la care se pot obţine
răspunsuri folosind interogările).
Tabelele se determină împărţind informaţia pe categorii de
informaţii.
Pentru a determina ce tabele va conţine baza de
date, trebuie respectate următoarele principii:
• Fiecare tabel şi colecţia de tabele nu trebuie să conţină informaţie redundantă. Fiecare
informaţie elementară trebuie să fie memorată într-un singur tabel, într-un singur câmp
– pentru a fi actualizate într-un singur loc. În acest mod, operaţia de actualizare este mult
mai eficientă şi se elimină posibilitatea ca aceeaşi dată, memorată în mai multe locuri, să
aibă valori diferite. De exemplu, adresa şi numărul de telefon ale unui client nu se vor
memora pentru fiecare comandă, ci într-un singur loc, într-un tabel cu informaţii
generale despre clienţi (în tabelul Clienti, şi nu în tabelul Comenzi).
• Fiecare tabel trebuie să conţină o singură categorie de informaţii. Dacă fiecare tabel
conţine numai o singură categorie de informaţii, se va putea întreţine acea categorie de
informaţii independent de restul informaţiilor memorate în baza de date. De exemplu,
adresa clientului se va memora în tabelul Clienti şi nu în tabelul Comenzi deoarece,
atunci când se şterge o comandă, adresa clientului se va putea păstra în continuare, fiind
memorată în alt tabel.
Determinarea câmpurilor necesare în
tabele
Fiecare tabel conţine date referitoare la aceeaşi categorie de informaţii şi fiecare câmp din tabel conţine date
despre o informaţie elementară din acea categorie de informaţii. De exemplu, tabelul Clienti poate conţine
câmpuri pentru numele companiei, adresa, localitatea, judeţul, numele, prenumele, funcţia şi numărul de
telefon al persoanei de contact. Când se stabilesc câmpurile în care va fi divizată informaţia din tabel, trebuie
avute în vedere următoarele considerente:
• Câmpurile trebuie să fie legate direct de categoria de informaţii memorată în tabel.
• În câmpurile din tabel trebuie să fie inclusă toată categoria de informaţii pentru care se
construieşte tabelul.
• În tabel nu se vor folosi câmpuri derivate (câmpuri care conţin date ce derivă din alte câmpuri)
sau câmpuri calculate (câmpuri care conţin valori obţinute în urma evaluării unei expresii).
• Informaţia memorată în tabel se divizează în cele mai mici informaţii logice . De
exemplu, în tabelul Angajati, pentru a memora numele unui angajat se folosesc două câmpuri, unul pentru
nume şi unul pentru prenume, şi nu un singur câmp, iar în tabelele Angajati, Clienti şi Furnizori, pentru
memorarea adresei se vor folosi mai multe câmpuri: unul pentru stradă şi număr, altul pentru localitate,
altul pentru judeţ şi altul pentru codul poştal. În acest mod, folosind interogările, se poate găsi un angajat
numai după nume sau numai după prenume sau se poate obţine o listă cu clienţii sau furnizorii dintr-un
anumit oraş sau dintr-o anumită localitate.
Stabilirea câmpurilor care pot fi chei de
identificare
Pentru a lega date memorate în tabele separate din baza de date (de exemplu, pentru a lega
un client de toate comenzile făcute de el), fiecare tabel din baza de date trebuie să aibă un
câmp sau un set de câmpuri care să permită identificarea fiecărei înregistrări, adică un set de
câmpuri care să formeze cheia de identificare.
Există două tipuri de chei de identificare:
• Cheia de identificare cu un singur câmp. Atunci când există în tabel un câmp cu valoare
unică (cum este, de exemplu, în tabelul Clienti, codul companiei), el poate fi folosit pentru
cheia primară. În cazul în care nu se poate identifica în structura tabelului combinaţia de
câmpuri care să poată fi folosită pentru cheia primară, se va adăuga la structura tabelului un
câmp care va fi folosit pentru identificarea unică a înregistrărilor. Astfel, în tabelul Angajati
nu se pot folosi cele două câmpuri Nume şi Prenume pentru a identifica un angajat,
deoarece este posibil să existe doi angajaţi cu acelaşi nume şi prenume. În acest caz se
adaugă la tabel un câmp denumit Marca (identificatorul angajatului).
Tipuri de chei de identificare
• Cheia de identificare cu mai multe câmpuri. Atunci când nu se găseşte în tabel un câmp
cu valori unice, se vor folosi două sau mai multe câmpuri pentru a construi cheia primară.
Acest caz apare cel mai des în tabelele obţinute prin transformarea relaţiilor de tipul mai–
multe–la–mai–multe. Un astfel de exemplu este tabelul DetaliiComenzi care a rezultat din
transformarea relaţiei de tipul mai–multe–la–mai–multe dintre tabelele Comenzi şi
Produse. În tabelul DetaliiComenzi există mai multe înregistrări care au aceeaşi valoare
pentru câmpul număr comandă (printr-o comandă pot fi cerute mai multe produse) şi mai
multe înregistrări care au aceeaşi valoare pentru câmpul cod produs (acelaşi produs poate
fi solicitat prin mai multe comenzi). În schimb, într-o comandă, un produs nu poate să
apară decât o singură dată, astfel încât o înregistrare poate fi unic identificată folosind
pentru cheia primară cele două câmpuri: numărul comenzii şi codul produsului.
Atunci când se alege cheia primară a tabelului, trebuie să se ţină cont de faptul că în tabel
cheia primară nu poate avea valoarea Null sau valori duplicate.
Determinarea relaţiilor dintre tabele
După ce s-a împărţit informaţia în tabele şi câmpuri şi s-a identificat cheia
primară în fiecare tabel, trebuie definite relaţiile dintre tabele. De exemplu,
dacă se introduc datele corespunzătoare unui formular BonComanda, care
conţine toate informaţiile referitoare la comanda unui client, acest formular
conţine informaţii care sunt memorate în cinci tabele: Angajati (identificatorul
angajatului care a preluat comanda), Clienti (informaţiile despre client: nume,
adresa etc.), Produse (informaţii despre fiecare produs comandat: denumire,
unitate de ambalare, preţ), Comenzi (informaţii generale despre comandă:
număr, data comenzii etc.) şi DetaliiComenzi (cantitatea pentru fiecare produs
comandat). Introducerea şi prelucrarea acestor date este posibilă numai dacă
s-au definit relaţii între cele cinci tabele.
Scop: proiectarea unei baze de date mici
Proiectarea bazei de date a unei magazii de materiale
1. Determinarea scopului bazei de date
Scopul bazei de date este gestionarea mişcărilor de materiale dintr-o magazie.
Cerinţele bazei de date sunt:
Fiecare articol din magazie este identificat printr-un cod. Articolul mai are următoarele atribute:
denumire, unitate de măsură, preţ, stoc de siguranţă (stocul minim necesar desfăşurării procesului de
producţie). În funcţie de tipul articolelor, se mai pot adăuga şi alte atribute (model, culoare, mărime
etc.).
În magazie are loc o continuă mişcare de articole: unele articole intră în magazie, altele ies din magazie.
Fiecare mişcare este caracterizată de data mişcării, cantitate şi valoare. În urma unei mişcări, stocul de
articole se modifică şi poate să ajungă sub stocul de siguranţă.
Trebuie să se cunoască în orice moment situaţia stocurilor din magazie şi graficul mişcărilor de articole.
Documentele pe baza cărora are loc mişcarea de materiale sunt:
pentru intrări: factura – factura este emisă de un furnizor;
pentru ieşiri: bonul de consum – bonul de consum este emis de o
persoană responsabilă cu această activitate într-un compartiment
funcţional al companiei.
şi relaţiile:
ACTIVITATE DE ECHIPA
Realizaţi bazele de date la nivel logic pornind de la modelele
conceptuale realizate pentru subsistemele informatice pentru
compania care asigură consultanţă, pentru an, pentru biblioteca
universitatii, pentru secretariatul facultatii, pentru examenul de licenta
şi pentru magazia cu materiale sportive a universitatii.
Intrebari!
APLICATIA DE GESTIUNE
Pentru entităţi s-au folosit nume sugestive: Post (post de lucru), CategClient (categoria clientului),
Articol (articol de îmbrăcăminte), CategArticol (categoria articolului de îmbră- căminte). Pentru
atributele proprietăţilor s-au folosit nume sugestive: IdPost (identificator post), IdCatClient (identificator
categorie client), DenCatClient (denumire categorie client), IdCatArt (identificator categorie articol
îmbrăcăminte) şi DenCatArt (denumire categorie articol îmbrăcăminte).
Asociere:
Pentru atributele asocierilor s-au folosit nume sugestive: CantCom (cantitate comandată),
CantLivr (cantitate livrată) şi PretVânz (preţ de vânzare).
Asocierea Aparţine1
• Fiecare client aparţine obligatoriu unei categorii de clienţi (1), dar numai unei singure categorii
de client (1).
• Unei categorii de client îi corespunde cel puţin un client (1) sau mai mulţi clienţi (n).
Asocierea Aparţine2
• Fiecare articol de îmbrăcăminte aparţine obligatoriu unei categorii de articole (1), dar numai
unei singure categorii de articole (1).
• Unei categorii de articol îi corespunde cel puţin un articol (1) sau mai multe aticole (n).
Asocierea Se înregistrează
• La un post de lucru poate să nu fie înregistrat niciun client (0) sau mai mulţi clienţi (n).
• Fiecare client aparţine obligatoriu unui post de lucru (1), dar numai unui singur post de lucru (1).
• Asocierea Trimite
• Un client poate să nu trimită niciun bon de comandă (0), sau să trimită mai multe bonuri de
comandă (1).
• Un bon de comandă este emis obligatoriu de un client (1) şi numai unul (1).
Asocierea Conţine1