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)
normalizare baza de date
Moderatori: Zamolxe, Moderatori
Re: normalizare baza de date
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.
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.
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 15 vizitatori