Sunteți pe pagina 1din 12

FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA ELECTROTEHNICA CLUJ-NAPOCA

PROIECT
BAZE DE DATE

STUDENT: BUTA ROXANA MARIA


DEMIAN CRISTINA EMILIA
GRUPA: 1141

1
FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA ELECTROTEHNICA CLUJ-NAPOCA

Adăpost pentru animale

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.

1. create table if not exists DONATORI(


id_donator integer not null,
nume_d VARCHAR(15) NOT NULL,
prenume_d VARCHAR(20) NOT NULL,
adresa_d VARCHAR(50),
email_d VARCHAR(30),
telefon_d VARCHAR(15) NOT NULL,
primary key (id_donator));

2. create table if not exists ADOPTANTI (


id_adoptant integer not null,
nume_a VARCHAR(15) NOT NULL,
prenume_a VARCHAR(20) NOT NULL,
adresa_a VARCHAR(50),
email_a VARCHAR(30),
telefon_a VARCHAR(15) NOT NULL,
primary key (id_adoptant));

3. create table if not exists HRANA (


id_hrana integer not null ,
tip_hrana VARCHAR(20),
pret VARCHAR(6),
brand VARCHAR(15),
primary key (id_hrana));

4
FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA ELECTROTEHNICA CLUJ-NAPOCA

4. create table if not exists VETERINARI(


id_veterinar integer not null,
nume_v VARCHAR(15) NOT NULL,
prenume_v VARCHAR(20) NOT NULL,
adresa_v VARCHAR(50),
email_v VARCHAR(30),
telefon_v VARCHAR(15),
primary key (id_veterinar));

5. create table if not exists ANIMALE(


id_animal integer not null,
tip_animal VARCHAR(10) NOT NULL,
greutate integer not null ,
sex VARCHAR(1),
descriere VARCHAR(50),
data_nasterii DATE NOT NULL,
id_donator VARCHAR(5) REFERENCES DONATORI(id_donator),
id_adoptant integer not null REFERENCES ADOPTANTI(id_adoptant),
id_hrana integer not null,
primary key (id_animal),
CONSTRAINT fk1 FOREIGN KEY (id_hrana) REFERENCES HRANA(id_hrana) );

6. create table if not exists CONSULTATII(


id_consultatie integer not null auto_increment,
data_consultatiei DATE NOT NULL,
diagnostic VARCHAR(30),
id_animal integer not null REFERENCES ANIMALE(id_animal),
id_veterinar integer not null REFERENCES VETERINARI(id_veterinar),
primary key (id_consultatie)) ;
5
FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA ELECTROTEHNICA CLUJ-NAPOCA

ACTUALIZAREA STRUCTURII TABELELOR

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;

ADĂUGAREA ÎNREGISTRĂRILOR ÎN TABELE


1. Tabela DONATORI
INSERT INTO DONATORI (id_donator, nume_d, prenume_d, adresa_d, email_d,telefon_d)
VALUES (2000, 'Stancu', 'Andrei', 'Bvd Unirii nr 13 Bucuresti', 'andrei.stancu@gmail.com',
'0721234128');
INSERT INTO DONATORI (id_donator, nume_d, prenume_d, adresa_d, email_d,telefon_d)
VALUES (2001, 'Grigore', 'Mihai', 'Bvd Aviatorilor nr 9 Bucuresti', 'grigore.m@gmail.com',
'0723456509');
INSERT INTO DONATORI (id_donator, nume_d, prenume_d, adresa_d, email_d,telefon_d)
VALUES (2002, 'Enache', 'Ana', 'Strada Independentei nr 19 Bucuresti', 'anaenache@yahoo.com',
'0768675123');
INSERT INTO DONATORI (id_donator, nume_d, prenume_d, adresa_d, email_d,telefon_d)
VALUES (2003, 'Popa', 'Gabriel', 'Strada Dreptatii nr 19 Bucuresti', 'gabrielpopa@yahoo.com',
'0751876543');
INSERT INTO DONATORI (id_donator, nume_d, prenume_d, adresa_d, email_d,telefon_d)
VALUES (2004, 'Rus', 'Claudia', 'Bvd 1 Decembrie 1918 nr 5 Brasov', 'claurus@yahoo.com',
'0754776683');
INSERT INTO DONATORI (id_donator, nume_d, prenume_d, adresa_d, email_d,telefon_d)
VALUES (2005, 'Ianc', 'Lavinia', 'Bvd Magheru nr 5 Iasi', 'lavinia@aiesec.org', '0754976682');
INSERT INTO DONATORI (id_donator, nume_d, prenume_d, adresa_d, email_d,telefon_d)
VALUES (2006, 'Enache', 'Andrei', 'Strada Aviatiei nr 19 Bucuresti', 'enacheandrei@yahoo.com',
'0768674123');
INSERT INTO DONATORI (id_donator, nume_d, prenume_d, adresa_d, email_d,telefon_d)
VALUES (2007, 'Ruben', 'Claudiu', 'Bvd Armatei nr 5 Brasov', 'clauruben@yahoo.com', '0753556789');
INSERT INTO DONATORI (id_donator, nume_d, prenume_d, adresa_d, email_d,telefon_d)
VALUES (2008, 'Morariu', 'Teodora', 'Bvd Protos nr 51 Iasi', 'teodora@aiesec.org', '0750786611');
INSERT INTO DONATORI (id_donator, nume_d, prenume_d, adresa_d, email_d,telefon_d)
VALUES (2009, 'Enache', 'Claudia', 'Bvd 1 Decembrie 1918 nr 5 Brasov', 'clauenache@yahoo.com',
'0750566666');
INSERT INTO DONATORI (id_donator, nume_d, prenume_d, adresa_d, email_d,telefon_d)
VALUES (2010, 'Enache', 'Remus', 'Strada 24 Ianuarie nr 19 Bucuresti', 'remusenache@yahoo.com',
'0768675001');
INSERT INTO DONATORI (id_donator, nume_d, prenume_d, adresa_d, email_d,telefon_d)

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

1. Cerința: Să se creeze un index pentru facilitarea accesului la preturile hranei.


CREATE INDEX index1 on HRANA(pret);
2. Cerința: Să se creeze un index pentru facilitarea accesului la numărul de telefon al adoptanților.
CREATE INDEX index2 ON ADOPTANTI(telefon_a);
3. Cerința: Să se creeze un index pentru facilitarea accesului la numărul de telefon al donatorilor.
CREATE INDEX index3 ON donatori(telefon_d);

11
FACULTATEA DE INGINERIE ELECTRICA SPECIALIZAREA ELECTROTEHNICA CLUJ-NAPOCA

12

S-ar putea să vă placă și