Constrangeri in realizarea unei baze de date MySQL

Pana nu demult si eu pot sa spun ca atunci cand realizam o baza de date lucram dupa ureche. Daca mi se parea ca ceva nu e cum ar trebui modificam dupa propriul gust si simt cu increderea suficienta ca voi obtine ce doresc.Un mod ciobanesc de a face treaba, dar am reusit sa o fac si asa. Asa ca am sa incadrez aceasta etapa a proiectarii in categoria  “Asa am procedat.

Sa stiti ca facultatea este buna la ceva mai ales cand ce alegi in sa faci in cadrul cursurilor optionale consideri cu tarie ca iti va fi de folos pe viitor, si nu te indrepti cu scarba catre sala de curs sau de laborator cu gandul “ce vrea boul asta de la noi?” sau “cu ce prostii incearca sa ne impresioneze azi?”.

Avand in vedere ca domeniul de programare web e in tot mai mare crestere, cerintele pentru oameni care sunt atrasi de acest domeniu sunt tot mai ridicate nu am ramas pasiv la acest lucru si stiind ca o materie care poate sa imi descreteasca putin fruntea ar fi “B(aze de) D(ate)” am ales-o fara nici un moment de framantare azi vara ca materie optionala in acest an. Zis si in continua facere pana in saptamana 14.

Dintre numeroasele chestii noi cu care a venit atat cursul cat si laboratorul (caci pasiunea ca pasiune dar mai trebuie si stiinta) este si acesta care incerc sa il prezint de la inceputul acestei prelegeri: constrangeri in realizarea unei baze de date, si anume ce trebuie avut in vedere cand realizezi o baza de date. Raspunsul se rezuma la cateva randuri:

  • constrangerea de integritate a entitatii (se aplica asupra cheilor primare si stabileste ca fiecare tuplu al unei relatii este identificat unic prin intermediul unei chei, ale carei atribute nu pot contine valori NULL)
  • constrangerea de integritate referentiala (se aplica cheilor externe si stabileste ca orice valoare a unei chei externe se gaseste printre valorile cheii primare din relatia referita sau are valoarea NULL)
Stim ca o baza de date <=> o coletie de date interrelationate. Cu alte cuvinte structura unei baze de date este formata din numeroase tabele ce au o legatura unul cu altul. Astfel de legaturi se realizeaza prin anumiti idetificatori denumiti “chei externe”.  Un element al unui tabel (element = rand) este unic identificat la randul sau printr-o “cheie primara”. Aceasta poate fi un atribut sau un set de atribute din cadrul tabelului.
Pe langa importanta cunoasterii structurii unei baze de date este importanta de asemenea cunoasterea modului de alcatuire a unei astfel de structuri tabelare interrelationate, ce fel de reguli vom aplica pentru a elimina datele redundante (redundant = in plus, in exces, fa rost) aparute in structura. Un proces pentru eliminarea acestor deficiente reprezinta normalizarea. Aceasta cuprinde 3 etape ce trebuie avute in vedere:
  1. indeplinirea conditiilor formei normale 1 (1NF) : o relatie respecta prima forma normala, daca domeniul atributelor cuprinde numai valori atomine si fiecare atribut ia o singura valoare din domeniul sau de definitie (nu avem grupuri repetitive pentru fiecare valoare a unui atribut)
  2. indeplinirea conditiilor formei normale 2 (2NF): o relatie respecta forma normala 2NF, daca respecta 1NF si orice atribut care nu face parte din cheia primara este total dependent functional de cheia primara a relatiei (nu exista dependente functionale partiale).
  3. indeplinirea conditiilor formei normale 3 (3NF): o relatie respecta forma normala 3NF, daca respecta forma normala 2NF si niciun atribut care nu face parte din cheia primara nu este dependent tranzitiv de cheia primara
Avand in vedere ca toate cele de mai sus s-au realizat corect te poti felicita singur ca ai realizat o baza de date ce respecta constrangerile si astfel nu vei avea un exces de date.

Asadar pot spune ca asa procedez de cand cunostintele in domeniu mi-au fost largi deschise. 


Hint: un tool interesant in vederea realizari grafice a bazelor de date este mysql workbench. Un model de baza de date realizat cu intermediul acestuia este vizibil in imaginea urmatoare: 



Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s