Download - Proiect Baza de Date
ACADEMIA DE STUDII ECONOMICEFacultatea de Cibernetic, Statistic i Informatic Economic
Boboescu Dan Alexandru Seria A Grupa 1022
Proiect Baze de date S.C. Vital Home Care S.R.L. Ingrjiri medicale la domiciliu
S.C. Vital Home Care S.R.LPrezentare GeneralaS.C. Vital Home Care S.R.L , societate comerciala ce ofera ingrijiri medicale la domiciliu , colaboreaza cu diferiti medici cu scopul de a strange cat mai multi pacienti doritori de astfel de servicii.Firma are sediul central in Bucuresti si dispune de un numar de 10 angajati din care patru asistenti medicali ( ce se ocupa efectiv cu ingrijirea pacientilor ) , doi specialisti IT , un expert P.R. , un operator de introducere a datelor , un contabil si un manager general.Astfel , am optat sa realizez o baza de date a firmei ce va cuprinde urmatoarele informatii: angajatii , medicii , pacientii , afectiunile acestora cat si tipurile de medicamente.
Schema bazei de dateANGAJATIID_ANGAJATPRENUMENUMEEMAILTELEFONDATA_ANGAJARESALARIULFUNCTIESEX
PACIENTIID_PACIENTNUMEPRENUMEDATA_NASTERIIADRESAID_ANGAJATID_MEDIC
MEDICIID_MEDICNUMEPRENUMEEMAILDATA_NASTERIISPECIALITATESEX
AFECTIUNICOD_AFECDENUMIREDATA_DIAGID_PACIENT
MEDICAMENTECOD_MEDDENUMIREDATA_EXPID_PACIENTPRET
Crearea Tabelelor1. AngajatiCREATE TABLE "ANGAJATI" ("ID_ANGAJAT" NUMBER(6,0) NOT NULL ENABLE, "PRENUME" VARCHAR2(20), "NUME" VARCHAR2(25), "EMAIL" VARCHAR2(25), "TELEFON" VARCHAR2(20), "DATA_ANGAJARE" DATE, "SALARIUL" NUMBER(8,2), "FUNCTIE" VARCHAR2(25), "SEX" VARCHAR2(1), CONSTRAINT "ANG_ID_ANGAJAT_PK" PRIMARY KEY ("ID_ANGAJAT") ENABLE, CONSTRAINT "ANG_EMAIL_UK" UNIQUE ("EMAIL") ENABLE, CONSTRAINT "ANG_DATA_ANG_NN" CHECK ("DATA_ANGAJARE" IS NOT NULL) ENABLE, CONSTRAINT "ANG_EMAIL_NN" CHECK ("EMAIL" IS NOT NULL) ENABLE, CONSTRAINT "ANG_NUME_NN" CHECK ("NUME" IS NOT NULL) ENABLE, CONSTRAINT "ANG_SALARIUL_MIN" CHECK (SALARIUL > 0) ENABLE )
2.MediciCREATE TABLE "MEDICI" ("ID_MEDIC" NUMBER NOT NULL ENABLE, "NUME" VARCHAR2(25), "PRENUME" VARCHAR2(25), "EMAIL" VARCHAR2(25), "DATA_NASTERII" DATE, "SPECIALITATE" VARCHAR2(25), "SEX" VARCHAR2(1), CONSTRAINT "ID_MEDIC_PK" PRIMARY KEY ("ID_MEDIC") ENABLE )/3.PacientiCREATE TABLE "PACIENTI" ("ID_PACIENT" NUMBER, "NUME" VARCHAR2(25), "PRENUME" VARCHAR2(25), "DATA_NASTERII" DATE, "ADRESA" VARCHAR2(50), "ID_ANGAJAT" NUMBER NOT NULL ENABLE, "ID_MEDIC" NUMBER, CONSTRAINT "PACIENTI_PK" PRIMARY KEY ("ID_PACIENT") ENABLE )/ALTER TABLE "PACIENTI" ADD CONSTRAINT "ID_ANGAJAT" FOREIGN KEY ("ID_ANGAJAT") REFERENCES "ANGAJATI" ("ID_ANGAJAT") ENABLE/ALTER TABLE "PACIENTI" ADD CONSTRAINT "ID_MEDIC" FOREIGN KEY ("ID_MEDIC") REFERENCES "MEDICI" ("ID_MEDIC") ENABLE/
4.AfectiuniCREATE TABLE "AFECTIUNI" ("COD_AFEC" NUMBER NOT NULL ENABLE, "DENUMIRE" VARCHAR2(25), "DATA_DIAG" DATE, "ID_PACIENT" NUMBER NOT NULL ENABLE, CONSTRAINT "COD_AFEC_PK" PRIMARY KEY ("COD_AFEC") ENABLE )/ALTER TABLE "AFECTIUNI" ADD CONSTRAINT "ID_PACIENT1" FOREIGN KEY ("ID_PACIENT") REFERENCES "PACIENTI" ("ID_PACIENT") ENABLE/
5.MedicamenteCREATE TABLE "MEDICAMENTE" ("COD_MED" NUMBER NOT NULL ENABLE, "DENUMIRE" VARCHAR2(25), "DATA_EXP" DATE, "ID_PACIENT" NUMBER, "PRET" NUMBER, CONSTRAINT "COD_MED_PK" PRIMARY KEY ("COD_MED") ENABLE )/ALTER TABLE "MEDICAMENTE" ADD CONSTRAINT "MEDICAMENTE_CON" FOREIGN KEY ("ID_PACIENT") REFERENCES "PACIENTI" ("ID_PACIENT") ENABLE/
Exemple de exercitiiExemple cu DDL1.S se redenumeasc tabela Afectiuni n Boli.Alter table afectiuni rename to boli
2. S se adauge n tabela Angajati coloana Adresa, avnd tipul VARCHAR2(25).Alter table angajati add (adresa varchar2(25));
3. S se adauge n tabela Angajati coloana AdresaAlter table angajati drop column adresa
Exemple cu DML4.Sa se modifice in tabela medici prenumele medicului cu id 301 in MariaUPDATE medici set prenume='Maria' where id_medic=301
5.Sa se majoreze cu 10% salariile angajatiilor cu functia de asistent medical UPDATE angajati set salariul=salariul*1.1 where functie='Asistent Medical'
6.Sa se schimbe in tabela medicamente denumirea medicamentului in Otirelax pentru pacientul cu id=206
UPDATE medicamente set denumire='Otirelax' where id_pacient=206
7.Sa se stearga din tabela boli, bolile cu denumirea: 'Fractura Picior'DELETE from boli where denumire='Fractura Picior'
8.Sa se adauge in tabela boli un nou rand cu valorile: '401','Fractura Mana Stanga','12/08/2013','210'
INSERT INTO boli values ( '401','Fractura Mana Stanga','12/08/2013','210')9.Sa se modifice in tabela boli ,denumirea carotenodermie cu alopecieUPDATE boli set denumire='Alopecie' where denumire='carotenodermie'
Exemple cu interogari10. Sa se selecteze toti angajitii din tabela AngajatiSELECT * from angajati ORDER BY ID_ANGAJAT
11.Sa se selecteze numele si prenumele pacientilor de la specialitatea neurologieSelect nume , prenume from pacienti where id_medic in ( Select id_medic from medici where specialitate='Neurologie' ) ;
12.Sa se selecteze numele , prenumele si salariul angajatilor cu functia specialist itSELECT nume , prenume , salariul from angajati where functie='Specialist IT' ;
13. Sa se afiseze media salariilor tuturor angajatiilorSelect AVG(salariul) from angajati
14.Sa se afiseze nume prenume si boala tuturor pacientilorSelect a.nume, a.prenume, b.denumirefrom pacienti a , boli b where a.id_pacient=b.id_pacient;
15. Sa se afiseze denumirea medicamentelor care expira in anul 2015Select denumire from medicamente where extract (year from data_exp)=2015;
16.Sa se afisezele numele angajatilor care incep cu N.Select nume from angajati where nume like 'N%';
17. Sa se afiseze numele , prenumele pacientilor care sunt la cardiogieSelect a.nume , a.prenume from pacienti a where a.id_medic in ( select b.id_medic from medici b where specialitate='Cardiologie' )
18. Sa se afiseze pretul maxim, pretul mediu, pretul minim si pretul total al medicamentelorSelect TRUNC(AVG(PRET)) , MAX(PRET) , MIN(PRET) , SUM(PRET) from medicamente;
19. Sa se afiseze vechimea tuturor angajatilorSELECT nume,prenume, ROUND((sysdate-data_angajare)/365) Ani FROM angajati
20. Sa se afiseze nume , prenume si data nasterii tuturor pacientilor. Data se va afia detipul: DD.MM.YYSELECT nume , prenume ,TO_CHAR( data_nasterii, DD.MM.YYYY) from pacienti
21. Sa se scrie pentru pacientul cu id 202 pacient aproape sanatos , pentru pacientul cu id 205 pacient bolnav , iar pentru pacientul cu id 209 pacient in stare criticaSELECT nume , prenumeDECODE ( id_pacient, 202, pacient aproape sanatos, 204, pacient bolnav, 208, pacient in stare critica) Stare_pacientFROM pacienti
22. Sa se afiseze ce persone din angajati si medici sunt de sex masculineSELECT nume , prenume, sex, functie ocupatieFrom angajati where sex='M'UNIONSELECT nume , prenume, sex, specialitateFROM medici where sex='M';
EXEMPLE CU OBIECTE ALE BAZEI DE DATE23. Sa se creeze o tabela virtual cu toti angajatii de sex feminineCREATE VIEW angajati_femei ASSELECT * FROM angajati WHERE SEX='F'
24 Sa se creeze un index pe tabela angajati pe coloana numeCREATE INDEX angajati_nume ON angajati(nume);
25. Sa se vizualizeze indexul creatSELECT * FROM user_indexes;
26. Sa se stearga indexulDROP INDEX angajati_nume;
27. Sa se creeze un sinonim pentru tabela mediciCREATE SYNONyM doctori FOR medici
28. Sa se vizualizeze sinonimeleSELECT * FROM user_synonyms
29. Sa se stearga sinonimul creat anteriorDROP SYNONYM doctori