Academia de Studii Economice, Facultatea de Cibernetica, Statistica si Informatica Economica
BAZE DE DATE 2012 Proiect
Suciu Adina, grupa 1036, seria D
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. În acest adăpost: – – – – – –
– –
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. TABELA ANIMALE
Câmp
Tip
Restricții
Comentarii
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)
Foreign Key, Not Null
Cheie externa catre tabela DONATORI; fiecare animal trebuie sa aiba un donator
cod_adoptan t
NUMBER(5)
Foreign Key
Cheie externa catre tabela ADOPTANTI; daca e Null, inseamna ca animalul nu a fost adoptat
cod_hrana
NUMBER(5)
Foreign Key
Cheie externa catre tabela HRANA
TABELA DONATORI Câmp
Tip
Restricții
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)
Check
telefon_d
VARCHAR2( 15)
Not Null
Comentarii
Trebuie sa aiba forma: “%@%.%”
TABELA ADOPTANTI Câmp
Tip
Restricţii
Comentarii
cod_adoptan t
NUMBER(5)
Primary Key
nume_a
VARCHAR2( 15)
Not Null
prenume_a
VARCHAR2( 20)
Not Null
adresa_a
VARCHAR2( 50)
email_a
VARCHAR2( 30)
Check
telefon_a
VARCHAR2( 15)
Not Null
Trebuie sa aiba forma: “%@%.%”
TABELA HRANA Câmp
Tip
cod_hrana
NUMBER(5)
tip_hrana
VARCHAR2( 20)
pret
NUMBER(6, 2)
brand
VARCHAR2( 15)
Restricţii
Comentarii
Primary Key
Not Null
TABELA VETERINARI Câmp
Tip
cod_veterina r
NUMBER(5)
Restricţii
Comentarii
Primary Key
nume_v
VARCHAR2( 15)
Not Null
prenume_v
VARCHAR2( 20)
Not Null
adresa_v
VARCHAR2( 50)
email_v
VARCHAR2( 30)
Check
Trebuie sa aiba forma: “%@%.%”
telefon_v
VARCHAR2( 15) TABELA CONSULTATII
Câmp
Tip
Restricţii
cod_consultat ie
NUMBER(5)
Primary Key
data_consulta tie
DATE
Not Null
Comentarii
diagnostic
VARCHAR2( 30)
cod_animal
NUMBER(5)
Foreign Key, Not Null
Cheie externa catre tabela ANIMALE
cod_veterinar
NUMBER(5)
Foreign Key, Not Null
Cheie externa catre tabela VETERINARI
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 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. Cerinţa: Să se modifice lungimea câmpului greutate din tabela ANIMALE astfel încât 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 câmpului greutate” 2. Cerinţa: Să se adauge în tabela CONSULTAŢII un câmp nou numit “tratament” de tip VARCHAR2(50). ALTER TABLE CONSULTATII ADD (tratament VARCHAR2(50))
Înainte de executarea scriptului:
După executarea scriptului:
Fig.8 – “Adăugarea coloanei tratament”
3. Cerinţa: Să se modifice coloana cod_donator din tabela ANIMALE astfel încât aceasta să nu poată lua valori NULL. ALTER TABLE ANIMALE MODIFY cod_donator NOT NULL Înainte de executarea scriptului
După executarea scriptului:
Fig.9 – “Adăugarea restricţiei NOT NULL” 4. Cerinţa: Să se şteargă câmpul “tratament” din tabela CONSULTAŢII. ALTER TABLE CONSULTATII DROP COLUMN tratament Înainte de executarea scriptului:
După executarea scriptului:
Fig.10 – “Ştergerea coloanei tratament”
5. Cerinţa: Să se adauge o restricţie câmpului adresa_v din tabela VETERINARI astfel încât acesta să conţină cuvântul “bucuresti” şi apoi să se dezactiveze această restricţie. 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 conține cuvântul “bucuresti” în câmpul adresa_v, va apărea o eroare:
Fig.11- “Adăugarea unei restricții check” ALTER TABLE VETERINARI MODIFY CONSTRAINT r2 DISABLE;
6. Cerința: Să se adauge o restricție de tip NOT NULL cu numele “restrictie” câmpului adresa_a din tabela ADOPTANTI, sa se redenumească această restricție în restr_adresă și apoi să se șteargă această restricție nouadăugată. 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 lăsa câmpul adresa_a necompletat, va apărea o eroare:
Fig.12 – “Adăugarea unei restricții de tip NOT NULL” Redenumirea restricției: ALTER TABLE ADOPTANTI RENAME CONSTRAINT restrictie TO restr_adresa Ștergerea restricției restr_adresă: ALTER TABLE ADOPTANTI DROP CONSTRAINT restr_adresa 7. Cerința: Să se șteargă câmpul data_nasterii din tabela ANIMALE. Înainte de executarea scriptului:
După executarea scriptului:
Fig.13 – “Ștergerea câmpului data_nasterii”
ADĂUGAREA ÎNREGISTRĂRILOR ÎN TABELE
1. Tabela DONATORI INSERT INTO DONATORI VALUES (2000, 'Stancu', 'Andrei', 'Bvd Unirii nr 13 Bucuresti', '
[email protected]', '0721234128') INSERT INTO DONATORI VALUES (2001, 'Grigore', 'Mihai', 'Bvd Aviatorilor nr 9 Bucuresti', '
[email protected]', '0723456509') INSERT INTO DONATORI VALUES (2002, 'Enache', 'Ana', 'Strada Independentei nr 19 Bucuresti', '
[email protected]', '0768675123') INSERT INTO DONATORI VALUES (2003, 'Popa', 'Gabriel', 'Strada Dreptatii nr 19 Bucuresti', '
[email protected]', '0751876543') INSERT INTO DONATORI VALUES (2004, 'Rus', 'Claudia', 'Bvd 1 Decembrie 1918 nr 5 Brasov', '
[email protected]', '0754776683') INSERT INTO DONATORI VALUES (2005, 'Ianc', 'Lavinia', 'Bvd Magheru nr 5 Iasi', '
[email protected]', '0754976682') INSERT INTO DONATORI VALUES (2006, 'Enache', 'Andrei', 'Strada Aviatiei nr 19 Bucuresti', '
[email protected]', '0768674123')
INSERT INTO DONATORI VALUES (2007, 'Ruben', 'Claudiu', 'Bvd Armatei nr 5 Brasov', '
[email protected]', '0753556789') INSERT INTO DONATORI VALUES (2008, 'Morariu', 'Teodora', 'Bvd Protos nr 51 Iasi', '
[email protected]', '0750786611') INSERT INTO DONATORI VALUES (2009, 'Enache', 'Claudia', 'Bvd 1 Decembrie 1918 nr 5 Brasov', '
[email protected]', '0750566666') INSERT INTO DONATORI VALUES (2010, 'Enache', 'Remus', 'Strada 24 Ianuarie nr 19 Bucuresti', '
[email protected]', '0768675001') INSERT INTO DONATORI VALUES (2011, 'Ianc', 'Madalina', 'Bvd Galati nr 5 Iasi', '
[email protected]', '0754770081') INSERT INTO DONATORI VALUES (2012, 'Oprea', 'Mihai', 'Strada Oituz nr 12 Iasi', '
[email protected]', '0767890100') INSERT INTO DONATORI VALUES (2013, 'Neag', 'Ciprian', 'Strada Oituz nr 15 Iasi', '
[email protected]', '0765678901') INSERT INTO DONATORI VALUES (2014, 'Abos', 'Roxana', 'Bvd Pache protopopescu nr 3 Bucuresti', '
[email protected]', '0765129063') În urma executării comenzilor de inserare a datelor, tabela DONATORI conține următoarele înregistrări:
Fig.14 – “Inserarea datelor in tabela DONATORI”
2. Tabela ADOPTANTI
INSERT INTO ADOPTANTI VALUES (3000, 'Stoica', 'Marian', 'Strada Trandafirilor nr 45 Bucuresti','
[email protected]','0765872234') INSERT INTO ADOPTANTI VALUES (3001, 'Birsan', 'Alexandru',NULL, '
[email protected]', '0765432190’) INSERT INTO ADOPTANTI VALUES (3002, 'Andritoiu', 'Catalin', NULL, '
[email protected]', '0723120986') INSERT INTO ADOPTANTI VALUES (3003, 'Suman', 'Andreea', NULL, '
[email protected]', '0762098765') INSERT INTO ADOPTANTI VALUES (3004, 'Stoica', 'Andrei', 'Strada Papadiilor nr 43 Bucuresti', '
[email protected]','0765850999') INSERT INTO ADOPTANTI VALUES (3005, 'Sandu', 'Cezara', 'Strada Maracineanu nr 7 Brasov', '
[email protected]', '0756239871') INSERT INTO ADOPTANTI VALUES (3006, 'Dorobat', 'Alexandru', 'Bvd Dacia nr 38 Bucuresti', '
[email protected]','0720009008') INSERT INTO ADOPTANTI VALUES (3007, 'Constantinescu', 'Adina', NULL, '
[email protected]', '0757503519') INSERT INTO ADOPTANTI VALUES (3008, 'Coles', 'Andrei', 'Strada Mihail Moxa nr 1 Brasov', '
[email protected]', '0720598264') INSERT INTO ADOPTANTI VALUES (3009, 'Popescu', 'Marius', 'Strada Saturn nr 10 Bucuresti', '
[email protected]', '0741112113') INSERT INTO ADOPTANTI VALUES (3010, 'Salavastru', 'Ovidiu', 'Strada Maracinelor nr 75 Iasi', '
[email protected]', '0750700213') INSERT INTO ADOPTANTI VALUES (3011, 'Onuta', 'Ramona', 'Strada Neptun nr 80 Brasov', '
[email protected]', '0750999873') INSERT INTO ADOPTANTI VALUES (3012, 'Damian', 'Natalia', 'Strada Gorjului nr 65 Iasi', '
[email protected]', '0729987654') INSERT INTO ADOPTANTI VALUES (3013, 'Dragota', 'Corina', 'Strada Timisorenilor nr 47 Brasov', '
[email protected]', '0743933277') INSERT INTO ADOPTANTI VALUES (3014, 'Serbu', 'Ionut', 'Strada Rozelor nr 40 Bucuresti', '
[email protected]','0765876665') În urma executării comenzilor de inserare a datelor, tabela ADOPTANTI conține următoarele înregistrări:
Fig.15 – “Inserarea datelor în tabela ADOPTANTI”
3. Tabela VETERINARI INSERT INTO VETERINARI VALUES(4000, 'Abusan', 'Alexandru', NULL, '
[email protected]','0765654391') INSERT INTO VETERINARI VALUES(4001, 'Borcea', 'Cristian', 'Bvd Independentei nr 12 Sibiu', '
[email protected]','0762652000') INSERT INTO VETERINARI VALUES(4002, 'Cristea', 'Andrei', 'Bvd Magheru nr 2 Sibiu', '
[email protected]' ,'0726700901') INSERT INTO VETERINARI VALUES(4003, 'Paraschiv', 'Remus', 'Bvd Stefan cel Mare nr 28 Sibiu', '
[email protected]','0720120891') INSERT INTO VETERINARI VALUES(4004, 'Cercel', 'Mihaela', 'Bvd Lascar Catargiu nr 49 Bucuresti', '
[email protected]','0732671205') INSERT INTO VETERINARI VALUES(4005, 'Pop', 'Robert', NULL, '
[email protected]', '0739871520') INSERT INTO VETERINARI VALUES(4006, 'Moraru', 'Iulian', 'Strada Aviatorilor nr 47 Iasi', '
[email protected]','0757601832') INSERT INTO VETERINARI VALUES(4007, 'Pencea', 'Radu', 'Bvd Urzicii nr 90 Sibiu', '
[email protected]','0751042050')
INSERT INTO VETERINARI VALUES(4008, 'Negru', 'Irina', NULL, '
[email protected]','0730496238') INSERT INTO VETERINARI VALUES(4009, 'Ignat', 'Madalina', 'Strada Mihai Eminescu nr 22 Brasov', '
[email protected]','0721376199') În urma executării comenzilor de inserare a datelor, tabela VETERINARI conține următoarele înregistrări:
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 executării comenzilor de inserare a datelor, tabela HRANA conține următoarele înregistrări:
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 executării comenzilor de inserare a datelor, tabela ANIMALE conține următoarele înregistrări:
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 executării comenzilor de inserare a datelor, tabela CONSULTATII conține următoarele înregistrări:
Fig.19 – “Inserarea datelor în tabela CONSULTATII”
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' Înaintea execuției scriptului:
După execuția scriptului:
Fig.20 – “Modificarea pretului”
2. Cerința: 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 execuției scriptului:
După execuția scriptului:
Fig.21-“Modificarea codului de hrana”
3. Cerința: Să se modifice emailul veterinarului cu codul 4007 cu valoarea: ‘
[email protected]’. UPDATE VETERINARI SET email_v='
[email protected]' WHERE cod_veterinar=4007 Înainte de executarea scriptului:
După executarea scriptului:
Fig.22 – “Modificarea emailului”
4. 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) Înainte de executarea scriptului:
După execuția scriptului:
Fig.23 – „Scrierea cu litere mari a unor date din anumite câmpuri” 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 înaintea execuției scriptului:
După execuția scriptului:
Fig.24 – “Modificarea unui preț cu cel mai mic preț din tabela”
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(+)
Rezultat:
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 Rezultatul scriptului:
1. Cerința: Să se afișeze tipul animalelor in funție de tipul lor astfel: – Dacă tipul este caine, atunci să se afișeze: cel mai bun prieten al omului – Dacă tipul este papagal, atunci să se afișeze: animal care poate rosti cuvinte – Dacă tipul este sarpe, să se afișeze: animal relativ periculos – Altfel să se afișeze: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:
1. 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 Rezultatul scriptului:
2. Cerința: Să se afișeze adoptanții în funcție de rețeaua de telefonie mobilă din care fac parte, astfel: Adoptantul nume poate fi in reteaua Orange (dacă numărul de telefon începe cu 074 sau 075) /Cosmote( dacă numărul de telefon începe cu 076)/Vodafone(dacă numărul 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:
3. Cerința: Să se afișeze 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:
4. Cerința: Să se afișeze data consultatiei, diagnosticul si numele veterinarului care a dat diagnosticul a consultatiilor care au avut loc în anul 2011, exceptându-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:
5. 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.cod_hrana=h.cod_hrana group by h.tip_hrana Rezultatul scriptului:
6. 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.cod_donator=d.cod_donator and nume_d=(select nume_d from donatori where cod_donator=2002) Rezultatul scriptului:
7. 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 3 ori. select count(cod_donator) as Nr_donatori, tip_animal from animale group by tip_animal having count(cod_donator)>=3 Rezultatul scriptului:
8. 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) Rezultatul scriptului:
9. Cerința: 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
10.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 cod_consultatie=6003) Rezultatul scriptului:
11.Cerința: Să se afișeze numele și prenumele veterinarilor și numărul consultațiilor pe care fiecare le-a efectuat. select cod_veterinar, count(cod_consultatie) as Nr_consultatii from consultatii group by cod_veterinar Rezultatul scriptului:
12.Cerința: Să se afișeze codul veterinarului care a realizat cele mai multe consultații. 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. 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' Rezultatul scriptului:
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.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:
INDECȘI 1. Cerința: Să se creeze un index pentru facilitarea accesului la preturile hranei. CREATE INDEX index1 on HRANA(pret) Rezultatul scriptului:
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) Rezultatul scriptului:
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) Rezultatul scriptului:
SINONIME 1. Cerința: Să se creeze un sinonim “anim” pentru tabela ANIMALE, să se interogheze această tabelă utilizând 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. Cerința: Să se creeze un sinonim “vet” pentru tabela VETERINARI, să se interogheze această tabelă utilizând 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 SECVENȚE 1. Cerința: 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. Cerința: Să se modifice secventa astfel încât pasul de incrementare să fie 2. alter sequence secventa increment by 2 Rezultatul scriptului:
3. Cerința: Să se folosească pentru adăugarea unei înregistrări î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 consultații. Formularul – realizat prin One-To-Many Form Wizard
Raportul – creat prin Report Wizard