Sunteți pe pagina 1din 7

FACULTATEA DE MATEMATICA INFORMATICA

UNIVERSITATEA BUCURESTI

PROIECTAREA BAZEI DE DATE


PENTRU O FIRMA ONLINE DE CATERING

Student: George-Viorel Ivan


Grupa: 405

1. Determinarea cerinelor unei aplicaii de food-ordering


Primul pas n dezvoltarea aplicaiei l reprezint stabilirea potenialilor beneficiari,
precum i a ateptrilor acestora n ceea ce privete funcionalitatea aplicaiei. Printr-o analiz
atent a cerinelor beneficiarilor se va delimita comportamentul aplicaiei ce urmeaz a fi
implementat.
Tehnica folosit n stabilirea cerinelor beneficiarilor presupune efectuarea unui studiu
al pieei aplicaiilor care ofer servicii similare, n vederea documentrii avantajelor i
dezavantajelor acestora. Scopul urmrit este delimitarea comportamentului unei aplicaii ce
beneficiaz de cele mai bune practici ntlnite i le nlocuiete pe cele care nu satisfac
ntocmai necesitile beneficiarilor.
2. Reguli pentru buna funcionare a aplicaiei:
o aplicaia trebuie s permit accesul n orice moment, din orice pagin, la condiiile
de utilizare a aplicaiei, politica de confidenialitate, descrierea aplicaiei; aceste
informaii trebuie s nlture oricrui client orice nelmurire care ar putea aprea cu
privire la responsabilitile acestuia n utilizarea aplicaiei;
o aplicaia se oblig s posteze informaiile despre preparatele unui furnizor doar
dac acesta i d acceptul;fiecare comand cu aceeai seriozitate, indiferent de or,
client, adres de livrare;
3. Cazurile de utilizare ale aplicaiei
Vom considera aplicaia exclusiv din perspectiva utilizatorilor (care de regul nu tiu
i nici nu prezint interes pentru detaliile de implementare a aplicaiei.
Cazurile de utilizare reprezint secvene de tranzacii ce au loc n dialog cu sistemul i care
sunt nrudite din punct de vedere comportamental. Practic, un caz de utilizare modeleaz un
dialog ntre un actor i aplicaie. Mulimea cazurilor de utilizare a unei aplicaii reprezint
toate modalitile n care aplicaia poate fi folosit.
La prima vedere, rolurile principale de actor sunt distribuite beneficiarilor bine stabilii
ai aplicaiei, clienii i furnizorii. Ne referim la un utilizator al aplicaiei cu titulatura de
CLIENT dac acesta este nregistrat n evidena aplicaiei ca i beneficiar al serviciilor de
comand on-line i n plus s-a conectat la serviciile aplicaiei preciznd perechea valid de
nume de utilizator i parol care l identific. FURNIZORUL este i el un utilizator nregistrat
al aplicaiei, care se identific la rndul lui printr-o pereche de nume de utilizator i o parol,
dar beneficiaz de cu totul alte privilegii (i responsabiliti) fa de cele ale CLIENTULUI. O
categorie aparte de actori (cu rol deloc neglijabil) care vor interaciona cu aplicaia o
constituie VIZITATORII, reprezentai de orice utilizator care acceseaz aplicaia i care nu
este nregistrat n evidena aplicaiei, sau cel puin nu s-a conectat nc la serviciile ei.
Cerinele clientului i ale furnizorului de a accesa un mediu controlat de comandare
on-line n care se evit, pe ct posibil, comenzile false sau schimbul de informaii eronate,
impun limitarea posibilitii de lansare a comenzilor doar la clieni (vizitatorii nregistrai),

fiindc informaiile personale furnizate de acetia sunt validate ntr-o oarecare msur de
aplicaie i n plus, clienii le garanteaz, cel puin virtual, veridicitatea.
Avnd n vedere faptul c unul din scopurile declarate ale aplicaiei de fa este
atragerea de noi clieni, lucru care se poate realiza prin determinarea vizitatorilor s-i creeze
conturi de utilizator, consider c vizitatorii ar trebui s aib urmtoarele drepturi:
o s vizualizeze informaiile despre furnizori i preparatele acestora;
o s caute un preparat cel puin dup urmtoarele informaii relevante: furnizor,
ora de livrare, aria de livrare, pre, ingrediente;
o s contacteze un furnizor pentru eventualele nelmuriri legate de preparatele pe
care acesta declar c le poate livra;
o s i creeze o idee att despre msura n care preparatele pe care le poate
comanda i seriozitatea furnizorilor i satisfac nevoile culinare, ct i despre
uurina n utilizare a aplicaiei;
o s poat afla termenii i condiiile de utilizare a aplicaiei, politica de
confidenialitate, paii pentru crearea unui cont ntr-un cuvnt s beneficieze
de asisten on-line;
o s se poat nregistra n aplicaie, prin crearea unui cont;

4. Tratarea orientat pe obiecte a modelului propus:

Crearea tabelelor i implementarea constrngerilor de integritate:


CREATE OR REPLACE TYPE t_furnizori AS OBJECT
( id_furnizor
NUMBER(5),
nume_furnizor VARCHAR2(20),
categorie
VARCHAR2(20),
specific
VARCHAR2(20),
tbl_menu
VARCHAR2(20),
orar_sapt
VARCHAR2(20),
excep_orar
VARCHAR2(20),
lst_orase
VARCHAR2(20),
val_min_com NUMBER NOT NULL,
descr_furnizor VARCHAR2(20),
timp_prep
VARCHAR2(20),
email
VARCHAR2(20),
obs
VARCHAR2(20));/
CREATE OR REPLACE TYPE t_tichete AS OBJECT
( id_tichet
NUMBER(5),
nume_tichet
VARCHAR2(20),
valoare
NUMBER(5));/
3

CREATE OR REPLACE TYPE t_tichete_acceptate AS OBJECT


( id_furnizor
NUMBER(5),
id_tichet
NUMBER(5));/
CREATE OR REPLACE TYPE t_meniu AS OBJECT
( id_prep
NUMBER(5),
id_categ
NUMBER(5),
nume_prep
VARCHAR2(10),
pret
NUMBER(5),
gramaj
NUMBER,
ingrediente
VARCHAR2(40),
desc_prep
VARCHAR2(20));/
CREATE OR REPLACE TYPE t_clienti AS OBJECT
( id_client
NUMBER(5),
nume_client
VARCHAR2(20),
parola
VARCHAR2(20),
email
VARCHAR2(20),
nume_prenume VARCHAR2(20),
obs
VARCHAR2(20));/
CREATE OR REPLACE TYPE t_comenzi_in_derulare AS OBJECT
( id_comanda
NUMBER(5),
id_com_grup NUMBER(5),
id_client
NUMBER(5),
id_furnizor
NUMBER(5),
id_prep
NUMBER(5),
cantitate
NUMBER,
timp_lansare
DATE,
timp_livrare
DATE);/
CREATE OR REPLACE TYPE t_comenzi_grup AS OBJECT
( id_com_grup NUMBER(5),
telefon
NUMBER,
adresa_livrare VARCHAR2(20),
obs_livr
VARCHAR2(20),
info_factura
VARCHAR2(20));/
CREATE OR REPLACE TYPE t_categorii_preparate AS OBJECT
( id_categ
NUMBER(5),
id_parinte
NUMBER(5),
nume_categ
VARCHAR2(20);/
CREATE TABLE furnizori OF t_furnizori;
CREATE TABLE tichete_acceptate OF t_tichete_acceptate;
CREATE TABLE tichete OF t_tichete;
CREATE TABLE comenzi_in_derulare OF t_comenzi_in_derulare;
CREATE TABLE meniu OF t_meniu;
CREATE TABLE clienti OF t_clienti;
CREATE TABLE comenzi_grup OF t_comenzi_grup;
CREATE TABLE categorii_preparate OF t_categorii_preparate;
4

ALTER TABLE furnizori ADD CONSTRAINT furnizori_pk


PRIMARY KEY("id_furnizor");
ALTER TABLE tichete_acceptate ADD CONSTRAINT tichete_acceptate_pk
PRIMARY KEY (id_furnizor, id_tichet);
ALTER TABLE tichete ADD CONSTRAINT tichete_pk
PRIMARY KEY("id_tichet");
ALTER TABLE comenzi_in_derulare ADD CONSTRAINT comenzi_in_derulare_pk
PRIMARY KEY("id_comanda");
ALTER TABLE meniu ADD CONSTRAINT meniu_pk
PRIMARY KEY("id_prep");
ALTER TABLE clienti ADD CONSTRAINT clienti_pk
PRIMARY KEY("id_client");
ALTER TABLE comenzi_grup ADD CONSTRAINT comenzi_grup_pk
PRIMARY KEY("id_com_grup");
ALTER TABLE categorii_preparate ADD CONSTRAINT categorii_preparate_pk PRIMARY
KEY("id_categ");
ALTER TABLE "tichete_acceptate" ADD CONSTRAINT "tichete_acceptate_furnizor_fk"
FOREIGN KEY (id_furnizor)
REFERENCES furnizori(id_furnizor)on delete cascade;
ALTER TABLE "tichete_acceptate" ADD CONSTRAINT "tichete_acceptate_tichete_fk"
FOREIGN KEY (id_tichet)
REFERENCES tichete(id_tichet) on delete cascade);
ALTER TABLE "comenzi_in_derulare" ADD CONSTRAINT "comenzi_in_derulare_grup_fk"
FOREIGN KEY (id_com_grup)
REFERENCES comenzi_grup(id_com_grup) on delete cascade;
ALTER TABLE "comenzi_in_derulare" ADD CONSTRAINT "comenzi_in_derulare_clienti_fk"
FOREIGN KEY (id_client) REFERENCES clienti(id_client) on delete cascade;
ALTER TABLE "comenzi_in_derulare" ADD CONSTRAINT "comenzi_in_derulare_furnizor_fk"
FOREIGN KEY (id_furnizor)
REFERENCES furnizori(id_furnizor) on delete cascade;
ALTER TABLE "comenzi_in_derulare" ADD CONSTRAINT "comenzi_in_derulare_meniu_fk"
FOREIGN KEY (id_prep)
REFERENCES meniu (id_prep) on delete cascade);

ALTER TABLE "meniu" ADD CONSTRAINT "meniu_categ_prep_fk"


FOREIGN KEY (id_categ)
REFERENCES categorii_preparate(id_categ) on delete cascade);

CREATE OR REPLACE VIEW view_furnizori OF t_furnizori


WITH OBJECT IDENTIFIER(id_furnizor)
AS SELECT F.id_furnizor, F.nume_furnizor, F.categorie, F.specific, F.tbl_menu,
F.orar_sapt, F.excep_orar, F.lst_orase, F.val_min_com, F.descr_furnizor, F.timp_prep, F.email,
F.obs
FROM furnizori F;
CREATE OR REPLACE VIEW view_tichete OF t_tichete
WITH OBJECT IDENTIFIER(id_tichet)
AS SELECT F.id_tichet, F.nume_tichet, F.valoare
FROM tichet F;
CREATE OR REPLACE VIEW view_tichete_acceptate OF t_tichete_acceptate
WITH OBJECT IDENTIFIER(id_furnizor, id_tichet)
AS SELECT F.id_furnizor, F.id_tichet
FROM tichete_acceptate F;
CREATE OR REPLACE VIEW view_meniu OF t_meniu
WITH OBJECT IDENTIFIER(id_prep)
AS SELECT F.id_prep, F.id_categ, F.nume_prep, F.pret, F.gramaj, F.orar_sapt, F.desc_prep,
F.lst_orase, F.val_min_com, F.descr_furnizor, F.timp_prep, F.email, F.obs
FROM meniu F;
CREATE OR REPLACE VIEW view_clienti OF t_clienti
WITH OBJECT IDENTIFIER(id_client)
AS SELECT F.id_client, F.nume_client, F.parola, F.email, F.nume_prenume, F.obs
FROM clienti F;
CREATE OR REPLACE VIEW view_comenzi_in_derulare OF t_comenzi_in_derulare
WITH OBJECT IDENTIFIER(id_comanda)
AS SELECT F.id_comanda, F.id_com_grup, F.id_client, F.id_furnizor, F.id_prep,
F.cantitate, F.timp_lansare, F.timp_livrare
FROM comenzi_in_derulare F;
CREATE OR REPLACE VIEW view_comenzi_grup OF t_comenzi_grup
WITH OBJECT IDENTIFIER(id_com_grup)
AS SELECT F.id_com_grup, F.telefon, F.adresa_livrare, F.obs_livr, F.info_factura
FROM comenzi_grup F;
CREATE OR REPLACE VIEW view_categorii_preparate OF t_categorii_preparate
WITH OBJECT IDENTIFIER(id_categ)
AS SELECT F.id_categ, F.id_parinte, F.nume_categ
FROM categorii_preparate F;
COMMIT;
6

drop constraint furnizori_pk;


drop constraint tichete_acceptate_pk;
drop constraint tichete_pk;
drop constraint comenzi_in_derulare_pk;
drop constraint meniu_pk;
drop constraint clienti_pk;
drop constraint comenzi_grup_pk;
drop constraint categorii_preparate_pk;
drop constraint tichete_acceptate_furnizor_fk;
drop constraint tichete_acceptate_tichete_fk;
drop constraint comenzi_in_derulare_grup_fk;
drop constraint comenzi_in_derulare_clienti_fk;
drop constraint comenzi_in_derulare_furnizor_fk;
drop constraint comenzi_in_derulare_meniu_fk;
drop constraint meniu_categ_prep_fk;

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