Sunteți pe pagina 1din 27

Facultatea de Antreprenoriat, Ingineria si Managementul Afacerii

PROIECT BAZA DE DATE A UNUI DEPOZIT DE


FLORI

R. Iulia

Grupa: 1531E
ETAPA 1

1. Descrierea temei

In acest proiect urmeaza sa creez o baza de date a unui depozit de flori, importate din Olanda,
cu sediul in Bucuresti care vinde atat persoanelor fizice cat si a celor juridice.

Depozitul poate prelua comenzi in avans (doar in cazul persoanelor juridice), dar se poate
face si vanzare fizica la sediu (in cazul persoanelor juridice si fizice, in functie de stoc).

Firma colaboreaza cu foarte mule pepiniere din Olanda, fiind plasate comenzi
telefonice/online(e-mail) la acestea de catre depozitul nostru.

Firma detine contracte de amenajari gradini, parcuri, sedii etc. cu diverse companii sau
institutii de stat.

2. Motivul alegerii temei

Motivul pentru care am ales sa creez o baza de date a unui depozit de flori este pentru ca imi
plac foarte mult florile si pot lucra cu drag la acest proiect. Pe scurt: putem imbina utilul cu
placutul. In plus, imi place sa fiu organizata, asa ca mi-am ales aceasta tema deoarece consider
ca orice firma din acest domeniu ar trebui sa aiba una, pentru a simplifica munca angajatilor, dar
si a clientilor. Astfel, clientii pot fi mai usor informati despre stocul de produse, acesta fiind
actualizat continuu, cu o corectitudine de aproximativ 99%, iar angajatii isi usureaza munca
nefiind nevoiti sa tina evidenta pe hartie.

3. Tabelele componente ale bazei de date

In acest proiect voi avea 5 tabele:

a. Stocul produselor

Cod produs Denumire Cantitate PRET fara Valoare Pret cu


produs TVA TVA TVA
b. Facturi

Nr. Denumire Data Data Pret Valoare Pret


factura client Facturii scadenta fara TVA cu
TVA TVA

c. Comenzi clienti

Nr Denumire Adresa Telefon Cod Cantitate Pret


comanda client produs cu
TVA

d. Evidenta firme partenere Olanda

Nr.crt Denumire firma Telefon E-mail

e. Evidenta clienti

Nr.crt. Nume si Prenume Telefon E-mail

4. Legaturi intre tabele:


- Cantitatea de produse se va scadea automat din stoc pe masura ce sunt efectuate comenzi
- Stocul se va modifica in functie de tabelul de comenzi deoarece acolo se vor trece si
comanzile online si comenzile fizice.
- Clientul poate comanda produse cu diferite coduri, iar toate acestea vor avea un singur
numar de comanda.
- Toate comenzile trebuie sa aiba denumirea unui client
5. Restrictii intre tabele:
- Produsele diferite au coduri diferite
- Pretul cu TVA va fi pretul fara TVA adunat cu Valoarea TVA-ului
- Nr. facturii este unic (doua facturi nu pot avea acelasi numar)
- Denumirea clientului se poate repeta, la fel si data facturii, data scadenta sau pretul
- Statusul va arata doar 2 variante achitata sau neachitata
- Nr. comenzii este unic, nu pot exista 2 comenzi cu acelasi numar
- Pentru ultimul tabel detaliile unei firme impreuna cu denumirea acesteia vor fii scrise o
singura data, deci nu se va repeata aceeasi informatie de 2 ori.
- In tabela clienti Nr.crt este unic si auto incrementat

Nume tabel Nr. coloane Nume cheie primara


Stocul produselor 6 Cod produs
Facturi 7 Seria si nr. facturii
Comenzi clienti 7 Nr. comanda
Evidenta firme Olanda 4 Nr.crt
Evidenta clienti 4 Nr.crt
6. Schema conceptuala a bazei de date

Stocul produselor Comezni clienti Facturi


Cod produs (PK) Nr. comanda (PK) Nr. factura (PK)
Denumire Denumire client
Denumire client
Adresa
Cantitate Data facturii
Telefon
Pret fara TVA Data scadenta
Cod produs(FK)
Valoare TVA Pret fara TVA
Cantitate
Pret cu TVA Valoare TVA
Pret cu TVA
Pret cu TVA

Evidenta firme partenere


Olanda
Evidenta clienti

Nr.crt (PK)
Nr.crt (PK)

Denumire client
Denumire firma

Telefon Telefon

E-mail E-mail
ETAPA 2. Crearea bazei de date

Cerinta: Sa se creeze tabelul Stocul produselor cu urmatoarele coloane: Cod produs, Denumire
produs, Cantitate, Pret fara TVA, Valoare TVA, Pret cu TVA.

Comanda:

CREATE TABLE IF NOT EXISTS stocul_produselor (Cod_produs Mediumint(100)


AUTO_INCREMENT PRIMARY KEY NOT NULL, Denumire Varchar(100)NOT
NULL, Cantitate INT(255)NOT NULL, Pret_fara_TVA INT(20)NOT NULL,
Valoare_TVA SMALLINT(3)NOT NULL default '19', Pret_cu_TVA tinyint(20)NOT
NULL);

Cerinta: Sa se creeze tabelul facturi cu urmatoarele coloane: Nr. facture, Denumire client, Data
facturarii, Data scadenta, Pret fara TVA, Valoare TVA, Pret cu TVA, Status

Comanda:

CREATE TABLE IF NOT EXISTS facturi(Nr_factura mediumint(100)auto_increment


primary key NOT NULL, Denumire_client Varchar(50)NOT NULL, Data_facturii
TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP, Data_scadenta DATE DEFAULT '2020-12-31',
Pret_fara_TVA mediumint(20)NOT NULL, Valoare_TVA SMALLINT(3)NOT NULL
default '19', Pret_cu_TVA tinyint(20)NOT NULL);
Cerinta: Sa se creeze tabelul Comenzi clienti cu urmatoarele coloane: Nr. Comanda, Denumire
comanda, adresa, telefon, cod produs, cantitate, Pret cu TVA

Comanda:

CREATE TABLE IF NOT EXISTS comenzi_clienti (Nr_comanda MEDIUMINT(255)


AUTO_INCREMENT PRIMARY KEY NOT NULL, Denumire_client CHAR(50) NOT
NULL, Adresa varchar(50) NOT NULL ,Telefon TINYINT(10) NOT
NULL,codul_produsului Mediumint(100) NOT NULL, Cantitate smallint(100) NOT
NULL, Pret_cu_TVA tinyint(20)NOT NULL, FOREIGN KEY (codul_produsului)
REFERENCES stocul_produselor (cod_produs));
Cerinta: Sa se creeze tabelul firme partenere cu urmatoarele coloane: Nr.crt. Denumire firma,
Telefon, E-mail

Comanda:

CREATE TABLE IF NOT EXISTS firme_partenere (Nr_crt Mediumint(100)


AUTO_INCREMENT PRIMARY KEY NOT NULL, Denumire_firma text(50) NOT
NULL, telefon tinyint(20) DEFAULT '0', e_mail tinyint(20) NOT NULL DEFAULT '0');

Cerinta: Sa se creeze tabelul Evidenta Clienti cu urmatoarele coloane: Nr. crt., denumire client,
telefon, e-mail

Comanda:

CREATE TABLE IF NOT EXISTS evidenta_clienti (Nr_crt int(200)


AUTO_INCREMENT PRIMARY KEY NOT NULL, Denumire_client tinyblob NOT
NULL, telefon tinyint(20) DEFAULT '0', e_mail tinyint(20) NOT NULL DEFAULT '0');
ETAPA 3

Cerinta 1: Sa se schimbe tipul de data pentru tabelul evidenta_clienti, coloana


denumire_client in tipul de data char.

Comanda: ALTER TABLE evidenta_clienti MODIFY COLUMN Denumire_client CHAR(30);

INAINTE:

DUPA:

Cerinta 2: Sa se faca 2 inregistrari in tabelul stocul_produselor.

Comanda: INSERT INTO stocul_produselor VALUES('328','Orhidee','200','40','19','40.7'),


('120','Petunii','100','15','19','17.85');

SELECT * FROM stocul_produselor; #vizualizam modificarile


Cerinta 3: Sa se adauge o noua coloana in tabela evidenta_clienti cu denumire CNP.

Comanda: alter table evidenta_clienti add column CNP smallint(13);

INAINTE:

DUPA:

Cerinta 4: Sa se stearga ultima coloana adaugata in tabela evidenta_clienti.

Comanda: ALTER TABLE evidenta_clienti DROP COLUMN CNP;

INAINTE:
DUPA:

Cerinta 5: Sa se schimbe numele tabelei evidenta_clienti in clienti.

Comanda: ALTER TABLE evidenta_clienti RENAME clienti;

INAINTE:

DUPA:
Cerinta 6: Sa se adauge o inregistrare in tabela stocul_produselor , doar pe coloanele denumire,
cantitate, pret_fara_TVA si prect_cu_tva.

Comanda: INSERT INTO stocul_produselor (denumire, cantitate, pret_fara_TVA,pret_cu_tva )


VALUES ('Panselute', '45','5', '5.95');

Cerinta 7: Sa se creeze o valoare default in tabela comenzi_clienti pe coloana ADRESA.

Comanda: ALTER TABLE comenzi_clienti ALTER COLUMN adresa SET DEFAULT


'neprecizat';
INAINTE:

DUPA:
ETAPA 4

Cerinta 1: Sa se creeze 10 inregistrari in tabela evidenta_clienti.

Comanda: INSERT INTO evidenta_clienti (denumire_client) VALUES ('Popescu'),('Ionescu'),


('Miron'),('Baboi'),('Bandi'),('Cojocaru'),('Iosif'),('Voicu'),('Ciobanu'),('Tudorache');

Cerinta 2: Sa se afiseze liniile din tabelul firme_partenere

Comanda: SELECT * FROM firme_partenere;

(NU SUNT INREGISTRARI IN ACEASTA TABELA)

Cerinta 3: Sa se afiseze motoarele din baza de date depozit_flori

Comanda: SHOW ENGINES;


Cerinta 4: Sa se stearga o linie din tabelul evidenta_clienti care are nr.crt egal cu 3

Comanda: DELTE FROM evidenta_clienti WHERE nr_crt=3;

INAINTE:

DUPA:

Cerinta 5: Sa se afiseze inregistrarile cu nr.crt mai mic de 5 din tabela evidenta_clienti

Comanda: SELECT * FROM evidenta_clienti WHERE nr_crt<5;


Cerinta 6: Sa se afiseze numarul liniilor din tabela evidenta_clienti

Comanda: SELECT COUNT(*) FROM evidenta_clienti;

Cerinta 7: Sa se afiseze toate inregistrarile din tabela evidenta_clienti doar de pe coloana


denumire client si Telefon din tabela evidenta_clienti

Comanda: SELECT denumire_client,telefon FROM evidenta_clienti;

Cerinta 8:Sa se afiseze inregistrarile cu nr.crt mai mare de 4 si denumirea clientilor care incepe
cu litera B din tabela evidenta clienti

Comanda: SELECT * FROM evidenta_clienti WHERE(nr_crt>4 AND denumire_client LIKE 'B


%' );

Cerinta 9: Sa se afiseze doar primele 5 inregistrari din tabela evidenta_clienti care au nr.crt mai
mare de 1

Comanda: SELECT * FROM evidenta_clienti WHERE nr_crt>1 limit 5;


Cerinta 10: Sa se listeze inregistrarile care au nr.crt mai mare de 1 si denumirea clientului
alfabetic

Comanda: SELECT * FROM evidenta_clienti WHERE nr_crt>1 ORDER BY denumire_client


ASC;

Cerinta 11: Sa se afiseze toate inregistrarile din tabela evidenta_clienti care au denumirea
clientului incepand cu litera B.

Comanda: SELECT * FROM evidenta_clienti WHERE denumire_client LIKE 'B%';

Cerinta 12: Sa se afiseze inregistrarile din tabela evidenta clienti invers alfabetic cu denumirile
clientilor

Comanda: SELECT * FROM evidenta_clienti ORDER BY denumire_client DESC;


Cerinta 13: Sa se stearga inregistrarile din tabela evidenta_clienti care eu nr_crt>8

Comanda: DELETE FROM evidenta_clienti WHERE nr_crt>8;

INAINTE:

DUPA:
Cerinta 14: In tabela evidenta_clienti sa se modifice numele coloanei nr_crt in ‘id’.

Comanda: ALTER TABLE evidenta_clienti RENAME COLUMN nr_crt TO id;

INAINTE:

DUPA:

Cerinta 15: Sa se insereze valorile din tabelul evidenta clienti intr-un nou tabel numit
‘evidenta_noua’

Comanda: INSERT INTO evidenta_noua SELECT * FROM evidenta_clienti;

Cerinta 16: Sa se afiseze collation-urile care incep cu litera a

Comanda: SHOW COLLATION LIKE 'a%';


Cerinta 17: Sa se actualizeze numarul de telefon in ‘21’ in tabela evidenta_clienti acolo unde id-
ul este 1.

Comanda: UPDATE evidenta_clienti SET telefon=21 WHERE id=1;

INAINTE:

DUPA:

Cerinta 18: Sa se insereze in tabela evidenta clienti pe coloana Denumire client si telefon o
inregistrare

Comanda: INSERT INTO evidenta_clienti (denumire_client, telefon ) VALUES ('Ana','12');

Cerinta 19: Sa se insereze in tabela evidenta clienti pe coloana denumire client o inregistrare
Comanda: INSERT INTO evidenta_clienti (denumire_client) VALUES ('Andrei');

Cerinta 20: Sa se insereze o inregistrare in tabela evidenta clienti, pe toate coloanele

Comanda: INSERT INTO evidenta_clienti VALUES ('13','Alexandru','100','13');

Cerinta 21: Sa se actualizeze denumirea clientului din tabela evidenta_clienti care are id-ul 5

Comanda: UPDATE evidenta_clienti SET denumire_client='Niculescu' WHERE id=5;

INAINTE:
DUPA:

Cerinta 22: Sa se actualizeze numarul de telefon din tabela evidenta_clienti unde denumirea
clientului este Ionescu

Comanda: UPDATE evidenta_clienti SET telefon='15' WHERE denumire_client='Ionescu';

INAINTE:
DUPA:

Cerinta 23: Sa se actualizeze e-mail ul din tabela evidenta_clienti unde denumirea clientului este
Ana si telefonul este 12.

Comanda: UPDATE evidenta_clienti SET e_mail='6' WHERE denumire_client='Ana' AND


telefon='12';

INAINTE:
DUPA:

CERINTA 24: Sa se stearga o coloana ce contine o cheie primara si are si cheie secundara.

Comanda: ALTER TABLE stocul_produselor DROP COLUMN cod_produs;

NU se poate sterge o cheie primara daca exista intr-o alta tabela o cheie secundara acesteia.
ETAPA 5

CERINTA: Creati un user neprivilegiat cu o parola aleasa de voi

COMANDA: CREATE USER 'IULIA'@'localhost' IDENTIFIED BY 'abcd';


Afisati ecranul complet cand sunteti conectati cu ambii useri

Dovediti printr-o captura ca userul nu are initial nici o permisiune


CERINTA: Puneti-I o singura permisiune userului (la allegere) si doar pe baza de date a proiectului si pe o
singura tabela din acea baza de date si dovediti prin print screen-uri cum poate userul nou creat sa
beneficieze de dreptul dat prin comanda GRANT.

COMANDA: GRANT SELECT ON depozit_flori.evidenta_clienti TO 'IULIA'@'localhost';

GRANT INSERT ON depozit_flori.evidenta_clienti TO 'IULIA'@'localhost';

AM VERIFICAT IN ROOT DACA S-A INSERAT INREGISTRAREA:

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