You are on page 1of 36

Adpost pentru animale

Descriere
Am ales s creez o baz de date cu informaii referitoare la un adpost
pentru animale. Acest adpost este locuina mai multor tipuri de animale: cini,
pisici, psri, porcuori de guineea, hamsteri, pn i reptile. Am stocat date n 6
tabele care sunt conectate prin relaii. Datele stocate n aceast baz de date
sunt referitoare la animalele aflate in adpost (tabela animale), la modul de
hrnire al fiecrui tip de animal (tabela hran), la persoanele care aduc animalele
la adpost prin donaii (tabela donatori), la persoanele care adopt animalele
(tabela adoptani), la veterinarii ce se ocup de animalele bolnave din adpost
(tabela veterinari) si la consultaiile pe care acetia le realizeaz n momentul n
care un animal se mbolnvete (tabela consultaii)
Reguli i structura tabelelor
La nceput, ntre tabela animale i tabela veterinari exista o relaie de tip
M:M. Pentru a asigura integritatea bazei de date, am creat o tabela nou numit
consultaii, care se leag de cele dou tabele prin dou relaii de tip 1:M.
n acest adpost:
-

Un donator poate dona unul sau mai multe animale, un animal trebuie sa
fie donat de catre un singur donator.
Un adoptant poate adopta unul sau mai multe animale, un animal poate fi
adoptat de catre un singur adoptant.
Un animal trebuie sa consume un singur tip de hrana, un tip de hrana
poate fi consumat de mai multe animale.
La o consultatie trebuie sa participe un singur animal, un animal poate fi
consultat de mai multe ori.
Un veterinar poate sa realizeze mai multe consultatii, la o consultatie
poate participa un singur veterinar.
Animalele pot fi adoptate sau nu la un moment dat; acest lucru se verifica
prin campul cod_adoptant. Daca acesta este Null, inseamna ca animalul nu
este adoptat.
Emailul trebuie intotdeauna sa fie de forma: %@%.%
Pe tot parcursul timpului in care animalele traiesc in adapostul pentru
animale, din motive nutritionale, fiecare animal va consuma un singur tip
de hrana si nu mai multe.

Cmp
cod_animal
tip_animal
greutate

Tip
NUMBER(5)
VARCHAR2(
10)
NUMBER(6,
2)

TABELA ANIMALE
Restricii
Primary Key
Not Null

Comentarii

sex
descriere
data_nasterii
cod_donator

VARCHAR2(
1)
VARCHAR2(
50)
DATE
NUMBER(5)

cod_adopta
nt

NUMBER(5)

cod_hrana

NUMBER(5)

Cmp
cod_donator
nume_d
prenume_d
adresa_d
email_d
telefon_d

Cmp
cod_adoptan
t
nume_a
prenume_a
adresa_a
email_a
telefon_a

Cmp
cod_hrana
tip_hrana
pret

Tip
NUMBER(5)
VARCHAR2(
15)
VARCHAR2(
20)
VARCHAR2(
50)
VARCHAR2(
30)
VARCHAR2(
15)
Tip
NUMBER(5)
VARCHAR2(
15)
VARCHAR2(
20)
VARCHAR2(
50)
VARCHAR2(
30)
VARCHAR2(
15)

Tip
NUMBER(5)
VARCHAR2(
20)
NUMBER(6,
2)

Foreign Key,
Not Null

Cheie externa catre tabela


DONATORI; fiecare animal trebuie
sa aiba un donator
Foreign Key
Cheie externa catre tabela
ADOPTANTI; daca e Null,
inseamna ca animalul nu a fost
adoptat
Foreign Key
Cheie externa catre tabela
HRANA
TABELA DONATORI
Restricii
Comentarii
Primary Key
Not Null
Not Null

Check

Trebuie sa aiba forma: %@%.%

Not Null
TABELA ADOPTANTI
Restricii
Primary Key

Comentarii

Not Null
Not Null

Check

Trebuie sa aiba forma: %@%.%

Not Null

TABELA HRANA
Restricii
Primary Key

Not Null

Comentarii

brand

Cmp
cod_veterina
r
nume_v
prenume_v
adresa_v
email_v
telefon_v

VARCHAR2(
15)
Tip
NUMBER(5)
VARCHAR2(
15)
VARCHAR2(
20)
VARCHAR2(
50)
VARCHAR2(
30)
VARCHAR2(
15)

Cmp
cod_consultat
ie
data_consulta
tie
diagnostic
cod_animal
cod_veterinar

TABELA VETERINARI
Restricii
Primary Key
Not Null
Not Null

Check

Trebuie sa aiba forma: %@%.%

Tip
NUMBER(5)

TABELA CONSULTATII
Restricii
Primary Key

DATE

Not Null

VARCHAR2(
30)
NUMBER(5)
NUMBER(5)

Comentarii

Foreign Key,
Not Null
Foreign Key,
Not Null

Comentarii

Cheie externa catre tabela


ANIMALE
Cheie externa catre tabela
VETERINARI

CREAREA TABELELOR

Cerina: S se creeze tabelele DONATORI, ADOPTANTI, HRANA, VETERINARI,


ANIMALE SI CONSULTATII pe baza structurii si tipurilor de date prezentate mai sus.
1. CREATE TABLE DONATORI ( cod_donator NUMBER(5) PRIMARY KEY, nume_d
VARCHAR2(15) NOT NULL, prenume_d VARCHAR2(20) NOT NULL, adresa_d
VARCHAR2(50), email_d VARCHAR2(30), telefon_d VARCHAR2(15) NOT
NULL, CONSTRAINT ck1 CHECK (email_d LIKE '%@%.%' ))

Fig.1 Crearea tabelei DONATORI

2. CREATE TABLE ADOPTANTI ( cod_adoptant NUMBER(5) PRIMARY KEY,


nume_a VARCHAR2(15) NOT NULL, prenume_a VARCHAR2(20) NOT NULL,
adresa_a VARCHAR2(50), email_a VARCHAR2(30), telefon_a VARCHAR2(15)
NOT NULL, CONSTRAINT ck2 CHECK (email_a LIKE '%@%.%') )

Fig.2 Crearea tabelei ADOPTANTI

3. CREATE TABLE HRANA ( cod_hrana NUMBER(5) PRIMARY KEY, tip_hrana


VARCHAR2(20), pret NUMBER(6,2), brand VARCHAR2(15) )

Fig.3 Crearea tabelei HRANA


4. CREATE TABLE VETERINARI ( cod_veterinar NUMBER(5) PRIMARY KEY,
nume_v VARCHAR2(15) NOT NULL, prenume_v VARCHAR2(20) NOT NULL,

adresa_v VARCHAR2(50), email_v VARCHAR2(30), telefon_v VARCHAR2(15),


CONSTRAINT ck3 CHECK (email_v LIKE '%@%.%') )

Fig.4 Crearea tabelei VETERINARI


5. CREATE TABLE ANIMALE (cod_animal NUMBER(5) PRIMARY KEY, tip_animal
VARCHAR2(10) NOT NULL, greutate NUMBER (6,2), sex VARCHAR2(1),
descriere VARCHAR2(50), data_nasterii DATE, cod_donator NUMBER(5)
REFERENCES DONATORI(cod_donator), cod_adoptant NUMBER(5)
REFERENCES ADOPTANTI(cod_adoptant), cod_hrana NUMBER(5),
CONSTRAINT fk1 FOREIGN KEY (cod_hrana) REFERENCES
HRANA(cod_hrana) )

Fig.5 Crearea tabelei ANIMALE

6. CREATE TABLE CONSULTATII (cod_consultatie NUMBER(5), data_consultatiei


DATE NOT NULL, diagnostic VARCHAR2(30), cod_animal NUMBER(5)
REFERENCES ANIMALE(cod_animal), cod_veterinar NUMBER(5)
REFERENCES VETERINARI(cod_veterinar), CONSTRAINT ck4 CHECK
(cod_animal IS NOT NULL), CONSTRAINT ck5 CHECK (cod_veterinar IS NOT
NULL) )

Fig.6 Crearea tabelei CONSULTATII

ACTUALIZAREA STRUCTURII TABELELOR

1. Cerina: S se modifice lungimea cmpului greutate din tabela ANIMALE


astfel nct aceasta s fie de 5 caractere, dintre care : o virgul, dou
caractere dupa virgul si nc dou nainte de virgul.
ALTER TABLE ANIMALE MODIFY (greutate NUMBER(5,2))
nainte de executarea scriptului:

Dup executarea scriptului:

Fig.7 Modificarea cmpului greutate


2. Cerina: S se adauge n tabela CONSULTAII un cmp nou numit
tratament de tip VARCHAR2(50).
ALTER TABLE CONSULTATII ADD (tratament VARCHAR2(50))
nainte de executarea scriptului:

Dup executarea scriptului:

Fig.8 Adugarea coloanei tratament


3. Cerina: S se modifice coloana cod_donator din tabela ANIMALE astfel
nct aceasta s nu poat lua valori NULL.
ALTER TABLE ANIMALE MODIFY cod_donator NOT NULL
nainte de executarea scriptului

Dup executarea scriptului:

Fig.9 Adugarea restriciei NOT NULL


4. Cerina: S se tearg cmpul tratament din tabela CONSULTAII.
ALTER TABLE CONSULTATII DROP COLUMN tratament
nainte de executarea scriptului:

Dup executarea scriptului:

Fig.10 tergerea coloanei tratament


5. Cerina: S se adauge o restricie cmpului adresa_v din tabela
VETERINARI astfel nct acesta s conin cuvntul bucuresti i apoi s
se dezactiveze aceast restricie.

ALTER TABLE VETERINARI ADD CONSTRAINT r2 CHECK (LOWER(adresa_v)


LIKE '%bucuresti%')
Dup executarea scriptului, dac dorim s introducem o nregistrare nou
n tabela VETERINARI care nu conine cuvntul bucuresti n cmpul
adresa_v, va aprea o eroare:

Fig.11- Adugarea unei restricii check


ALTER TABLE VETERINARI MODIFY CONSTRAINT r2 DISABLE;
6. Cerina: S se adauge o restricie de tip NOT NULL cu numele restrictie
cmpului adresa_a din tabela ADOPTANTI, sa se redenumeasc aceast
restricie n restr_adres i apoi s se tearg aceast restricie nouadugat.
ALTER TABLE ADOPTANTI ADD CONSTRAINT restrictie CHECK (adresa_a IS
NOT NULL)
Dup executarea scriptului, dac dorim s introducem o nregistrare nou
n tabela ADOPTANTI i voi lsa cmpul adresa_a necompletat, va aprea o
eroare:

Fig.12 Adugarea unei restricii de tip NOT NULL


Redenumirea restriciei:
ALTER TABLE ADOPTANTI RENAME CONSTRAINT restrictie TO restr_adresa
tergerea restriciei restr_adres:
ALTER TABLE ADOPTANTI DROP CONSTRAINT restr_adresa
7. Cerina: S se tearg cmpul data_nasterii din tabela ANIMALE.
nainte de executarea scriptului:

Dup executarea scriptului:

Fig.13 tergerea cmpului data_nasterii

ADUGAREA NREGISTRRILOR N TABELE


1. Tabela DONATORI
INSERT INTO DONATORI VALUES (2000, 'Stancu', 'Andrei', 'Bvd Unirii nr 13
Bucuresti', 'andrei.stancu@gmail.com', '0721234128')
INSERT INTO DONATORI VALUES (2001, 'Grigore', 'Mihai', 'Bvd Aviatorilor nr 9
Bucuresti', 'grigore.m@gmail.com', '0723456509')

INSERT INTO DONATORI VALUES (2002, 'Enache', 'Ana', 'Strada Independentei


nr 19 Bucuresti', 'anaenache@yahoo.com', '0768675123')
INSERT INTO DONATORI VALUES (2003, 'Popa', 'Gabriel', 'Strada Dreptatii nr 19
Bucuresti', 'gabrielpopa@yahoo.com', '0751876543')
INSERT INTO DONATORI VALUES (2004, 'Rus', 'Claudia', 'Bvd 1 Decembrie
1918 nr 5 Brasov', 'claurus@yahoo.com', '0754776683')
INSERT INTO DONATORI VALUES (2005, 'Ianc', 'Lavinia', 'Bvd Magheru nr 5
Iasi', 'lavinia@aiesec.org', '0754976682')
INSERT INTO DONATORI VALUES (2006, 'Enache', 'Andrei', 'Strada Aviatiei nr
19 Bucuresti', 'enacheandrei@yahoo.com', '0768674123')
INSERT INTO DONATORI VALUES (2007, 'Ruben', 'Claudiu', 'Bvd Armatei nr 5
Brasov', 'clauruben@yahoo.com', '0753556789')
INSERT INTO DONATORI VALUES (2008, 'Morariu', 'Teodora', 'Bvd Protos nr 51
Iasi', 'teodora@aiesec.org', '0750786611')
INSERT INTO DONATORI VALUES (2009, 'Enache', 'Claudia', 'Bvd 1 Decembrie
1918 nr 5 Brasov', 'clauenache@yahoo.com', '0750566666')
INSERT INTO DONATORI VALUES (2010, 'Enache', 'Remus', 'Strada 24 Ianuarie
nr 19 Bucuresti', 'remusenache@yahoo.com', '0768675001')
INSERT INTO DONATORI VALUES (2011, 'Ianc', 'Madalina', 'Bvd Galati nr 5 Iasi',
'madalina@aiesec.org', '0754770081')
INSERT INTO DONATORI VALUES (2012, 'Oprea', 'Mihai', 'Strada Oituz nr 12
Iasi', 'oprea@gmail.com', '0767890100')
INSERT INTO DONATORI VALUES (2013, 'Neag', 'Ciprian', 'Strada Oituz nr 15
Iasi', 'neagc@gmail.com', '0765678901')
INSERT INTO DONATORI VALUES (2014, 'Abos', 'Roxana', 'Bvd Pache
protopopescu nr 3 Bucuresti', 'abos_roxana@aiesec.org', '0765129063')
n urma executrii comenzilor de inserare a datelor, tabela DONATORI
conine urmtoarele nregistrri:

Fig.14 Inserarea datelor in tabela DONATORI

2. Tabela ADOPTANTI
INSERT INTO ADOPTANTI VALUES (3000, 'Stoica', 'Marian', 'Strada Trandafirilor nr
45 Bucuresti','stoicam@yahoo.com','0765872234')
INSERT INTO ADOPTANTI VALUES (3001, 'Birsan', 'Alexandru',NULL,
'alex.birsan@yahoo.com', '0765432190)
INSERT INTO ADOPTANTI VALUES (3002, 'Andritoiu', 'Catalin', NULL,
'acatalin@yahoo.com', '0723120986')
INSERT INTO ADOPTANTI VALUES (3003, 'Suman', 'Andreea', NULL,
'sumanandreea@yahoo.com', '0762098765')
INSERT INTO ADOPTANTI VALUES (3004, 'Stoica', 'Andrei', 'Strada Papadiilor nr 43
Bucuresti', 'stoicaandrei@yahoo.com','0765850999')
INSERT INTO ADOPTANTI VALUES (3005, 'Sandu', 'Cezara', 'Strada Maracineanu nr
7 Brasov', 'cezarasandu@gmail.com', '0756239871')
INSERT INTO ADOPTANTI VALUES (3006, 'Dorobat', 'Alexandru', 'Bvd Dacia nr 38
Bucuresti', 'dorobat@yahoo.com','0720009008')
INSERT INTO ADOPTANTI VALUES (3007, 'Constantinescu', 'Adina', NULL,
'adinaconst@gmail.com', '0757503519')
INSERT INTO ADOPTANTI VALUES (3008, 'Coles', 'Andrei', 'Strada Mihail Moxa nr 1
Brasov', 'coles_andrei@gmail.com', '0720598264')
INSERT INTO ADOPTANTI VALUES (3009, 'Popescu', 'Marius', 'Strada Saturn nr 10
Bucuresti', 'popescumarius@yahoo.com', '0741112113')

INSERT INTO ADOPTANTI VALUES (3010, 'Salavastru', 'Ovidiu', 'Strada Maracinelor


nr 75 Iasi', 'sovidiu@gmail.com', '0750700213')
INSERT INTO ADOPTANTI VALUES (3011, 'Onuta', 'Ramona', 'Strada Neptun nr 80
Brasov', 'onutar@gmail.com', '0750999873')
INSERT INTO ADOPTANTI VALUES (3012, 'Damian', 'Natalia', 'Strada Gorjului nr 65
Iasi', 'natalia_damian@gmail.com', '0729987654')
INSERT INTO ADOPTANTI VALUES (3013, 'Dragota', 'Corina', 'Strada Timisorenilor
nr 47 Brasov', 'dragotacorina@gmail.com', '0743933277')
INSERT INTO ADOPTANTI VALUES (3014, 'Serbu', 'Ionut', 'Strada Rozelor nr 40
Bucuresti', 'serbui@yahoo.com','0765876665')
n urma executrii comenzilor de inserare a datelor, tabela ADOPTANTI conine
urmtoarele nregistrri:

Fig.15 Inserarea datelor n tabela ADOPTANTI

3. Tabela VETERINARI
INSERT INTO VETERINARI VALUES(4000, 'Abusan', 'Alexandru', NULL,
'abusanandrei@gmail.com','0765654391')
INSERT INTO VETERINARI VALUES(4001, 'Borcea', 'Cristian', 'Bvd
Independentei nr 12 Sibiu', 'borcea_cris@gmail.com','0762652000')
INSERT INTO VETERINARI VALUES(4002, 'Cristea', 'Andrei', 'Bvd Magheru nr 2
Sibiu', 'cristea_andrei@gmail.com' ,'0726700901')

INSERT INTO VETERINARI VALUES(4003, 'Paraschiv', 'Remus', 'Bvd Stefan cel


Mare nr 28 Sibiu', 'remus_paraschiv@gmail.com','0720120891')
INSERT INTO VETERINARI VALUES(4004, 'Cercel', 'Mihaela', 'Bvd Lascar
Catargiu nr 49 Bucuresti', 'cercel_miha@gmail.com','0732671205')
INSERT INTO VETERINARI VALUES(4005, 'Pop', 'Robert', NULL,
'pop_robert@gmail.com', '0739871520')
INSERT INTO VETERINARI VALUES(4006, 'Moraru', 'Iulian', 'Strada Aviatorilor nr
47 Iasi', 'abusanandrei@gmail.com','0757601832')
INSERT INTO VETERINARI VALUES(4007, 'Pencea', 'Radu', 'Bvd Urzicii nr 90
Sibiu', 'pencea_adu@yahoo.com','0751042050')
INSERT INTO VETERINARI VALUES(4008, 'Negru', 'Irina', NULL,
'irina.negru@yahoo.com','0730496238')
INSERT INTO VETERINARI VALUES(4009, 'Ignat', 'Madalina', 'Strada Mihai
Eminescu nr 22 Brasov', 'mada.ignat@yahoo.com','0721376199')
n urma executrii comenzilor de inserare a datelor, tabela VETERINARI
conine urmtoarele nregistrri:

Fig.16 Inserarea datelor n tabela VETERINARI


4. Tabela HRANA
INSERT INTO HRANA VALUES (5000, 'granulata', 20.5, 'Granulli')
INSERT INTO HRANA VALUES (5001, 'lichida', 30.5, 'Healthy-Pet')
INSERT INTO HRANA VALUES (5002, 'congelata', 40.5, 'Healthy-Pet')
INSERT INTO HRANA VALUES (5003, 'cu multivitamine', 100.5, 'Forzza')
INSERT INTO HRANA VALUES (5004, 'solida', 30.5, 'Healthy-Pet')
INSERT INTO HRANA VALUES (5005, 'uscata', 50.5, 'Your-Pet')
INSERT INTO HRANA VALUES (5006, 'conservata', 80.5, 'Healthy-Pet')

INSERT INTO HRANA VALUES (5007, 'gatita', 20.5, 'Your-Pet')


INSERT INTO HRANA VALUES (5008, 'bio', 30.5, 'Forzza')
INSERT INTO HRANA VALUES (5009, 'seminte', 30.5, 'Granulli')
n urma executrii comenzilor de inserare a datelor, tabela HRANA conine
urmtoarele nregistrri:

Fig.17 Inserarea datelor n tabela HRANA

5. Tabela ANIMALE
INSERT INTO ANIMALE VALUES (1000, 'caine', 5.6, 'm', 'negru', 2010, NULL, 5007)
INSERT INTO ANIMALE VALUES (1001, 'pisica', 2.3, 'f', 'alba', 2010, NULL, 5006)
INSERT INTO ANIMALE VALUES (1002, 'caine', 9.2, 'm', NULL, 2001, 3014, 5004)
INSERT INTO ANIMALE VALUES (1003, 'canar', 0.5, 'f', 'culori: galben si verde',
2003, NULL, 5009)
INSERT INTO ANIMALE VALUES (1004, 'hamster', 0.6, 'm', NULL, 2010, NULL,
5008)
INSERT INTO ANIMALE VALUES (1005, 'papagal', 0.4, 'm', 'culori:rosu si verde',
2010, NULL, 5007)
INSERT INTO ANIMALE VALUES (1006, 'caine', 4.5, 'f', NULL, 2000,3014,5002)

INSERT INTO ANIMALE VALUES (1007, 'pisica', 3.6, 'm', 'neagra', 2002, 3014,
5000)
INSERT INTO ANIMALE VALUES (1008, 'broasca', 1.6, 'f', NULL, 2004, 3008, 5001)
INSERT INTO ANIMALE VALUES (1009, 'hamster', 0.4, 'f', NULL, 2006, 3003, 5005)
INSERT INTO ANIMALE VALUES (1010, 'veverita', 2.2, 'm', NULL, 2012, 3010,
5004)
INSERT INTO ANIMALE VALUES (1011, 'caine', 7.6, 'f', 'alb, de talie inalta ', 2005,
3004, 5003)
INSERT INTO ANIMALE VALUES (1012, 'sarpe', 1.6, 'm', 'maro, cu pete galbene',
2007, 3000, 5005)
INSERT INTO ANIMALE VALUES (1013, 'veverita', 1.6, 'f', NULL, 2014, 3006, 5004)
INSERT INTO ANIMALE VALUES (1014, 'caine', 8.6, 'm', 'alb, latos', 2011, 3001,
5003)
INSERT INTO ANIMALE VALUES (1015, 'broasca', 1.3, 'f', NULL, 2009, 3002, 5001)
INSERT INTO ANIMALE VALUES (1016, 'sarpe', 1.1, 'f', 'negru, cu dungi gri', 2008,
3005, 5006)
INSERT INTO ANIMALE VALUES (1017, 'pisica', 10.1, 'm', 'gri inchis, cu ochii negri',
2013, 3007, 5006)
INSERT INTO ANIMALE VALUES (1018, 'canar', 0.3, 'f', 'maro deschis cu dungi
galbene', 2004, 3011, 5009)
INSERT INTO ANIMALE VALUES (1019, 'papagal', 0.7, 'm', 'are dungi rosii', 2004,
3009, 5009)
INSERT INTO ANIMALE VALUES (1020, 'hamster', 0.25, 'm', 'alb', 2007, 3013,
5000)
INSERT INTO ANIMALE VALUES (1021, 'sarpe', 1.12, 'f', 'negru cu dungi albe',
2000, 3012, 5001)
INSERT INTO ANIMALE VALUES (1022, 'pisica', 6.6, 'f', 'alba', 2000, 3005, 5000)

n urma executrii comenzilor de inserare a datelor, tabela ANIMALE conine


urmtoarele nregistrri:

Fig.18 Inserarea datelor n tabela ANIMALE

6. Tabela CONSULTATII
INSERT INTO CONSULTATII VALUES (6000,TO_DATE('15-NOI-2011','DD-MONYYYY') ,'leziune', 1001,4006)
INSERT INTO CONSULTATII VALUES (6001,TO_DATE('14-OCT-2011','DD-MONYYYY'),'plaga deschisa',1002,4003)
INSERT INTO CONSULTATII VALUES (6002,TO_DATE('01-NOI-2011','DD-MONYYYY'),'raie', 1010,4006)
INSERT INTO CONSULTATII VALUES (6003,TO_DATE('19-SEP-2011','DD-MONYYYY'),'leziune la aripa dreapta', 1005,4006)
INSERT INTO CONSULTATII VALUES (6004,TO_DATE('30-DEC-2011','DD-MONYYYY'),'arsura',1021,4003)
INSERT INTO CONSULTATII VALUES (6005, TO_DATE('05-SEP-2011','DD-MONYYYY'),'intoxicatie',1001,4000)
INSERT INTO CONSULTATII VALUES (6006, TO_DATE('27-AUG-2011','DD-MONYYYY'),'indigestie',1002,4006)
INSERT INTO CONSULTATII VALUES (6007, TO_DATE('20-SEP-2011','DD-MONYYYY'),'probleme cu vederea',1007,4009)

INSERT INTO CONSULTATII VALUES (6008, TO_DATE('08-AUG-2011','DD-MONYYYY'),'leziune la aripa stanga',1005,4001)


INSERT INTO CONSULTATII VALUES (6009,TO_DATE('30-NOI-2011','DD-MONYYYY'),'arsura', 1015,4003)
n urma executrii comenzilor de inserare a datelor, tabela CONSULTATII
conine urmtoarele nregistrri:

Fig.19 Inserarea datelor n tabela CONSULTATII

MODIFICAREA DATELOR

1. Cerina: S se ajusteze preul hranei care face parte din brand-ul


Granulli cu 10 lei.
UPDATE HRANA SET pret=pret+10 where lower(brand)='granulli'
naintea execuiei scriptului:

Dup execuia scriptului:

Fig.20 Modificarea pretului

2. Cerina: S se modifice codul de hrana al serpilor cu acel cod de hrana


care este reprezentativ pentru animalul cu codul 1008.
UPDATE ANIMALE SET cod_hrana=(SELECT cod_hrana from ANIMALE where
cod_animal =1008)
WHERE tip_animal='sarpe'
naintea execuiei scriptului:

Dup execuia scriptului:

Fig.21-Modificarea codului de hrana


3. Cerina: S se modifice emailul veterinarului cu codul 4007 cu
valoarea: pencea.radu@yahoo.com.
UPDATE VETERINARI SET email_v='pencea.radu@yahoo.com'
WHERE cod_veterinar=4007
nainte de executarea scriptului:

Dup executarea scriptului:

Fig.22 Modificarea emailului

4. S se modifice numele veterinarilor astfel nct s apar cu litere mari


pentru cei care au inut cel puin 2 consultaii.
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)
nainte de executarea scriptului:

Dup execuia scriptului:

Fig.23 Scrierea cu litere mari a unor date din anumite cmpuri


5. Cerina: 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
naintea execuiei scriptului:

Dup execuia scriptului:

Fig.24 Modificarea unui pre cu cel mai mic pre din tabela

INTEROGRI VARIATE
1. Cerina: S se afieze numele veterinarilor care au consultat animale,
codul consultaiilor asociate, precum i veterinarii care nu au participat la
nici o consultaie.
select v.nume_v, c.cod_consultatie
from veterinari v, consultatii c
where v.cod_veterinar=c.cod_veterinar(+)

Rezultat:

2. Cerina: S se afieze tipul hranei pentru animale n funcie de preul


acesteia, astfel:
- Dac preul este < 40, s se afieze: hran cu preuri mici
- Dac preul este ntre 40 i 80, s se afieze: hran cu preuri medii
- Dac preul este > 80, s se afieze: hran cu preuri 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
Rezultatul scriptului:

3. Cerina: S se afieze tipul animalelor in funie de tipul lor astfel:


- Dac tipul este caine, atunci s se afieze: cel mai bun prieten al omului
- Dac tipul este papagal, atunci s se afieze: animal care poate rosti
cuvinte
- Dac tipul este sarpe, s se afieze: animal relativ periculos
- Altfel s se afieze:alt tip de animal

select tip_animal, decode(tip_animal, 'caine', 'cel mai bun prieten al


omului','papagal','animal care poate rosti cuvinte','sarpe','animal relativ
periculos','alt tip de animal') as tipuri_de_animale
from animale
Rezultatul scriptului este:

4. Cerina: S se afieze cte uniti 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
Rezultatul scriptului:

5. Cerina: S se afieze adoptanii n funcie de reeaua de telefonie mobil


din care fac parte, astfel: Adoptantul nume poate fi in reteaua Orange
(dac numrul de telefon ncepe cu 074 sau 075) /Cosmote( dac numrul
de telefon ncepe cu 076)/Vodafone(dac numrul de telefon ncepe cu 072
sau 073).
select 'Adoptantul '||nume_a||' este in reteaua de telefonie mobila Orange' AS
RETEA
from adoptanti
where telefon_a LIKE ('075%') or telefon_a LIKE('074%')
UNION
select 'Adoptantul '||nume_a||' este in reteaua de telefonie mobila Vodafone' AS
RETEA
from adoptanti
where telefon_a LIKE ('072%') OR telefon_a LIKE ('073%')
UNION
select 'Adoptantul '||nume_a||' este in reteaua de telefonie mobila Cosmote' AS
RETEA
from adoptanti
where telefon_a LIKE ('076%')
UNION
select 'Adoptantul '||nume_a||' este intr-o reteaua de telefonie necunoscuta' AS
RETEA
from adoptanti
where telefon_a LIKE ('071%') or telefon_a LIKE('077%') OR telefon_a LIKE
('078%') or telefon_a LIKE ('079%')
Rezultatul scriptului:

6. Cerina: S se afieze codul si descrierea animalelor consultate,


diagnosticul consultatiilor si numele veterinarilor care le-au consultat
pentru animalele care au greutatea<6.00 kg i care sunt de sexul feminin.
select a.cod_animal, a.tip_animal, a.sex,a.greutate, c.diagnostic, v.nume_v
from animale a, consultatii c, veterinari v
where a.cod_animal=c.cod_animal and c.cod_veterinar=v.cod_veterinar and
greutate<6.00
INTERSECT
select a.cod_animal, a.tip_animal, a.sex,a.greutate, c.diagnostic, v.nume_v
from animale a, consultatii c, veterinari v
where a.cod_animal=c.cod_animal and c.cod_veterinar=v.cod_veterinar AND
a.sex='f'
Rezultatul scriptului:

7. Cerina: S se afieze data consultatiei, diagnosticul si numele


veterinarului care a dat diagnosticul a consultatiilor care au avut loc n
anul 2011, exceptndu-le pe cele care au avut loc n luna martie a anului
2011.
select c.data_consultatiei, c.diagnostic, v.nume_v from consultatii c, veterinari v
where v.cod_veterinar=c.cod_veterinar and extract(year from
data_consultatiei)=2011
MINUS
select c.data_consultatiei, c.diagnostic, v.nume_v from consultatii c, veterinari v
where v.cod_veterinar=c.cod_veterinar and extract(month from
data_consultatiei)=08
Rezultatul scriptului:

8. Cerina: S se afieze 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.cod_hrana=h.cod_hrana
group by h.tip_hrana
Rezultatul scriptului:

9. Cerina: 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.cod_donator=d.cod_donator
and nume_d=(select nume_d from donatori
where cod_donator=2002)
Rezultatul scriptului:

10.Cerina: S se afieze numrul donatorilor care au donat acelai tip de


animal doar pentru tipurile de animale care au fost donate de minim 3 ori.
select count(cod_donator) as Nr_donatori, tip_animal
from animale
group by tip_animal
having count(cod_donator)>=3
Rezultatul scriptului:

11.Cerina: 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)
Rezultatul scriptului:

12.Cerina: Sa se afiseze toate animalele a caror greutate este mai mica


decat cea mai mare greutate a canarilor.
select cod_animal, tip_animal, greutate from animale
where greutate<ANY(select greutate from animale where tip_animal='canar')
Rezultatul scriptului:

13.Cerina: S se afieze codul, data si diagnosticul consultatiilor care au fost


realizate dup ce s-a realizat consultaia cu codul 6003.
select cod_consultatie, data_consultatiei, diagnostic from consultatii
where data_consultatiei>(select data_consultatiei from consultatii
where cod_consultatie=6003)
Rezultatul scriptului:

14.Cerina: S se afieze numele i prenumele veterinarilor i numrul


consultaiilor pe care fiecare le-a efectuat.
select cod_veterinar, count(cod_consultatie) as Nr_consultatii
from consultatii
group by cod_veterinar
Rezultatul scriptului:

15.Cerina: S se afieze codul veterinarului care a realizat cele mai multe


consultaii.
select cod_veterinar
from consultatii
group by cod_veterinar
having count(cod_consultatie)=(select max(count(cod_consultatie)) from
consultatii
group by cod_veterinar)
Rezultatul scriptului:

GESTIUNEA ALTOR OBIECTE ALE BAZEI DE DATE


VIZIUNI
1. Cerina: S se creeze o tabela virtual care s conin toate informaiile cinilor
donai n adpostul pentru animale.
create view nume1 as select * from animale
where tip_animal='caine'
Rezultatul scriptului:

2. Cerina: S se creeze o tabel virtual care s conin tipul animalelor i numele


veterinarilor care le-au consultat, doar pentru animalele care au fost consultate i
au cmpul descriere not null; s se ordoneze cresctor dup numele animalelor
iar permisiunea acestei tabele s fie doar n scopul vizualizrii datelor.
create view numel as select a.tip_animal,a.descriere,c.cod_veterinar
from animale a JOIN consultatii c ON(a.cod_animal=c.cod_animal)
where a.descriere is not null
order by tip_animal
with read only
Rezultatul scriptului:

INDECI
1. Cerina: S se creeze un index pentru facilitarea accesului la preturile
hranei.
CREATE INDEX index1 on HRANA(pret)
Rezultatul scriptului:

2. Cerina: S se creeze un index pentru facilitarea accesului la numrul de


telefon al adoptanilor.
CREATE INDEX index2 ON ADOPTANTI(telefon_a)
Rezultatul scriptului:

3. Cerina: S se creeze un index pentru facilitarea accesului la numrul de


telefon al donatorilor.
CREATE INDEX index3 ON donatori(telefon_d)
Rezultatul scriptului:

SINONIME
1. Cerina: S se creeze un sinonim anim pentru tabela ANIMALE, s se
interogheze aceast tabel utiliznd sinonimul creat i apoi s se tearg
sinonimul anim.
CREATE SYNONYM anim FOR ANIMALE
SELECT cod_animal, tip_animal
FROM anim

DROP SYONYM anim


2. Cerina: S se creeze un sinonim vet pentru tabela VETERINARI, s se
interogheze aceast tabel utiliznd sinonimul creat i apoi s se tearg
sinonimul vet.
CREATE SYNONYM vet FOR VETERINARI
SELECT cod_veterinar, nume_v, prenume_v
FROM vet
DROP SYNONYM vet
SECVENE
1. Cerina: S se creeze o secven care s aib valoarea de nceput 40,
valoarea maxim 110. S se incrementeze cu pasul 1 i s nu cicleze.
create sequence secventa
start with 40
increment by 1
maxvalue 110
nocycle
Rezultatul scriptului:

2. Cerina: S se modifice secventa astfel nct pasul de incrementare s fie


2.
alter sequence secventa increment by 2
Rezultatul scriptului:

3. Cerina: S se foloseasc pentru adugarea unei nregistrri n tabela


HRAN.
INSERT INTO HRANA(cod_hrana, pret) VALUES(5010, secventa.nextval)
Rezultatul scriptului:

REALIZAREA DE FORMULARE I RAPOARTE N VISUAL FOXPRO


La inceput, am creat cele doua tabele ntre care am realizat formularul i
raportul: Tabelul veterinari i tabelul consultaii.
Formularul realizat prin One-To-Many Form Wizard

Raportul creat prin Report Wizard

You might also like