|
Proiectul logic baze de date
In acest capitol vom vedea, pe un exemplu, cum se proiecteazǎ un sistem cu bazǎ de date relationalǎ.
Vom proiecta un sistem cu baza de date pentru gestiunea unui cabinet de consiliere si orientare a elevilor.
1 Pasul 1: Proiectarea logica a bazei de date relationale
Pasul 1.1. Identificarea tipurilor de entitati
In urma studierii documentelor implicate in cadrul gestiunii cabinetului de consiliere si orientare a elevilor se disting urmatoarele entitati:
Elev
Psiholog
Membrii_familiei
Fisa_individuala
Trasaturi_individuale
Metode_psihodiagnostice
Factori
Procese_psihice
In documentarea tipurilor de entitati includem o descriere amanuntita a fiecarei entitati:
Nume tip de entitate
Descriere
Elev
Toti elevii care au solicitat serviciile cabinetului de consultare si orientare a elevilor
Psiholog
Totalitatea psihologilor care activeaza in cadrul cabinetului
Membrii_familiei
Toti membrii familiei unui elev
Fisa_individuala
Toate datele legate de evidenta elevilor din cadrul cabinetului de consiliere si orientare scolara
Trasaturi_individuale
Totalitatea trasaturilor individuale ale unui elev
Metode_psihodiagnostice
Totalitatea metodelor psihodiagnostice care i-au fost aplicate unui elev
Factori
Totalitatea factorilor care intervin in metodele psihodiagnostice
Procese_psihice
Totalitatea proceselor psihice care determina trasaturile individuale
Pasul 1.2. Identificarea tipurilor de relatii.
Tipurile de relatii care intervin intre tipurile de entitati prezente in sistem sunt expuse in continuare:
Tip de entitate
Tip de relatie
Tip de entitate
Elev
detine
Fisa_indivduala
Psiholog
completeaza
Fisa_indivduala
Fisa_indivduala
contine informatii despre
Membrii_familiei
contine informatii despre
Trasaturi_individuale
contine informatii despre
Metode_psihodiagnostice
Metode_psihodiagnostice
determina
Trasaturi_individuale
au
Factori
Trasaturi_individuale
sunt compuse din
Procese
Determinarea cardinalitatii si a participarii tipurilor de relatii:
Tip de entitate
Tip de relatie
Tip de entitate
Cardinalitate
Participare
Elev
detine
Fisa_indivduala
1:1
T:T
Psiholog
completeaza
Fisa_indivduala
1:N
P:T
Fisa_indivduala
contine informatii despre
Membrii_familiei
M:N
T:T
Fisa_indivduala
contine informatii despre
Trasaturi_individuale
M:N
T:T
Fisa_indivduala
contine informatii despre
Metode_psihodiagnostice
M:N
T:T
Metode_psihodiagnostice
determina
Trasaturi_individuale
M:N
T:T
Metode_psihodiagnostice
au
Factori
1:N
P:T
Trasaturi_individuale
sunt compuse din
Procese
1:N
P:T
Pasul 1.3. Identificarea si atribuirea de atribute la tipurile de entitati si tipurile de relatii si determinarea domeniilor de definitie a atributelor.
Tip entitate
Atribut
Domeniu
Elev
Cod_elev
AutoNumber
Nume
Text(50)
Prenume
Text(50)
Data_nasterii
Date/Time
Judetul
Text(30)
Localitatea
Text(30)
Strada
Text(30)
Numar
Number
Bloc
Text(10)
Scara
Text(1)
Apartament
Number
Scoala
Text(50)
Sex
Text(1)
Varsta
Number
Telefon
Number
CNP
Number
Alte_observatii
Memo
Psiholog
Cod_psiholog
Autonumber
Nume
Text(30)
Prenume
Text(30)
Specializare
Text(40)
Data_nasterii
Date/Time
Fisa_indivduala
Nr_fisa
Autonumber
Cod_elev
Number
Data_intocmirii
Date/Time
Cod_trasaturi
Number
Cod_psiholog
Number
Cod_metoda
Number
Id_membru
Number
Tip_familie
Text(30)
Rel_intre_parinti
Memo
Rel_elev_parinti
Memo
Rel_elev_frati
Memo
Conduita_la_lectii
Memo
Stil_de_munca
Text(50)
Activitatea_in_cadrul_clasei
Text(50)
Conduita_in_familie
Memo
Antecedente
Memo
Boli_ereditare
Memo
Greutate
Number
Inaltime
Number
Diagnostic
Text(30)
Clasa
Text(5)
Medie_generala
Number
Alte_observatii
Memo
Membrii_familiei
Id_membru
Autonumber
Nume
Text(30)
Prenume
Text(30)
Judetul
Text(30)
Localitatea
Text(30)
Strada
Text(30)
Numar
Number
Bloc
Text(10)
Scara
Text(1)
Apartament
Number
Calitatea_membrului
Text(10)
Sex
Text(1)
Varsta
Number
Ocupatie
Text(30)
Trasaturi_individuale
Cod_trasatura
Autonumber
Nume_trasatura
Text(20)
Proces
Cod_proces
Autonumber
Nume_proces
Text(20)
Cod_trasatura
Number
Metode_psihodiagnostice
Cod_metoda
Autonumber
Nume_metoda
Text(20)
Punctaj_brut
Number
Punctaj_standard
Number
Interpretare
Text(30)
Cod_trasatura
Number
Profil_psihologic
Memo
Concluzii
Memo
Factor
Cod_factor
Autonumber
Nume_factor
Text(20)
Cod_metoda
Number
Pentru intelegerea domeniilor atributelor din tabelul anterior, sunt explicati termenii folositi:
Text(x) - este un text sau combinatii de texte si numere, dimensiunea fiind de 'x' caractere
Memo - este un text de mare dimensiune cum sunt descrieri sau note
Number- reprezinta un numar
Autonumber - este un numar cu incrementare automata
Alte tipuri de atribute (campuri) ati vǎzut in capitolul 4.
Pasul 1.4. Determinarea atributelor care compun cheile candidate si primare.
Urmatorul tabel prezinta cheile ce intervin in cadrul sistemului:
Tip de entitate
Chei candidat
Cheie primara
Elev
Cod_elev
Cod_elev
CNP
Psiholog
Cod_psiholog
Cod_psiholog
CNP
Fisa_individuala
Nr_fisa
Nr_fisa
Membrii_familiei
Cod_familie
Cod_familie
Trasaturi_individuale
Cod_trasatura
Cod_trasatura
Procese
Cod_proces
Cod_proces
Metode_psihodiagnostice
Cod_metoda
Cod_metoda
Factori
Cod_factor
Cod_factor
Pasul 1.5. Desenarea diagramei entity-relationship:
Trebuie sa reactualizam si lista atributelor pentru tipurile de entitati: Fisa_trasaturi, Fisa_metode si Fisa_membrii .
Tip entitate
Atribut
Domeniu
Fisa_trasaturi
Cod_fis_tra
AutoNumber
Nr_fisa
Number
Cod_trasatura
Number
Fisa_metode
Cod_fis_met
Autonumber
Nr_fisa
Number
Cod_metoda
Number
Fisa_membrii
Cod_fis_mem
Autonumber
Nr_fisa
Number
Id_membru
Number
Pasul 2.1. Proiectarea modelului conceptual pe un model logic local
1. Eliminarea relatiilor N:M.
2.
Nu este cazul exemplului
nostru. Acesta nu contine
astfel de tipuri de relatii.
Eliminarea
relatiilor complexe.
3. Eliminarea relatiilor recursive.
4. Eliminarea relatiilor cu atribute.
5. Eliminarea relatiilor de tip 1:1.
6. Eliminarea relatiilor redundante.
Pasul 2.2 Crearea relatiilor pentru modelul logic local.
Entitati tari:
Elev Cod_elev, Nume, Prenume, Data_nasterii, Judetul, Localitatea, Strada, Numar, Bloc, Scara, Apartament, Scoala, Sex, Varsta, Telefon, CNP,Alte_observatii
Cheie primara: Cod_elev
Psiholog Cod_psiholog, Nume, Prenume, Specializare, Data_nasterii
Cheie primara: Cod_psiholog
Membrii_familiei(Id_membru, Nume, Prenume, Judetul, Localitatea, Strada, Numar, Bloc, Scara, Apartament, Calitatea_membrului, Sex, Varsta, Ocupatie)
Cheie primara:Id_membru
Trasaturi individuale(Cod_trasatura, Nume_trasatura)
Cheie primara: Cod_trasatura
Metode_psihodiagnostice(Cod_metoda, Nume_metoda, Punctaj_brut, Punctaj_standard, Interpretare, Profil_psihologic, Concluzii)
Cheie primara: Cod_metoda
Entitati slabe:
Proces (Cod_proces, Nume_proces, Cod_trastura)
Cheie primara: Cod_process
Cheie straina: Cod_trasatura
Factor(Cod_factor, Nume_factor, Cod_metoda)
Cheie primara: Cod_factor
Cheie straina: Cod_metoda
Fisa_indivduala Nr_fisa, Cod_elev, Data_intocmirii, Cod_psiholog, Tip_familie, Rel_intre_parinti, Rel_elev_parinti, Rel_elev_frati, Conduita_la_lectii, Stil_de_munca, Activitatea_in_cadrul_clasei, Conduita_in_familie, Antecedente, Boli_ereditare, Greutate, Inaltime, Diagnostic, Clasa, Medie_generala, Alte_observatii
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 straina: Nr_fisa, Cod_trasatura
Fisa_metode(Cod_fis_met, Nr_fisa,Cod_metoda)
Cheie primara: Cod_fis_met
Cheie straina: Nr_fisa, Cod_metoda
Fisa_membrii(Cod_fis_mem, Nr_fisa, Id_membru)
Cheie primara: Cod_fis_mem
Cheie straina: Nr_fisa, Id_membru
Pasul 2.3 Validarea modelului, utilizand normalizarea.
Pentru teoria legatǎ de normalizare cititorul este indrumat spre [1], [2], [3].
In aceastǎ etapǎ, de normalizare, se urmǎreste eliminarea grupurilor repetitive din fiecare tabel.
Analizand fiecare tabel se observǎ cǎ nu existǎ grupuri repetitive, deci baza de date este in forma normalǎ 1.
O relatie este in 2NF daca este in 1NF si orice atribut este complet dependent de cheie. Forma normala 2 se verifica doar la relatiile care au o cheie compusa pe pozitia de cheie primara. Daca pentru o relatie, cheia primara se compune dintr-un singur atribut atunci ea este in forma normala 2.
Tabelele bazei de date din sistemul nostru au chei primare care se compun dintr-un singur atribut, in concluzie toate relatiile sunt deja in forma normala 2.
Forma normalǎ 3
O relatie este in 3NF daca este in 2NF si nu exista nici un atribut care sa nu apartinǎ cheii primare si care sa fie tranzitiv dependent de cheia primara.
Examinand relatiile in forma normala de mai sus, observam ca nu exista dependente tranzitive. Deci relatiile sunt in forma normala 3.
Pasul 2.4 Validarea modelului utilizand tranzactiile.
Tranzactiile cerute de utilizator sunt:
T1. Crearea si modificare inregistrarilor despre un anumit elev
Datele personale ale unui elev sunt memorate in tabela ELEV. Cheia primara pentru acest tabel este Cod_elev. In momentul in care se incearca introducerea unui nou elev in baza de date, se verifica automat daca acesta exista, caz in care sunt afisate datele elevului si este permisa modificarea anumitor date precum: Adresa, Nume, Prenume. Stergerea unui elev din baza de date nu este permisa, acest lucru datorandu-se faptului ca s-ar putea pierde datele despre membrii familiei elevului respectiv.
T2. Listarea elevilor consiliati de un psiholog
Tranzactia poate fi rezolvata facand o cautare dupa:
Psiholog::Nume="nume psiholog"
Psiholog::Nume,Prenume
Psiholog:: Cod_psiholog
Fisa_individuala::Cod_psiholog
Fisa_individuala::Cod_elev
Elev::Cod_elev
Elev::Nume,Prenume
T3. Listarea psihologilor care lucreaza in cadrul cabinetului de la o anumita data (au completat fise individuale)
Fisa_individuala::Data_intocmirii>"data"
Fisa_individuala::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
Fisa_individuala::Cod_elev
Fisa individuala:: Nr_fisa
Fisa_metoda:: Nr_fisa
Fisa_metoda:: Cod_metoda
Metode_psihodiagnostice:: Cod_metoda
Metode_psihodiagnostice:: Nume_metoda
Elev::Nume="nume_elev"
Elev::Nume,Prenume
Elev::Cod_elev
Fisa_individuala::Cod_elev
Fisa individuala:: Nr_fisa
Fisa_trasatura:: Nr_fisa
Fisa_trasatura:: Cod_trasatura
Trasaturi_individuale:: Cod_trasatura
Trasaturi_individuale:: Nume_trasatura
T6. Listarea membrilor familiei unui elev
Elev::Nume="nume_elev"
Elev::Nume,Prenume
Elev::Cod_elev
Fisa_individuala::Cod_elev
Fisa individuala:: Nr_fisa
Fisa_membrii::Nr_fisa
Fisa_membrii::Id_membru
Membrii_familiei:: Id_membru
Membrii_familiei:: Nume, Prenume
T7. Listarea factorilor care intervin in cadrul unei metode psihodiagnostice
Metode_psihodiagnostice:: Nume="nume"
Metode_psihodiagnostice::Cod_metoda
Factor:: Cod_metoda
Factor::Nume_factor
T8. Listarea proceselor care influenteaza o trasatura individuale
Trasaturi_individuale:: Nume_trasatura="Nume"
Trasaturi_individuale:: Cod_trasatura
Proces::Cod_trasatura
Proces:: Nume_proces
T Listarea unor date personale despre toti elevii (Nume, Prenume, Data_nasterii, Scoala, 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
In cazul nostru aceasta diagrama nu se modifica
Pasul 2.6 Definirea regulilor de integritate ale bazei de date.
Necesitatea datelor:
Aceste reguli le-am identificat deja, cand am documentat atributele in pasul 1.3.
Reguli asupra domeniului atributelor.
Domeniile de definitie au fost deja identificate cand am documentat domeniile atributelor in pasul 1.3.
Integritatea entitatilor.
Aceste reguli au fost deja identificate, cand am documentat cheile primare in pasul 1.4.
Integritatea relatiilor.
Elev Cod_elev, Nume, Prenume, Data_nasterii, Judetul, Localitatea, Strada, Numar, Bloc, Scara, Apartament, Scoala, Sex, Varsta, Telefon, CNP,Alte_observatii
Cheie primara: Cod_elev
Psiholog Cod_psiholog, Nume, Prenume, Specializare, Data_nasterii
Cheie primara: Cod_psiholog
Fisa_indivduala Nr_fisa, Cod_elev, Data_intocmirii, Cod_psiholog, Tip_familie, Rel_intre_parinti, Rel_elev_parinti, Rel_elev_frati, Conduita_la_lectii, Stil_de_munca, Activitatea_in_cadrul_clasei, Conduita_in_familie, Antecedente, Boli_ereditare, Greutate, Inaltime, Diagnostic, Clasa, Medie_generala, Alte_observatii
Cheie primara: Nr_fisa
Cheie straina: Cod_elev Nenula, Cascada, referindu-se
Cod_psiholog Nenula, Cascada,
referindu-se
Trasaturi individuale(Cod_trasatura, Nume_trasatura,)
Cheie primara: Cod_trasatura
Proces (Cod_proces, Nume_proces)
Cheie primara: Cod_process
Cheie straina: Cod_trasatura Nenula, Cascada, referindu-se la
Trasaturi individuale(Cod_trasatura, Nume_trasatura,)
Metode_psihodiagnostice(Cod_metoda, Nume_metoda, Punctaj_brut, Punctaj_standard, Interpretare, Profil_psihologic, Concluzii)
Cheie primara: Cod_metoda
Factor(Cod_factor, Nume_factor, Cod_metoda)
Cheie primara: Cod_factor
Cheie straina: Cod_metoda Nenula, Cascada, referindu-se la
Metode_psihodiagnostice
Membrii_familiei(Id_membru, Nume, Prenume, Judetul, Localitatea, Strada, Numar, 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 straina: Nr_fisa Nenula, Cascada, referindu-se
Id_membru Nenula, Cascada, referindu-se la
Membrii_familiei
Fisa_trasaturi (Cod_fis_tra, Nr_fisa,Cod_trasatura)
Cheie primara: Cod_fis_tra
Cheie straina: Nr_fisa Nenula, Cascada, referindu-se
Cod_trasaturi Nenula, Cascada, referindu-se la
Trasaturi individuale
Fisa_metode(Cod_fis_met, Nr_fisa,Cod_metoda)
Cheie primara: Cod_fis_met
Cheie straina: Nr_fisa Nenula, Cascada, referindu-se
Cod_metoda Nenula, Cascada, referindu-se la
Metode_psihodiagnostice(
Diagrama E-R finala:
Baza de date a fost implementata in Access. Aici relatiile dintre entitati sunt descrise astfel:
In momentul deschiderii bazei de date "ConsiliereSiOrientare.mdb" se va deschide meniul principal numit MainBoard. Acesta arata astfel:
Principalele optiuni sunt:
cu ajutorul caruia se vor deschide toate formularele din baza de date.
cu ajutorul caruia pot fi vizualizate rapoartele.
2 Realizarea help-ului pentru aplicatie
Aplicatia realizatǎ in Access oferǎ suport pentru utilizatorii aplicatiei. Help-ul utilizat in cadrul aplicatiei a fost realizat folosind utilitarul "Shalom", aceasta pentru a descrie modul in care pot fi folosite diferitele formulare de introducere a datelor. Pentru a avea acces la explicatiile suplimentare realizate cu ajutorul programului "Shalom", sub forma unui fisier numit Help.hlp, utilizatorul poate apǎsa butonul F1 sau poate folosi butonul <Wat's this> cu care sunt inzestrate majoritatea formularelor.
Exemplu:
Dupa efectuarea unui click in campul respectiv se va deschide urmǎtoarea fereastrǎ:
Acelasi efect ar fi putut fi realizat daca cursorul se afla in campul Data Intocmire si se apǎsa tasta F1.
Aplicatia are mai multe niveluri de help, explicatii suplimentare putand fi obtinute astfel:
prin tooltip-uri; in momentul in care pozitionǎm cursorul mouse-ului deasupra unui text box din cadrul unui form si il lǎsǎm pentru cateva secunde vor apǎrea informatii suplimentare referitoare la campul respectiv
prin informatii in status bar - in momentul in care focus-ul este intr-unul din elementele unui formular, in status bar vor apǎrea informatii referitoare la campul respectiv
BIBLIOGRAFIE
[1] Connoly T., Begg C., Strachan A., Data base systems, Addison Wesley, 1997
[2] Harrington J.L., Relational database design, AP Professional, 1998.
[3] Iacob P., Baze de date, Curs Univ. 'Transilvania' Brasov, 2003
[4] Iacob P., Ghid de proiectare a bazelor de date relationale, Univ. 'Transilvania' Brasov, 1997
[5] Iacob P. Baze de date pentru incepǎtori, Ed. Univ. Pitesti, 2000