Documente Academic
Documente Profesional
Documente Cultură
PROIECT
BAZE DE DATE
1
FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA ELECTROTEHNICA CLUJ-NAPOCA
Descriere
Am ales să creez o bază de date cu informații referitoare la un adăpost pentru animale. Acest adăpost
este locuința mai multor tipuri de animale: câini, pisici, păsări, porcușori de guineea, hamsteri, până și reptile.
Am stocat date în 6 tabele care sunt conectate prin relații. Datele stocate în această bază de date sunt referitoare
la animalele aflate in adăpost (tabela animale), la modul de hrănire al fiecărui tip de animal (tabela hrană), la
persoanele care aduc animalele la adăpost prin donații (tabela donatori), la persoanele care adoptă animalele
(tabela adoptanți), la veterinarii ce se ocupă de animalele bolnave din adăpost (tabela veterinari) si la
consultațiile pe care aceștia le realizează în momentul în care un animal se îmbolnăvește (tabela consultații).
Reguli și structura tabelelor
La început, între tabela animale şi tabela veterinari exista o relaţie de tip M:M. Pentru a asigura integritatea
bazei de date, am creat o tabela nouă numită consultaţii, care se leagă de cele două tabele prin două relaţii de tip 1:M.
2
FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA ELECTROTEHNICA CLUJ-NAPOCA
3
FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA ELECTROTEHNICA CLUJ-NAPOCA
CREAREA TABELELOR
Cerinţa: Să se creeze tabelele DONATORI, ADOPTANTI, HRANA, VETERINARI, ANIMALE SI CONSULTATII pe baza structurii
si tipurilor de date prezentate mai sus.
4
FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA ELECTROTEHNICA CLUJ-NAPOCA
1. Cerinţa: Să se adauge în tabela CONSULTAŢII un câmp nou numit “tratament” de tip VARCHAR(50).
ALTER TABLE CONSULTATII ADD COLUMN (tratament VARCHAR(50));
2. Cerința: Să se șteargă câmpul data_nasterii din tabela ANIMALE.
ALTER TABLE ANIMALE DROP COLUMN data_nasterii;
6
FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA ELECTROTEHNICA CLUJ-NAPOCA
VALUES (2011, 'Ianc', 'Madalina', 'Bvd Galati nr 5 Iasi',
'madalina@aiesec.org', '0754770081');
INSERT INTO DONATORI (id_donator, nume_d, prenume_d, adresa_d, email_d,telefon_d)
VALUES (2012, 'Oprea', 'Mihai', 'Strada Oituz nr 12 Iasi', 'oprea@gmail.com', '0767890100');
INSERT INTO DONATORI (id_donator, nume_d, prenume_d, adresa_d, email_d,telefon_d)
VALUES (2013, 'Neag', 'Ciprian', 'Strada Oituz nr 15 Iasi', 'neagc@gmail.com', '0765678901');
INSERT INTO DONATORI (id_donator, nume_d, prenume_d, adresa_d, email_d,telefon_d)
VALUES (2015, 'Abos', 'Roxana', 'Bvd Pache protopopescu nr 3 Bucuresti', 'abos_roxana@aiesec.org',
'0765129063');
2. Tabela ADOPTANTI
INSERT INTO ADOPTANTI (id_adoptant, nume_a, prenume_a, adresa_a, email_a, telefon_a)
VALUES (3000, 'Stoica', 'Marian', 'Strada Trandafirilor nr 45
Bucuresti','stoicam@yahoo.com','0765872234');
INSERT INTO ADOPTANTI (id_adoptant, nume_a, prenume_a, adresa_a, email_a, telefon_a)
VALUES (3001, 'Stoica', 'Andrei', 'Strada Papadiilor nr 43 Bucuresti',
'stoicaandrei@yahoo.com','0765850999');
INSERT INTO ADOPTANTI (id_adoptant, nume_a, prenume_a, adresa_a, email_a, telefon_a)
VALUES (3002, 'Sandu', 'Cezara', 'Strada Maracineanu nr 7 Brasov', 'cezarasandu@gmail.com',
'0756239871');
INSERT INTO ADOPTANTI (id_adoptant, nume_a, prenume_a, adresa_a, email_a, telefon_a)
VALUES (3003, 'Dorobat', 'Alexandru', 'Bvd Dacia nr 38 Bucuresti',
'dorobat@yahoo.com','0720009008');
INSERT INTO ADOPTANTI (id_adoptant, nume_a, prenume_a, adresa_a, email_a, telefon_a)
VALUES (3004, 'Constantinescu', 'Adina', NULL, 'adinaconst@gmail.com', '0757503519');
INSERT INTO ADOPTANTI (id_adoptant, nume_a, prenume_a, adresa_a, email_a, telefon_a)
VALUES (3005, 'Coles', 'Andrei', 'Strada Mihail Moxa nr 1 Brasov', 'coles_andrei@gmail.com',
'0720598264');
INSERT INTO ADOPTANTI (id_adoptant, nume_a, prenume_a, adresa_a, email_a, telefon_a)
VALUES (3006, 'Popescu', 'Marius', 'Strada Saturn nr 10 Bucuresti', 'popescumarius@yahoo.com',
'0741112113');
INSERT INTO ADOPTANTI (id_adoptant, nume_a, prenume_a, adresa_a, email_a, telefon_a)
VALUES (3007, 'Salavastru', 'Ovidiu', 'Strada Maracinelor nr 75 Iasi', 'sovidiu@gmail.com',
'0750700213');
INSERT INTO ADOPTANTI (id_adoptant, nume_a, prenume_a, adresa_a, email_a, telefon_a)
VALUES (3008, 'Onuta', 'Ramona', 'Strada Neptun nr 80 Brasov', 'onutar@gmail.com', '0750999873');
INSERT INTO ADOPTANTI (id_adoptant, nume_a, prenume_a, adresa_a, email_a, telefon_a)
VALUES (3009, 'Damian', 'Natalia', 'Strada Gorjului nr 65 Iasi', 'natalia_damian@gmail.com',
'0729987654');
7
FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA ELECTROTEHNICA CLUJ-NAPOCA
3. Tabela VETERINARI
INSERT INTO VETERINARI (id_veterinar, nume_v, prenume_v, adresa_v, email_v, telefon_v)
VALUES (4000, 'Abusan', 'Alexandru', 'Strada Mihai Eminescu nr 22 Brasov',
'abusanandrei@gmail.com','0765654391');
INSERT INTO VETERINARI (id_veterinar, nume_v, prenume_v, adresa_v, email_v, telefon_v)
VALUES (4001, 'Borcea', 'Cristian', 'Bvd Independentei nr 12 Sibiu',
'borcea_cris@gmail.com','0762652000');
INSERT INTO VETERINARI (id_veterinar, nume_v, prenume_v, adresa_v, email_v, telefon_v)
VALUES (4002, 'Cristea', 'Andrei', 'Bvd Magheru nr 2 Sibiu',
'cristea_andrei@gmail.com' ,'0726700901');
INSERT INTO VETERINARI (id_veterinar, nume_v, prenume_v, adresa_v, email_v, telefon_v)
VALUES (4003, 'Paraschiv', 'Remus', 'Bvd Stefan cel Mare nr 28 Sibiu',
'remus_paraschiv@gmail.com','0720120891');
4. Tabela HRANA
INSERT INTO HRANA ( id_hrana, tip_hrana, pret, brand)
VALUES (5000, 'granulata', 20.5, 'Granulli');
INSERT INTO HRANA ( id_hrana, tip_hrana, pret, brand)
VALUES (5001, 'lichida', 30.5, 'Healthy-Pet');
INSERT INTO HRANA ( id_hrana, tip_hrana, pret, brand)
VALUES (5002, 'congelata', 40.5, 'Healthy-Pet');
INSERT INTO HRANA ( id_hrana, tip_hrana, pret, brand)
VALUES (5003, 'cu multivitamine', 100.5, 'Forzza');
INSERT INTO HRANA ( id_hrana, tip_hrana, pret, brand)
VALUES (5004, 'solida', 30.5, 'Healthy-Pet');
INSERT INTO HRANA ( id_hrana, tip_hrana, pret, brand)
VALUES (5005, 'uscata', 50.5, 'Your-Pet');
5. Tabela ANIMALE
INSERT INTO ANIMALE (id_animal, tip_animal, greutate, sex, descriere, data_nasterii, id_donator,
id_adoptant, id_hrana)
VALUES (1000, 'caine', 5.6, 'm', 'negru', 2010, NULL, 5007);
INSERT INTO ANIMALE (id_animal, tip_animal, greutate, sex, descriere, data_nasterii, id_donator,
id_adoptant, id_hrana)
VALUES (1001, 'pisica', 2.3, 'f', 'alba', 2010, NULL, 5006);
INSERT INTO ANIMALE (id_animal, tip_animal, greutate, sex, descriere, data_nasterii, id_donator,
id_adoptant, id_hrana)
VALUES (1002, 'testoasa', 9.2, 'm', NULL, 2001, 3014, 5004);
INSERT INTO ANIMALE (id_animal, tip_animal, greutate, sex, descriere, data_nasterii, id_donator,
id_adoptant, id_hrana)
VALUES (1003, 'hamster', 0.5, 'f', 'alb', 2003, NULL, 5009);
8
FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA ELECTROTEHNICA CLUJ-NAPOCA
INSERT INTO ANIMALE (id_animal, tip_animal, greutate, sex, descriere, data_nasterii,
id_donator, id_adoptant, id_hrana)
VALUES (1004, 'caine', 0.6, 'm', 'maro', 2010, NULL, 5008);
INSERT INTO ANIMALE (id_animal, tip_animal, greutate, sex, descriere, data_nasterii, id_donator,
id_adoptant, id_hrana)
VALUES (1005, 'papagal', 0.4, 'm', 'culori:rosu si verde', 2010, NULL, 5007);
6. Tabela CONSULTATII
INSERT INTO CONSULTATII (id_consultatie, data_consultatiei, diagnostic, id_animal , id_veterinar)
VALUES (6000,TO_DATE('15-NOI-2011','DD-MON-YYYY') ,'leziune', 1001,4006);
INSERT INTO CONSULTATII (id_consultatie, data_consultatiei, diagnostic, id_animal , id_veterinar)
VALUES (6001,TO_DATE('14-OCT-2011','DD-MON-YYYY'),'plaga deschisa',1002,4003);
INSERT INTO CONSULTATII (id_consultatie, data_consultatiei, diagnostic, id_animal , id_veterinar)
VALUES (6002,TO_DATE('01-NOI-2011','DD-MON-YYYY'),'ruptura carapace', 1010,4006);
INSERT INTO CONSULTATII (id_consultatie, data_consultatiei, diagnostic, id_animal , id_veterinar)
VALUES (6003,TO_DATE('19-SEP-2011','DD-MON-YYYY'),'leziune la aripa dreapta', 1005,4006);
INSERT INTO CONSULTATII (id_consultatie, data_consultatiei, diagnostic, id_animal , id_veterinar)
VALUES (6004,TO_DATE('30-DEC-2011','DD-MON-YYYY'),'arsura',1021,4003);
INSERT INTO CONSULTATII (id_consultatie, data_consultatiei, diagnostic, id_animal , id_veterinar)
VALUES (6005, TO_DATE('05-SEP-2011','DD-MON-YYYY'),'intoxicatie',1001,4000)
MODIFICAREA DATELOR
1. Cerința: Să se ajusteze prețul hranei care face parte din brand-ul Granulli cu 10 lei.
UPDATE HRANA SET pret=pret+10 where lower(brand)='granulli';
2. Cerința: Să se modifice codul de hrana al serpilor cu acel cod de hrana care este reprezentativ pentru
animalul cu codul 1002.
UPDATE ANIMALE SET id_hrana=(SELECT id_hrana from ANIMALE where id_animal =1002)
WHERE tip_animal='caine';
3. Cerința: Să se modifice emailul veterinarului cu codul 4002 cu valoarea: ‘pencea.radu@yahoo.com’.
PDATE VETERINARI SET email_v='pencea.radu@yahoo.com'
WHERE cod_veterinar=4002;
4. Cerința: Să se modifice numele veterinarilor astfel încât să apară cu litere mari pentru cei care au ținut
cel puțin 2 consultații.
UPDATE VETERINARI
SET nume_v=UPPER(nume_v)
WHERE cod_veterinar IN (select cod_veterinar from consultatii
group by cod_veterinar
having count(cod_consultatie)>=2);
5. Cerința: Să se modifice pretul hranei ce are codul 5001 cu cel mai mic pret din tabela HRANA.
UPDATE HRANA
SET pret=(select min(pret) from hrana)
where cod_hrana=5001;
9
FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA ELECTROTEHNICA CLUJ-NAPOCA
INTEROGĂRI VARIATE
1. Cerința: Să se afișeze numele veterinarilor care au consultat animale, codul consultațiilor asociate,
precum și veterinarii care nu au participat la nici o consultație.
select v.nume_v, c.cod_consultatie
from veterinari v, consultatii c
where v.cod_veterinar=c.cod_veterinar;
2. Cerința: Să se afișeze tipul hranei pentru animale în funcție de prețul acesteia, astfel:
- Dacă prețul este < 40, să se afișeze: hrană cu prețuri mici
- Dacă prețul este între 40 și 80, să se afișeze: hrană cu prețuri medii
- Dacă prețul este > 80, să se afișeze: hrană cu prețuri mari
select pret, case when pret < 40 then 'hrana cu preturi mici'
when pret between 40 and 80 then 'hrana cu preturi medii'
else 'hrana cu preturi mari'
end tip_de_hrana
from hrana ;
3. Cerința: Să se afișeze câte unități din fiecare tip de hrană au fost consumate pentru animalele
înregistrate în baza de date.
select h.tip_hrana, count(a.cod_hrana) as Nr_unitati
from animale a, hrana h
where a.cod_hrana=h.cod_hrana
group by h.tip_hrana;
4. Cerința: Să se afișeze greutatea minima, greutatea maximă și greutatea medie pentru animale in functie
de tipul de hrana pe care il consuma.
select min(a.greutate) as greutate_minima, max(a.greutate) as greutate_maxima, avg(a.greutate) as
greutate_medie, h.tip_hrana
from animale a, hrana h
where a.id_hrana=h.id_hrana
group by h.tip_hrana;
5. Cerința: Sa se afiseze numele, prenumele donatorilor si tipul animalului pe care l-au donat pentru
donatorii care au acelasi nume cu donatorul cu codul 2002.
select d.nume_d as nume,d.prenume_d as prenume, a.tip_animal as tip_animal, d.cod_donator
from donatori d, animale a
where a.id_donator=d.id_donator
and nume_d=(select nume_d from donatori
where id_donator=2002);
6. Cerința: Să se afișeze numărul donatorilor care au donat același tip de animal doar pentru tipurile de
animale care au fost donate de minim 2 ori.
select count(id_donator) as Nr_donatori, tip_animal
from animale
group by tip_animal
having count(id_donator)>=2;
10
FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA ELECTROTEHNICA CLUJ-NAPOCA
7. Cerința: Sa se afiseze informatiile despre hrana care are pretul egal cu pretul minim din tabela hrana.
select * from hrana
where pret=(select min(pret) from hrana);
8. Cerința: Să se afișeze codul, data si diagnosticul consultatiilor care au fost realizate după ce s-a realizat
consultația cu codul 6003.
select cod_consultatie, data_consultatiei, diagnostic from consultatii
where data_consultatiei>(select data_consultatiei from consultatii
where id_consultatie=6003);
9. Cerința: Să se afișeze numele și prenumele veterinarilor și numărul consultațiilor pe care fiecare le-a
efectuat.
select count(id_consultatie) as Nr_consultatii
from consultatii
group by id_veterinar;
10. Cerința: Să se afișeze codul veterinarului care a realizat cele mai multe consultații.
elect id_veterinar
from consultatii
group by id_veterinar
having count(id_consultatie)=(select max(count(id_consultatie)) from consultatii
group by id_veterinar);
VIZIUNI
1. Cerința: Să se creeze o tabela virtuală care să conțină toate informațiile câinilor donați în adăpostul
pentru animale.
create view nume1 as select * from animale
where tip_animal='caine';
2. Cerința: Să se creeze o tabelă virtuală care să conțină tipul animalelor și numele veterinarilor care le-au
consultat, doar pentru animalele care au fost consultate și au câmpul descriere not null; să se ordoneze
crescător după numele animalelor iar permisiunea acestei tabele să fie doar în scopul vizualizării datelor.
create view numel as select a.tip_animal,a.descriere,c.id_veterinar
from animale a JOIN consultatii c ON(a.id_animal=c.id_animal)
where a.descriere is not null
order by tip_animal;
INDEXI
11
FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA ELECTROTEHNICA CLUJ-NAPOCA
12