{{{ DROP SCHEMA IF EXISTS ddl_script_travel_sage CASCADE; CREATE SCHEMA IF NOT EXISTS ddl_script_travel_sage; SET SEARCH_PATH TO ddl_script_travel_sage; DROP TABLE IF EXISTS DESTINACII CASCADE; DROP TABLE IF EXISTS KORISNICI CASCADE; DROP TABLE IF EXISTS STANDARD CASCADE; DROP TABLE IF EXISTS PREMIUM CASCADE; DROP TABLE IF EXISTS RECENZII CASCADE; DROP TABLE IF EXISTS METEROLOSHKASOSTOJBA CASCADE; DROP TABLE IF EXISTS PAKETI CASCADE; DROP TABLE IF EXISTS AKTIVNOSTI CASCADE; DROP TABLE IF EXISTS REZERVACII CASCADE; DROP TABLE IF EXISTS PREFERENCI CASCADE; DROP TABLE IF EXISTS NASTANI CASCADE; DROP TABLE IF EXISTS TAGOVI CASCADE; CREATE TABLE DESTINACII ( idDest SERIAL PRIMARY KEY, imeLokacija VARCHAR(255) NOT NULL, opisLokacija VARCHAR(255), tipoviMesta VARCHAR(255) NOT NULL, preporachanaSezona VARCHAR(255) NOT NULL, prosechnaTemp DECIMAL(5, 2), -- geoLokacija GEOGRAPHY(Point, 4326) -- KOORDINATI lat DECIMAL(9, 6), lon DECIMAL(9, 6), drzhava VARCHAR(255), popularnost INT, ime VARCHAR(255) NOT NULL, opis VARCHAR(255) NOT NULL, idTag INT -- CONSTRAINT fk_tag_dest FOREIGN KEY (idTag) REFERENCES TAGOVI(idTag) ); CREATE TABLE KORISNICI ( idKorisnik SERIAL PRIMARY KEY, ime VARCHAR(255) NOT NULL, prezime VARCHAR(255) NOT NULL, ePoshta VARCHAR(255) NOT NULL UNIQUE, telBr VARCHAR(255) NOT NULL, datumRagjanje DATE, idDest INT -- CONSTRAINT fk_dest_korisnik FOREIGN KEY (idDest) REFERENCES DESTINACII(idDest) ); CREATE TABLE STANDARD ( idKorisnik SERIAL PRIMARY KEY, ime VARCHAR(255) NOT NULL, prezime VARCHAR(255) NOT NULL, ePoshta VARCHAR(255) NOT NULL UNIQUE, telBr VARCHAR(255) NOT NULL, datumRagjanje DATE -- CONSTRAINT fk_korisnik_standard FOREIGN KEY (idKorisnik) REFERENCES KORISNICI(idKorisnik) ); CREATE TABLE PREMIUM ( idKorisnik SERIAL PRIMARY KEY, ime VARCHAR(255) NOT NULL, prezime VARCHAR(255) NOT NULL, ePoshta VARCHAR(255) NOT NULL UNIQUE, telBr VARCHAR(255) NOT NULL, datumRagjanje DATE, datumKreiranje DATE, popust DECIMAL(5, 2) -- CONSTRAINT fk_korisnik_premium FOREIGN KEY (idKorisnik) REFERENCES KORISNICI(idKorisnik) ); CREATE TABLE RECENZII ( idRecenzija SERIAL PRIMARY KEY, korisnichkoIme VARCHAR(255) NOT NULL, kvalitet INT NOT NULL, zabeleshka VARCHAR(255), datumRecenzija DATE, brGlasovi INT, idDest INT, idKorisnik INT, idRezervacija INT -- CONSTRAINT fk_dest_recenzija FOREIGN KEY (idDest) REFERENCES DESTINACII(idDest), -- CONSTRAINT fk_korisnik_recenzija FOREIGN KEY (idKorisnik) REFERENCES KORISNICI(idKorisnik), -- CONSTRAINT fk_rezervacija_recenzija FOREIGN KEY (idRezervacija) REFERENCES REZERVACII(idRezervacija) ); CREATE TABLE METEROLOSHKASOSTOJBA ( idMeteo SERIAL PRIMARY KEY, momentTemp DECIMAL(5, 2), sostojbaVreme VARCHAR(255) NOT NULL, predupreduvanja VARCHAR(255) NOT NULL, vlazhnost DECIMAL(5, 2), veter DECIMAL(5, 2), mesec INT, idDest INT -- CONSTRAINT fk_dest_meteo FOREIGN KEY (idDest) REFERENCES DESTINACII(idDest) ); CREATE TABLE PAKETI ( idPaket SERIAL PRIMARY KEY, imePaket VARCHAR(255) NOT NULL, cena INT NOT NULL, pochetok TIMESTAMP NOT NULL, kraj TIMESTAMP NOT NULL, idDest INT, idAktivnost INT, idRezervacija INT -- CONSTRAINT fk_dest_paket FOREIGN KEY (idDest) REFERENCES DESTINACII(idDest), -- CONSTRAINT fk_aktivnost_paket FOREIGN KEY (idAktivnost) REFERENCES AKTIVNOSTI(idAktivnost), -- CONSTRAINT fk_rezervacija_paket FOREIGN KEY (idRezervacija) REFERENCES REZERVACII(idRezervacija) ); CREATE TABLE AKTIVNOSTI ( idAktivnost SERIAL PRIMARY KEY, imeAktivnost VARCHAR(255) NOT NULL, informacii VARCHAR(255), kategorija VARCHAR(255) NOT NULL, iznos INT, idDest INT -- CONSTRAINT fk_dest_aktivnost FOREIGN KEY (idDest) REFERENCES DESTINACII(idDest) ); CREATE TABLE REZERVACII ( idRezervacija SERIAL PRIMARY KEY, vremenskaTochka DATE NOT NULL, vkupnaCena INT NOT NULL, idAktivnost INT, idKorisnik INT, idMeteo INT -- CONSTRAINT fk_aktivnost_rezervacija FOREIGN KEY (idAktivnost) REFERENCES AKTIVNOSTI(idAktivnost), -- CONSTRAINT fk_korisnik_rezervacija FOREIGN KEY (idKorisnik) REFERENCES KORISNICI(idKorisnik), -- CONSTRAINT fk_meteo_rezervacija FOREIGN KEY (idMeteo) REFERENCES METEROLOSHKASOSTOJBA(idMeteo) ); CREATE TABLE PREFERENCI ( idPreferenca SERIAL PRIMARY KEY, tipPreferenca VARCHAR(255) NOT NULL, prioritet INT, idKorisnik INT -- CONSTRAINT fk_korisnik_preferenca FOREIGN KEY (idKorisnik) REFERENCES KORISNICI(idKorisnik) ); CREATE TABLE NASTANI ( idNastan SERIAL PRIMARY KEY, naziv VARCHAR(255) NOT NULL, vidovi VARCHAR(255) NOT NULL, pochetenDatum DATE, kraenDatum DATE, detali VARCHAR(255), idDest INT -- CONSTRAINT fk_dest_nastan FOREIGN KEY (idDest) REFERENCES DESTINACII(idDest) ); CREATE TABLE TAGOVI ( idTag SERIAL PRIMARY KEY, tagOznaka VARCHAR(255) NOT NULL, idDest INT -- CONSTRAINT fk_dest_tag FOREIGN KEY (idDest) REFERENCES DESTINACII(idDest) ); ALTER TABLE DESTINACII ADD FOREIGN KEY (idTag) REFERENCES TAGOVI(idTag); ALTER TABLE KORISNICI ADD FOREIGN KEY (idDest) REFERENCES DESTINACII(idDest); ALTER TABLE STANDARD ADD FOREIGN KEY (idKorisnik) REFERENCES KORISNICI(idKorisnik); ALTER TABLE PREMIUM ADD FOREIGN KEY (idKorisnik) REFERENCES KORISNICI(idKorisnik); ALTER TABLE RECENZII ADD FOREIGN KEY (idDest) REFERENCES DESTINACII(idDest); ALTER TABLE RECENZII ADD FOREIGN KEY (idKorisnik) REFERENCES KORISNICI(idKorisnik); ALTER TABLE RECENZII ADD FOREIGN KEY (idRezervacija) REFERENCES REZERVACII(idRezervacija); ALTER TABLE METEROLOSHKASOSTOJBA ADD FOREIGN KEY (idDest) REFERENCES DESTINACII(idDest); ALTER TABLE PAKETI ADD FOREIGN KEY (idDest) REFERENCES DESTINACII(idDest); ALTER TABLE PAKETI ADD FOREIGN KEY (idAktivnost) REFERENCES AKTIVNOSTI(idAktivnost); ALTER TABLE PAKETI ADD FOREIGN KEY (idRezervacija) REFERENCES REZERVACII(idRezervacija); ALTER TABLE AKTIVNOSTI ADD FOREIGN KEY (idDest) REFERENCES DESTINACII(idDest); ALTER TABLE REZERVACII ADD FOREIGN KEY (idAktivnost) REFERENCES AKTIVNOSTI(idAktivnost); ALTER TABLE REZERVACII ADD FOREIGN KEY (idKorisnik) REFERENCES KORISNICI(idKorisnik); ALTER TABLE REZERVACII ADD FOREIGN KEY (idMeteo) REFERENCES METEROLOSHKASOSTOJBA(idMeteo); ALTER TABLE PREFERENCI ADD FOREIGN KEY (idKorisnik) REFERENCES KORISNICI(idKorisnik); ALTER TABLE NASTANI ADD FOREIGN KEY (idDest) REFERENCES DESTINACII(idDest); ALTER TABLE TAGOVI ADD FOREIGN KEY (idDest) REFERENCES DESTINACII(idDest); }}}