Sunteți pe pagina 1din 68

PROIECTAREA BAZELOR

DE DATE RELAIONALE
O metodologie de proiectare permite
construcia unui bun proiect urmrind o
secven bine determinat de pai.
Documentaia care se creaz permite
reveniri consistente, legturi fructuoase
ntre diferitele echipe care colaboreaz la
acelai proiect i constitue puctul de
plecare pentru documentaia de vnzare a
proiectului.
Metodologia proiectrii bazei de date se
compune din dou etape mari: proiectarea
logic, n care proiectantul decide asupra
structurii logice a bazei de date, i
proiectarea fizic, n care proiectantul
decide cum se va implementa structura
logic n sistemul de gestiune a bazelor de
date (SGBD).
Definiie: Proiectare logic: Procesul de construcie a unui model
de informaii folosite ntr-o intreprindere, bazat pe modelul de date,
dar independent de particularizrile sistemului de gestiune a bazei
de date i a altor considerente fizice.
Proiectarea logic ncepe cu crearea modelului conceptual al
bazei de date, care este independent de implementarea ntr-un
SGBD. Modelul conceptual este apoi proiectat pe un model logic,
care va influena mai trziu modelul de date n care se va
implementa.
Definiie: Proiectare fizic: Este procesul de descriere a
implementrii bazei de date ntr-un SGBD.
n aceast etap a proiectrii este creat baza de date ntr-un
SGBD, mpreun cu procedurile de actualizare. n aceast etap
exist un feedback ntre proiectarea fizic i cea logic, pentru c
deciziile luate la implementarea fizic pot afecta baza de date
logice.
Crearea modelului logic
n acest capitol vom prezenta pas cu pas, proiectarea unei baze de
date.
Pasul 1. Crearea modelului conceptual local, pentru
utilizatori. Pasul 1.1. Identificarea tipurilor de entiti
Obiectivul: Identificarea tipurilor de entiti principale n
vederile utilizatorilor.
Primul pas n proiectarea bazei de date este identificarea
entitiilor din datele furnizate de utilizatori. Exist cazuri cnd
entitiile sunt greu de identificat, pentru c modul de prezentare a
viitorilor utilizatori necesit explicaii. Deexemplu grupa poate fi
entitate sau doar atribut..
Documentarea tipurilor de entiti
Dup identificarea entitiilor, le dm cte un nume, iar aceste nume
le vom evidenia n dicionarul de date, mpreun cu explicaiile
despre entiti.
Determinarea cardinalitii i a participrii la tipurile de
relaii
Dup identificarea tipurilor de relaii, trebuie s
determinm cardinalitatea lor, alegnd dintre
posibilitiile: unu-la-unu (1:1), unu-la-multe (1:M), sau
multe-la-multe (M:N). Dac se cunosc valori specifice ale
cardinalitiilor, aceste valori se scriu la documentarea
relaiilor. n continuare determinm i participarea la
relaie, care poate fii total, sau parial.
Documentarea tipurilor de relaii
Dup identificarea tipurilor de relaii, le denumim i
le introducem n dicionarul de date, mpreun cu
cardinalitatea i participarea lor.
Documentarea atributelor
Dup identificarea atributelor, le asociem un nume, i le
nregistrm n dicionarul de date, mpreun cu urmtoarele
informaii:
numele i descrierea atributului,
toate aliasurile i sinonimele prin care este cunoscut atributul,
tipul de date i lungimea,
valorile iniiale ale atributelor (dac exist),
dac atributul accept sau nu valoarea nul,
dac atributul este sau nu compus, i dac este atunci atributele
simple care l compun,
dac atributul este sau nu derivat i atributul din care deriv,
dac atributul accept sau nu mai multe valori.
Identificarea cheilor i selectarea cheilor primare
O cheie candidat este un atribut, sau un grup de atribute care
identific unic fiecare nregistrare din tipul de entitate. Putem
identifica una, sau mai multe chei candidat. n acest caz trebuie s
alegem dintre ele o cheie primar. Cheile candidat care nu sunt
primare, se vor numi chei alternante. Pentru alegerea unei chei ca
fiind cheie primar, vom ine cont de urmtoarele:
cheia candidat, care are un numr minim de atribute,
cheia candidat, care i va schimba cel mai rar valoarea,
cheia candidat, care este cel mai puin probabil s sufere modificri
n viitor,
cheia candidat, care este compus din cele mai puine caractere (n
cazul atributelor de tip caracter),
cheia candidat, care este cel mai uor de folosit din punctul de
vedere al utilizatorului.
Pasul 2. Crearea i validarea modelului logic
local
Obiectivul: Crearea unui model logic local
bazat pe modelul conceptual al utilizatorilor
asupra intreprinderii i validarea ei prin procesul
de normalizare i prin tehnica tranzaciilor
cerute.
n acest pas verificm modelul conceptual
creat n pasul anterior i eliminm din el
structurile care sunt dificil de realizat ntr-un
SGBD.
n pasul nti am pregtit un model conceptual
bazat pe informaiile date de utilizator. Acest
model trebuie prelucrat, pentru a putea fi uor
de prelucrat de sistemul de gestiune a bazelor
de date. Obiectivele acestui pas sunt:
Eliminarea relaiilor M:N.
Eliminarea relaiilor complexe.
Eliminarea relaiilor recursive.
Eliminarea relaiilor cu atribute.
Reexaminarea relaiilor 1:1.
Eliminarea relaiilor redundante.
O relaie complex este o relaie ntre mai
mult de dou tipuri de entiti. Dac n
modelul conceptual apar relaii complexe,
acestea trebuiesc eliminate. Se pot
elimina prin crearea unui nou tip de
entitate, care s fie n relaie de tipul 1:M
cu fiecare tip de entitate din relaia iniial,
partea cu M a relaiei fiind spre tipul de
entitate nou creat.
Pasul 2.2. Crearea de relaii peste modelul logic local
Obiectivul: Crearea de relaii peste modelul logic.
Relaia pe care un tip de entitate o are cu alt tip de
entitate este reprezentat prin mecanismul cheie
primar/cheie strin. Cheia strin pentru o entitate
este reproducerea cheii primare a altei entiti. Pentru a
decide entitiile unde vom include copia cheii primare a
altei entiti, trebuie nainte s identificm entitile
printe i fiu. Entitile printe se refer la acele
entiti ale cror chei primare se vor copia n entitile
fiu.
Pasul 2.3. Validarea, utiliznd normalizarea
Obiectivul: Validarea modelului logic,
utiliznd tehnica normalizrii.
Examinm procesul de normalizare dup
cum am descris n capitolul 5 Prin normalizare
trebuie s demonstrm c modelul creat este
consistent, conine redundan minimal i are
stabilitate maxim.
Pasul 2.4. Validarea modelului prin tranzacii
Obiectivul: Verificarea ca modelul de date suporte
toate tranzaciile cerute de utilizator.
n acest pas se valideaz baza de date prin
verificarea tranzaciilor ce se cer de catre utilizator.
Lund n considerare tipurile de entiti, relaiile, cheile
primare i strine, ncercm s rezolvm manual
cerinele utilizatorilor. Dac reuim s rezolvm fiecare
tranzacie cerut, atuci nseamn c modelul creat este
valid. Dac nu putem rezolva o tranzacie, atunci este
foarte posibil s fi omis un atribut, o relaie, sau o
entitate din modelul de date.
Se vor scrie frazele SQL pentru fiecare
tranzacie.
Tranzacii sunt:
Rapoartele
Actualizrile care se vor face numai prin
formulare care arat ca i formularul de pe
care se preiau datele n calculator
Pasul 2.5. Desenarea diagramei ER.
Obiectivul: Desenarea diagramei
Entity-Relationship, care este
reprezentarea logic a vederilor
utilizatorilor aspra ntreprinderii.
Pasul 2.6. Identificarea regulilor de integritate. Regulile
de integritate sunt importante pentru a proteja baza de
date mpotriva posibilelor inconsistene. Dac este
necesar, putem produce un proiect fizic de baz de date,
pentru a putea vedea mai uor ce reguli sunt necesare.
Vom considera cinci tipuri de reguli de integritate:
necesitatea datelor,
reguli asupra domeniului atributelor,
integritatea entitilor,
integritatea referinelor,
regulile ntreprinderii.
Integritatea referinelor
Cheia strina din tipul de entitate fiu face
ligtura cu o entitate din tipul de entitate
printe. Deci, dac cheia strin conine o
valoare, ea trebuie neaprat s se regseasc
i n tipul de entitate printe. De exemplu tipul
de entitate catalog conine cheia strin
nr_matricol. Mu putem avea notela un student
care nu exist.
. Exist strategii de a rezolva integritatea referinelor:
FR ACIUNE Neacceptarea tergerii unei entiti din
tipul de entitate printe, dac acesta este referit de o
entitate din tipul de entitate fiu. n cazul nostru, nu se
accept tergerea studentului, dac el are note.
CASCAD Dac o entitate din tipul de entitate
printe este tears, se terg automat toate entitiile din
tipurile de entiti fiu. Dac tipurile de entiti fiu au i ei
la rndul lor alte tipuri de entiti fiu, se va efectua
tergerea n cascad n toate tipurile de entiti fiu, pn
la ultimul nivel. Cu alte cuvinte, dac se terge un
student, atunci automat se terg toatenotele lui
Pasul 2.7. Verificarea modelului logic local cu
ajutorul utilizatorului.
Obiectivul: Convingerea c modelul creat
reprezint n totalitate realitatea care trebuie
modelat n baza de date.
La acest pas modelul local logic este
clomplet i este bine documentat. nainte de a
trece la pasul 3, trebuie verificat modelul, s fie
conform cu realitatea. n cazul n care se gsesc
diferene, ne vom rentoarce la paii anteriori i
modificm cele necasare.
Pasul 3. Crearea i validarea modelului
global logic de date.
Obiectivul: Combinarea modelelor
locale logice ntr-un model logic global
care s reprezinte intreprinderea care este
modelat.
Pasul 3.1. Compunerea modelelor logice locale ntr-un model logic global.
Obiectivul: Compunerea tuturor modelelor logice locale ntr-un model logic
global al intreprinderii.
n cazul unui sistem mic, cu puine vederi ai utilizatorilor, este relativ uor de a
compune modelele logice locale. n cazul unui sistem mai mare ns, trebuie s
urmm un proces sistematic de realizare a modelului global. Paii acestui proces
sunt urmtoarele:
Verificarea numelor entitilor i a cheilor lor primare.
Verificarea numelor relaiilor.
Compunerea entitilor de pe view-urile locale.
Includerea (fr compunere) a entitilor care apar pe doar una dintre view-uri.
Compunerea relaiilor de pe view-urile locale.
Includerea (fr compunere) a relailor care apar pe doar una dintre view-uri.
Cutarea entitilor i a relailor care lipsesc (dac exist).
Cutarea cheilor strine.
Cutarea regulilor de integritate.
Desenarea modelului logic global.
Actualizarea documentaiei.
Cel mai uor de compus mai multe modele
locale este compunerea succesiv a dou
cte dou dintre modele.
Verificarea numelor entitilor i a cheilor lor primare.
Aceast verificare se face folosind i dicionarul
creat n decursul pailor de dinainte. Probleme apar
doar atunci cnd:
Dou entiti au acelai nume, dar sunt de fapt diferite.
Dou entiti sunt aceleai, dar nu au aceleai nume.
Probabil va fi necesar analizarea atributelor
entitilor, prntru a rezolva aceast problem. n
particular, putem utiliza cheia primar i numele
entitii, pentru a identifica entitile echivalente.
Compunerea entitilor de pe view-urile locale.
Examinm numele i atributele entitilor ca
vor fi compuse. Activitile care se includ n
acest pas sunt:
Compunerea entitilor cau au aceleai nume
i aceleai chei primare.
Compunerea entitilor care au aceleai nume,
dar cu chei primare diferite.
Compunerea entitilor care au nume diferite,
cu chei primare egale sau diferite.
Pasul 3.2. Validarea modelului logic
global.
Obiectivul: Validarea modelului global
logic de date, folosind normalizarea, dup
care folosind tranzacile cerute.
Pasul 3.3. Verificarea posibilitilor de extindere
a bazei de date n viitor.
Obiectivul: Determinarea dac modelul se
acomodeaz uor la modificri orict de mari ce
pot intervenii n viitor.
Este important ca modelul creat s fie
expansibil n viitor. Dac modelul nu are aceast
calitate, viaa lui poate fi scurt i pentru o mai
mare modificare va trebui refcut de la nceput.
Pasul 3.4. Desenarea diagramei Entity-
Relationship finale.
Obiectivul: Desenarea unei diagrame
ER, care s reprezinte modelul global de
date al intreprinderii.
Vom vedea acum, pe un exemplu, cum se
proiecteaz un sistem cu baz de date
relaional.
Vom proiecta un sistem cu baz de
date pentru gestiunea unui cabinet de
consiliere i orientare a elevilor.
Pasul 1: Proiectarea logic a bazei de
date relaionale:
Pasul 1.1 Identificarea tipurilor de entiti
n urma studierii documentelor implicate n
cadrul gestiunii cabinetului de consiliere i
orientare a elevilor se disting urmtoarele
entiti:
Elev
Psiholog
Membrii_familiei
Fi_individual
Trsturi_individuale
Metode_psihodiagnostice
Factori
Procese_psihice

Identificarea tipurilor de relaii.
Tipurile de relaii care intervin ntre
tipurile de entiti prezente n sistem sunt
expuse n continuare:

Determinarea cardinalitii i a
participrii tipurilor de relaii:
Identificarea i atribuirea de atribute la tipurile de entiti i tipurile de relaii i determinarea domeniilor de definiie a
atributelor.


Determinarea atributelor care compun cheile
candidate i primare.
Urmtorul tabel prezint cheile ce
intervin n cadrul sistemului:

Desenarea diagramei entity-
relationship:

Proiectarea modelului conceptual pe un model
logic local
Eliminarea relaiilor N:M.
Eliminarea relaiilor complexe.
Eliminarea relaiilor recursive.
Eliminarea relaiilor cu atribute.
Eliminarea relaiilor de tip 1:1.
Eliminarea relaiilor redundante.
Nu este cazul exemplului nostru. Acesta nu
conine astfel de tipuri de relaii.

Crearea relaiilor pentru modelul
logic local.
Entiti tari:
Elev(Cod_elev, Nume, Prenume, Data_naterii, Judeul,
Localitatea, Strada, Numr, Bloc, Scara, Apartament,
coal, Sex, Vrst, Telefon, CNP,Alte_observatii)
Cheie primara: Cod_elev
Psiholog(Cod_psiholog, Nume, Prenume, Specializare,
Data_naterii)
Cheie primara: Cod_psiholog
Membrii_familiei(Id_membru, Nume, Prenume, Judeul,
Localitatea, Strada, Numr, Bloc, Scara, Apartament,
Calitatea_membrului, Sex, Varsta, Ocupatie)
Cheie primara:Id_membru
Trasaturi individuale(Cod_trstur,
Nume_trstur)
Cheie primara: Cod_trasatura
Metode_psihodiagnostice(Cod_metod,
Nume_metod, Punctaj_brut,
Punctaj_standard, Interpretare,
Profil_psihologic, Concluzii)
Cheie primara: Cod_metoda
Entiti slabe:
Proces (Cod_proces, Nume_proces,
Cod_trastura)
Cheie primara: Cod_process
Cheie strin: Cod_trstur
Factor(Cod_factor, Nume_factor, Cod_metod)
Cheie primara: Cod_factor
Cheie strin: Cod_metod
Fi_indivdual(Nr_fi, Cod_elev, Data_ntocmirii,
Cod_psiholog, Tip_familie, Rel_ntre_prini,
Rel_elev_prini, Rel_elev_frai, Conduita_la_lecii,
Stil_de_munc, Activitatea_n_cadrul_clasei,
Conduita_n_familie, Antecedente, Boli_ereditare,
Greutate, nlime, Diagnostic, Clasa, Medie_generala,
Alte_observaii)
Cheie primara: Nr_fisa
Cheie straina: Cod_elev, Cod_psiholog
Fisa_trasaturi (Cod_fis_tra, Nr_fisa,Cod_trasatura)
Cheie primara: Cod_fis_tra
Cheie strin: Nr_fisa, Cod_trstur
Fisa_metode(Cod_fis_met,
Nr_fisa,Cod_metoda)
Cheie primara: Cod_fis_met
Cheie strin: Nr_fisa, Cod_metoda
Fisa_membrii(Cod_fis_mem, Nr_fisa,
Id_membru)
Cheie primara: Cod_fis_mem
Cheie strin: Nr_fisa, Id_membru
Validarea modelului, utiliznd
normalizarea.
Forma normal 1
n aceast etap, de normalizare, se
urmrete eliminarea grupurilor repetitive
din fiecare tabel.
Analiznd fiecare tabel se observ c nu
exist grupuri repetitive, deci baza de date
este n forma normal 1.
Forma normal 2
O relaie este n 2NF dac este n 1NF i orice
atribut este complet dependent de cheie. Forma
normal 2 se verific doar la relaiile care au o
cheie compus pe poziia de cheie primara.
Dac pentru o relaie, cheia primara se
compune dintr-un singur atribut atunci ea este n
form normal 2.
Tabelele bazei de date din sistemul nostru au
chei primare care se compun dintr-un singur
atribut, n concluzie toate relaiile sunt deja n
form normal 2.
Forma normal 3
O relaie este n 3NF dac este n 2NF i
nu exista nici un atribut care s nu
aparin cheii primare i care s fie
tranzitiv dependent de cheia primar.
Examinnd relaiile n forma normal de
mai sus, observm c nu exist
dependene tranzitive. Deci relaiile sunt n
form normal 3.
Validarea modelului utiliznd
tranzaciile.
T1. Crearea i modificare nregistrrilor despre un
anumit elev
Datele personale ale unui elev sunt memorate n tabela
ELEV. Cheia primar pentru acest tabel este Cod_elev.
n momentul n care se ncearc introducerea unui nou
elev n baza de date, se verific automat dac acesta
exist, caz n care sunt afiate datele elevului i este
permis modificarea anumitor date precum: Adresa,
Nume, Prenume. tergerea unui elev din baza de date
nu este permis, acest lucru datorndu-se faptului c s-
ar putea pierde datele despre membrii familiei elevului
respectiv.
T2. Listarea elevilor consiliai de un psiholog
Tranzacia poate fi rezolvat fcnd o cutare
dup:
Psiholog::Nume=nume psiholog
Psiholog::Nume,Prenume
Psiholog:: Cod_psiholog
Fisa_individual::Cod_psiholog
Fi_individual::Cod_elev
Elev::Cod_elev
Elev::Nume,Prenume
T3. Listarea psihologilor care lucreaz
n cadrul cabinetului de la o anumit
dat (au completat fie individuale)
Fi_individual::Data_ntocmirii>data
Fisa_individual::Cod_psiholog
Psiholog:: Cod_psiholog
Psiholog::Nume,Prenume
T4. Listarea metodelor psihodiagnostice aplicate
unui elev
Elev::Nume=nume_elev
Elev::Nume,Prenume
Elev::Cod_elev
Fi_individual::Cod_elev
Fi individual:: Nr_fisa
Fisa_metoda:: Nr_fisa
Fisa_metoda:: Cod_metoda
Metode_psihodiagnostice:: Cod_metoda
Metode_psihodiagnostice:: Nume_metoda
T5. Listarea trsturilor individuale ale unui elev
Elev::Nume=nume_elev
Elev::Nume,Prenume
Elev::Cod_elev
Fi_individual::Cod_elev
Fi individual:: Nr_fisa
Fisa_trasatura:: Nr_fisa
Fisa_trasatura:: Cod_trstur
Trsturi_individuale:: Cod_trstur
Trsturi_individuale:: Nume_trstur
T6. Listarea membrilor familiei unui elev
Elev::Nume=nume_elev
Elev::Nume,Prenume
Elev::Cod_elev
Fi_individual::Cod_elev
Fi individual:: Nr_fisa
Fisa_membrii::Nr_fisa
Fisa_membrii::Id_membru
Membrii_familiei:: Id_membru
Membrii_familiei:: Nume, Prenume
T7. Listarea factorilor care intervin n
cadrul unei metode psihodiagnostice
Metode_psihodiagnostice:: Nume=nume
Metode_psihodiagnostice::Cod_metoda
Factor:: Cod_metoda
Factor::Nume_factor
T8. Listarea proceselor care
influeneaz o trstur individuale
Trsturi_individuale::
Nume_trstura=Nume
Trsturi_individuale:: Cod_trstur
Proces::Cod_trstur
Proces:: Nume_proces
T9. Listarea unor date personale despre
toi elevii (Nume, Prenume,
Data_nasterii, coala, Localitate,
Diagnostic)
Elev::Cod_elev
Elev::Nume,Prenume,
Data_nasterii,Scoala,Localitatea
Fisa_individuala::Cod_elev
Fisa_individuala::Diagnostic
Pasul 2.5 Desenarea diagramei E-R
n cazul nostru aceast diagram nu se
modific
Pasul 2.6 Definirea regulilor de
integritate ale bazei de date.
Necesitatea datelor:
Aceste reguli le-am identificat deja, cnd am
documentat atributele n pasul 1.3.
Reguli asupra domeniului atributelor.
Domeniile de definiie au fost deja identificate
cnd am documentat domeniile atributelor n
pasul 1.3.
Integritatea entitilor.
Aceste reguli au fost deja identificate, cnd am
documentat cheile primare n pasul 1.4.
Integritatea relaiilor.
Elev(Cod_elev, Nume, Prenume, Data_naterii, Judeul, Localitatea,
Strada, Numr, Bloc, Scara, Apartament, coal, Sex, Vrst,
Telefon, CNP,Alte_observatii)
Cheie primara: Cod_elev
Psiholog(Cod_psiholog, Nume, Prenume, Specializare,
Data_naterii)
Cheie primara: Cod_psiholog
Fi_indivdual(Nr_fi, Cod_elev, Data_ntocmirii, Cod_psiholog,
Tip_familie, Rel_ntre_prini, Rel_elev_prini, Rel_elev_frai,
Conduita_la_lecii, Stil_de_munc, Activitatea_n_cadrul_clasei,
Conduita_n_familie, Antecedente, Boli_ereditare, Greutate,
nlime, Diagnostic, Clasa, Medie_generala, Alte_observaii)
Cheie primara: Nr_fisa
Cheie straina: Cod_elev Nenul, Cascad, referindu-
se la Elev(.)
Cod_psiholog Nenul, Cascad, referindu-
se la Psiholog(...)
Trasaturi individuale(Cod_trstur, Nume_trstur,)
Cheie primara: Cod_trasatura
Proces (Cod_proces, Nume_proces)
Cheie primara: Cod_process
Cheie straina: Cod_trstur Nenul, Cascad,
referindu-se la
Trasaturi individuale(Cod_trstur, Nume_trstur,)
Metode_psihodiagnostice(Cod_metod,
Nume_metod, Punctaj_brut, Punctaj_standard,
Interpretare, Profil_psihologic, Concluzii)
Cheie primara: Cod_metoda
Factor(Cod_factor, Nume_factor, Cod_metod)
Cheie primara: Cod_factor
Cheie straina: Cod_metod Nenul,
Cascad, referindu-se la
Metode_psihodiagnostice(...)
Membrii_familiei(Id_membru, Nume, Prenume, Judeul,
Localitatea, Strada, Numr, Bloc, Scara, Apartament,
Calitatea_membrului, Sex, Varsta, Ocupatie)
Cheie primara:Id_membru
Fisa_membrii(Cod_fis_mem, Nr_fisa, Id_membru)
Cheie primara: Cod_fis_mem
Cheie strin: Nr_fisa Nenul, Cascad, referindu-se
la Fisa_individuala()
Id_membru Nenul, Cascad, referindu-se
la Membrii_familiei()
Fisa_trasaturi (Cod_fis_tra,
Nr_fisa,Cod_trasatura)
Cheie primara: Cod_fis_tra
Cheie strin: Nr_fisa Nenul, Cascad,
referindu-se la Fisa_individuala()
Cod_trasaturi Nenul, Cascad,
referindu-se la Trasaturi individuale(...)
Fisa_metode(Cod_fis_met,
Nr_fisa,Cod_metoda)
Cheie primara: Cod_fis_met
Cheie strin: Nr_fisa Nenul, Cascad,
referindu-se la Fisa_individuala()
Cod_metoda Nenul, Cascad,
referindu-se la
Metode_psihodiagnostice()

S-ar putea să vă placă și