5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 1/26
P a g | 1
Baze de date multimedia - aplicaţie
PostgreSQL
(turism)
2010
Baza de date multimedia „Turism -
cazare”
I) Descrierea problemei propuse (a scenariului
aplicaţiei)
Aplicația își propune să modeleze operațiile care au loc pe
un site turistic, referitoare la căutarea unui loc de cazare.
Aplicația va fi realizată cu ajutorul softului PostgreSQL v8.4.2-1.
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 2/26
P a g | 2
Tipuri de obiecte multimedia relevante domeniului ales:
Obiecte tip text. În acest tip de obiecte se vor găsi
informații ca: descrierea locului de cazare (număr
camere, tip masă, atracții turistice în împrejurimi,prețuri, etc.) cât și comentarii ale celor care deja au
fost cazați în locurile respective.
Obiecte tip imagine. În acest tip de obiecte se vor
găsi imagini ale hotelurilor, camerelor, facilităților
oferite de hotel – parcare, sală de conferințe,
piscină, saună, baie turcească, sală fitness, loc de joacă pentru copii - , imagini ale mâncărurilor,
atracții turistice din împrejurimi, peisaje, restaurant,
recepție etc.
Obiecte tip multimedia. În acest tip de obiecte
vom găsi filmulețe care ne prezintă hotelul,
activități reprezentative pentru hotelul respectiv
(exemplu: activități de la clubul pentru copii,
discotecă, etc.), cât și interviuri luate unor persoane
importante din conducere și vizitatorilor.
Obiecte tip audio. În acest tip de obiecte ni se
prezintă locurile de cazare.
Baza de date va conţine cel puţin trei obiecte multimedia
simple (imagine, video şi sunet) şi un obiect multimedia compus
(text cu imagini încorporate) - descriere – împreună cu
metadatele ce le caracterizează.
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 3/26
P a g | 3
II) Modelarea conceptuală a bazei de date
O formă a viitoarei scheme corespunzătoare bazei de date,
va conţine mulţimile entitate Cazare, Contact, Camere, Descriere,
Carte_oaspeți, Ofertă, Clienți, Audio, Video, Imagine. Între aceste
mulţimi entitate există diverse asocieri. Se vor preciza de
asemenea conectivităţile acestor legături:
TUn loc de cazare este Contactat_prin Contact (1,
1)
TUn loc de cazare este Prezentate_în Descriere
(1,1) -> ob compus TUn loc de cazare Are Ofertă (1,m)
CClienții Beneficiază_de Ofertă (m,1)
CUn loc de cazare este Comentate_în Carte_oaspeți
(1,1) -> ob text
TUn loc de cazare este Dotat_cu Camere (1,1)
TUn loc de cazare este Prezentat prin Imagine, Audio, Video (1,m) – ob imagine, audio, video.
III) Implementarea bazei de date multimedia
Pasul următor constă în transformarea diagramei entitate-
legătură prezentate anterior, în schema bazei de date relaţionale.
Schema relaţională a bazei de date ce conţine informaţii
despre turism - cazare, include următoarele relaţii :
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 4/26
P a g | 4
TCazare (id_cazare, nume, tip, tara, nr_stele,
facilități, domeniu de interes) ;
- Domeniul de interes se referă la: business hotel, spa,
restaurants, romance, all inclusive, mini club, family, garden, ski- Tipul se referă la: Hotel, Pensiune, Vilă sau Cabană.
- Facilități se referă la: parcare, magazine, piscină interioară,
piscină exterioară, saună, baie turcească, sală fitness, loc de
joacă pentru copii, sală conferințe, schimb valutar, medical
service, taxi, transport aeroport, discotecă, loc depozitare bagaje,
etc. CContact (email, oraș, adresă, cod poștal,
nr_tel, web, adresă gps, cont bancar);
ECamere (id_camere, nr_camere, facilități);
Nr_camere se referă la numărul camerelor dintr-un anumit hotel,
iar Facilități reprezintă caracteristicile comune ale camerelor:
balcon, aer condiționat, seif, tv, lan, minibar)
MDescriere (id_descriere, descriere oid,
nr_paragrafe, nr_cuv, nr_pag, format, nr_imag);
CCarte_oaspeți (id_carte, carte_oaspeți oid,
nr_paragrafe, nr_cuv, nr_pag, format, nr_impresii);
IOfertă (id_ofertă, denumire, data_start,
data_end, nr_nopți, statut, tip_cameră, tip_masă, preț);
Data_start și Data_end reprezintă data la care începe, respectiv
ia sfârșit oferta, statut se referă la faptul de a fi încă valabilă sau
este expirată, Tip_cameră poate fi: DBL, SGL, LEVEL, DELUXE,
Tip_masă poate fi: DP, AI, SAI.
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 5/26
P a g | 5
CClienți (id_client, Cnp, sex, nume,
prenume, adresă, telefon, email, data);
Data se referă la data la care începe cazarea.
RAudio (id_audio, audio oid, data_add, size,durata, format);
VVideo (id_video, video oid, data_add, size,
durata, format);
Imagine (id_imag, data_add, imagine oid, format,
rezolutie, size, referitor_la).
Referitor_la se referă la conținutul pozei: camere,restaurant, facilități, împrejurimi, hotel în ansamblu,
recepție.
Î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.
CCrearea bazei de date “Cazare”
CREATE DATABASE "Cazare"
WITH OWNER = postgres
ENCODING = 'UTF8'
LC_COLLATE = 'English_United States.1252'
LC_CTYPE = 'English_United States.1252'
CONNECTION LIMIT = -1;
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 6/26
P a g | 6
CCrearea mulţimii entitate “Cazare”:
CREATE TYPE t_i_p AS ENUM ('Hotel', 'Pensiune', 'Vila','Cabana');
CREATE TYPE domen AS ENUM ('business', 'spa',
'restaurants','romance','all_inclusive','miniclub','garden','family','sky');
CREATE TABLE "Cazare"
(
id_cazare serial NOT NULL,
tip t_i_p NOT NULL, -- 'Hotel', 'Pensiune', 'Vila','Cabana'
domeniu domen NOT NULL, -- 'business', 'spa',
'restaurants','romance','all_inclusive','miniclub','garden','family','sky'
tara character(15) NOT NULL,
nume character(25) NOT NULL,
nr_stele integer NOT NULL,
facilitati character(300) NOT NULL,
CONSTRAINT "Cazare_pkey" PRIMARY KEY (id_cazare))
WITH (
OIDS=FALSE
);
ALTER TABLE "Cazare" OWNER TO postgres;
COMMENT ON COLUMN "Cazare".tip IS '''Hotel'', ''Pensiune'', ''Vila'',''Cabana''';
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 7/26
P a g | 7
COMMENT ON COLUMN "Cazare".domeniu IS '''business'', ''spa'',
''restaurants'',''romance'',''all_inclusive'',''miniclub'',''garden'',''family'',''sky''';
CCrearea mulţimii entitate “Contact”
CREATE TABLE "Contact"
(
oras character(20) NOT NULL,
cod_postal integer NOT NULL,
adresa character(30) NOT NULL,
nr_tel bigint NOT NULL,
email character(50) NOT NULL,
web character(40) NOT NULL,
gps character(35) NOT NULL,
cont character(34) NOT NULL,
id_cazare serial NOT NULL,
CONSTRAINT "Contact_pkey" PRIMARY KEY (email),
CONSTRAINT cazare FOREIGN KEY (id_cazare)
REFERENCES "Cazare" (id_cazare) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 8/26
P a g | 8
);
ALTER TABLE "Contact" OWNER TO postgres;
CCrearea mulţimii entitate “Camere”
CREATE TABLE "Camere"
(
id_camere serial NOT NULL,facilitati character(100) NOT NULL,
nr_camere integer NOT NULL,
id_cazare serial NOT NULL,
CONSTRAINT id_camere PRIMARY KEY (id_camere),
CONSTRAINT cazare FOREIGN KEY (id_cazare)
REFERENCES "Cazare" (id_cazare) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Camere" OWNER TO postgres;
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 9/26
P a g | 9
CCreare mulţime entitate “Descriere”
CREATE TABLE "Descriere"
(
id_descriere serial NOT NULL,
format character(5) NOT NULL,
nr_pag integer NOT NULL,
nr_cuv integer NOT NULL,
nr_paragrafe integer NOT NULL,
id_cazare serial NOT NULL,
nr_imag integer NOT NULL,
descriere oid,
CONSTRAINT id_descriere PRIMARY KEY (id_descriere),
CONSTRAINT cazare FOREIGN KEY (id_cazare)
REFERENCES "Cazare" (id_cazare) MATCH SIMPLEON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Descriere" OWNER TO postgres;
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 10/26
P a g | 10
Inserarea propiu-zisă a documentului text în câmpul
descriere de tip oid, s-a facut la urmă, după introducerea tuturor
metadatelor caracteristice imaginilor, cu o comandă de tipul celei
de mai jos, pentru fiecare intrare a tabelului:UPDATE "Descriere"
SET descriere=lo_import('C:\\temp\\1 (2).docx')
WHERE id_descriere=1;
CCreare mulţime entitate “Carte_oaspeți”
CREATE TABLE carte_oaspeti
(
id_carte serial NOT NULL,
format character(5) NOT NULL,
nr_pag integer NOT NULL,
nr_cuv integer NOT NULL,
nr_paragrafe integer NOT NULL,
id_cazare serial NOT NULL,
nr_impresii integer NOT NULL,
carte_oaspeti oid,
CONSTRAINT id_carte PRIMARY KEY (id_carte),
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 11/26
P a g | 11
CONSTRAINT id_cazare FOREIGN KEY (id_cazare)
REFERENCES "Cazare" (id_cazare) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (OIDS=FALSE
);
ALTER TABLE carte_oaspeti OWNER TO postgres;
Inserarea propiu-zisă a documentului text în câmpul
carte_oaspeți de tip oid, s-a facut la urmă, după introducerea
tuturor metadatelor caracteristice imaginilor, cu o comandă de
tipul celei de mai jos, pentru fiecare intrare a tabelului:
UPDATE "carte_oaspeti"
SET carte_oaspeti=lo_import('C:\\temp\\2.docx')
WHERE id_carte=2;
CCrearea mulţimii entitate “Ofertă”
CREATE TYPE masa AS ENUM ('DP', 'AI', 'SAI');
CREATE TYPE tip AS ENUM ('DBL', 'SGL', 'LEVEL', 'DELUXE');
CREATE TABLE "Oferta"
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 12/26
P a g | 12
(
id_oferta serial NOT NULL,
id_cazare serial NOT NULL,
denumire character(20) NOT NULL,
statut_oferta statut NOT NULL,nr_nopti integer NOT NULL,
data_start date NOT NULL,
data_end date NOT NULL,
tip_camera tip NOT NULL,
tip_masa masa NOT NULL,
pret integer NOT NULL,
CONSTRAINT id_oferta PRIMARY KEY (id_oferta),
CONSTRAINT cazare FOREIGN KEY (id_cazare)
REFERENCES "Cazare" (id_cazare) MATCH SIMPLEON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Oferta" OWNER TO postgres;
CCreare mulţime entitate “Clienți”
CREATE TABLE "Clienti"
(
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 13/26
P a g | 13
nume character(15) NOT NULL,
prenume character(15) NOT NULL,
id_client serial NOT NULL,
sex character(1) NOT NULL,
data_sosirii date NOT NULL,adresa character(30) NOT NULL,
tel integer NOT NULL,
email character(30) NOT NULL,
id_oferta serial NOT NULL,
cnp character(13) NOT NULL,
CONSTRAINT id_client PRIMARY KEY (id_client),
CONSTRAINT oferta FOREIGN KEY (id_oferta)
REFERENCES "Oferta" (id_oferta) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE)
WITH (
OIDS=FALSE
);
ALTER TABLE "Clienti" OWNER TO postgres;
CCreare mulţime entitate “Audio”
CREATE TABLE audio
(
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 14/26
P a g | 14
id_audio serial NOT NULL,
id_cazare serial NOT NULL,
data_add date NOT NULL,
durata integer NOT NULL,
format character(5) NOT NULL,audio oid,
size real NOT NULL,
CONSTRAINT id_audio PRIMARY KEY (id_audio),
CONSTRAINT cazare FOREIGN KEY (id_cazare)
REFERENCES "Cazare" (id_cazare) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE);
ALTER TABLE audio OWNER TO postgres;
Inserarea propiu-zisă a fișierului audio în câmpul audio de
tip oid, s-a facut la urmă, după introducerea tuturor metadatelor
caracteristice imaginilor, cu o comandă de tipul celei de mai jos,
pentru fiecare intrare a tabelului:
UPDATE "audio"SET audio=lo_import('C:\\temp\\1.amr')
WHERE id_audio=1;
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 15/26
P a g | 15
CCreare mulţime entitate “Video”
CREATE TABLE "Video"
(
id_video serial NOT NULL,
id_cazare serial NOT NULL,
data_add date NOT NULL,
durata integer NOT NULL,
format character(5) NOT NULL,
video oid,
size real NOT NULL,
CONSTRAINT id_video PRIMARY KEY (id_video),
CONSTRAINT cazare FOREIGN KEY (id_cazare)REFERENCES "Cazare" (id_cazare) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 16/26
P a g | 16
ALTER TABLE "Video" OWNER TO postgres;
Inserarea propiu-zisă a clipului video în câmpul video de tip
oid, s-a facut la urmă, după introducerea tuturor metadatelor
caracteristice imaginilor, cu o comandă de tipul celei de mai jos,pentru fiecare intrare a tabelului:
UPDATE "Video"
SET video=lo_import('C:\\temp\\1.flv')
WHERE id_video=1;
CCreare mulţime entitate “Imagine”
CREATE TABLE "Imagine"
(
id_imag serial NOT NULL,
data_add date NOT NULL,
id_cazare serial NOT NULL,
size real NOT NULL,
format character(5) NOT NULL,
img oid,
referitor_la character(15) NOT NULL,
rezolutie integer[] NOT NULL,
CONSTRAINT id_imag PRIMARY KEY (id_imag),
CONSTRAINT cazare FOREIGN KEY (id_cazare)
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 17/26
P a g | 17
REFERENCES "Cazare" (id_cazare) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE);
ALTER TABLE "Imagine" OWNER TO postgres;
Inserarea propiu-zisă a imaginii în câmpul img de tip oid, s-a
facut la urmă, după introducerea tuturor metadatelor
caracteristice imaginilor, cu o comandă de tipul celei de mai jos,
pentru fiecare intrare a tabelului:
UPDATE "Imagine"SET img=lo_import('C:\\temp\\melia1.jpg')
WHERE id_imag=1;
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 18/26
P a g | 18
IV) Implementarea interogarilor
În încheiere se vor implementa un set de operaţii asupra
datelor menite să exemplifice următoarele tipuri de interogări:
text, imagine, audio şi video. Pentru fiecare interogare în parte, se
va afişa răspunsul primit :
1) Să se afişeze numele şi id_cazare pentru toate locurile
de cazare care au un număr de camere mai mare sau egal
decât 50.
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 19/26
P a g | 19
Observaţie: Informaţiile cu privire la nume se regăsesc în
tabela Cazare, iar cele cu privire la număr de camere în tabela
Camere.
Comanda PostgreSQL:
SELECT "Cazare".nume, "Camere".id_cazare, "Camere".nr_camere from "Cazare",
"Camere"
WHERE "Camere".nr_camere>=50 AND "Cazare".id_cazare="Camere".id_cazare
ORDER BY "Cazare".id_cazare;
2) Să se exporte în folderul "C:\temp", sub denumirea de
" poza" imaginea cu id-ul 10 şi să se afişeze numele și id-ul
hotelului căruia îi corespunde imaginea cât şi conținutul acesteia(la ce se referă).
Comanda PostgreSQL:
SELECT "Cazare".nume, "Cazare".id_cazare, "Imagine".referitor_la, lo_export
(img,'C:\\temp\\poza.jpg')
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 20/26
P a g | 20
FROM "Cazare", "Imagine"
WHERE "Imagine".id_imag=10 and
"Imagine".id_cazare="Cazare".id_cazare ;
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 21/26
P a g | 21
3) Exportaţi în folderul "C:\temp", sub denumirea
"clip_video", clipul video realizat la data de 13 Iunie 2010 - şi
să se afişeze id și numele hotelului despre care s-a realizat clipul
video, formatul şi data la care s-a adaugat acesta.
Comanda PostgreSQL:
SELECT "Cazare".nume, "Cazare".id_cazare,
"Video".format,
"Video".data_add,
lo_export (video,'C:\\temp\\clip_video.flv')
FROM "Cazare", "Video"
WHERE "Video".data_add='2010-06-13'and "Video".id_cazare="Cazare".id_cazare
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 22/26
P a g | 22
4) Să se exporte în folderul "C:\temp", sub denumirea de
" Audio", Fișierul audio cu o durată mai mică de 20 de
secunde, şi să se afişeze id-ul și numele hotelului pe care îlprezintă cât şi formatul şi durata acestuia.
Comanda PostgreSQL:
SELECT "audio".durata,
"audio".format
FROM "audio"
WHERE "audio".durata<20
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 23/26
P a g | 23
SELECT "Cazare".nume, "Cazare".id_cazare,
"audio".durata, "audio".format,
lo_export (audio,'C:\\temp\\audio.amr')
FROM "Cazare", "audio"
WHERE "audio".durata<20
and "audio".id_cazare="Cazare".id_cazare;
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 24/26
P a g | 24
5) Să se afişeze descrierea locului de cazare Căsuța din
Povești (descrierea va fi exportată în folderul "C:\temp", sub
denumirea de "descriereCP") şi să se afișeze id-ul locului de
5/11/2018 Baze de Date Multimedia - Aplicatie PostgreSQL - Turism - slidepdf.com
http://slidepdf.com/reader/full/baze-de-date-multimedia-aplicatie-postgresql-turism 25/26
P a g | 25
cazare, formatul în care se află descrierea, numărul de pagini şi
numărul de imagini conţinute.
Comanda PostgreSQL:SELECT "Cazare".id_cazare,
"Descriere".format, "Descriere".nr_pag,
"Descriere".nr_imag,
lo_export (descriere,'C:\\temp\\descriereCP.docx')
FROM "Cazare", "Descriere"
WHERE "Cazare".nume='Casuta din povesti'
and "Cazare".id_cazare="Descriere".id_cazare;