Documente Academic
Documente Profesional
Documente Cultură
1
I. Descrierea problemei propuse (a scenariului aplicaţiei)
Aplicaţia care face obiectul acestui proiect se numeşte " . cosmetice - distribuitor gen
AVON ". Aceasta aplicaţie îşi propune să gestioneze o bază de date care să memoreze
informaţii despre clienţii si distribuitorii firmei Oriflame, care se ocupă cu distribuirea de
produse cosmetice, dar şi despre produsele pe care firma le are către vânzare.
Tipuri de obiecte multimedia relevante domeniului ales:
Obiecte tip text. În acest tip de obiecte se vor găsi informații
precum:denumirea si descrierea produselor.
Obiecte tip imagine. În acest tip de obiecte se vor găsi imagini ale
produselor cosmetice.(si distribuitori)
Obiecte tip multimedia.
Obiecte tip audio.
Baza de date va conţine cel puţin cinci obiecte multimedia simple (imagine, video şi
sunet) şi cinci obiecte multimedia compuse (text cu imagini încorporate) - descriere –
împreună cu metadatele ce le caracterizează.
Distribuitorii vand produse catre client, iar clientul poate cumpara de la unul sau mai
multi distribuitori (m,m)
Produsele sunt grupate in subcategorii(m,1), iar subcategoriile sunt grupate in
categorii(m,1)
Produsele pot avea oferte(1,m)
Produsul este descris de imagini(1,m) ,de audio (1,m) , de video (1,m)
Produsele sunt prezentate in descriere (1,1)
2
DIAGRAMA ENTITATE LEGATURA
3
o Imagini : ID_imag, Nume, Tip_imag, COD_prod, Imagine, RezolutieX,
RezolutieY;
o Video : ID_video, Nume, Durata(sec), Format, Video, COD_prod;
- Pentru : se refera la codul produsului
În continuare va fi prezentat codul PostgreSQL corespunzător fiecărei scheme
în parte, împreună cu print screen-uri ale acestora după ce au fost introduse o serie de
date de intrare.
4
"Disponibil" boolean,
"Pret(ron)" numeric,
"Volum" text,
CONSTRAINT prod_pk PRIMARY KEY ("COD_prod" ),
CONSTRAINT "p-sb" FOREIGN KEY ("COD_prod")
REFERENCES "Subcategorii" ("ID_subcateg") MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Produse"
OWNER TO postgres;
CREATE INDEX "fki_p-sb"
ON "Produse"
USING btree
("COD_prod" );
5
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Distribuitori"
OWNER TO postgres;
CREATE INDEX "fki_d-c"
ON "Distribuitori"
USING btree ("ID_distr" );
6
OIDS=FALSE
);
ALTER TABLE "Clienti"
OWNER TO postgres;
CREATE INDEX "fki_c-d"
ON "Clienti"
USING btree
("ID_client" );
7
Crearea mulţimii entitate “Subcategorii”:
CREATE TABLE "Subcategorii"
(
"ID_subcateg" serial NOT NULL,
"Nume" text,
"COD_produs" integer,
CONSTRAINT subcateg_pk PRIMARY KEY ("ID_subcateg" )
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Subcategorii"
OWNER TO postgres;
CREATE INDEX "fki_sb-p"
ON "Subcategorii"
USING btree
("ID_subcateg" );
8
Crearea mulţimii entitate “Categorii”:
CREATE TABLE "Categorii"
(
"ID_cat" serial NOT NULL,
"Nume" text,
"ID_subcategorie" integer,
CONSTRAINT cat_pk PRIMARY KEY ("ID_cat" ),
CONSTRAINT "cat-sb" FOREIGN KEY ("ID_cat")
REFERENCES "Subcategorii" ("ID_subcateg") MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Categorii"
OWNER TO postgres;
CREATE INDEX "fki_c-sb"
ON "Categorii"
USING btree
("ID_cat" );
CREATE INDEX "fki_cat-sb"
ON "Categorii"
USING btree
("ID_cat" );
9
"ID_descriere" serial NOT NULL,
format character(5),
"COD_prod" serial NOT NULL,
"Descriere" oid,
CONSTRAINT "descriere_PK" PRIMARY KEY ("ID_descriere" ),
CONSTRAINT "d-p" FOREIGN KEY ("ID_descriere")
REFERENCES "Produse" ("COD_prod") MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Descriere"
OWNER TO postgres;
CREATE INDEX "fki_d-p"
ON "Descriere"
USING btree
("ID_descriere" );
Inserarea propiu-zisă a documentului text în câmpul Descriere de tip oid, s-a facut la
urmă, după introducerea tuturor metadatelor caracteristice, cu o comandă de tipul celei de
mai jos, pentru fiecare intrare a tabelului:
UPDATE "Descriere"
SET "Descriere"=lo_import('C:\baza mea de date\Document.docx’)
WHERE "ID_descriere" =1;
10
Crearea mulţimii entitate “Imagini”:
CREATE TABLE "Imagini"
(
"ID_imag" serial NOT NULL,
"Nume" text,
"Tip_imag" text,
"COD_prod" serial NOT NULL,
"Imagine" oid,
"RezolutieX" numeric,
"RezolutieY" numeric,
CONSTRAINT imag_pk PRIMARY KEY ("ID_imag" ),
CONSTRAINT "i-p" FOREIGN KEY ("ID_imag")
REFERENCES "Produse" ("COD_prod") MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Imagini"
OWNER TO postgres;
CREATE INDEX "fki_i-p"
ON "Imagini"
USING btree
("ID_imag" );
11
Crearea mulţimii entitate “Audio”:
CREATE TABLE "Audio"
(
"ID_audio" serial NOT NULL,
"Nume" text,
"Durata(sec)" integer,
"Format" text,
"Audio" oid,
"COD_prod" integer,
CONSTRAINT audio_pk PRIMARY KEY ("ID_audio" ),
CONSTRAINT "a-p" FOREIGN KEY ("ID_audio")
REFERENCES "Produse" ("COD_prod") MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Audio"
OWNER TO postgres;
CREATE INDEX "fki_a-p"
ON "Audio"
USING btree
("ID_audio" );
Inserarea propiu-zisă a fișierului audio în câmpul audio de tip oid, s-a facut la urmă,
după introducerea tuturor metadatelor caracteristice, cu o comandă de tipul celei de mai
jos, pentru fiecare intrare a tabelului:
UPDATE "Audio"
SET Audio=lo_import('C:\baza mea de date\oriflame3.mp4 ')
WHERE ID_audio=1;
Crearea mulţimii entitate “video”:
CREATE TABLE "Video"
12
(
"ID_video" serial NOT NULL,
"Nume" text,
"Durata(sec)" integer,
"Format" text,
"Video" oid,
"COD_prod" integer,
CONSTRAINT video_pk PRIMARY KEY ("ID_video" ),
CONSTRAINT "v-p" FOREIGN KEY ("ID_video")
REFERENCES "Produse" ("COD_prod") MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Video"
OWNER TO postgres;
CREATE INDEX "fki_v-p"
ON "Video"
USING btree
("ID_video" );
13
SELECT
"Produse"."Nume",
"Produse"."COD_prod",
lo_export ("Imagine",'C:\BAZA\poza.jpg')
FROM
public."Produse",
public."Imagini"
WHERE
"Imagini"."ID_imag" = 4 AND
"Imagini"."COD_prod" = "Produse"."COD_prod";
14
"Descriere"."COD_prod" = "Produse"."COD_prod" AND
"Produse"."Pret(ron)" <= 30;
"Produse"."Nume",
"Video"."Nume",
"Video"."Video",
"Video"."Durata(sec)",
"Clienti"."Nume",
"Distribuitori"."Nume",
"Distribuitori"."Oras"
FROM
public."Video",
15
public."Produse",
public."Clienti",
public."Distribuitori"
WHERE
"Produse"."COD_prod" = "Video"."COD_prod";
16
"Audio"."COD_prod" = "Produse"."COD_prod";
17
18