normalizare baza de date

Întrebări legate de conectarea la baze de date MySQL prin intermediul PHP

Moderatori: Zamolxe, Moderatori

patricia
New Member
Mesaje: 3
Membru din: Vin Sep 28, 2012 6:01 pm

normalizare baza de date

Mesajde patricia » Mie Ian 02, 2013 11:19 am

am urmatorul enunt:
Baza de date se compune din urmatoarele tabele:
medicament(COD_MEDICAMENT, DENUMIRE, CANTIT)
reteta (COD_MEDICAMENT, CNP, CANTIT, PRET_UNITAR)
pacient(CNP, NUME, ADRESA)
boala(COD_BOALA, DENUMIRE_BOALA)
diagnostic(CNP, COD_BOALA, COD_MEDICAMENT, CANTIT)
1. Proiectati in forma normala.
Daca are cineva vreo idee despre cum ar trebui rezolvat acest exercitiu ,si daca poate sa imi si explice opinia pe care o are.
am citit pe net despre normalizarea bazei de date ,dar tot nu inteleg cum ar trebui sa procedez in cazul asta.
eu m-am gandit sa fac urmatoarele modificari:sa renunt la tabelul cu reteta pentru ca se gasesc aceleasi informatii care se gasesc in tabelul diagnostic,iar campul PRET_UNITAR care e de fapt pretul unei pastile dintr-un anumit medicament sa il trec in tabela medicament.
medicament(COD_MEDICAMENT, DENUMIRE, CANTIT, PRET_UNITAR)
pacient(CNP, NUME, ADRESA)
boala(COD_BOALA, DENUMIRE_BOALA)
diagnostic(CNP, COD_BOALA, COD_MEDICAMENT, CANTIT)



ViezuREX
Senior Member
Mesaje: 502
Membru din: Joi Dec 13, 2012 1:35 pm

Re: normalizare baza de date

Mesajde ViezuREX » Vin Ian 04, 2013 9:23 am

Normalizarea este doar un termen pompos pentru un proces logic de optimizare. Asa cum ai observat si tu unele campuri sunt redundante ceea ce face ca baza de date sa creasca mai mult sau mai putin dar fara beneficii de utilizare.
O alta problema este si stabilirea clara a relatiilor dintre campuri si tabele precum si utilizarea datelor stocate. Practic, este posibil ca in anumite situatii sa ai nevoie de un anumit nivel de redundanta a datelor pentru a putea folosi relatiile dintre tabele.
Ceea ce iti recomand eu este sa parcurgi urmatorii pasi:
1 - Defineste o structura clara a tabelelor bazei de date
2 - Fiecare tabela trebuie sa contina informatiile referitoare la un anumit obiect pe care incerci sa-l definesti (ex. MEDICAMENT sa contina cod_medicament, nume_medicament, producator_medicament etc.)
3 - Defineste pentru fiecare tabela o cheie primara (daca este posibil)
4 - Defineste campurile tabelelor in functie de cel mai optim tip (de ex. un cam care contine ID trebuie definit ca INT si nu VARCHAR, desi functional este ok si asa)
5 - Creeaza indecsi pe fiecare camp care va fi folosit pentru stabilirea relatiilor intre tabele (de ex. campurile care contin ID-uri)
6 - Incearca sa eviti in codul de interogare situatii in care se ajunge la full-scan pe tabele (chiar daca la momentul initial aceste tabele sunt de dimensiuni mici)

In principiu, daca urmezi acesti pasi nu ar trebui sa intampini dificultati si vei avea si o baza de date normalizata, desi este vorba de a avea o baza de date definita corect.


Înapoi la “MySQL”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 6 vizitatori