Professional Documents
Culture Documents
INTRODUCERE
Lucrarea are ca scop construirea unei baze de date sursă de la care să se poată construi un
depozit de date pentru activitatea unei clinici de medicină de familie. Datele sunt stocate în tabele
relaționale, iar pentru construirea depozitului se creează tabele care vor reprezenta surse de date
pentru obiectele depozitului. În urma unor prelucrări preliminare, au fost obținute tabelele sursă
din schema următoare:
Pentru o concordanță sporită a datelor au fost implementate și două proceduri care verifică
următoarele:
1. Pentru coloana STARECIVILA există valori eronate în raport cu GRUPVARSTA
Testăm dacă grupa de vârstă este „copil” și setăm pentru acest caz starea civilă
„necăsătorit” și data căsătoriei NULL
Testăm dacă vârsta este mai mică decât 18 ani și setăm pentru acest caz grupa de vârstă
„copil”, altfel dacă vârsta este între 18 ani și 65 de ani, inclusiv, setăm grupa de vârstă
„adult”, altfel grupa de vârstă este „vârstnic”
ANEXE
ANEXA 1 – Creare tabele
BEGIN
If extract(year from datanasterii) > 1900 and datanasterii < sysdate then
return datanasterii;
Else
return TO_DATE('01-01-1901','DD-MM-YYYY');
End If ;
END;
BEGIN
If lower(GEN) in ('feminin','fem.','fem') then
return 'F';
Else
return 'M';
End If ;
END;
ANEXA 4 – Proceduri
DECLARE
v_age NUMBER:=0;
CURSOR c_pacienti is
SELECT DataNasterii FROM pacienti for update of GrupVarsta;
BEGIN
for v_row in c_pacienti
LOOP
v_age := trunc(months_between(sysdate,v_row.DataNasterii)/12);
if v_age<18 then
UPDATE pacienti
SET GrupVarsta = 'copil'
WHERE CURRENT OF c_pacienti;
elsif v_age>=18 and v_age<=65 then
UPDATE pacienti
SET GrupVarsta = 'adult'
WHERE CURRENT OF c_pacienti;
else
UPDATE pacienti
SET GrupVarsta = 'varstnic'
WHERE CURRENT OF c_pacienti;
end if;
END LOOP;
commit;
END;
DECLARE
CURSOR c_pacienti is
SELECT GrupVarsta FROM pacienti for update of StareCivila, DataCasatoriei;
BEGIN
for v_row in c_pacienti
LOOP
if v_row.GrupVarsta='copil' then
UPDATE pacienti
SET StareCivila = 'necasatorit'
WHERE CURRENT OF c_pacienti;
UPDATE pacienti
SET DataCasatoriei = NULL
WHERE CURRENT OF c_pacienti;
end if;
END LOOP;
commit;
END;